โปรเจกต์นี้ใช้การควบคุมผ่านแอป Blynk กับเมทริกซ์หลอดไฟ Neopixels ครับ ไหนๆ ก็ไหนๆ แค่ไฟธรรมดามันไม่พอ เลยเพิ่มนาฬิกา และเซ็นเซอร์วัดอุณหภูมิกับความชื้นเข้าไปด้วย งานนี้จัดไปวัยรุ่น!
LED Matrix
พี่สร้างอาร์เรย์เล็กๆ ของ Neopixels ตามแผนภาพด้านล่างนี้แหละ ควบคุมด้วย Arduino ผ่านไลบรารี่ "Adafruit_NeoPixel.h" ไฟมันสว่างมากกก แนะนำว่าห้ามจ้องตอนเปิดไฟนะตัวนี้ เดี๋ยวช็อต!
เซ็นเซอร์ DHT
ใช้เซ็นเซอร์ DHT 22 ในการตรวจสอบสภาพแวดล้อมครับ สีของ LED จะเปลี่ยนไปตามอุณหภูมิ มีทั้งหมด 12 เฉดสีไล่จากน้ำเงิน (เย็น) ไปแดง (ร้อน) งานนี้ดูอุณหภูมิจากสีไฟได้เลย สะดวกดี
นาฬิกา
นาฬิกาควบคุมโดย RTC ครับ พี่ใช้ DS1307 แต่ใช้ DS3231 แทนก็ได้นะ สำหรับรายละเอียดเพิ่มเติม ไปดูในหัวข้อ "Clock Set Date Time" ได้เลย ต่างจากโปรเจกต์นั้นนิดหน่อยตรงที่พี่ถอดตัวต้านทานแบบ pull-down ของปุ่ม P1, P2 และ P3 (ที่ใช้ปรับเวลา) ออก และก็ปรับโค้ดนิดหน่อย สู้งานนะน้อง
IOT
Arduino เชื่อมต่ออินเทอร์เน็ตผ่าน ESP8266 ซึ่งจะเชื่อมต่อไปยังแอป Blynk อีกที ง่ายๆ แค่นี้เอง
สีสัน
ผ่านมือถือก็เปลี่ยนสีไฟได้ตามอารมณ์เลยครับ ตั้งค่าสีไว้แบบนี้:
- V1 = แดง
- V2 = เขียว
- V3 = น้ำเงิน
- V5 = เหลือง
- V6 = ม่วง
- V7 = ฟ้า
- V8 = ขาว
- V4 = อุณหภูมิ (สีจะเปลี่ยนตามค่าที่วัดได้)
แผนภาพวงจรไฟฟ้า
จากแผนภาพการเดินสายไฟจะเห็นว่า "หัวใจ" ของวงจรนี้คือ "Arduino" นั่นเอง ในกรณีของพี่ใช้ "Arduino Nano" ครับ
- ขา A4 และ A5 เชื่อมต่อกับ SDA และ SCL ของจอแสดงผล I2C ขนาด 16x2 และ RTC ตามลำดับ
- เซ็นเซอร์วัดอุณหภูมิและความชื้นต่ออยู่กับขา 4 ผ่านตัวต้านทานแบบ Pull-Up นะจ๊ะ
- สวิตช์ Diverter ที่ต่อกับขา 12 ของ Arduino ใช้สำหรับสลับจากโหมด IOT ไปเป็นโหมดไฟสวยๆ แบบสายรุ้งที่เราเรียกกันว่า "rainbow" ครับพี่น้อง
เรื่องไฟเลี้ยง (Power)
สำหรับไฟเลี้ยง ESP8266 เราใช้เรกกูเลเตอร์ LM1117 ส่วนการลดแรงดันที่ขา RTX เราใช้ตัวแบ่งแรงดันแบบตัวต้านทาน (R1-R2) ครับ ส่วนกลุ่มไดโอด D1, D2, D3 นี่ทำหน้าที่ป้องกัน:
- D1 ป้องกันการต่อขั้วไฟสลับ (reverse polarity) ตัวร้าย
- D2 ตัวนี้จะกันไว้ในกรณีที่เราไปเปลี่ยนโค้ด Arduino แล้วเผลอส่งไฟไปเลี้ยงเมทริกซ์ Neopixel
- D3 ทำหน้าที่ลดแรงดันจาก 5.6 โวลต์ลงมาเหลือ 5 โวลต์พอดี
โค้ด Arduino
ไลบรารีที่ต้องใช้:
- Wire.h – ใน Arduino IDE อยู่แล้ว
- RTClib.h
- LiquidCrystal_I2C.h
- DHT.h
- Adafruit_NeoPixel.h
- ESP8266_Lib.h
- BlynkSimpleShieldEsp8266.h
พารามิเตอร์ที่ต้องตั้งค่าในโค้ด:
char auth[] = "YourAuthToken";ใส่โทเคนจากแอป Blynk ของน้องลงไปเลยBlynk.begin(auth, wifi, "ssid","password");ใส่ SSID กับพาสเวิร์ด Wi-Fi ของเราเตอร์ที่น้องใช้
รายละเอียดเทคนิคเพิ่มเติม
Smart Mood Lighting Orb
Bright Ball คือโคมไฟทรงกลมปรับอารมณ์ที่ต่อ WiFi ไว้ สามารถควบคุมผ่านแอปบนสมาร์ทโฟนจากที่ไหนในโลกก็ได้ งานเข้าจัดไปวัยรุ่น!
- Blynk Cloud Orchestration: ใช้ ESP8266แอป Blynk
- NeoPixel Animation Suite: จัดการกลุ่ม LED WS2812B
เรื่องประสิทธิภาพ (Efficiency)
- Power-Aware Dimming: มีฟีเจอร์ "Brightness Cap" ในซอฟต์แวร์เพื่อป้องกันไม่ให้ LED ร้อนเกินไปจนกระทบกับโครงสร้างลูกบอลถ้าเปิดทิ้งไว้นานๆ ห้ามช็อตนะตัวนี้!
การนำไปใช้
เนื่องจากแมวของพี่ไม่ชอบต้นคริสต์มาสสักเท่าไหร่ ตอนช่วงวันหยุดพี่ก็เลยเอาโคมไฟนี้ไปใช้ในโหมด "rainbow" แทน สู้งานนะน้อง