Kazalo:

Raspberry Pi se pogovarja z ESP8266 z uporabo MQTT: 8 korakov
Raspberry Pi se pogovarja z ESP8266 z uporabo MQTT: 8 korakov

Video: Raspberry Pi se pogovarja z ESP8266 z uporabo MQTT: 8 korakov

Video: Raspberry Pi se pogovarja z ESP8266 z uporabo MQTT: 8 korakov
Video: POPPY PLAYTIME и ХАГГИ ВАГГИ в РЕАЛЬНОЙ ЖИЗНИ! Встретил ЖУТКУЮ КУКЛУ на ФАБРИКЕ ПОППИ ПЛЕЙТАЙМ! 2024, Julij
Anonim
Raspberry Pi se pogovarja z ESP8266 z uporabo MQTT
Raspberry Pi se pogovarja z ESP8266 z uporabo MQTT

V tem projektu bom razložil, kaj je protokol MQTT in kako se uporablja za komunikacijo med napravami, nato pa bom v praktični predstavitvi pokazal, kako nastaviti sistem odjemalca in posrednika, kjer govorita modul ESP8266 in RPi drug drugemu ali pošljete sporočilo, ko pritisnete gumb.

Potreben material

1. Malina Pi 3

2. NodeMCU

3. LED

4. Gumb

5. Upori (10k, 475 ohm)

1. korak: Kaj je MQTT in kako deluje

MQTT

MQTT je protokol za prenos podatkov med stroji (M2M). MQTT je bil ustvarjen z namenom zbiranja podatkov iz številnih naprav in nato prenašanja teh podatkov v infrastrukturo IT. Je lahek in zato idealen za daljinsko spremljanje, zlasti pri povezavah M2M, ki zahtevajo majhen odtis kode ali kjer je pasovna širina omrežja omejena.

Kako deluje MQTT

MQTT je protokol za objavo/naročnino, ki napravam na robu omrežja omogoča objavo pri posredniku. Stranke se povežejo s tem posrednikom, ki nato posreduje komunikacijo med obema napravama. Vsaka naprava se lahko naroči ali registrira na določene teme. Ko druga stranka objavi sporočilo o naročeni temi, posrednik sporočilo posreduje vsem odjemalcem, ki so naročeni.

MQTT je dvosmerna in ohranja ozaveščenost o seji. Če naprava na robu omrežja izgubi povezljivost, bodo vsi naročeni odjemalci obveščeni s funkcijo »Zadnja volja in zaveza« strežnika MQTT, tako da lahko kateri koli pooblaščeni odjemalec v sistemu objavi novo vrednost nazaj na rob omrežna naprava, ki ohranja dvosmerno povezljivost.

Projekt je razdeljen na 3 dele

Najprej ustvarimo strežnik MQTT na RPi in namestimo nekaj knjižnic.

Drugič, v Arduino IDE bomo namestili knjižnice za NodeMCU za delo z MQTT, naložili kodo in preverili, ali strežnik deluje ali ne.

Končno ustvarimo skript v Rpi, naložimo zahtevano kodo v NodeMCU in zaženemo skript python za nadzor LED na strani strežnika in odjemalca. Tukaj je strežnik RPi, odjemalec pa NodeMCU.

2. korak: Raspberry Pi

Malina Pi
Malina Pi
Malina Pi
Malina Pi
Malina Pi
Malina Pi
Malina Pi
Malina Pi

1. Če želite v RPi namestiti najnovejši strežnik in odjemalca MQTT, za uporabo novega skladišča najprej uvozite ključ za podpis paketa skladišča.

wget https://repo.mosquitto.org/debian/mosquitto-repo.gpg.keysudo apt-key add mosquitto-repo.gpg.key

2. Dajte skladišče na voljo apt.

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

3. Odvisno od tega, katero različico Debiana uporabljate.

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

sudo wget

sudo apt-get posodobitev

4. Namestite strežnik Mosquitto z ukazom.

sudo apt-get install mosquitto

Če pri nameščanju takšnega Mosquitta prihaja do napak.

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

Naslednji paketi imajo neizpolnjene odvisnosti: mosquitto: Odvisno: libssl1.0.0 (> = 1.0.1), vendar ga ni mogoče namestiti Odvisno: libwebsockets3 (> = 1.2), vendar ga ni mogoče namestiti E: Težave ni mogoče odpraviti. paketov.

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

Nato uporabite ta ukaz za odpravljanje težav.

sudo apt-fix-broken install

5. Po namestitvi strežnika MQTT odjemalca namestite z ukazom

sudo apt-get install mosquitto-clients

Storitve lahko preverite z ukazom.

systemctl status mosquitto.service

Ker sta strežnik in odjemalec MQTT nameščena. Zdaj lahko to preverimo z naročnino in objavo. Če se želite naročiti in objaviti, lahko preverite ukaze ali obiščete spletno mesto, kot je navedeno spodaj.

Mosquitto Sub

Mosquitto Pub

Za namestitev knjižnice paho-mqtt uporabite spodnji ukaz.

sudo pip namestite paho-mqtt

Paho

3. korak: Kako nastaviti statični IP naslov

Kako nastaviti statični IP naslov
Kako nastaviti statični IP naslov

Pojdite v imenik cd /etc in odprite datoteko dhcpcd.conf s katerim koli urejevalnikom. Na koncu napišite te štiri vrstice.

vmesnik eth0 static ip_address = 192.168.1.100 // ip, ki ga želite uporabiti

vmesnik wlan0

statični naslov_ ip = 192.168.1.68

statični usmerjevalniki = 192.168.1.1 // vaš privzeti prehod

statični strežniki_ime_domene = 192.168.1.1

Po tem ga shranite in znova zaženite pi.

4. korak: NodeMCU

NodeMCU
NodeMCU
NodeMCU
NodeMCU
NodeMCU
NodeMCU
NodeMCU
NodeMCU

Namestite potrebne knjižnice v Arduino IDE za NodeMCU

1. Pojdite na Sketch ==> Vključi knjižnico ==> Upravljaj knjižnice.

2. Poiščite mqtt in namestite knjižnico s strani Adafruit ali pa namestite katero koli knjižnico.

3. Odvisno je od knjižnice sleepydog, zato jo potrebujemo tudi.

Program je naveden zgoraj, samo za preverjanje, ali deluje ali ne. Tukaj nisem ustvaril nobenega skripta v RPi. Za naročanje in objavo uporabljamo samo ukaze. Kasneje bomo ustvarili skript za nadzor.

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 ==> ime gostitelja-t ==> tema

-m ==> sporočilo

Po preverjanju programa Mqtt_check naložite celoten program v NodeMCU

5. korak: Python Script

Python skript
Python skript
Python skript
Python skript

Kot sem že omenil, potrebujemo python skript za nadzor LED z gumbi. Torej bomo ustvarili skript. Scenarij je naveden zgoraj.

Ko zaženete skript, bi moral biti vaš skript videti tako, kot je prikazano na sliki, če koda rezultata ni nič, je to napaka, ki jo lahko preverite na spletnem mestu paho.

Korak 6: Povezave in vezja

Povezave in vezja
Povezave in vezja
Povezave in vezja
Povezave in vezja

Vmesnik gumba, LED z NodeMCU

NodeMCU ===> ButtonGnd ===> Gnd

3.3V ===> PIN1

GPIO4 (D2) ===> PIN2

NodeMCU ===> LED

Gnd ===> Katoda (-ve)

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

Vmesnik gumba, LED z RPi

RPi ===> ButtonGnd ===> PIN1

GPIO 23 ===> PIN2

RPi ===> LED

Gnd ==> Katoda (-ve)

GPIO 24 ===> Anoda (+ve)

7. korak: Rezultat

Image
Image
Rezultat
Rezultat

Poskrbite, da se skript izvaja, sicer ne bo mogel upravljati LED z gumbi.

Priporočena: