Mục lục:

ESP-NOW Home Automation Esp8266 Raspberry Pi MQTT: 4 bước
ESP-NOW Home Automation Esp8266 Raspberry Pi MQTT: 4 bước

Video: ESP-NOW Home Automation Esp8266 Raspberry Pi MQTT: 4 bước

Video: ESP-NOW Home Automation Esp8266 Raspberry Pi MQTT: 4 bước
Video: TBĐC thông minh: 12. Điều khiển ESP bằng giọng nói (ESP32, ESP8266, MQTT, Raspberry Pi,...) 2024, Tháng mười một
Anonim
ESP-NOW Home Automation Esp8266 Raspberry Pi MQTT
ESP-NOW Home Automation Esp8266 Raspberry Pi MQTT

Trong Tài liệu hướng dẫn này, tôi chỉ cho bạn cách tôi đã sử dụng ESP-NOW trong việc tự động hóa tại nhà của mình. Trong giản đồ, bạn có thể thấy các luồng giao tiếp

Tôi chỉ cho bạn:

  • cách người gửi hoạt động
  • máy thu hoạt động như thế nào
  • cách giao tiếp nối tiếp với Raspberry Pi hoạt động như thế nào

Tôi không hiển thị cách MQTT và tự động hóa nhà của tôi hoạt động, bạn có thể tìm thấy các hướng dẫn tốt khác cho điều đó.

Tín dụng: Có thể giảng dạy này được lấy cảm hứng từ:

Video # 172 của Andreas Spiess

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

Bước 1: Sao lưu qua WiFi và MQTT

Sao lưu qua WiFi và MQTT
Sao lưu qua WiFi và MQTT

Tôi phát hiện ra rằng ESP-NOW cực kỳ nhanh và khá đáng tin cậy, nhưng đôi khi không thành công. Trong chương trình của mình, tôi đã thêm một bản sao lưu thông qua kết nối WiFi và MQTT thông thường.

Bước 2: Điều khiển từ xa / người gửi

Điều khiển từ xa / người gửi
Điều khiển từ xa / người gửi
Điều khiển từ xa / người gửi
Điều khiển từ xa / người gửi
Điều khiển từ xa / người gửi
Điều khiển từ xa / người gửi
Điều khiển từ xa / người gửi
Điều khiển từ xa / người gửi

Trong lược đồ đầu tiên, bạn sẽ thấy chương trình của người gửi hoạt động như thế nào:

  1. Esp8266 khởi động từ khi bật nguồn hoặc từ khi đặt lại
  2. ESP-NOW được khởi chạy
  3. Mô-đun gửi ESP-NOW trong một thời gian xác định
  4. Mô-đun kiểm tra xem người nhận có nhận được tin nhắn ESP-NOW hay không trong chức năng gọi lại.

    1. Nếu nhận được thông báo ESP-NOW, mô-đun sẽ ở trạng thái ngủ sâu công suất thấp
    2. Nếu không nhận được thông báo ESP-NOW, mô-đun bắt đầu kết nối WiFi và kết nối MQTT làm kết nối dự phòng.

Chương trình dành cho người gửi nằm trong Github của tôi (Master_sender.ino). Các chương trình sẽ gửi cả chủ đề và thông điệp cho tự động hóa nhà MQTT trong một tin nhắn ESP-NOW kết hợp, được kết hợp tại dấu '&' để dễ dàng phân chia tại người nhận.

Tôi đã tạo hai điều khiển từ xa / người gửi khác nhau:

Người gửi 1: Máy esp8266 đang ở trạng thái ngủ sâu và được kích hoạt bằng cách đặt lại. Đèn led trong nút sáng lên và mờ đi khi hoàn thành mô-đun. Nếu điện áp của pin thấp, đèn LED sẽ nhấp nháy. Nếu ESP-NOW không thành công, đèn LED sẽ nhấp nháy trước khi chuyển sang kết nối WiFi / MQTT. Máy esp8266 được cấp nguồn từ pin LiPo với bộ điều chỉnh điện áp HT7333 thành 3,3V

