Spisu treści:

UbiDots - podłączanie ESP32 i publikowanie danych z wielu czujników: 6 kroków
UbiDots - podłączanie ESP32 i publikowanie danych z wielu czujników: 6 kroków

Wideo: UbiDots - podłączanie ESP32 i publikowanie danych z wielu czujników: 6 kroków

Wideo: UbiDots - podłączanie ESP32 i publikowanie danych z wielu czujników: 6 kroków
Wideo: Komputer w pracowni kardiologicznej część 1 (P. Augustyniak) 2024, Listopad
Anonim
UbiDots - podłączanie ESP32 i publikowanie danych z wielu czujników
UbiDots - podłączanie ESP32 i publikowanie danych z wielu czujników

ESP32 i ESP 8266 są bardzo znanymi SoC w dziedzinie IoT. To swego rodzaju dobrodziejstwo dla projektów IoT. ESP 32 to urządzenie ze zintegrowanym WiFi i BLE. Po prostu podaj swój identyfikator SSID, hasło i konfigurację IP i zintegruj rzeczy z chmurą. Tutaj, w tej instrukcji, zastanowimy się nad niektórymi podstawowymi pojęciami IoT, takimi jak platforma IoT, MQTT, portale Captive itp. Przejdźmy więc przez to

  • Architektura IoT w bardzo prostych słowach składa się z wbudowanego urządzenia i platformy IoT, aby umieścić urządzenie w chmurze. Tutaj używamy platformy UbiDots IoT do wizualizacji danych z czujników.
  • Zarządzanie ustawieniami IP i poświadczeniami użytkownika może być dla użytkownika problemem. Co jeśli Użytkownik chce zmienić dane logowania do WiFi? Co zrobić, jeśli użytkownik chce zmienić ustawienia DHCP/Statycznego IP? Flashowanie ESP32 za każdym razem nie jest niezawodne, a nawet nie jest rozwiązaniem tych problemów. Przejdziemy więc przez portal przechwytujący, aby zapisać poświadczenia Wi-Fi i inne konfiguracje.
  • MQTT staje się obecnie bardzo powszechnym terminem w świecie IoT. ominął żądania i odpowiedzi (HTTP) przez publikowanie i subskrybowanie ze względu na szybką, solidną i oszczędną architekturę.

Tutaj w tej instrukcji będziemy demonstrować.

  • Nadawanie danych uwierzytelniających Wi-Fi i MQTT za pomocą Captive Portal.
  • Publikowanie i subskrybowanie wielu danych Sensor do UbiDots.
  • Odczytywanie danych czujnika z bezprzewodowych czujników temperatury i wilgotności.
  • Hosting formularza internetowego z ESP32.
  • Czytanie i pisanie z SPIFFS ESP32.

Krok 1: Specyfikacja sprzętu i oprogramowania

Specyfikacja sprzętu i oprogramowania
Specyfikacja sprzętu i oprogramowania
  • ESP32 WiFi/BLE
  • Bezprzewodowy czujnik temperatury i wilgotności

Specyfikacja oprogramowania

IDE Arduino

Krok 2: Tworzenie portalu przechwytującego

Tworzenie portalu przechwytującego
Tworzenie portalu przechwytującego
Tworzenie portalu przechwytującego
Tworzenie portalu przechwytującego
Tworzenie portalu przechwytującego
Tworzenie portalu przechwytującego

Portal przechwytujący to strona internetowa, która jest wyświetlana nowo podłączonym użytkownikom, zanim uzyskają szerszy dostęp do zasobów sieciowych. Tutaj obsługujemy trzy strony internetowe do wyboru między ustawieniami DHCP i Statycznego IP. możemy zdefiniować adres IP do ESP na dwa sposoby.

  • Adres IP DHCP – jest to sposób na dynamiczne przypisanie adresu IP do urządzenia. Domyślny adres IP ESP to 192.168.4.1
  • Statyczny adres IP – przypisanie stałego adresu IP do naszego urządzenia sieciowego. aby zapewnić urządzeniu statyczny adres IP, musimy zdefiniować adres IP, adres bramy i maskę podsieci.

Pierwsza strona internetowa jest hostowana pod adresem 192.168.1.77. Tutaj Użytkownik ma do dyspozycji przyciski radiowe do wyboru pomiędzy ustawieniami DHCP i Statycznego IP. Na następnej stronie musimy podać informacje dotyczące adresu IP, aby przejść dalej.

Kod HTML

Kod HTML dla stron internetowych można znaleźć w tym repozytorium Github. Możesz użyć dowolnego IDE lub edytora tekstu, takiego jak Sublime lub notepad++, aby tworzyć strony internetowe HTML.

  • Najpierw utwórz stronę HTML zawierającą dwa przyciski opcji, aby wybrać pomiędzy DHCP i Statycznym IP.
  • Teraz utwórz przycisk, aby przesłać swoją odpowiedź
  • Nadaj nazwę przyciskom radiowym.
  • Klasa serwera WWW ESP przyjmie te nazwy jako argumenty i otrzyma odpowiedź przycisków radiowych za pomocą tych argumentów
  • Teraz wstaw przycisk „WYŚLIJ”, aby wysłać odpowiedź do urządzenia. Na innych stronach internetowych mamy pola tekstowe.
  • Podaj wartość nazwy i typ danych wejściowych w polu tekstowym i dodaj przycisk przesyłania, aby „ PRZEŚLIJ” przesłać odpowiedź.
  • Utwórz przycisk „RESETUJ”, aby zresetować zawartość pola tekstowego.

Krok 3: Zapewnienie poświadczeń Wi-Fi i UbiDots

Udostępnianie poświadczeń Wi-Fi i UbiDots
Udostępnianie poświadczeń Wi-Fi i UbiDots

Główny problem występuje podczas zarządzania poświadczeniami WiFi. Mimo że mamy do tego bibliotekę WiFiMulti, w której możemy nadać urządzeniu wiele identyfikatorów SSID i haseł, a urządzenie połączy się z dostępną siecią. Ale co, jeśli dostępnej sieci nie ma na liście WiFiMulti. Nieustanne flashowanie urządzenia ESP32 nie jest niezawodnym rozwiązaniem.

Aby rozwiązać ten problem, prowadzimy stronę internetową, na której użytkownik może podać identyfikator SSID i hasło dostępnej sieci. Działa w następujący sposób.

  • Strona jest hostowana pod statycznym adresem IP lub adresem IP DHCP wybranym przez użytkownika z portalu przechwytującego
  • Ta strona internetowa zawiera pola tekstowe do wprowadzenia SSID, hasła i identyfikatora tokena UBIDOTS, aby połączyć urządzenie z UbiDots.
  • Wprowadź identyfikator SSID i hasło lokalnego Wi-Fi w polach wejściowych, wprowadź identyfikator tokena UbiDot i wprowadź WYŚLIJ
  • Te dane są zapisywane w pamięci EEPROM ESP32
  • Po 60 sekundach urządzenie automatycznie rozłączy się z AP
  • Następnym razem, gdy włączysz urządzenie, Użytkownik nie musi postępować zgodnie z tą procedurą, Urządzenie automatycznie pobierze dane uwierzytelniające użytkownika z EEPROM i będzie kontynuować publikowanie odczytów czujników w UbiDots.

Krok 4: Publikowanie odczytów czujników w UbiDots

Tutaj używamy bezprzewodowych czujników temperatury i wilgotności z urządzeniem ESP 32, aby uzyskać dane dotyczące temperatury i wilgotności. Dane przesyłamy do UbiDots za pomocą protokołu MQTT. MQTT stosuje mechanizm publikowania i subskrybowania, a nie żądanie i odpowiedź. Jest szybszy i niezawodny niż HTTP. Działa to w następujący sposób.

  • Korzystamy z Harmonogramu zadań, aby zaplanować zadania, takie jak pobieranie danych z czujników, publikowanie odczytów z czujników, subskrybowanie tematu MQTT.
  • Najpierw dołącz pliki nagłówkowe Harmonogramu zadań, jego instancję i zaplanuj zadania.
  • Zaplanowaliśmy dwa zadania dotyczące dwóch różnych operacji kontrolnych.

#define _TASK_TIMEOUT#include

Harmonogram ts;

//---------Zadania------------//Zadanie tSensor(4 * TASK_SECOND, TASK_FOREVER, &taskSensorCallback, &ts, false, NULL, &taskSensorDisable); Zadanie tWiFi(10* TASK_SECOND, TASK_FOREVER, &taskWiFiCallback, &ts, false, NULL, &taskWiFiDisable);

Zadanie 1 polega na odczytaniu wartości czujnika, to zadanie działa przez 1 sekundę, aż do osiągnięcia limitu czasu 10 sekund

  • Kiedy Task1 osiągnie swój limit czasu, łączymy się z lokalnym brokerem Wifi i MQTT.
  • Teraz Zadanie 2 jest włączone i wyłączamy Zadanie 1
  • Zadanie 2 polega na publikowaniu danych z czujnika brokerowi UbiDots MQTT, to zadanie działa przez 20 sekund, aż do osiągnięcia limitu czasu 20 sekund
  • Gdy zadanie 2 osiągnie swój limit czasu, zadanie 1 zostanie ponownie włączone, a zadanie 2 zostanie wyłączone. Tutaj znowu otrzymujemy zaktualizowaną wartość i proces trwa.

Odczytywanie danych czujnika I2C

Otrzymujemy 29-bajtową ramkę z bezprzewodowych czujników temperatury i wilgotności. Ta ramka jest manipulowana, aby uzyskać dane o rzeczywistej temperaturze i wilgotności

dane uint8_t[29];

dane[0] = Serial1.odczyt(); opóźnienie(k); //sprawdź bajt początkowy if(data[0]==0x7E) { while (!Serial1.available()); for (i = 1; i< 29; i++) { dane = Serial1.odczyt(); opóźnienie(1); } if(data[15]==0x7F) /////// aby sprawdzić, czy otrzymane dane są poprawne { if(data[22]==1) //////// upewnij się, że typ czujnika jest poprawne {

wilgotność = ((((dane[24]) * 256) + dane[25])/100,0); wilgotność /=10,0; cTempint = (((uint16_t)(dane[26])<<8)|dane[27]); cTemp = (zmiennoprzecinkowa) cTempint/100,0; cTemp /= 10,0; fTemp = cTemp * 1,8 + 32; fTemp /= 10,0; bateria = losowo (100, 327); napięcie = bateria/100; nodeId = dane[16];}

Łączenie z UbiDots MQTT API

Dołącz plik nagłówkowy dla procesu MQTT

#włączać

zdefiniować inne zmienne dla MQTT, takie jak nazwa klienta, adres brokera, identyfikator tokena (pobieramy identyfikator tokena z EEPROM)

#define MQTT_CLIENT_NAME "ClientVBShightime123"

char mqttBroker = "rzeczy.ubidots.com";

ładunek znaków [100]; temat znaków [150];

//utwórz zmienną do przechowywania identyfikatora tokena

ciąg tokenId;

Utwórz zmienne do przechowywania różnych danych z czujników i utwórz zmienną typu char do przechowywania tematu

#define VARIABLE_LABEL_TEMPF "tempF" // Przypisanie etykiety zmiennej#define VARIABLE_LABEL_TEMPC "tempC" // Przypisanie etykiety zmiennej #define VARIABLE_LABEL_BAT "bat" #define VARIABLE_LABEL_HUMID "wilgotny" // Przypisanie etykiety zmiennej

char temat1[100]; char temat2[100]; char temat3[100];

opublikuj dane we wspomnianym temacie MQTT, ładunek będzie wyglądał następująco { "tempc": {value: "tempData"}}

sprintf(temat1, "%s", ""); sprintf(topic1, "%s%s", "/v1.6/devices/", DEVICE_LABEL); sprintf(ładunek, "%s", ""); // Czyści sprintf(payload, "{"%s\":", VARIABLE_LABEL_TEMPC); // Dodaje wartość sprintf(payload, "%s{"value\":%s}", payload, str_cTemp); // Dodaje wartość sprintf(payload, "%s}", payload); // Zamyka nawiasy słownikowe Serial.println(payload); Serial.println(client.publish(topic1, payload) ? "opublikowane": "nieopublikowane");

//Zrób to samo dla innego tematu

client.publish() publikuje dane do UbiDots

Krok 5: Wizualizacja danych

Wizualizacja danych
Wizualizacja danych
Wizualizacja danych
Wizualizacja danych
Wizualizacja danych
Wizualizacja danych
  • Przejdź do Ubidots i zaloguj się na swoje konto.
  • Przejdź do pulpitu nawigacyjnego z karty Dane wymienionej na górze.
  • Teraz kliknij ikonę „+”, aby dodać nowe widżety.
  • Wybierz widżet z listy i dodaj zmienną oraz urządzenia.
  • Dane z czujników można wizualizować na desce rozdzielczej za pomocą różnych widżetów.

Krok 6: Ogólny kod

Kod Over dla HTML i ESP32 można znaleźć w tym repozytorium GitHub.

Kredyty

  • Płytka zaciskowa ncd ESP32.
  • ncd Bezprzewodowe czujniki temperatury i wilgotności.
  • pubsubklient
  • UbiDots
  • Harmonogram zadań

Zalecana: