Sommario:

ESP-NOW Domotica Esp8266 Raspberry Pi MQTT: 4 passaggi
ESP-NOW Domotica Esp8266 Raspberry Pi MQTT: 4 passaggi

Video: ESP-NOW Domotica Esp8266 Raspberry Pi MQTT: 4 passaggi

Video: ESP-NOW Domotica Esp8266 Raspberry Pi MQTT: 4 passaggi
Video: Getting Started with MQTT on Arduino Using ESP8266 2024, Novembre
Anonim
ESP-NOW Domotica Esp8266 Raspberry Pi MQTT
ESP-NOW Domotica Esp8266 Raspberry Pi MQTT

In questo Instructable ti mostro come ho usato ESP-NOW nella mia domotica. Nello schema puoi vedere i flussi di comunicazione

Io ti mostro:

  • come funziona il mittente
  • come funziona il ricevitore
  • come funziona la comunicazione seriale con un Raspberry Pi

Non mostro come funzionano MQTT e la mia automazione domestica, puoi trovare altre buone istruzioni per questo.

Crediti: questo Instructable è stato ispirato da:

Video #172 di Andreas Spiess

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

Passaggio 1: backup tramite WiFi e MQTT

Backup tramite WiFi e MQTT
Backup tramite WiFi e MQTT

Ho scoperto che ESP-NOW è estremamente veloce e abbastanza affidabile, ma a volte fallisce. Nel mio programma ho aggiunto un backup tramite normale connessione WiFi e MQTT.

Passaggio 2: il telecomando/mittente

Il telecomando/mittente
Il telecomando/mittente
Il telecomando/mittente
Il telecomando/mittente
Il telecomando/mittente
Il telecomando/mittente
Il telecomando/mittente
Il telecomando/mittente

Nel primo schema vedi come funziona il programma del mittente:

  1. L'esp8266 si avvia dall'accensione o dal ripristino
  2. ESP-NOW è inizializzato
  3. Il modulo invia ESP-NOW per un tempo definito
  4. Il modulo verifica se il messaggio ESP-NOW è stato ricevuto dal destinatario in una funzione di richiamata.

    1. Se è stato ricevuto il messaggio ESP-NOW, il modulo entra in modalità di sospensione profonda a bassa potenza
    2. Se il messaggio ESP-NOW non è stato ricevuto, il modulo avvia una connessione WiFi e una connessione MQTT come connessione di backup.

Il programma per il mittente è nel mio Github (Master_sender.ino). I programmi inviano sia l'argomento che il messaggio per l'automazione domestica MQTT in un unico messaggio ESP-NOW combinato, combinato con un segno '&' per una facile suddivisione al ricevitore.

Ho realizzato due diversi telecomandi/mittenti:

Mittente 1: esp8266 è in modalità di sospensione profonda e viene attivato da un ripristino. Il led nel pulsante si accende e si attenua quando il modulo è terminato. Se la tensione della batteria è troppo bassa, il led lampeggia. Se l'ESP-NOW fallisce, il led lampeggia prima di passare alle connessioni WiFi/MQTT. L'esp8266 è alimentato da una batteria LiPo con un regolatore di tensione HT7333 a 3,3 V

Mittente 2: l'esp8266 è spento e viene alimentato premendo il pulsante. Normalmente la connessione ESP-NOW viene eseguita dopo il "clic" del pulsante. L'esp8266 è alimentato direttamente da una batteria LiPo. Non so se l'esp8266 viene danneggiato dall'alta tensione di una batteria completamente carica (fino a 4,2 V) quando viene accesa per pochi 100 ms. È superiore alle specifiche (3.0 - 3.6V).

Nota: se la batteria è scarica, ESP-NOW non funziona.

Passaggio 3: il ricevitore - Hardware (esp8266 e Raspberry Pi)

Il ricevitore - Hardware (esp8266 e Raspberry Pi)
Il ricevitore - Hardware (esp8266 e Raspberry Pi)
Il ricevitore - Hardware (esp8266 e Raspberry Pi)
Il ricevitore - Hardware (esp8266 e Raspberry Pi)
Il ricevitore - Hardware (esp8266 e Raspberry Pi)
Il ricevitore - Hardware (esp8266 e Raspberry Pi)

La descrizione del destinatario è divisa in due parti:

  1. Hardware
  2. Software

L'hardware

Il ricevitore esp-01 è collegato al mio Raspberry Pi Zero che esegue il mio sistema di automazione domestica (Openhab2) e Node Red.

Nello schema sono mostrati i semplici collegamenti:

  • RX dell'esp-01 a TX del RasPi
  • TX dell'esp-01 a RX del RasPi
  • GND a GND
  • L'esp-01 VCC è alimentato dal pin 3.3V del Raspi
  • Su esp-01 sia RST che CH_PD sono tirati in alto.

Ho realizzato un connettore di interfaccia per montarlo facilmente

In un'immagine puoi vedere le mie connessioni cablate al mio Raspberry Pi 3 (che ha la stessa piedinatura, ma ho usato un altro pin da 3,3 V per collegarmi a CH_PD).

L'esp-01 è stato programmato come mostrato nel mio altro Instructable (vedi passaggio 3).

Passaggio 4: il ricevitore - Software (seriale, nodo rosso, MQTT)

Il ricevitore - Software (seriale, nodo rosso, MQTT)
Il ricevitore - Software (seriale, nodo rosso, MQTT)
Il ricevitore - Software (seriale, nodo rosso, MQTT)
Il ricevitore - Software (seriale, nodo rosso, MQTT)
Il ricevitore - Software (seriale, nodo rosso, MQTT)
Il ricevitore - Software (seriale, nodo rosso, MQTT)

Programma su esp8266

Il programma per il ricevitore esp-01 è nel mio Github (Master_sender.ino). Il programma è davvero semplice, stampa solo il messaggio ESP-NOW ricevuto sulla porta seriale al Raspberry Pi.

Porta seriale

Sul Raspberry Pi, è necessario attivare la porta seriale (su raspbian, eseguire 'sudo raspi-config') per la normale comunicazione seriale.

Il nome della porta seriale è:

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

Puoi controllare la porta seriale eseguendo 'dmesg | grep tty' o 'ls /dev'

Nodo Rosso

In Node Red, selezionare il Nodo di ingresso seriale e configurare la porta seriale (vedere le immagini allegate). Prendere nota del baudrate della connessione seriale, questo deve corrispondere al baudrate programmato nell'esp8266.

L'output del nodo seriale viene trasformato da un nodo funzione che divide il messaggio in corrispondenza del segno '&' e imposta msg.topic e msg.payload. L'output della funzione viene indirizzato al nodo di output mqtt che invia il messaggio al server MQTT. Notare che il campo argomento del nodo mqtt è vuoto, perché l'argomento è impostato nel messaggio.

Consigliato: