Spisu treści:
- Krok 1: Co to jest MQTT i jak to działa?
- Krok 2: Raspberry Pi
- Krok 3: Jak skonfigurować statyczny adres IP
- Krok 4: WęzełMCU
- Krok 5: Skrypt Pythona
- Krok 6: Połączenia i schemat obwodów
- Krok 7: Wynik
Wideo: Raspberry Pi rozmawia z ESP8266 za pomocą MQTT: 8 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:31
W tym projekcie wyjaśnię czym jest protokół MQTT i w jaki sposób służy do komunikacji pomiędzy urządzeniami. Następnie w ramach praktycznej demonstracji zademonstruję jak skonfigurować system kliencki i brokerski, gdzie moduł ESP8266 jak i RPi rozmawiają do siebie lub wysyłaj wiadomość po naciśnięciu przycisku.
Wymagany materiał
1. Raspberry Pi 3
2. WęzełMCU
3. LED
4. Przycisk
5. Rezystory (10k, 475 omów)
Krok 1: Co to jest MQTT i jak to działa?
MQTT
MQTT to protokół transmisji danych między maszynami (M2M). MQTT został stworzony z myślą o zbieraniu danych z wielu urządzeń, a następnie przesyłaniu tych danych do infrastruktury IT. Jest lekki, a zatem idealny do zdalnego monitorowania, zwłaszcza w połączeniach M2M, które wymagają niewielkiej ilości kodu lub gdy przepustowość sieci jest ograniczona.
Jak działa MQTT
MQTT to protokół publikowania/subskrypcji, który umożliwia urządzeniom na obrzeżach sieci publikowanie do brokera. Klienci łączą się z tym brokerem, który następnie pośredniczy w komunikacji między dwoma urządzeniami. Każde urządzenie może subskrybować lub zarejestrować się w określonych tematach. Gdy inny klient publikuje komunikat w zasubskrybowanym temacie, broker przekazuje komunikat do dowolnego subskrybowanego klienta.
MQTT jest dwukierunkowy i utrzymuje stanową świadomość sesji. Jeśli urządzenie na brzegu sieci utraci łączność, wszyscy subskrybowani klienci zostaną powiadomieni za pomocą funkcji „Ostatnia wola i testament” serwera MQTT, tak aby każdy autoryzowany klient w systemie mógł opublikować nową wartość z powrotem na brzegu sieci. urządzenie sieciowe, utrzymujące dwukierunkową łączność.
Projekt podzielony jest na 3 części
Najpierw tworzymy serwer MQTT na RPi i instalujemy kilka bibliotek.
Po drugie zainstalujemy biblioteki w Arduino IDE aby NodeMCU współpracowało z MQTT, wgramy kod i sprawdzimy czy serwer działa czy nie.
Na koniec tworzymy skrypt w Rpi, wgrywamy wymagany kod w NodeMCU i uruchamiamy skrypt Pythona, aby kontrolować diody LED zarówno po stronie serwera, jak i klienta. Tutaj serwer to RPi, a klientem jest NodeMCU.
Krok 2: Raspberry Pi
1. Aby zainstalować najnowszy serwer i klient MQTT w RPi, aby korzystać z nowego repozytorium należy najpierw zaimportować klucz podpisywania pakietu repozytorium.
wget https://repo.mosquitto.org/debian/mosquitto-repo.gpg.keysudo apt-key dodaj mosquitto-repo.gpg.key
2. Udostępnij repozytorium apt.
cd /etc/apt/sources.list.d/
3. W zależności od używanej wersji Debiana.
sudo wget https://repo.mosquitto.org/debian/mosquitto-wheezy.listsudo wget
sudo wget
aktualizacja sudo apt-get
4. Zainstaluj serwer Mosquitto za pomocą polecenia.
sudo apt-get install mosquitto
Jeśli otrzymujesz błędy podczas instalowania Mosquitto w ten sposób.
#################################################################
Następujące pakiety mają niespełnione zależności: mosquitto: Zależy: libssl1.0.0 (>= 1.0.1), ale nie można go zainstalować Zależy: libwebsockets3 (>= 1.2), ale nie można go zainstalować E: Nie można naprawić problemów, masz uszkodzony pakiety.
#################################################################
Następnie użyj tego polecenia, aby naprawić problemy.
sudo apt --fix-broken install
5. Po zainstalowaniu serwera MQTT zainstaluj klienta za pomocą polecenia
sudo apt-get install mosquitto-clients
Możesz sprawdzić usługi za pomocą polecenia.
systemctl status mosquitto.service
Gdy zainstalowany jest nasz serwer i klient MQTT. Teraz możemy to sprawdzić za pomocą subskrypcji i publikacji. Aby subskrybować i publikować, możesz sprawdzić polecenia lub odwiedzić stronę internetową, jak podano poniżej.
Komar Sub
Mosquito Pub
Aby zainstalować bibliotekę paho-mqtt użyj poniższego polecenia.
sudo pip zainstaluj paho-mqtt
Paho
Krok 3: Jak skonfigurować statyczny adres IP
Przejdź do katalogu cd /etc i otwórz plik dhcpcd.conf za pomocą dowolnego edytora. Na koniec napisz te cztery linijki.
interface eth0 static ip_address=192.168.1.100 // ip, którego chcesz użyć
interfejs wlan0
statyczny adres_ip=192.168.1.68
routery statyczne=192.168.1.1 // Twoja domyślna brama
statyczne serwery_nazw_domeny=192.168.1.1
Następnie zapisz go i zrestartuj swoje pi.
Krok 4: WęzełMCU
Zainstaluj wymagane biblioteki w Arduino IDE dla NodeMCU
1. Przejdź do Szkic ==> Dołącz bibliotekę ==> Zarządzaj bibliotekami.
2. Wyszukaj mqtt i zainstaluj bibliotekę Adafruit lub możesz zainstalować dowolną bibliotekę.
3. To zależy od biblioteki sleepydog, więc potrzebujemy również tej biblioteki.
Program jest podany powyżej, tylko po to, aby sprawdzić, czy działa, czy nie. Tutaj nie stworzyłem żadnego skryptu w RPi. Używamy tylko poleceń do subskrybowania i publikowania. Skrypt do sterowania stworzymy później.
mosquitto_pub -h raspberrypi -t "/leds/pi" -m "WŁ"
mosquitto_pub -h raspberrypi -t "/leds/pi" -m "WYŁ"
mosquitto_pub -h raspberrypi -t "/leds/pi" -m "PRZEŁĄCZ"
mosquitto_pub -h raspberrypi -t "/leds/esp8266" -m "WŁ"
mosquitto_pub -h raspberrypi -t "/leds/esp8266" -m "WYŁ"
mosquitto_pub -h raspberrypi -t "/leds/esp8266" -m "PRZEŁĄCZ"
-h == > nazwa hosta-t == > temat
-m == > wiadomość
Po sprawdzeniu programu Mqtt_check wgraj kompletny program w NodeMCU
Krok 5: Skrypt Pythona
Jak wspomniałem powyżej, potrzebujemy skryptu Pythona do sterowania diodami za pomocą przycisków. Więc stworzymy skrypt. Skrypt podano powyżej.
Po uruchomieniu skryptu Twój skrypt powinien wyglądać tak, jak pokazano na obrazku, jeśli kod wyniku nie jest zerowy, to jest to błąd, możesz sprawdzić błąd na stronie paho.
Krok 6: Połączenia i schemat obwodów
Interfejs przycisku, diody LED z NodeMCU
NodeMCU === > ButtonGnd === > Gnd
3,3 V === > PIN1
GPIO4 (D2) === > PIN2
WęzełMCU === > LED
Gnd === > Katoda (-ve)
GPIO5 (D1) === > Anoda(+ve)
Interfejs przycisku, LED z RPi
RPi === > PrzyciskGnd === > PIN1
GPIO 23 === > PIN2
RPi === > LED
Gnd == > Katoda (-ve)
GPIO 24 === > Anoda(+ve)
Krok 7: Wynik
Upewnij się, że skrypt jest uruchomiony, w przeciwnym razie nie będzie w stanie sterować diodami LED za pomocą przycisków.
Zalecana:
Steruj urządzeniami domowymi za pomocą Alexy za pomocą ESP8266 lub ESP32: 8 kroków
Kontroluj urządzenia domowe przez Alexę za pomocą ESP8266 lub ESP32: Hej, co słychać, chłopaki! Akarsh tutaj z CETech. Ten mój projekt pomoże ci stać się łatwym i poczujesz się jak król po kontrolowaniu urządzeń w swoim domu, po prostu wydając polecenie Alexa.Najważniejsze za tym p
Zegar internetowy: wyświetlanie daty i godziny za pomocą OLED za pomocą ESP8266 NodeMCU z protokołem NTP: 6 kroków
Zegar internetowy: wyświetlanie daty i godziny za pomocą OLED za pomocą ESP8266 NodeMCU z protokołem NTP: Cześć, w tej instrukcji zbudujemy zegar internetowy, który będzie pobierał czas z Internetu, więc ten projekt nie będzie wymagał żadnego zegara czasu rzeczywistego do uruchomienia, będzie potrzebował tylko działające łącze internetowe A do tego projektu potrzebujesz esp8266 który będzie miał
Monitorowanie akceleracji za pomocą Raspberry Pi i AIS328DQTR za pomocą Pythona: 6 kroków
Monitorowanie przyspieszenia za pomocą Raspberry Pi i AIS328DQTR Za pomocą Pythona: Przyspieszenie jest skończone, myślę, że zgodnie z niektórymi prawami fizyki.- Terry Riley Gepard wykorzystuje niesamowite przyspieszenie i szybkie zmiany prędkości podczas pościgu. Najszybsze stworzenie na lądzie od czasu do czasu wykorzystuje swoje najwyższe tempo do łapania zdobyczy. Ten
Śledzenie zmian przyspieszenia za pomocą Raspberry Pi i MMA7455 za pomocą Pythona: 6 kroków
Śledzenie zmian akceleracji za pomocą Raspberry Pi i MMA7455 przy użyciu Pythona: nie potknąłem się, testowałem grawitację. Nadal działa… Reprezentacja przyspieszającego wahadłowca kosmicznego wyjaśniała, że zegar w najwyższym punkcie wahadłowca wybierałby szybszy niż zegar u podstawy z powodu grawitacyjnego rozszerzania się czasu. Trochę
Sterowanie bramą za pomocą Google Assistent za pomocą ESP8266 NodeMCU: 6 kroków
Sterowanie bramą za pomocą Google Assistent za pomocą ESP8266 NodeMCU: To mój pierwszy projekt dotyczący instrukcji, więc proszę o komentarz poniżej, jeśli są możliwe ulepszenia. Pomysł polega na użyciu asystenta Google do wysłania sygnału do tablicy kontrolnej bramy. Więc wysyłając polecenie, pojawi się przekaźnik, który zamknie