Người gửi 2: Máy esp8266 bị tắt nguồn và được cấp nguồn bằng cách nhấn nút. Thông thường kết nối ESP-NOW được thực hiện sau khi nút 'nhấp'. Máy esp8266 được cấp nguồn trực tiếp từ pin LiPo. Tôi không biết liệu esp8266 có bị hỏng do điện áp cao của pin đã sạc đầy (lên đến 4,2 V) khi nó được cấp nguồn chỉ trong vài 100 mili giây hay không. Nó cao hơn so với thông số kỹ thuật (3.0 - 3.6V).

Lưu ý: nếu pin yếu, ESP-NOW không thành công.

Bước 3: Bộ thu - Phần cứng (esp8266 và Raspberry Pi)

Bộ thu - Phần cứng (esp8266 và Raspberry Pi)
Bộ thu - Phần cứng (esp8266 và Raspberry Pi)
Bộ thu - Phần cứng (esp8266 và Raspberry Pi)
Bộ thu - Phần cứng (esp8266 và Raspberry Pi)
Bộ thu - Phần cứng (esp8266 và Raspberry Pi)
Bộ thu - Phần cứng (esp8266 và Raspberry Pi)

Mô tả của bộ thu được chia thành hai phần:

  1. Phần cứng
  2. Phần mềm

Phần cứng

Máy nhận esp-01 được kết nối với Raspberry Pi Zero của tôi, hệ thống chạy hệ thống tự động hóa tại nhà của tôi (Openhab2) và Node Red.

Trong sơ đồ, các kết nối đơn giản được hiển thị:

  • RX của esp-01 đến TX của RasPi
  • TX của esp-01 đến RX của RasPi
  • GND sang GND
  • Esp-01 VCC được cấp nguồn bằng chân 3,3V của Raspi
  • Trên esp-01, cả RST và CH_PD đều được kéo lên cao.

Tôi đã tạo một đầu nối giao diện để gắn nó dễ dàng

Trong một hình ảnh, bạn có thể thấy các kết nối dây của tôi với Raspberry Pi 3 của tôi (có cùng sơ đồ chân, nhưng tôi đã sử dụng chân 3,3V khác để kết nối với CH_PD).

Máy esp-01 đã được lập trình như được hiển thị trong Thiết bị hướng dẫn khác của tôi (xem bước 3).

Bước 4: Bộ thu - Phần mềm (Serial, Node Red, MQTT)

Bộ thu - Phần mềm (Serial, Node Red, MQTT)
Bộ thu - Phần mềm (Serial, Node Red, MQTT)
Bộ thu - Phần mềm (Serial, Node Red, MQTT)
Bộ thu - Phần mềm (Serial, Node Red, MQTT)
Bộ thu - Phần mềm (Serial, Node Red, MQTT)
Bộ thu - Phần mềm (Serial, Node Red, MQTT)

Chương trình trên esp8266

Chương trình cho máy thu esp-01 có trong Github của tôi (Master_sender.ino). Chương trình thực sự đơn giản, nó chỉ in thông báo ESP-NOW nhận được trên cổng Serial tới Raspberry Pi.

Cổng nối tiếp

Trên Raspberry Pi, bạn phải kích hoạt Cổng nối tiếp (trên raspbian, thực thi 'sudo raspi-config') để giao tiếp nối tiếp bình thường.

Tên của cổng nối tiếp là:

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

Bạn có thể kiểm tra cổng nối tiếp bằng cách chạy 'dmesg | grep tty 'hoặc' ls / dev '

Node Red

Trong Node Red, chọn Node đầu vào nối tiếp và thiết lập cổng nối tiếp (xem hình ảnh đính kèm). Lưu ý tốc độ truyền của kết nối nối tiếp, tốc độ này phải khớp với tốc độ truyền như được lập trình trong esp8266.

Đầu ra của nút nối tiếp được biến đổi bởi một nút chức năng chia thông báo tại dấu '&' và đặt msg.topic và msg.payload. Đầu ra của hàm được dẫn đến nút đầu ra mqtt, nút này sẽ gửi thông báo đến máy chủ MQTT. Lưu ý rằng trường chủ đề của nút mqtt trống vì chủ đề được đặt trong thư.

Đề xuất: