Urządzenia IoT mogą robić fajne rzeczy, ale zasadniczą częścią równania jest sposób, w jaki się komunikują. Możesz sobie z tym poradzić za pomocą modułu ESP-01.

Ograniczony budżet niekoniecznie oznacza, że ​​nie możesz podejmować się zaawansowanych projektów typu „zrób to sam”. Jeśli szukasz małego, niedrogiego i wygodnego modułu WiFi do skalowania projektów IoT, moduł ESP-01 to doskonały wybór. Jednak integracja takiego modułu z lekkim protokołem, takim jak MQTT, może być trudna, zwłaszcza jeśli nie masz doświadczenia w programowaniu IoT.

Programowanie samej płytki ESP-01 może być wyzwaniem w porównaniu z innymi modułami z serii ESP8266. Przyjrzyjmy się jednak podstawom całej konfiguracji sprzętu i oprogramowania potrzebnej do rozpoczęcia korzystania z modułu, a także jak skonfigurować MQTT w prosty i proceduralny sposób.

Zapoznanie się z tablicą

ESP8266 ESP-01 to mały i kompaktowy moduł WiFi, który jest dostarczany z chipem ESP8266EX, który jest wysoce zintegrowanym SoC przeznaczonym do zastosowań IoT.

instagram viewer

Moduł zawiera jednoukładowy bezprzewodowy mikrokontroler ze stosem protokołów TCP/IP i może łączyć się z siecią bezprzewodową lub działać jako punkt dostępowy. Moduł ESP-01 posiada również złącze 2x4 pin, które zapewnia dostęp do pinów GPIO, zasilania i masy oraz interfejsu UART.

Konfigurowanie sprzętu

Moduł w ogóle nie jest przyjazny dla makiet. Dla wygody możesz kupić gotową kartę rozszerzeń lub po prostu zastosować staromodny sposób — używając przewodów połączeniowych i płytki stykowej.

Dostępny jest dedykowany programator, płyta modułu szeregowego ESP8266, która może ułatwić programowanie. Jeśli wolisz iść tą drogą, DIYHOBI zawiera przydatny samouczek dotyczący flashowania programu do modułu ESP-01 za pomocą programatora (w tym adaptera modułu konwertera USB na TTL CH340G).

Ale nadal możesz zaprogramować moduł za pomocą płyty Arduino. Spójrz na schemat obwodu poniżej w celach informacyjnych.

Chociaż może to wyglądać kusząco, generalnie nie zalecamy podłączania modułu bezpośrednio do styku 3,3 V Arduino, ponieważ wymaga on więcej prądu niż zapewnia styk. Zamiast tego podłącz Arduino 5V do regulatora napięcia 3,3 V, takiego jak LM1117/LD117, a następnie zasil moduł WiFi z regulatora.

Nie podłączaj VCC I CH_PD piny ESP do 5V pin Arduino. Podłączenie modułu do 5V moc może go uszkodzić.

Wszystkie kondensatory są 10uF a rezystor to a 1K rezystor.

Wymagania Systemowe

Moduł ESP-01 jest powszechnie stosowany z platformą Arduino. W związku z tym konfiguracja oprogramowania jest dość prosta, zwłaszcza jeśli znasz Arduino C. Jeśli jednak jesteś bardziej zaznajomiony z Raspberry, jest ich mnóstwo Projekty Raspberry Pi IoT możesz spróbować.

Oto podstawowe wymagania:

  • Broker lub serwer MQTT (taki jak Mosquitto lub CloudMQTT).
  • Arduino IDE z biblioteką rdzeniową ESP8266.
  • Biblioteka PubSubClient dla Arduino.

Musisz pamiętać, że posiadanie własnego serwera MQTT lokalnie zapewnia elastyczność w projektach.

Instalowanie niezbędnych bibliotek

Najpierw pobierz i zainstaluj Arduino IDE na swoim komputerze. Po zainstalowaniu otwórz Arduino IDE i przejdź do Plik > Preferencje.

w Dodatkowe adresy URL menedżera tablic wpisz następujący adres URL:

http://arduino.esp8266.com/stable/package_esp8266com_index.json

Kliknij OK aby zamknąć okno Preferencje.

Następnie przejdź do Narzędzia > Tablica > Kierownik desek.

Następnie wyszukaj esp8266 i zainstaluj pakiet płytki esp8266 — zawiera on wszystkie niezbędne biblioteki dla modułu ESP-01.

Aby zainstalować bibliotekę PubSubClient, przejdź do Naszkicować > Dołącz bibliotekę > Zarządzaj bibliotekami.

Szukaj PubSubClient i kliknij bibliotekę, aby ją zainstalować.

Po zainstalowaniu wszystkich niezbędnych bibliotek można przystąpić do programowania modułu ESP-01. Należy jednak zauważyć, że możesz użyć Wifi.h który znajduje się w bibliotece, lub pobierz plik ESPWifi.h biblioteka i umieść go w swoim szkicu.

Nawiązywanie połączenia między ESP-01 a brokerem MQTT

Broker MQTT to serwer, który działa jako pośrednik między klientami MQTT. Umożliwia klientom wysyłanie i odbieranie wiadomości między sobą za pośrednictwem modelu publikowania-subskrybowania.

Aby połączyć swój moduł ESP-01 z brokerem MQTT, musisz podać w swoim kodzie adres IP i numer portu brokera. Będziesz także musiał podać brokerowi unikalny identyfikator klienta, który identyfikuje twój moduł ESP-01.

Najpierw dołącz niezbędne biblioteki na górze szkicu

#włączać <ESP8266Wi-Fi.H>
#włączać <PubSubClient.H>

Następnie zdefiniuj szczegóły połączenia WiFi i MQTT.

konstzwęglać* identyfikator ss = „TWÓJ_SSID”;
konstzwęglać* hasło = "TWOJE HASŁO";
konstzwęglać* serwer_mqtt = "TWOJ_SERWER_MQTT";

Nie zapomnij zastąpić symboli zastępczych własnymi danymi połączenia Wi-Fi i MQTT.

Następnie utwórz klienta Wi-Fi i połącz się z lokalną siecią Wi-Fi:

WiFiClient espClient;
próżniakonfiguracja_wifi(){
opóźnienie (10);
WiFi.begin (identyfikator SS, hasło);
chwila (WiFi.status() != WL_CONNECTED) {
opóźnienie (500);
}
}

Funkcję tę należy wywołać w organizować coś() funkcję twojego szkicu.

Następnie musisz utworzyć klienta MQTT i połączyć się ze swoim brokerem MQTT:

PubSubClient klient(espClient);
próżniana nowo połączyć(){
chwila (!klient.połączony()) {
Jeśli (klient.połącz("ESP01", mqtt_user, mqtt_password)) {
// Subskrybuj temat
klient.subskrybuj(„test/temat”);
} w przeciwnym razie {
opóźnienie (5000);
}
}
}

Po połączeniu się z brokerem MQTT możesz rozpocząć publikowanie i subskrybowanie tematów.

Publikowanie danych z ESP-01 do MQTT Broker

Teraz, gdy pomyślnie połączyłeś moduł ESP01 z brokerem MQTT, przyjrzyjmy się, jak możesz opublikować dane z ESP-01 w brokerze.

Aby opublikować dane, użyj klient.opublikuj() funkcja publikowania wiadomości w w temacie temat.

klient.opublikuj(„w temacie”, „Witam z ESP-01”);

Spowoduje to opublikowanie wiadomości „Hello from ESP-01” do w temacie temat.

Możesz również opublikować dane czujnika z ESP-01 do brokera. Na przykład, jeśli masz czujnik temperatury podłączony do ESP-01, możesz opublikować dane dotyczące temperatury w brokerze, jak pokazano poniżej.

platforma temperatura = 25.5;
Strunowy temperaturaString = Strunowy(temperatura);
zwęglać temperaturaChar[5];
temperaturaString.toCharArray(temperaturaChar, 5);
klient.opublikuj(„Temperatura”, temperaturaChar);

Spowoduje to opublikowanie danych temperatury w Temp temat.

Dane mogą być publikowane w pętli lub w regularnych odstępach czasu, w zależności od wymagań projektu. Upewnij się, że nie zalewasz brokera zbyt dużą ilością danych i publikujesz w rozsądnych odstępach czasu.

Subskrybowanie tematów MQTT i odbieranie danych na temat ESP-01

Aby zasubskrybować temat, użyj opcji klient.subskrybuj() funkcjonować. W naszym przypadku poniżej klient subskrybuje outTemat temat.

klient.subskrybuj(„temat zewnętrzny”);

Po zasubskrybowaniu tematu możesz otrzymywać wiadomości publikowane w tym temacie za pomocą klient.pętla() funkcja w pętla() funkcja na poniższym szkicu:

próżniapętla(){
Jeśli (!klient.połączony()) {
na nowo połączyć();
}
klient.pętla();
}

Spowoduje to ciągłe sprawdzanie nowych wiadomości i wykonywanie funkcji oddzwaniania po odebraniu nowej wiadomości.

Aby obsłużyć odebrane wiadomości, zdefiniuj funkcję wywołania zwrotnego, taką jak ta pokazana poniżej:

próżniaoddzwonić(zwęglać* temat, bajt* ładunek, niepodpisany int długość){
// Wydrukuj otrzymaną wiadomość
Seryjny.wydrukować("Otrzymano wiadomość na temat: ");
Seryjny.wydrukować(temat);
Seryjny.wydrukować(". Wiadomość: ");
Do (int ja=0;ISeryjny.wydrukować((zwęglać)ładunek[I]);
}
Seryjny.println();
}

Ta funkcja zostanie wywołana, gdy zostanie odebrana nowa wiadomość na subskrybowany temat. Wydrukuje odebraną wiadomość do monitora szeregowego.

Korzystanie z poziomów QoS (Quality of Service) i funkcji bezpieczeństwa

Jedną z najważniejszych technik stosowanych w obsłudze żądań jest stosowanie poziomów QoS (Quality of Service) dla komunikatów MQTT. Poziomy QoS określają, w jaki sposób broker i subskrybenci powinni obsługiwać twoje wiadomości. Istnieją trzy poziomy QoS: 0, 1 i 2.

Poziom QoS 0 jest najmniej niezawodny, ponieważ wiadomości są wysyłane tylko raz i nie ma gwarancji, że zostaną dostarczone do abonenta. Poziom QoS 1 jest bardziej niezawodny, ponieważ wiadomości są wysyłane co najmniej raz i mają gwarancję dostarczenia do abonenta co najmniej raz. Poziom QoS 2 jest najbardziej niezawodny, ponieważ wiadomości są wysyłane dokładnie raz i gwarantuje się, że zostaną dostarczone do abonenta dokładnie raz. Sposób, w jaki komunikują się Twoje urządzenia, jest zgodny z innymi wspólne problemy z bezpieczeństwem Internetu Rzeczy (IoT) i poprawki chcesz być na szczycie.

Aby korzystać z poziomów QoS, możesz określić żądany poziom podczas publikowania wiadomości za pomocą klient.opublikuj() funkcjonować:

klient.opublikuj("temat", "Witaj świecie!", 1);

Spowoduje to opublikowanie wiadomości Witaj świecie! do temat temat z poziomem QoS 1.

Używana jest inna zaawansowana technika Ostatnia wola i testament (LWT) wiadomości. Komunikaty LWT to komunikaty wysyłane przez brokera, gdy klient nieoczekiwanie się rozłączy. Uważamy, że jest to ważne przy wykrywaniu urządzeń offline lub uruchamianiu działań, gdy urządzenie się rozłączy.

Aby korzystać z wiadomości LWT, możesz określić wiadomość LWT podczas łączenia się z brokerem za pomocą klient.setWill() funkcjonować:

klient.setWill("status", „nieaktywny”, 1, PRAWDA);

Spowoduje to ustawienie komunikatu LWT na offline na status temat z poziomem QoS 1 i flagą zachowania ustawioną na PRAWDA.

Przygotuj się do następnego projektu IoT

Moduł ESP-01 to niedrogie i kompaktowe rozwiązanie dla projektów IoT, a użycie go z MQTT może przenieść Twój projekt na wyższy poziom. Chociaż początkowa konfiguracja może być zniechęcająca, zalety MQTT, takie jak lekka komunikacja i wysoka skalowalność, sprawiają, że jest to opłacalna inwestycja.