Obsah:

Raspberry Pi Talking to ESP8266 Using MQTT: 8 Steps
Raspberry Pi Talking to ESP8266 Using MQTT: 8 Steps

Video: Raspberry Pi Talking to ESP8266 Using MQTT: 8 Steps

Video: Raspberry Pi Talking to ESP8266 Using MQTT: 8 Steps
Video: ESP8266 (NodeMcu) Raspberry Pi MQTT | ESP8266 Publish/Subscribe 2024, Listopad
Anonim
Raspberry Pi hovoří s ESP8266 pomocí MQTT
Raspberry Pi hovoří s ESP8266 pomocí MQTT

V tomto projektu vysvětlím, co je protokol MQTT a jak se používá ke komunikaci mezi zařízeními. Poté jako praktická ukázka předvedu, jak nastavit systém klient a brocker, kde mluví modul ESP8266 a RPi navzájem nebo odeslat zprávu po stisknutí tlačítka.

Potřebný materiál

1. Raspberry Pi 3

2. NodeMCU

3. LED

4. Tlačítko

5. Rezistory (10k, 475 ohmů)

Krok 1: Co je MQTT a jak funguje

MQTT

MQTT je protokol pro přenos dat mezi stroji (M2M). MQTT byl vytvořen s cílem sbírat data z mnoha zařízení a poté je přenášet do IT infrastruktury. Je lehký, a proto je ideální pro vzdálené monitorování, zejména u připojení M2M, která vyžadují malou stopu kódu nebo kde je omezená šířka pásma sítě.

Jak MQTT funguje

MQTT je protokol pro publikování/předplatné, který umožňuje zařízením na okraji sítě publikovat u makléře. Klienti se připojují k tomuto makléři, který pak zprostředkovává komunikaci mezi těmito dvěma zařízeními. Každé zařízení se může přihlásit k odběru nebo se zaregistrovat k jednotlivým tématům. Když jiný klient zveřejní zprávu na téma předplatného, zprostředkovatel předá zprávu kterémukoli klientovi, který se přihlásil k odběru.

MQTT je obousměrný a udržuje stavové povědomí o relacích. Pokud zařízení na okraji sítě ztratí připojení, budou všichni předplatení klienti upozorněni funkcí „Poslední vůle“serveru MQTT, aby jakýkoli autorizovaný klient v systému mohl publikovat novou hodnotu zpět na okraj sítě. síťové zařízení, udržující obousměrné připojení.

Projekt je rozdělen na 3 části

Nejprve vytvoříme server MQTT na RPi a nainstalujeme některé knihovny.

Za druhé, do Arduino IDE nainstalujeme knihovny, aby NodeMCU fungovalo s MQTT, nahrajeme kód a zkontrolujeme, zda server funguje nebo ne.

Nakonec vytvoříme skript v Rpi, nahrajeme požadovaný kód do NodeMCU a spustíme skript pythonu pro ovládání LED diod ze serveru i klienta. Zde je server RPi a klient NodeMCU.

Krok 2: Raspberry Pi

Raspberry Pi
Raspberry Pi
Raspberry Pi
Raspberry Pi
Raspberry Pi
Raspberry Pi
Raspberry Pi
Raspberry Pi

1. Chcete -li nainstalovat nejnovější server a klienta MQTT do RPi, chcete -li použít nové úložiště, nejprve importujte podpisový klíč balíčku úložiště.

wget https://repo.mosquitto.org/debian/mosquitto-repo.gpg.keysudo apt-key přidat mosquitto-repo.gpg.key

2. Zpřístupněte úložiště pro apt.

cd /etc/apt/sources.list.d/

3. Podle toho, jakou verzi Debianu používáte.

sudo wget https://repo.mosquitto.org/debian/mosquitto-wheezy.listsudo wget

sudo wget

sudo apt-get update

4. Nainstalujte server Mosquitto pomocí příkazu.

sudo apt-get install mosquitto

Pokud se vám takto instaluje Mosquitto, dochází k chybám.

#################################################################

Následující balíčky mají nesplněné závislosti: mosquitto: Depends: libssl1.0.0 (> = 1.0.1) but it is not installable Depends: libwebsockets3 (> = 1.2) but it is not installable E: Nelze napravit problémy, you have mentioned broken balíčky.

#################################################################

Poté použijte tento příkaz k vyřešení problémů.

sudo apt-opravená instalace

5. Po instalaci serveru MQTT nainstalujte klienta pomocí příkazu

sudo apt-get install mosquitto-clients

Služby můžete zkontrolovat pomocí příkazu.

systemctl status mosquitto.service

Protože je nainstalován náš server a klient MQTT. Nyní to můžeme zkontrolovat pomocí odběru a publikování. Chcete -li se přihlásit k odběru a publikovat, můžete zkontrolovat příkazy nebo navštívit webové stránky, jak je uvedeno níže.

Mosquitto Sub

Pub Mosquitto

Chcete-li nainstalovat knihovnu paho-mqtt, použijte níže uvedený příkaz.

sudo pip install paho-mqtt

Paho

Krok 3: Jak nastavit statickou IP adresu

Jak nastavit statickou IP adresu
Jak nastavit statickou IP adresu

Přejděte do adresáře cd /etc a otevřete soubor dhcpcd.conf pomocí libovolného editoru. Na konci napište tyto čtyři řádky.

interface eth0 static ip_address = 192.168.1.100 // ip, které chcete použít

rozhraní wlan0

static ip_address = 192.168.1.68

static routery = 192.168.1.1 // vaše výchozí brána

statické jméno_domény_služby = 192.168.1.1

Poté to uložte a restartujte svůj pi.

Krok 4: NodeMCU

NodeMCU
NodeMCU
NodeMCU
NodeMCU
NodeMCU
NodeMCU
NodeMCU
NodeMCU

Nainstalujte požadované knihovny do Arduino IDE pro NodeMCU

1. Přejděte na Sketch ==> Zahrnout knihovnu ==> Spravovat knihovny.

2. Vyhledejte mqtt a nainstalujte knihovnu pomocí Adafruit nebo si můžete nainstalovat libovolnou knihovnu.

3. Záleží na knihovně sleepydog, takže tuto knihovnu také potřebujeme.

Program je uveden výše, pouze pro kontrolu, zda funguje nebo ne. Zde jsem v RPi nevytvořil žádný skript. Používáme pouze příkazy k odběru a publikování. Vytvoříme skript pro ovládání později.

mosquitto_pub -h raspberrypi -t "/leds/pi" -m "ON"

mosquitto_pub -h raspberrypi -t "/leds/pi" -m "OFF"

mosquitto_pub -h raspberrypi -t "/leds/pi" -m "TOGGLE"

mosquitto_pub -h raspberrypi -t "/leds/esp8266" -m "ON"

mosquitto_pub -h raspberrypi -t "/leds/esp8266" -m "OFF"

mosquitto_pub -h raspberrypi -t "/leds/esp8266" -m "TOGGLE"

-h ==> název hostitele-t ==> téma

-m ==> zpráva

Po kontrole programu Mqtt_check nahrajte kompletní program do NodeMCU

Krok 5: Python Script

Python skript
Python skript
Python skript
Python skript

Jak jsem diskutoval výše, potřebujeme skript pythonu pro ovládání LED pomocí tlačítek. Vytvoříme tedy skript. Skript je uveden výše.

Když spustíte skript, váš skript by měl vypadat jako na obrázku, pokud kód výsledku není nula, pak je to chyba, můžete zkontrolovat chybu na webu paho.

Krok 6: Připojení a schéma zapojení

Schéma zapojení a zapojení
Schéma zapojení a zapojení
Schéma zapojení a zapojení
Schéma zapojení a zapojení

Rozhraní tlačítka, LED s NodeMCU

NodeMCU ===> ButtonGnd ===> Gnd

3,3 V ===> PIN1

GPIO4 (D2) ===> PIN2

NodeMCU ===> LED

Gnd ===> Katoda (-ve)

GPIO5 (D1) ===> Anoda (+ve)

Rozhraní tlačítka, LED s RPi

RPi ===> ButtonGnd ===> PIN1

GPIO 23 ===> PIN2

RPi ===> LED

Gnd ==> Katoda (-ve)

GPIO 24 ===> Anoda (+ve)

Krok 7: Výsledek

Image
Image
Výsledek
Výsledek

Ujistěte se, že je skript spuštěný, jinak nebude moci ovládat LED pomocí tlačítek.

Doporučuje: