Spisu treści:
- Krok 1: Specyfikacja sprzętu i oprogramowania
- Krok 2: Tworzenie portalu przechwytującego
- Krok 3: Zapewnienie poświadczeń Wi-Fi i UbiDots
- Krok 4: Publikowanie odczytów czujników w UbiDots
- Krok 5: Wizualizacja danych
- Krok 6: Ogólny kod
Wideo: UbiDots - podłączanie ESP32 i publikowanie danych z wielu czujników: 6 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:30
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
- ESP32 WiFi/BLE
- Bezprzewodowy czujnik temperatury i wilgotności
Specyfikacja oprogramowania
IDE Arduino
Krok 2: 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
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
- 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:
Interfejs wielu wyświetlaczy LCD do Arduino Uno za pomocą wspólnej linii danych: 5 kroków
Interfejs wielu wyświetlaczy LCD do Arduino Uno przy użyciu wspólnej linii danych: Dzisiaj w tej instrukcji pokażę, jak połączyć wiele modułów LCD 16x2 z płytą arduino uno za pomocą wspólnej linii danych. Najbardziej interesującą rzeczą w tym projekcie jest to, że wykorzystuje wspólną linię danych i wyświetla różne dane w e
PODŁĄCZENIE WIELU CZUJNIKÓW DO RASPBERRY PI: 6 kroków (ze zdjęciami)
PODŁĄCZANIE WIELU CZUJNIKÓW DO RASPBERRY PI: W tym projekcie podłączymy trzy czujniki EZO firmy Atlas Scientific (pH, rozpuszczonego tlenu i temperatury) do Raspberry Pi 3B+. Zamiast podłączać obwody do Raspberry Pi, użyjemy nakładki Whitebox Labs Tentacle T3. T
Publikowanie danych z bezprzewodowego czujnika ciśnienia za pomocą MQTT: 7 kroków
Publikowanie danych z bezprzewodowego czujnika ciśnienia za pomocą MQTT: 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 konfiguracje IP i zintegruj rzeczy z
IoT w prosty sposób: monitorowanie wielu czujników: 7 kroków
IoT Made Simple: Monitorowanie wielu czujników: Kilka tygodni temu opublikowałem tutaj samouczek dotyczący monitorowania temperatury za pomocą DS18B20, czujnika cyfrowego, który komunikuje się za pośrednictwem magistrali 1-Wire, wysyłając dane przez Internet za pomocą NodeMCU i Blynk: IoT Made Simple : Monitorowanie temperatury w dowolnym miejscu Bu
Robot autonomiczny Wallace - część 4 - dodanie czujników odległości na podczerwień i czujników „wzmacniacza”: 6 kroków
Robot autonomiczny Wallace – część 4 – Dodaj czujniki odległości na podczerwień i czujniki „wzmacniacza”: Witam, dzisiaj rozpoczynamy kolejny etap ulepszania możliwości Wallace'a. W szczególności staramy się poprawić jego zdolność wykrywania i omijania przeszkód za pomocą czujników odległości na podczerwień, a także wykorzystać możliwości kontrolera silnika Roboclaw