สารบัญ:

โคมไฟดวงจันทร์ IoT: 5 ขั้นตอน
โคมไฟดวงจันทร์ IoT: 5 ขั้นตอน

วีดีโอ: โคมไฟดวงจันทร์ IoT: 5 ขั้นตอน

วีดีโอ: โคมไฟดวงจันทร์ IoT: 5 ขั้นตอน
วีดีโอ: Full Review 3D Moon Lighting โคมไฟดวงจันทร์ ของแท้ !!! - [Freedom2Review] 2024, พฤศจิกายน
Anonim
โคมไฟดวงจันทร์ IoT
โคมไฟดวงจันทร์ IoT

ในคำแนะนำนี้ ฉันแสดงวิธีแปลงหลอดไฟ LED ที่ใช้พลังงานจากแบตเตอรี่อย่างง่ายเป็นอุปกรณ์ IoT

โครงการนี้รวมถึง:

  • บัดกรี;
  • การเขียนโปรแกรม ESP8266 ด้วย Arduino IDE;
  • สร้างแอพพลิเคชั่น Android ด้วย MIT App Inventor

วัตถุที่น่าสนใจคือโคมไฟรูปพระจันทร์ที่ฉันซื้อจาก gearbest แต่จริงๆ แล้ว บทช่วยสอนนี้สามารถปรับให้เข้ากับอุปกรณ์แรงดัน DC ต่ำ (อุปกรณ์ที่ใช้ไฟ AC ต้องการวงจรเพิ่มเติม)

เสบียง

  1. สมาร์ทโฟน Android (ทดสอบ Android เวอร์ชัน 7-9)
  2. เครื่องมือบัดกรี
  3. การสร้างต้นแบบ PCB (โปรโตบอร์ด)
  4. บอร์ด ESP-12E (หรือบอร์ดพัฒนาอื่นๆ ที่มีไมโครคอนโทรลเลอร์ ESP8266)
  5. ตัวแปลงอนุกรม USB สำหรับการเขียนโปรแกรม
  6. ค่าต่างๆ ของส่วนประกอบแบบพาสซีฟ (ตัวต้านทานและตัวเก็บประจุ)

(ไม่บังคับ ดูส่วน "บล็อกไดอะแกรม")

  1. ไอซี LDO 3.3V@500mA
  2. บอร์ดแปลงระดับลอจิก 3.3V-5V
  3. แหล่งจ่ายไฟ DC 5V

ขั้นตอนที่ 1: ไอเดีย

ความคิด
ความคิด

โคมไฟดวงจันทร์ใช้พลังงานจากเซลล์ Li-ION 18650 หนึ่งเซลล์ และมีโหมดการทำงาน 3 โหมด:

  • ปิด;
  • คู่มือ;
  • อัตโนมัติ

ในโหมดแมนนวลหลอดไฟถูกควบคุมด้วยปุ่มกด ทุกครั้งที่กดจะเปลี่ยนสถานะไฟ LED (เปิดเป็นสีน้ำเงิน เปิดสีส้ม เปิดทั้งคู่ ปิด) ความเข้มของแสงจะเปลี่ยนไปเมื่อกดปุ่มค้างไว้ ในโหมดอัตโนมัติ สถานะไฟ LED จะเปลี่ยนโดยการแตะหรือเขย่าหลอดไฟเอง

ฉันตัดสินใจเพิ่ม ESP8266 เพื่อทำหน้าที่เป็นเว็บเซิร์ฟเวอร์ที่รับฟังคำขอและจำลองการกดปุ่ม ฉันไม่ต้องการหยุดการทำงานของหลอดไฟแบบเดิม แต่ต้องการเพิ่มคุณสมบัติการควบคุมเพิ่มเติมผ่าน WiFi ดังนั้นฉันจึงเลือก ESP เพื่อจำลองการกดปุ่มแทนการควบคุม LED โดยตรง นอกจากนี้ยังช่วยให้ฉันสามารถโต้ตอบกับวงจรดั้งเดิมได้น้อยที่สุด

เมื่อสร้างต้นแบบเสร็จแล้ว มันขับ ~80mA อย่างต่อเนื่องจากแบตเตอรี่ในสถานะปิด (~400mA เมื่อความสว่างเต็มที่) กระแสไฟสแตนด์บายสูงเนื่องจาก ESP8266 ทำงานเป็นเซิร์ฟเวอร์และเชื่อมต่อกับ WiFi และรับฟังคำขอเสมอ แบตเตอรี่หมดหลังจากผ่านไปหนึ่งวันครึ่งเท่านั้นในสถานะปิด ดังนั้นต่อมาฉันจึงตัดสินใจใช้หลอดไฟ พอร์ตชาร์จ USB สำหรับจ่ายไฟให้กับอุปกรณ์อิเล็กทรอนิกส์ทั้งหมดจากแหล่งจ่ายไฟ 5V ภายนอกและแบตเตอรี่หมดพร้อมกัน (แต่นี่เป็นทางเลือก)

ขั้นตอนที่ 2: บล็อกไดอะแกรม

บล็อกไดอะแกรม
บล็อกไดอะแกรม

ในบล็อกไดอะแกรม คุณสามารถดูได้ว่าจะเพิ่มวงจรใดและจะแก้ไขวงจรที่มีอยู่อย่างไร ในกรณีของฉันฉันถอดแบตเตอรี่ออกจนหมดและลัดวงจรเครื่องชาร์จแบตเตอรี่อินพุต IC พร้อมเอาต์พุต (อีกครั้งนี้เป็นทางเลือก) บล็อกโปร่งใสในไดอะแกรมระบุส่วนประกอบที่ถูกข้าม (แม้ว่าปุ่มกดจะยังคงทำงานตามที่ตั้งใจไว้เดิม)

ตามเอกสารประกอบ ESP8266 ทนได้เพียง 3.3V แต่มีตัวอย่างมากมายเมื่อ ESP8266 ทำงานได้ดีกับ 5V อย่างสมบูรณ์ ดังนั้นตัวแปลงระดับลอจิกและ 3.3V LDO จะถูกละเว้น แต่ฉันยังคงใช้แนวปฏิบัติที่ดีที่สุดและเพิ่มส่วนประกอบเหล่านั้น

ฉันใช้ 3 พิน ESP8266 I/O และพิน ADC พินเอาต์พุตดิจิตอลหนึ่งพินใช้สำหรับจำลองการกดปุ่ม อินพุตดิจิตอลสองอินพุตใช้สำหรับตรวจจับว่าไฟ LED สีใดเปิดอยู่ (จากนี้ เราสามารถหาได้ว่า MCU อยู่ในสถานะใดและสถานะใดต่อไปหลังจากกดปุ่ม) พิน ADC วัดแรงดันไฟฟ้าขาเข้า (ผ่านตัวแบ่งแรงดันไฟฟ้า) นั่นคือวิธีที่เราสามารถตรวจสอบระดับประจุแบตเตอรี่ที่เหลืออยู่ได้

เนื่องจากเป็นแหล่งจ่ายไฟภายนอก ฉันใช้ที่ชาร์จโทรศัพท์รุ่นเก่า 5V@1A (อย่าใช้ที่ชาร์จแบบเร็ว)

ขั้นตอนที่ 3: การเขียนโปรแกรม

การเขียนโปรแกรม
การเขียนโปรแกรม
การเขียนโปรแกรม
การเขียนโปรแกรม

สรุปโปรแกรมทำงานดังนี้ (สำหรับข้อมูลเพิ่มเติม โปรดดูที่โค้ด):

ESP8266 เชื่อมต่อกับจุดเชื่อมต่อ WiFi ของคุณซึ่งข้อมูลประจำตัวที่คุณต้องป้อนในตอนต้นของการเขียนโปรแกรมก่อนรหัสจะได้รับที่อยู่ IP จากเราเตอร์เซิร์ฟเวอร์ DHCP ของคุณเพื่อค้นหา IP ที่คุณต้องการในภายหลัง คุณสามารถตรวจสอบการตั้งค่าหรือตั้งค่าเว็บอินเตอร์เฟส DHCP ของเราเตอร์ การดีบักแฟล็กในรหัสเป็น 1 และคุณจะเห็นว่า IP ESP มีอะไรบ้างในมอนิเตอร์แบบอนุกรม (คุณควรสำรอง IP นั้นในการตั้งค่าเราเตอร์ของคุณเพื่อให้ ESP จะได้รับ IP เดียวกันเสมอเมื่อบูต)

เมื่อเริ่มต้น MCU จะดำเนินการตามรูทีนเดียวกันตลอดไป:

  1. ตรวจสอบว่ายังเชื่อมต่อกับ AP อยู่หรือไม่ ถ้าไม่พยายามเชื่อมต่อใหม่จนกว่าจะสำเร็จ
  2. รอให้ไคลเอนต์ส่งคำขอ HTTP เมื่อมีการร้องขอ:

    1. ตรวจสอบแรงดันไฟฟ้าขาเข้า
    2. ตรวจสอบว่าไฟ LED แสดงสถานะใดอยู่
    3. จับคู่คำขอ HTTP กับสถานะ LED ที่ทราบ (เปิดสีน้ำเงิน เปิดสีส้ม เปิดทั้งคู่ ปิด)
    4. จำลองการกดปุ่มจำนวนมากเท่าที่จำเป็นเพื่อให้ได้สถานะที่ร้องขอ

ฉันจะอธิบายคำแนะนำในการเขียนโปรแกรมสั้น ๆ หากเป็นครั้งแรกที่คุณเขียนโปรแกรม ESP8266 MCU เพื่อค้นหาคำแนะนำเชิงลึกเพิ่มเติม

คุณจะต้องใช้ Arduino IDE และตัวแปลงอินเทอร์เฟซแบบอนุกรม USB (เช่น FT232RL) ในการเตรียม IDE ให้ทำตามคำแนะนำเหล่านี้

ทำตามแผนภาพวงจรเพื่อเชื่อมต่อโมดูล ESP-12E สำหรับการเขียนโปรแกรม เคล็ดลับบางประการ:

  • ใช้แหล่งจ่ายไฟภายนอก 3.3V@500mA (ในกรณีส่วนใหญ่แหล่งจ่ายไฟแบบอนุกรม USB ไม่เพียงพอ);
  • ตรวจสอบว่าตัวแปลง USB-serial ของคุณรองรับลอจิกระดับ 3.3V หรือไม่
  • ตรวจสอบว่าติดตั้งไดรเวอร์ตัวแปลงอนุกรม USB สำเร็จหรือไม่ (จากตัวจัดการอุปกรณ์ windows) คุณยังสามารถตรวจสอบว่าทำงานอย่างถูกต้องจาก IDE เพียงพิน RX และ TX สั้นกว่าจาก IDE เลือกพอร์ต COM เปิดจอภาพอนุกรมและเขียนบางอย่างหากใช้งานได้ คุณควรเห็นข้อความที่คุณส่งปรากฏในคอนโซล
  • ด้วยเหตุผลบางอย่าง ฉันสามารถตั้งโปรแกรม ESP ได้ก็ต่อเมื่อฉันเชื่อมต่อตัวแปลงอนุกรม USB กับพีซีเป็นครั้งแรก จากนั้นเปิด ESP จากแหล่ง 3.3V ภายนอก
  • หลังจากตั้งโปรแกรมสำเร็จแล้ว อย่าลืมดึง GPIO0 สูงในการบู๊ตครั้งถัดไป

ขั้นตอนที่ 4: แผนผังและการบัดกรี

แผนผังและการบัดกรี
แผนผังและการบัดกรี
แผนผังและการบัดกรี
แผนผังและการบัดกรี
แผนผังและการบัดกรี
แผนผังและการบัดกรี

ทำตามแผนผังเพื่อประสานส่วนประกอบทั้งหมดเข้ากับโปรโตบอร์ด ดังที่ได้กล่าวไว้ก่อนหน้านี้ส่วนประกอบบางอย่างเป็นทางเลือก ฉันใช้ KA78M33 3.3V LDO IC และบอร์ดตัวแปลงระดับลอจิกจาก sparkfun หรือคุณสามารถสร้างตัวแปลงด้วยตัวเองตามที่แสดงในแผนผัง (คุณสามารถใช้ N-channel mosfet แทน BSS138) ในกรณีที่คุณใช้แบตเตอรี่ Li-ION เครือข่ายพลังงาน +5V จะเป็นขั้วบวกของแบตเตอรี่ แรงดันอ้างอิง ESP8266 ADC คือ 1V ค่าตัวแบ่งตัวต้านทานที่ฉันเลือกช่วยให้สามารถวัดแรงดันไฟฟ้าขาเข้าได้สูงถึง 5.7V

ควรมีการเชื่อมต่อ 5 จุดกับ PCB หลอดไฟดั้งเดิม: +5V (หรือ +แบตเตอรี่), GND, ปุ่มกด, สัญญาณ PWM จาก MCU ของหลอดไฟสำหรับควบคุม LED สีน้ำเงินและสีส้ม หากคุณเปิดไฟจากแหล่งกำเนิด 5V อย่างที่ฉันทำ คุณจะต้องใช้เครื่องชาร์จแบตเตอรี่แบบสั้น พิน IC VCC พร้อมพิน OUTPUT ด้วยวิธีนี้ อุปกรณ์อิเล็กทรอนิกส์ทั้งหมดจะได้รับพลังงานโดยตรงจาก +5V ไม่ใช่จากเครื่องชาร์จแบตเตอรี่ OUTPUT

ทำตามภาพที่สองสำหรับจุดบัดกรีทั้งหมดที่คุณต้องทำบน PCB หลอดไฟ

หมายเหตุ:

  1. หากคุณตัดสินใจที่จะลัดวงจร +5V ด้วยเอาต์พุต IC เครื่องชาร์จแบตเตอรี่ ให้ถอดแบตเตอรี่ออกให้หมดก่อนดำเนินการ คุณไม่ต้องการเชื่อมต่อ +5V กับแบตเตอรี่โดยตรง
  2. ให้ความสนใจกับหมุดปุ่มกดที่คุณบัดกรีเอาต์พุต ESP เนื่องจาก 2 พินของปุ่มกดเชื่อมต่อกับกราวด์และคุณไม่ต้องการลัดวงจรเมื่อเอาต์พุต ESP สูง ตรวจสอบอีกครั้งด้วยมัลติมิเตอร์

ขั้นตอนที่ 5: แอพ Android

แอพ Android
แอพ Android
แอพ Android
แอพ Android
แอพ Android
แอพ Android

แอป Android สร้างด้วยนักประดิษฐ์แอป MIT หากต้องการดาวน์โหลดแอปและ/หรือโคลนโปรเจ็กต์สำหรับตัวคุณเอง ไปที่ลิงก์นี้ (คุณจะต้องมีบัญชี Google เพื่อเข้าถึง)

ในการเปิดตัวครั้งแรก คุณจะต้องเปิดการตั้งค่าและป้อนที่อยู่ IP ของ ESP8266 IP นี้จะถูกบันทึกไว้จึงไม่จำเป็นต้องป้อนอีกครั้งหลังจากเริ่มโปรแกรมใหม่

แอปทดสอบกับอุปกรณ์ Android 9 และ Android 7 หลายเครื่อง

แนะนำ: