สารบัญ:

ESP-NOW Home Automation Esp8266 Raspberry Pi MQTT: 4 ขั้นตอน
ESP-NOW Home Automation Esp8266 Raspberry Pi MQTT: 4 ขั้นตอน

วีดีโอ: ESP-NOW Home Automation Esp8266 Raspberry Pi MQTT: 4 ขั้นตอน

วีดีโอ: ESP-NOW Home Automation Esp8266 Raspberry Pi MQTT: 4 ขั้นตอน
วีดีโอ: How to setup MQTT for Raspberry Pi and ESP32 for IOT and Robotics projects 2024, พฤศจิกายน
Anonim
ESP-NOW Home Automation Esp8266 Raspberry Pi MQTT
ESP-NOW Home Automation Esp8266 Raspberry Pi MQTT

ในคำแนะนำนี้ ฉันจะแสดงให้คุณเห็นว่าฉันใช้ ESP-NOW ในระบบอัตโนมัติภายในบ้านของฉันอย่างไร ในแผนผังคุณสามารถดูกระแสการสื่อสาร

ฉันแสดงให้คุณเห็น:

  • วิธีการทำงานของผู้ส่ง
  • วิธีการทำงานของเครื่องรับ
  • การสื่อสารแบบอนุกรมกับ Raspberry Pi ทำงานอย่างไร

ฉันไม่แสดงให้เห็นว่า MQTT และระบบอัตโนมัติภายในบ้านทำงานอย่างไร คุณสามารถหาคำแนะนำที่ดีอื่นๆ สำหรับสิ่งนั้นได้

เครดิต: คำแนะนำนี้ได้รับแรงบันดาลใจจาก:

วิดีโอ #172 โดย Andreas Spiess

www.esploradores.com/practica-6-conexion-es…

ขั้นตอนที่ 1: สำรองข้อมูลผ่าน WiFi และ MQTT

สำรองข้อมูลผ่าน WiFi และ MQTT
สำรองข้อมูลผ่าน WiFi และ MQTT

ฉันพบว่า ESP-NOW นั้นรวดเร็วและน่าเชื่อถือมาก แต่บางครั้งก็ล้มเหลว ในโปรแกรมของฉัน ฉันเพิ่มข้อมูลสำรองผ่านการเชื่อมต่อ WiFi และ MQTT ปกติ

ขั้นตอนที่ 2: รีโมท/ผู้ส่ง

รีโมท/ผู้ส่ง
รีโมท/ผู้ส่ง
รีโมท/ผู้ส่ง
รีโมท/ผู้ส่ง
รีโมท/ผู้ส่ง
รีโมท/ผู้ส่ง
รีโมท/ผู้ส่ง
รีโมท/ผู้ส่ง

ในรูปแบบแรกคุณจะเห็นว่าโปรแกรมของผู้ส่งทำงานอย่างไร:

  1. esp8266 เริ่มทำงานจากการเปิดเครื่องหรือจากการรีเซ็ต
  2. เริ่มใช้งาน ESP-NOW แล้ว
  3. โมดูลส่ง ESP-NOW ตามเวลาที่กำหนด
  4. โมดูลตรวจสอบว่าผู้รับได้รับข้อความ ESP-NOW ในฟังก์ชันโทรกลับหรือไม่

    1. หากได้รับข้อความ ESP-NOW โมดูลจะเข้าสู่โหมดสลีปที่ใช้พลังงานต่ำ
    2. หากไม่ได้รับข้อความ ESP-NOW โมดูลจะเริ่มการเชื่อมต่อ WiFi และการเชื่อมต่อ MQTT เป็นการเชื่อมต่อสำรอง

โปรแกรมสำหรับผู้ส่งอยู่ใน Github ของฉัน (Master_sender.ino) โปรแกรมจะส่งทั้งหัวข้อและข้อความสำหรับระบบอัตโนมัติภายในบ้าน MQTT ในข้อความ ESP-NOW ที่รวมกันเป็นข้อความเดียว รวมกันที่เครื่องหมาย '&' เพื่อให้ง่ายต่อการแยกที่ผู้รับ

ฉันสร้างรีโมต/ผู้ส่งที่แตกต่างกันสองรายการ:

ผู้ส่ง 1: esp8266 อยู่ในโหมดหลับลึกและเปิดใช้งานโดยการรีเซ็ต ไฟ LED ในปุ่มจะสว่างขึ้นและหรี่ลงเมื่อโมดูลเสร็จสิ้น หากแรงดันไฟฟ้าของแบตเตอรี่ต่ำ ไฟ LED จะกะพริบ หาก ESP-NOW ล้มเหลว ไฟ LED จะกะพริบก่อนเปลี่ยนเป็นการเชื่อมต่อ WiFi/MQTT esp8266 ใช้พลังงานจากแบตเตอรี่ LiPo ที่มีตัวควบคุมแรงดันไฟฟ้า HT7333 ถึง 3.3V

ผู้ส่ง 2: esp8266 ปิดและเปิดเครื่องโดยการกดปุ่ม โดยปกติการเชื่อมต่อ ESP-NOW จะทำหลังจากปุ่ม 'คลิก' esp8266 ใช้พลังงานจากแบตเตอรี่ LiPo โดยตรง ฉันไม่ทราบว่า esp8266 ได้รับความเสียหายจากไฟฟ้าแรงสูงของแบตเตอรี่ที่ชาร์จจนเต็มแล้วหรือไม่ (สูงสุด 4.2 V) เมื่อเปิดเครื่องเพียง 100 มิลลิวินาที สูงกว่าสเปก (3.0 - 3.6V)

หมายเหตุ: หากพลังงานแบตเตอรี่เหลือน้อย ESP-NOW จะล้มเหลว

ขั้นตอนที่ 3: ตัวรับ - ฮาร์ดแวร์ (esp8266 และ Raspberry Pi)

ตัวรับ - ฮาร์ดแวร์ (esp8266 และ Raspberry Pi)
ตัวรับ - ฮาร์ดแวร์ (esp8266 และ Raspberry Pi)
ตัวรับ - ฮาร์ดแวร์ (esp8266 และ Raspberry Pi)
ตัวรับ - ฮาร์ดแวร์ (esp8266 และ Raspberry Pi)
ตัวรับ - ฮาร์ดแวร์ (esp8266 และ Raspberry Pi)
ตัวรับ - ฮาร์ดแวร์ (esp8266 และ Raspberry Pi)

คำอธิบายของผู้รับแบ่งออกเป็นสองส่วน:

  1. ฮาร์ดแวร์
  2. ซอฟต์แวร์

ฮาร์ดแวร์

esp-01 ที่รับนั้นเชื่อมต่อกับ Raspberry Pi Zero ของฉันซึ่งใช้งานระบบอัตโนมัติในบ้านของฉัน (Openhab2) และ Node Red

ในแผนผังแสดงการเชื่อมต่ออย่างง่าย:

  • RX ของ esp-01 ถึง TX ของ RasPi
  • TX ของ esp-01 ถึง RX ของ RasPi
  • GND เป็น GND
  • esp-01 VCC ใช้พลังงานจากพิน 3.3V ของ Raspi
  • ใน esp-01 ทั้ง RST และ CH_PD ถูกดึงขึ้นสูง

ฉันสร้างตัวเชื่อมต่ออินเทอร์เฟซเพื่อให้ติดตั้งได้ง่าย

ในภาพหนึ่ง คุณสามารถเห็นการเชื่อมต่อสายของฉันกับ Raspberry Pi 3 ของฉัน (ซึ่งมีพินเอาต์เหมือนกัน แต่ฉันใช้พิน 3.3V อีกอันเพื่อเชื่อมต่อกับ CH_PD)

esp-01 ได้รับการตั้งโปรแกรมตามที่แสดงใน Instructable อื่นของฉัน (ดูขั้นตอนที่ 3)

ขั้นตอนที่ 4: ตัวรับ - ซอฟต์แวร์ (Serial, Node Red, MQTT)

ตัวรับ - ซอฟต์แวร์ (Serial, Node Red, MQTT)
ตัวรับ - ซอฟต์แวร์ (Serial, Node Red, MQTT)
ตัวรับ - ซอฟต์แวร์ (Serial, Node Red, MQTT)
ตัวรับ - ซอฟต์แวร์ (Serial, Node Red, MQTT)
ตัวรับ - ซอฟต์แวร์ (Serial, Node Red, MQTT)
ตัวรับ - ซอฟต์แวร์ (Serial, Node Red, MQTT)

โปรแกรมบน esp8266

โปรแกรมสำหรับตัวรับ esp-01 อยู่ใน Github ของฉัน (Master_sender.ino) โปรแกรมนี้เรียบง่ายมาก เพียงพิมพ์ข้อความ ESP-NOW ที่ได้รับบนพอร์ตอนุกรมไปยัง Raspberry Pi

พอร์ตอนุกรม

บน Raspberry Pi คุณต้องเปิดใช้งาน Serial Port (บน raspbian ให้เรียกใช้ 'sudo raspi-config') สำหรับการสื่อสารแบบอนุกรมปกติ

ชื่อของพอร์ตอนุกรมคือ:

  • Raspberry Pi Zero: /dev/ttyAMA0
  • Raspberry Pi 3: /dev/ttyS0

คุณสามารถตรวจสอบพอร์ตอนุกรมได้โดยเรียกใช้ 'dmesg | grep tty' หรือ 'ls /dev'

โหนดแดง

ใน Node Red เลือกโหนดอินพุตแบบอนุกรมและตั้งค่าพอร์ตอนุกรม (ดูภาพที่แนบมา) หมายเหตุ Baudrate ของการเชื่อมต่อแบบอนุกรมต้องตรงกับ Baudrate ตามที่ตั้งโปรแกรมไว้ใน esp8266

เอาต์พุตของโหนดอนุกรมถูกแปลงโดยโหนดฟังก์ชันที่แยกข้อความที่เครื่องหมาย '&' และตั้งค่า msg.topic และ msg.payload เอาต์พุตของฟังก์ชันนำไปสู่โหนดเอาต์พุต mqtt ซึ่งส่งข้อความไปยังเซิร์ฟเวอร์ MQTT หมายเหตุ ฟิลด์หัวข้อของโหนด mqtt ว่างเปล่า เนื่องจากหัวข้อถูกตั้งค่าในข้อความ

แนะนำ: