Indholdsfortegnelse:
- Trin 1: Hvad er MQTT, og hvordan fungerer det
- Trin 2: Hindbær Pi
- Trin 3: Sådan opsættes statisk Ip -adresse
- Trin 4: NodeMCU
- Trin 5: Python Script
- Trin 6: Forbindelser og kredsløbsdiagram
- Trin 7: Resultat
Video: Raspberry Pi Taler til ESP8266 Brug af MQTT: 8 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:29
I dette projekt vil jeg forklare, hvad MQTT -protokollen er, og hvordan den bruges til at kommunikere mellem enheder. Derefter vil jeg som en praktisk demonstration demonstrere, hvordan man konfigurerer et klient- og brokersystem, hvor et ESP8266 -modul samt RPi -tale til hinanden eller send besked, når der trykkes på en knap.
Materiale kræves
1. Raspberry Pi 3
2. NodeMCU
3. LED
4. Knap
5. Modstande (10k, 475 ohm)
Trin 1: Hvad er MQTT, og hvordan fungerer det
MQTT
MQTT er en dataoverførselsprotokol fra maskine til maskine (M2M). MQTT blev oprettet med det formål at indsamle data fra mange enheder og derefter transportere disse data til IT -infrastrukturen. Det er let og derfor ideelt til fjernovervågning, især i M2M -forbindelser, der kræver et lille kodefodaftryk, eller hvor netværksbåndbredde er begrænset.
Sådan fungerer MQTT
MQTT er en publish/subscribe-protokol, der tillader edge-of-network-enheder at publicere til en mægler. Klienter opretter forbindelse til denne mægler, som derefter formidler kommunikation mellem de to enheder. Hver enhed kan abonnere på eller registrere bestemte emner. Når en anden klient udgiver en meddelelse om et emne, der abonneres på, videresender mægleren meddelelsen til enhver klient, der har abonneret.
MQTT er tovejs og opretholder stateful session opmærksomhed. Hvis en edge-of-network-enhed mister forbindelsen, får alle abonnerede klienter besked med funktionen "Last Will and Testament" på MQTT-serveren, så enhver autoriseret klient i systemet kan offentliggøre en ny værdi tilbage til kanten af- netværksenhed, opretholder tovejsforbindelse.
Projektet er opdelt i 3 dele
For det første opretter vi MQTT -server på RPi og installerer nogle biblioteker.
For det andet vil vi installere biblioteker i Arduino IDE, så NodeMCU kan arbejde med MQTT, uploade koden og kontrollere, om serveren fungerer eller ej.
Endelig opretter vi et script i Rpi, uploader den nødvendige kode i NodeMCU og kører python -scriptet til at styre lysdioder fra både server og klientside. Her er serveren RPi, og klienten er NodeMCU.
Trin 2: Hindbær Pi
1. For at installere den nyeste MQTT -server og klient i RPi, for at bruge det nye lager, skal du først importere pakkenes signeringsnøgle.
wget https://repo.mosquitto.org/debian/mosquitto-repo.gpg.keysudo apt-key tilføj mosquitto-repo.gpg.key
2. Gør depotet tilgængeligt for apt.
cd /etc/apt/sources.list.d/
3. Afhængigt af hvilken version af Debian du bruger.
sudo wget https://repo.mosquitto.org/debian/mosquitto-wheezy.listsudo wget
sudo wget
sudo apt-get opdatering
4. Installer Mosquitto -serveren ved hjælp af kommandoen.
sudo apt-get install mosquitto
Hvis du får fejl i installationen af Mosquitto som denne.
#################################################################
Følgende pakker har uopfyldte afhængigheder: mosquitto: Depends: libssl1.0.0 (> = 1.0.1), men det kan ikke installeres Depends: libwebsockets3 (> = 1.2), men det kan ikke installeres E: Kan ikke rette problemer, du har holdt brudt pakker.
#################################################################
Brug derefter denne kommando til at løse problemer.
sudo apt --fix-brudt installation
5. Efter installation af MQTT -server skal du installere klienten ved hjælp af kommandoen
sudo apt-get install mosquitto-klienter
Du kan kontrollere tjenester ved hjælp af kommando.
systemctl status mosquitto.service
Da vores MQTT -server og klient er installeret. Nu kan vi kontrollere det ved at abonnere og udgive. For at abonnere og udgive kan du kontrollere kommandoer eller besøge webstedet som angivet nedenfor.
Myg Sub
Mosquitto Pub
For at installere paho-mqtt bibliotek skal du bruge kommandoen herunder.
sudo pip installer paho-mqtt
Paho
Trin 3: Sådan opsættes statisk Ip -adresse
Gå til bibliotek cd /etc, og åbn filen dhcpcd.conf ved hjælp af en hvilken som helst editor. I slutningen skriver du disse fire linjer.
interface eth0 static ip_address = 192.168.1.100 // ip du vil bruge
grænseflade wlan0
statisk ip_address = 192.168.1.68
statiske routere = 192.168.1.1 // din standardgateway
statisk domænenavn_servere = 192.168.1.1
Gem derefter det, og genstart din pi.
Trin 4: NodeMCU
Installer nødvendige biblioteker i Arduino IDE til NodeMCU
1. Gå til Skitse ==> Inkluder bibliotek ==> Administrer biblioteker.
2. Søg efter mqtt og installer bibliotek af Adafruit, eller du kan installere et hvilket som helst bibliotek.
3. Det afhænger af sleepydog -biblioteket, så vi har også brug for dette bibliotek.
Programmet er givet ovenfor, bare for at kontrollere, om det virker eller ej. Her har jeg ikke oprettet noget script i RPi. Vi bruger bare kommandoer til at abonnere og udgive. Vi opretter script til styring senere.
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 ==> værtsnavn-t ==> emne
-m ==> besked
Efter at have kontrolleret Mqtt_check -programmet uploader du komplet program i NodeMCU
Trin 5: Python Script
Som jeg diskuterede ovenfor har vi brug for python -script til styring af lysdioder ved hjælp af knapper. Så vi skal oprette script. Scriptet er angivet ovenfor.
Når du kører scriptet, skal dit script se ud som vist på billedet, hvis resultatkoden ikke er nul, er deres en fejl, du kan kontrollere fejl på paho -webstedet.
Trin 6: Forbindelser og kredsløbsdiagram
Interfacing af knap, LED med NodeMCU
NodeMCU ===> ButtonGnd ===> Gnd
3.3V ===> PIN1
GPIO4 (D2) ===> PIN2
NodeMCU ===> LED
Gnd ===> Katode (-ve)
GPIO5 (D1) ===> Anode (+ve)
Interfacing af knap, LED med RPi
RPi ===> ButtonGnd ===> PIN1
GPIO 23 ===> PIN2
RPi ===> LED
Gnd ==> Katode (-ve)
GPIO 24 ===> Anode (+ve)
Trin 7: Resultat
Sørg for, at scriptet kører, ellers kan det ikke styre LED ved hjælp af knapper.
Anbefalede:
Billig NMEA/AIS Hub - RS232 til Wifi Bridge til brug ombord: 6 trin
Billig NMEA /AIS Hub - RS232 til Wifi Bridge til brug ombord: Opdater 9. januar 2021 - Tilføjet ekstra TCP -forbindelse og genbrug sidste forbindelse, hvis flere klienter opretter Opdatering 13. december 2020 - Tilføjet ingen konfigurationsversion af koden til både med eksisterende routere Introduktion Denne NMEA / AIS RS232 til WiFi -bro er
Opret en iPhone -app, der taler til partikelnet: 4 trin
Opret en iPhone -app, der taler til partikelnet: I dette projekt lærer du, hvordan du indlæser en app på din iPhone, der taler direkte til et 3. generations partikelnetkort. Det vil tage mindre end 20 minutter af din tid. Plus, du kan begynde at pille med det samme !! Lad os komme i gang. Ting vil du ikke
I2C / IIC LCD -skærm - Brug et SPI LCD til I2C LCD Display Brug SPI til IIC modul med Arduino: 5 trin
I2C / IIC LCD -skærm | Brug en SPI LCD til I2C LCD -skærmen Brug af SPI til IIC -modulet med Arduino: Hej fyre, da en normal SPI LCD 1602 har for mange ledninger at tilslutte, så det er meget svært at grænseflade det med arduino, men der er et modul på markedet, som kan konverter SPI -skærm til IIC -skærm, så du skal kun tilslutte 4 ledninger
Metal taler stativer, ingen svejsning: 9 trin (med billeder)
Metal Speakes Stands, No Svejsning: Jeg plejede at have denne slags fire runde metalrørhøjttalere, og jeg elskede virkelig designet. Men da jeg flyttede til et andet sted, fik de " magisk " faret vild. Jeg fik for nylig repareret min gamle hifi og ville have de samme højttalerstativer, men kunne
Brug 1 analog indgang til 6 knapper til Arduino: 6 trin
Brug 1 analog indgang til 6 knapper til Arduino: Jeg har ofte spekuleret på, hvordan jeg kunne få flere digitale indgange til min Arduino. Det gik for nylig op for mig, at jeg skulle kunne bruge en af de analoge indgange til at indføre flere digitale input. Jeg lavede en hurtig søgning og fandt ud af, hvor folk var