Inhoudsopgave:

ESP-NOW Domotica Esp8266 Raspberry Pi MQTT - Ajarnpa
ESP-NOW Domotica Esp8266 Raspberry Pi MQTT - Ajarnpa

Video: ESP-NOW Domotica Esp8266 Raspberry Pi MQTT - Ajarnpa

Video: ESP-NOW Domotica Esp8266 Raspberry Pi MQTT - Ajarnpa
Video: MQTT on Raspberry Pi and ESP8266 with Mosquitto and Micro Python | IoT Essential 2024, November
Anonim
ESP-NOW Domotica Esp8266 Raspberry Pi MQTT
ESP-NOW Domotica Esp8266 Raspberry Pi MQTT

In deze Instructable laat ik je zien hoe ik ESP-NOW heb gebruikt in mijn domotica. In het schema zie je de communicatiestromen

Ik toon u:

  • hoe de afzender werkt
  • hoe de ontvanger werkt
  • hoe de seriële communicatie met een Raspberry Pi werkt

Ik laat niet zien hoe MQTT en mijn domotica werken, daar kun je andere goede instructies voor vinden.

Credits: dit Instructable is geïnspireerd door:

Video #172 door Andreas Spiess

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

Stap 1: Back-up via wifi en MQTT

Back-up via wifi en MQTT
Back-up via wifi en MQTT

Ik kwam erachter dat ESP-NOW extreem snel en redelijk betrouwbaar is, maar soms faalt. In mijn programma heb ik een back-up toegevoegd via normale WiFi en MQTT verbinding.

Stap 2: De afstandsbediening/afzender

De afstandsbediening/afzender
De afstandsbediening/afzender
De afstandsbediening/afzender
De afstandsbediening/afzender
De afstandsbediening/afzender
De afstandsbediening/afzender
De afstandsbediening/afzender
De afstandsbediening/afzender

In het eerste schema zie je hoe het programma van de afzender werkt:

  1. De esp8266 start op vanaf het opstarten of vanaf reset
  2. ESP-NOW is geïnitialiseerd
  3. De module verzendt ESP-NOW voor een bepaalde tijd
  4. De module controleert in een terugbelfunctie of het ESP-NOW-bericht door de ontvanger is ontvangen.

    1. Als het ESP-NOW-bericht is ontvangen, gaat de module in een diepe slaap met laag vermogen
    2. Als het ESP-NOW-bericht niet is ontvangen, start de module een wifi-verbinding en een MQTT-verbinding als back-upverbinding.

Het programma voor de afzender staat in mijn Github (Master_sender.ino). Het programma verstuurt zowel het onderwerp als het bericht voor de MQTT domotica in één gecombineerd ESP-NOW bericht, gecombineerd met een '&' teken voor een makkelijke splitsing bij de ontvanger.

Ik heb twee verschillende afstandsbedieningen/zenders gemaakt:

Afzender 1: De esp8266 bevindt zich in diepe slaap en wordt geactiveerd door een reset. De led in de knop licht op en dimt wanneer de module klaar is. Als de spanning van de batterij te laag is, knippert de led. Als de ESP-NOW is mislukt, knippert de led voordat wordt overgeschakeld naar WiFi/MQTT-verbindingen. De esp8266 wordt gevoed door een LiPo-batterij met een HT7333-spanningsregelaar tot 3,3 V

Afzender 2: De esp8266 is uitgeschakeld en wordt gevoed door op de knop te drukken. Normaal gesproken wordt de ESP-NOW-verbinding gemaakt nadat de knop 'klikt'. De esp8266 wordt rechtstreeks gevoed door een LiPo-batterij. Ik weet niet of de esp8266 beschadigd raakt door de hoge spanning van een volledig opgeladen batterij (tot 4,2 V) wanneer deze slechts een paar 100 ms wordt ingeschakeld. Het is hoger dan de specificaties (3.0 - 3.6V).

Let op: als de batterij bijna leeg is, mislukt de ESP-NOW.

Stap 3: De ontvanger - hardware (esp8266 en Raspberry Pi)

De ontvanger - Hardware (esp8266 en Raspberry Pi)
De ontvanger - Hardware (esp8266 en Raspberry Pi)
De ontvanger - Hardware (esp8266 en Raspberry Pi)
De ontvanger - Hardware (esp8266 en Raspberry Pi)
De ontvanger - Hardware (esp8266 en Raspberry Pi)
De ontvanger - Hardware (esp8266 en Raspberry Pi)

De beschrijving van de ontvanger is opgesplitst in twee delen:

  1. Hardware
  2. Software

de hardware

De ontvangende esp-01 is verbonden met mijn Raspberry Pi Zero waarop mijn domoticasysteem (Openhab2) en Node Red draait.

In het schema zijn de eenvoudige aansluitingen weergegeven:

  • RX van de esp-01 naar TX van de RasPi
  • TX van de esp-01 naar RX van de RasPi
  • GND naar GND
  • De esp-01 VCC wordt aangedreven door de 3.3V-pin van de Raspi
  • Op de esp-01 worden zowel RST als CH_PD hoog getrokken.

Ik heb een interface-connector gemaakt om hem gemakkelijk te monteren

Op één foto zie je mijn draadverbindingen met mijn Raspberry Pi 3 (die dezelfde pinout heeft, maar ik heb een andere 3.3V-pin gebruikt om verbinding te maken met CH_PD).

De esp-01 was geprogrammeerd zoals getoond in mijn andere Instructable (zie stap 3).

Stap 4: De ontvanger - Software (Serial, Node Red, MQTT)

De ontvanger - Software (serieel, Node Red, MQTT)
De ontvanger - Software (serieel, Node Red, MQTT)
De ontvanger - Software (serieel, Node Red, MQTT)
De ontvanger - Software (serieel, Node Red, MQTT)
De ontvanger - Software (serieel, Node Red, MQTT)
De ontvanger - Software (serieel, Node Red, MQTT)

Programma op esp8266

Het programma voor de esp-01 ontvanger staat in mijn Github (Master_sender.ino). Het programma is heel eenvoudig, het print alleen het ontvangen ESP-NOW-bericht op de seriële poort naar de Raspberry Pi.

Seriële poort

Op de Raspberry Pi moet u de seriële poort activeren (op raspbian, voer 'sudo raspi-config' uit) voor normale seriële communicatie.

De naam van de seriële poort is:

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

U kunt de seriële poort controleren door 'dmesg |. uit te voeren grep tty' of 'ls /dev'

Knooppunt Rood

Selecteer in Node Red het seriële invoerknooppunt en stel de seriële poort in (zie de bijgevoegde afbeeldingen). Let op de baudrate van de seriële verbinding, deze moet overeenkomen met de baudrate zoals geprogrammeerd in de esp8266.

De uitvoer van het seriële knooppunt wordt getransformeerd door een functieknooppunt dat het bericht splitst bij het '&'-teken en de msg.topic en de msg.payload instelt. De uitvoer van de functie wordt naar het mqtt-uitvoerknooppunt geleid dat het bericht naar de MQTT-server stuurt. Merk op dat het onderwerpveld van het mqtt-knooppunt leeg is, omdat het onderwerp in het bericht is ingesteld.

Aanbevolen: