นี่คือโปรเจกต์แรกของพี่เลยจ้า ไอเดียเริ่มต้นคืออยากได้เซนเซอร์ตรวจจับประตูโรงรถที่สามารถดูสถานะผ่านแอปในมือถือได้ แล้วก็ส่งการแจ้งเตือนตอนประตูเปิด-ปิดด้วย
หลังจากนั้นเราก็ไปซื้อ DHT22 มา เลยถือโอกาสใส่มันลงไปเพื่อวัดอุณหภูมิและความชื้นในโรงรถด้วย พี่ใช้ Adafruit ESP8266 แบบ Breakout เพราะมันมีบอร์ด Wi-Fi ในตัว แล้วก็ใช้ รีดสวิตช์ (Reed Switch) มาวัดว่ามีแม่เหล็ก (ที่ติดไว้ที่ประตู) อยู่ใกล้หรือเปล่า
เปลี่ยนโรงรถธรรมดาให้ฉลาดด้วย ESP8266
โปรเจกต์นี้จะอัพเกรดประตูโรงรถบ้านๆ ของคุณให้กลายเป็นประตูอัจฉริยะแบบ IoT ช่วยให้คุณสามารถตรวจสอบสถานะจากที่ไหนในโลกก็ได้ แถมยังดูสภาพแวดล้อมในโรงรถอย่างอุณหภูมิและความชื้นได้อีกด้วย
อุปกรณ์ช่างที่เราใช้
- Adafruit HUZZAH ESP8266 Breakout: ไมโครคอนโทรลเลอร์ที่เชื่อถือได้ มี Wi-Fi ในตัว ช่วยให้เชื่อมต่ออินเทอร์เน็ตและบริการคลาวด์ได้ง่ายๆ
- เซนเซอร์วัดอุณหภูมิและความชื้น DHT22: เซนเซอร์ดิจิทัลความแม่นยำสูง ให้ค่าที่แม่นยำกว่า DHT11 เหมาะมากสำหรับการตรวจสอบสภาพอากาศในโรงรถที่อาจจะเปลี่ยนแปลงได้ง่าย
- สวิตช์แม่เหล็ก (Magnetic Reed Switch): เซนเซอร์คู่นี้ใช้ง่ายแต่ได้ผล ใช้แม่เหล็กติดไว้ที่ส่วนที่เคลื่อนไหวของประตู พอประตูปิด แม่เหล็กจะทำให้วงจรในสวิตช์ปิด ส่งสัญญาณเป็น "LOW" หรือ "HIGH" ขึ้นอยู่กับการต่อสายของคุณ
เชื่อมต่อโลกด้วยแพลตฟอร์ม Blynk IoT
โปรเจกต์นี้ใช้ แอป Blynk ในการสร้างแดชบอร์ดแบบกำหนดเองบนมือถือของคุณ
- Virtual Pins: ข้อมูลจาก DHT22 จะถูกส่งไปยัง Virtual Pins (V5 และ V6) ทำให้เกจดิจิทัลบนมือถือของคุณอัปเดตแบบเรียลไทม์
- การแจ้งเตือนแบบพุช (Push Notifications): เราเขียนลอจิกในโค้ด Arduino โดยใช้ฟังก์ชัน
Blynk.notify()ทุกครั้งที่สถานะของรีดสวิตช์เปลี่ยน (วงจรขาดหรือต่อกัน) การแจ้งเตือนจะถูกส่งไปยังมือถือคุณทันที - ตัวต้านทานดึงขึ้นภายใน (Internal Pullup Resistors): การตั้งค่าให้พินของรีดสวิตช์เป็น
INPUT_PULLUPช่วยให้เราไม่ต้องใช้ตัวต้านทานภายนอกเพิ่ม ทำให้การจัดวางบนเบรดบอร์ดง่ายขึ้น และมั่นใจได้ว่าสัญญาณจะเสถียรแม้จะมีสัญญาณรบกวนจากแม่เหล็ก
ทีนี้พี่จะลองอธิบายโปรเจกต์ทีละขั้นตอนนะ วงจร (Circuit). ขั้นแรกเลย พี่ประกอบวงจรขึ้นมา ตามที่เห็นในภาพด้านล่าง

การต่อสาย DHT. ข้อมูลพินของ DHT สามารถดูได้จากแหล่งข้อมูลทั่วไป พี่วางมันไว้ข้างๆ ESP8266 บนเบรดบอร์ดเล็กๆ
- พินกราวด์ (Ground) ของ DHT ต่อกับกราวด์ของบอร์ดด้วยสายสีดำ
- พินสัญญาณ (Signal) ของ DHT ต่อกับพินหมายเลข 13 ของบอร์ดด้วยสายสีน้ำเงิน
- พินไฟ (Power) ของ DHT พี่ต้องต่อตรงไปที่เอาต์พุต 5V ของพอร์ต USB ด้วยสายสีแดง สาเหตุเพราะ Adafruit ESP8266 ไม่มีเอาต์พุต 5V ให้ พี่ลองใช้เอาต์พุต 3.3V ไฟเลี้ยง DHT-22 แล้ว แต่ไฟไม่พอ มันไม่มีสัญญาณออกมา เลยต้องบัดกรีสายแดงไปที่พอร์ต USB 5V แทน สำหรับบอร์ด Huzzah breakout ที่ใช้สาย USB to TTL ไฟเลี้ยง มันจะง่ายเพราะเห็นการต่อตรงๆ เลย
การต่อสายรีดสวิตช์ (Reed switch). สวิตช์แม่เหล็กต่อระหว่าง พิน 12 กับ กราวด์ ในโค้ดเราตั้งพิน 12 เป็นอินพุตแบบดึงขึ้น (input pullup) นั่นหมายความว่ามีตัวต้านทานภายในระหว่างแหล่งจ่ายไฟ 3.3V กับพินนั้นอยู่ ในกรณีนี้ เมื่อสวิตช์เปิด (ไม่นำไฟฟ้า, แม่เหล็กอยู่ห่าง, ประตูปิด) พินจะอ่านค่าเป็นสูง (HIGH) เมื่อสวิตช์ปิด (นำไฟฟ้า, แม่เหล็กอยู่ใกล้, ประตูเปิด) จะมีกระแสไหลผ่านตัวต้านทานภายในและพินจะกลายเป็นต่ำ (LOW) เพราะถูกต่อลงกราวด์
แอป Blynk. หลังจากนั้นพี่ก็ไปสร้างบัญชีบนแอป Blynk หลังจากหาข้อมูลในเน็ตแล้วพบว่ามันเป็นหนึ่งในวิธีที่ง่ายที่สุดในการตั้งค่าการแจ้งเตือนบนมือถือผ่านบอร์ด Wi-Fi Blynk จะให้โทเค็น (Token) มาโปรเจกต์ละหนึ่งอัน ซึ่งคุณต้องนำไปใส่ในโค้ดเพื่อเปิดการสื่อสาร (ดูได้ในโค้ด) ภาพหน้าจอโปรเจกต์ใน Blynk แสดงไว้ในภาพด้านล่าง

ในโปรเจค Blynk (ภาพที่ 1) พี่ตั้ง "เกจ" ไว้สองอัน ไว้ดูอุณหภูมิในโรงจอดรถ (เซ็ตเป็น virtual pin V6, ภาพที่ 2, เป็นองศาเซลเซียส แบบที่เราใช้กันตามบ้าน) และความชื้น (เซ็ตเป็น virtual pin V5, ภาพที่ 3) จากนั้นก็ตั้งค่า LED ให้แสดงสถานะว่า Reed switch เปิดหรือปิด (ภาพที่ 4) ในโค้ดพี่ตั้งไว้ว่าถ้าแม่เหล็กอยู่ใกล้ (ประตูเปิด) LED จะติด ถ้าไม่ใช่ก็ดับ หลังจากนั้นพี่ก็เพิ่มการแจ้งเตือนเข้าไปในโปรเจค Blynk ด้วย ในโค้ดจะสั่งให้แอปส่งการแจ้งเตือนทุกครั้งที่สถานะประตูเปลี่ยน
ขั้นตอนติดตั้ง (Mounting). ขั้นตอนสุดท้ายคือการติดตั้งให้มันอยู่กับที่ พี่ใช้กาวติด breadboard เข้ากับรางของมอเตอร์ประตูโรงจอดรถโดยตรง จากนั้นก็ยึดชิ้นส่วนโลหะเข้ากับบานประตูแล้วติดแม่เหล็กไว้ ในรูปด้านล่าง ประตูจะปิดอยู่ทางซ้าย และเปิดอยู่ทางขวา:

นี่คือวิดีโอที่เซนเซอร์ทำงานจริงๆ ดูให้เคลียร์นะน้อง:
ก็ประมาณนี้แหละน้อง ตอนนี้พี่รู้แล้วว่าประตูโรงจอดรถเปิดหรือปิด โดยไม่ต้องเดินไปดูเองให้เมื่อย งานนี้จัดไปวัยรุ่น! สู้งานนะน้อง