ภาพรวม
เคยฝันกันมั้ยว่าไฟบ้านจะสว่างอัตโนมัติตอนเราเดินกลับถึงบ้าน จะได้ไม่ต้องเจอห้องมืดๆ อีกต่อไป? โปรเจกต์นี้จะทำให้ฝันเป็นจริง! ไฟจะสว่างอัตโนมัติเมื่อเราเข้าใกล้บ้านด้วย GPS และจะยังคงเปิดอยู่ตราบใดที่เราอยู่ในบ้าน
การทำงาน
โปรเจกต์นี้ใช้ Blynk ในการทำงาน ซึ่ง Blynk ต้องใช้ Mobile Data ในการทำงานขณะเคลื่อนที่ ดังนั้นต้องเปิดไว้ อย่าลืมว่าต้องมีบัญชีและแอป Blynk ด้วยนะ หลักการง่ายๆ คือ Blynk จะคอยจับตำแหน่งจากมือถือเราแล้วส่งข้อมูลไปที่ [Arduino](https://s.shopee.co.th/7fUgFAWSki) Yún จากนั้น Arduino Yún จะเอาไปเปรียบเทียบกับตำแหน่งบ้าน (ที่เราตั้งไว้เอง) ถ้าตรวจพบว่าเราเข้าใกล้บ้านในระยะที่กำหนด ไฟ LED ก็จะสว่างขึ้น ตามภาพเลยจ้า

อุปกรณ์จะคอยตรวจสอบตำแหน่งมือถือเราตลอดเวลา ว่าอยู่ในรัศมีบ้านหรือเปล่า ดูภาพสรุปโค้ดได้เลย

If(isInParameterจะตรวจสอบว่าผู้ใช่อยู่ในรัศมีบ้านหรือไม่ ถ้าอยู่ก็จะเรียกฟังก์ชันTurnLEDOnเพื่อเปิดไฟ LED
Elseจะเรียกคำสั่งTurnLEDOffเพื่อปิดไฟ LED ถ้าผู้ใช่อยู่นอกรัศมีบ้าน
[Arduino](https://s.shopee.co.th/7fUgFAWSki) Yún จะสร้างพื้นที่สี่เหลี่ยมรอบๆ บ้านอัตโนมัติจากพิกัดที่ตั้งไว้ โดยมีจุดมุม 4 จุด ถ้าผู้ใช้อยู่ในสี่เหลี่ยมนี้ ไฟก็จะติด ถ้าอยู่นอกก็จะดับ รัศมีเริ่มต้นของสี่เหลี่ยมจะอยู่ที่ประมาณ 60 เมตรจากจุดที่ตั้งไว้ทุกทิศทาง
มาดูภาพการทำงานจริงกันเลย
ประโยชน์
ผู้ใช้ ที่ทำ โปรเจกต์นี้ จะได้ประโยชน์ คือ:
- เปิดไฟได้ง่ายๆ ตอนเข้าบ้าน
- แจ้งคนในบ้านให้รู้ว่าเรากำลังจะถึงแล้ว
ขั้นตอนการประกอบโปรเจกต์
Step 1: อุปกรณ์ที่ต้องใช้
ต้องใช้อุปกรณ์ไม่กี่ชิ้น ตามลิสต์นี้เลย
- 1, [Arduino](https://s.shopee.co.th/7fUgFAWSki) Yun
- 1, Breadboard
- 1, Resistor (220Ω)
- 1, Smartphone
- Jumper Wires
Step 2: ต่อวงจร
วงจรของโปรเจกต์นี้ประกอบด้วย LED และ Resistor ดู Schematic ได้จากภาพนี้เลย

Step 3: หาพิกัดบ้านตัวเอง
ขั้นตอนต่อไปคือหาพิกัด Latitude/Longitude ของบ้านเรา ดูขั้นตอนจากภาพด้านล่างได้เลย




Step 4: ตั้งค่า Blynk
ต้องมีบัญชี Blynk ก่อนนะ โดยดาวน์โหลดแอป Blynk จาก App Store หรือ Google Play จากนั้นทำตามภาพด้านล่างนี้เลย




Step 5: ทำความเข้าใจโค้ด
โค้ดของโปรเจกต์นี้มี 3 ส่วนหลัก:
- อ่านพิกัดตำแหน่ง
- ตรวจสอบตำแหน่ง
- ควบคุม LED
มาดูรายละเอียดแต่ละส่วนกัน
- อ่านพิกัดตำแหน่ง
BLYNK_WRITE(V0) // store the geolocation to variable
{
latitude = param[0].asFloat();
longitude = param[1].asFloat();
// debugging? - Consider un-commenting the lines below and test manually
//latitude = 67.357899;
//longitude = -8.259199;
}
ส่วนนี้จะอ่านพิกัดจาก Blynk Virtual Pin แล้วเก็บค่าไว้ในตัวแปร ส่วน Debugging ด้านล่างจะช่วยให้เราทดสอบด้วยการใส่พิกัดจำลองได้ จำไว้ว่าค่าที่อ่านได้คือพิกัดจากมือถือเรา
- ตรวจสอบตำแหน่ง
if(latitude <= maxLat && latitude <= minLat && // check if the phone is inside perameters
maxLng >= longitude && minLng >= longitude)
{
geolocation = 1;
}
else
{
geolocation = 0;
}
ส่วนนี้จะตรวจสอบว่าตำแหน่งมือถืออยู่ในรัศมีบ้านที่เราตั้งไว้หรือไม่ โดยจะสร้างพื้นที่สี่เหลี่ยมรอบพิกัดบ้านอัตโนมัติ แล้วตรวจสอบว่ามือถืออยู่ในสี่เหลี่ยมนั้นหรือเปล่า
- ควบคุม LED
if(geolocation == 1) // turn LED on if phone is in perameter
{
digitalWrite(pinLED, HIGH);
}
else
{
digitalWrite(pinLED, LOW);
}
ส่วนสุดท้ายง่ายๆ คือเปิด LED ถ้าผู้ใช้เข้าใกล้หรืออยู่ในบ้าน และปิด LED ถ้าผู้ใช้ออกไปไกล
ตั้งค่าตัวแปร
มีค่าที่ต้องตั้งไม่กี่ค่า เริ่มจากนำ Blynk Auth Token ที่ได้จากอีเมลในขั้นตอนตั้งค่า Blynk มาใส่ในตัวแปร auth[] จากนั้นนำพิกัด Latitude และ Longitude ของบ้านมาใส่ในตัวแปร myLocationLat และ myLocationLng สุดท้าย ตรวจสอบว่าเรากำลัง Debug อยู่หรือไม่ ถ้าไม่ ให้ตั้งค่า proDebug เป็น 0 เพื่อปิดการพิมพ์ข้อความใน Serial Monitor ถ้ากำลัง Debug อยู่และอยากให้ [Arduino](https://s.shopee.co.th/7fUgFAWSki) รับพิกัดจำลองแทนพิกัดจากมือถือ ให้ไปดูคำแนะนำเพิ่มเติมในส่วน BLYNK_WRITE
ไลบรารีที่ใช้
- Bridge - copyright (c) [Arduino](https://s.shopee.co.th/7fUgFAWSki) LLC under the GNU Lesser General Public Licence, this library is in the public domain.
- Blynk - Blynk this library is released under The MIT License (MIT)
ขั้นตอนสุดท้าย
ขั้นตอนสุดท้ายคือเชื่อมต่อ [Arduino](https://s.shopee.co.th/7fUgFAWSki) Yún เข้ากับคอมพิวเตอร์แล้วอัปโหลดโค้ด โปรเจกต์นี้ต้องใช้ Arduino Yún ในการทำงาน แต่ถ้าแก้โค้ดนิดหน่อย ก็สามารถใช้กับ Microcontroller อื่นที่มี WiFi ในตัว หรือต่อ WiFi Module เข้ากับ Arduino Board อื่นได้ อย่าลืมว่าโปรเจกต์นี้ต้องใช้ Mobile Data ในการทำงานขณะเคลื่อนที่
เบื้องหลังโปรเจกต์
นี่คือโปรเจกต์ที่อยากทำมานานแล้ว ไอเดียพื้นฐานคือเมื่อผู้ใช้เข้าใกล้บ้าน ไฟในบ้านจะสว่างขึ้น ตอนนี้ยังไม่ได้ต่อเข้ากับไฟบ้านจริงๆ ใช้แค่ LED ในการทดแทน ถ้าอยากต่อเข้ากับไฟบ้านจริงๆ ก็สามารถเพิ่ม [Relay](https://s.shopee.co.th/3fyXTmWPbL) แล้วต่อเข้ากับ Pin เดียวกันกับ LED และต่อเข้ากับสายไฟของบ้านได้ แต่ก่อนอื่น ทดสอบให้แน่ใจก่อนว่าต่อวงจรถูกต้องและโปรเจกต์ทำงานได้จริง โชคดีนะน้องๆ!
รายละเอียดเทคนิคเพิ่มเติม
ระบบไฟอัจฉริยะด้วย Geo-Fencing
โปรเจกต์ IoT อัตโนมัตินี้ใช้ GPS จากมือถือของคุณเพื่อเปิดไฟบ้านอัตโนมัติเมื่อคุณเข้าใกล้
- Blynk Geofencing: แอป Blynk บนมือถือจะคอยตรวจสอบตำแหน่งของคุณ เมื่อคุณเข้าไปใน "วงกลม" เสมือนรอบบ้าน แอปจะส่งสัญญาณไปยัง Blynk Cloud
- การเชื่อมต่อกับฮาร์ดแวร์: Arduino (เช่น NodeMCU หรือ ESP32) จะเชื่อมต่อกับ Cloud ตลอดเวลา เมื่อได้รับสัญญาณ จะสั่งงาน AC Relay เพื่อเปิดไฟหน้าบ้านหรือไฟทางเดิน
ความปลอดภัยและประสิทธิภาพ
- การยืนยันตัวตนผ่าน Cloud: การสื่อสารทั้งหมดจะถูกเข้ารหัสด้วย Auth Token ที่ปลอดภัย ทำให้มีเพียงมือถือของคุณเท่านั้นที่สามารถสั่งงานไฟบ้านได้ หมดปัญหาต้องตั้ง Timer หรือเปิดไฟทิ้งไว้ทั้งคืน