Spisu treści:

Raspberry Pi rozmawia z ESP8266 za pomocą MQTT: 8 kroków
Raspberry Pi rozmawia z ESP8266 za pomocą MQTT: 8 kroków

Wideo: Raspberry Pi rozmawia z ESP8266 za pomocą MQTT: 8 kroków

Wideo: Raspberry Pi rozmawia z ESP8266 za pomocą MQTT: 8 kroków
Wideo: DLACZEGO WYBRAŁEM RASPBERRY PI | Inteligentny Dom DIY #3 2024, Listopad
Anonim
Raspberry Pi rozmawia z ESP8266 za pomocą MQTT
Raspberry Pi rozmawia z ESP8266 za pomocą MQTT

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

Malina Pi
Malina Pi
Malina Pi
Malina Pi
Malina Pi
Malina Pi
Malina Pi
Malina 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

Jak skonfigurować statyczny adres IP
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

WęzełMCU
WęzełMCU
WęzełMCU
WęzełMCU
WęzełMCU
WęzełMCU
WęzełMCU
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

Skrypt Pythona
Skrypt Pythona
Skrypt Pythona
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

Połączenia i schemat połączeń
Połączenia i schemat połączeń
Połączenia i schemat połączeń
Połączenia i schemat połączeń

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

Image
Image
Wynik
Wynik

Upewnij się, że skrypt jest uruchomiony, w przeciwnym razie nie będzie w stanie sterować diodami LED za pomocą przycisków.

Zalecana: