Rozpoczęcie pracy z MQTT i Arduino Uno

Ari Mahpour
|  Utworzono: październik 19, 2021  |  Zaktualizowano: lipiec 1, 2024
Rozpoczynanie pracy z MQTT

W dzisiejszym świecie, gdzie urządzenia połączone stały się wszechobecne, termin Internet Rzeczy (IoT) stał się faktycznym opisem dla "urządzenia połączonego z internetem". Chociaż ten uwielbiany, zapisywany wielkimi literami akronim jest piękny sam w sobie, to "urządzenia połączone z internetem" mają o wiele więcej do zaoferowania, niż ludzie zdają sobie sprawę. W tym artykule chciałbym głębiej zagłębić się w jeden z najbardziej rozpowszechnionych protokołów używanych w urządzeniach IoT: protokół MQ Telemetry Transport (MQTT). Krótko omówimy, czym jest, jak działa i co wyróżnia go na tle innych technologii. Przejdziemy również przez kompleksowy przykład z użyciem urządzenia Arduino.

Co i dlaczego MQTT

W typowej konfiguracji klient-serwer mamy dostawcę (czyli same urządzenia), który przesyła dane z czujników do serwera oraz konsumenta, który żąda wyświetlenia tych danych z serwera. MQTT nie różni się w tym zakresie. Jest to lekki protokół używany do komunikacji między urządzeniami. Urządzenia zazwyczaj „publikują” (czyli wysyłają) dane do „brokera” MQTT (lub serwera), które są następnie przechowywane, aby mogły być udostępniane innym urządzeniom lub aplikacjom internetowym. Inne urządzenie lub aplikacja internetowa „subskrybuje” ten zestaw danych (czyli żąda danych) od brokera MQTT, a następnie broker MQTT dostarcza im te dane. Można to postrzegać jako po prostu uszlachetniony serwer internetowy z dwoma głównymi wyjątkami:

  1. Pakiety danych są bardzo lekkie (co poprawia prędkość, wydajność i koszt)
  2. MQTT może korzystać z innych trybów komunikacji niż tylko internet (np. Bluetooth)
Figure 1: MQTT Broker with Devices
Rysunek 1: Broker MQTT z urządzeniami

Z powyższych dwóch powodów MQTT stał się bardzo popularnym protokołem w urządzeniach IoT. Historycznie ludzie używali żądań HTTP POST/GET, aby osiągnąć tę formę komunikacji urządzenie-serwer, ale ograniczało to ich zdolność do korzystania z innych urządzeń komunikacyjnych, takich jak Bluetooth czy ZigBee. Ponieważ MQTT jest w tym względzie agnostyczny, możemy teraz mieć możliwości przesyłania wiadomości w sieci opartej na meshu używając MQTT bez konieczności łączenia się z internetem

Rozpoczynanie pracy z MQTT

Istnieje wiele sposobów na rozpoczęcie pracy z MQTT, w tym projektowanie kompleksowego rozwiązania od początku do końca. Aby uprościć sprawę, będziemy korzystać z darmowej usługi brokera MQTT dostarczanej przez Adafruit w tym przykładzie. Pozwoli nam to skupić się tylko na stronie klienta procesu rozwoju. Aby rozpocząć, potrzebować będziesz następujących rzeczy:

  1. Urządzenie Arduino (W tym przykładzie użyto Arduino Uno)
  2. Shield Arduino wspierający łączność internetową (np. Arduino Ethernet Shield) lub urządzenie kompatybilne z Arduino oparte na Wifi, takie jak ESP8266.
  3. Oprogramowanie Arduino IDE
  4. Konto na Adafruit IO.

Musimy najpierw wykonać kilka czynności, aby przygotować nasze środowisko. Zacznijmy od skonfigurowania naszego sprzętu. Zamierzam użyć Arduino Uno i Arduino Ethernet Shield podłączonego do mojej lokalnej sieci.

Figure 2: Arduino Uno and Arduino Ethernet Shield side by side
Rysunek 2: Arduino Uno i Arduino Ethernet Shield obok siebie

Musimy umieścić Ethernet Shield na Arduino i podłączyć go do sieci w ten sposób:

Figure 3: Arduino Uno and Arduino Ethernet Shield hooked up together and plugged in
Rysunek 3: Arduino Uno i Arduino Ethernet Shield połączone razem i podłączone

Po skonfigurowaniu sprzętu otwórzmy Arduino IDE i zainstalujmy potrzebne biblioteki. Otwórz Arduino IDE i przejdź do Narzędzia > Zarządzaj bibliotekami…

Figure 4: Manage Libraries menu option
Rysunek 4: Opcja menu Zarządzaj bibliotekami

Wyszukaj bibliotekę Adafruit MQTT i kliknij zainstaluj:

Figure 5: Library Manager
Rysunek 5: Menedżer bibliotek

Zostaniesz również poproszony o zainstalowanie zależności biblioteki. Kliknij „Zainstaluj wszystko”.

Figure 6: Library Dependencies Dialog
Rysunek 6: Dialog zależności bibliotek

Po zainstalowaniu bibliotek wsparcia możesz otworzyć przykład, przechodząc do Plik > Przykłady > Adafruit MQTT Library > mqtt_ethernet.

Figure 7: Menu navigation for the mqtt_ethernet example
Rysunek 7: Nawigacja menu dla przykładu mqtt_ethernet

W tym momencie musimy zrobić przerwę i pobrać nasze dane uwierzytelniające z konta Adafruit IO. Zaloguj się do Adafruit IO i kliknij na „My Key” na górze:

Figure 8: My Key Menu Option
Rysunek 8: Opcja menu Mój klucz

Teraz wróć do swojego przykładu szkicu Arduino mqtt_ethernet i wypełnij pola AIO_USERNAME oraz AIO_KEY, wpisując „Username” i „Active Key” znajdujące się na Twoim koncie Adafruit IO. Upewnij się, że urządzenie jest podłączone, a następnie kliknij na Prześlij:

Figure 9: Arduino Sketch ready for the upload
Rysunek 9: Szkic Arduino gotowy do załadowania

Aby zobaczyć status urządzenia (i upewnić się, że jest ono połączone z brokerem MQTT) przejdź do Narzędzia > Monitor szeregowy. Powinieneś zobaczyć wynik, który wygląda tak:

Figure 10: Serial Monitor output of the Arduino mqtt_ethernet example
Rysunek 10: Wyjście Monitora szeregowego przykładu Arduino mqtt_ethernet

W tym momencie potwierdziliśmy, że dane są pomyślnie wysyłane do brokera MQTT. Aby przyjrzeć się faktycznym danym na serwerze, wróćmy do naszego konta Adafruit IO i kliknij na „Feeds”, a następnie kliknij na „photocell”

Figure 11: Adafruit IO Feeds
Rysunek 11: Kanały Adafruit IO

Teraz otrzymujemy na żywo przechwycone dane, które nasz Arduino wysyła do brokera MQTT. Możemy również pobrać dane historyczne.

Figure 12: Live and historical data sent to the MQTT broker from the Arduino
Rysunek 12: Dane na żywo i historyczne wysyłane do brokera MQTT z Arduino

Gratulacje! Udało Ci się skonfigurować urządzenie z obsługą MQTT i opublikować swoje dane na brokera MQTT. Teraz wykonaj kolejny krok, tworząc własne niestandardowe czujniki i publikując dane na swojego brokera MQTT.

Podsumowanie

W tym artykule dowiedzieliśmy się, czym jest MQTT, dlaczego jest używane i jak zaimplementować je na mikrokontrolerze. Pokazaliśmy również, jak rozpocząć pracę z darmową usługą brokera MQTT i jak oglądać dane na ich serwerze. Teraz powinieneś czuć się komfortowo, rozpoczynając własny szkic Arduino na podstawie przykładu, który użyliśmy do publikowania własnych danych czujnikowych na brokera MQTT i ich przeglądania w chmurze.

About Author

About Author

Ari jest inżynierem z rozległym doświadczeniem w projektowaniu, produkcji, testowaniu i integracji systemów elektrycznych, mechanicznych i oprogramowania. Jego pasją jest łączenie inżynierów zajmujących się projektowaniem, weryfikacją i testowaniem, aby pracowali jako jeden zespół.

Powiązane zasoby

Powrót do strony głównej
Thank you, you are now subscribed to updates.