
Spisu treści:
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-23 15:03

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 bezprzewodowego czujnika ciśnienia i temperatury
- Hosting formularza internetowego z ESP32.
- Czytanie i pisanie z SPIFFS ESP32.
Krok 1: Specyfikacja sprzętu i oprogramowania
Specyfikacja sprzętu
- ESP32 WiFi/BLE
- Bezprzewodowy czujnik ciśnienia i temperatury
Specyfikacja oprogramowania
- IDE Arduino
- XCTU
- Narzędzie Labview
Krok 2: Bezprzewodowe czujniki ciśnienia i temperatury



Cechy
- Czujnik przemysłowy dalekiego zasięgu Bezprzewodowy czujnik temperatury ciśnienia
- Zakres roboczy 0 do 14000 mbar -40° do +85°C (-40° do 185°F)
- Konfigurowalna rozdzielczość wewnętrznego obliczenia ciśnienia 0,012 do 0,065 mbar
- Konfigurowalna rozdzielczość wewnętrznych obliczeń Rozdzielczość temperatury 0,002 do 0,012 °C
- Dokładność ±2,5 mbar, ±2°C
- Wyjścia ciśnienia bezwzględnego, ciśnienia względnego i zmiany względnej wysokości
- 2-milowy zasięg w linii wzroku z wbudowaną anteną
- Doskonały zasięg LOS do 28 mil z antenami o dużym wzmocnieniu
- Interfejs do Raspberry Pi, Microsoft® Azure®, Arduino i innych
- Bezprzewodowa sieć mesh przy użyciu DigiMesh®
Konfigurowanie bezprzewodowego czujnika ciśnienia i temperatury za pomocą narzędzia Labview i XCTU
Czujnik działa w dwóch trybach
- Tryb konfiguracji: Skonfiguruj Pan ID, opóźnienie, liczbę ponownych prób itp. Więcej na ten temat wykracza poza zakres tej instrukcji i zostanie wyjaśnione w następnej instrukcji.
- Tryb Run: Uruchamiamy urządzenie w trybie Run. Do analizy tych wartości używamy narzędzia Labview
Ten interfejs użytkownika Labview pokazuje wartości na ładnych wykresach. Pokazuje aktualne i przeszłe wartości. Możesz przejść do tego linku, aby pobrać interfejs użytkownika Labview. kliknij ikonę Uruchom z menu strony docelowej, aby przejść do trybu uruchamiania.
Krok 3: Łączenie się z Wi-Fi


Używamy portalu przechwytującego, aby zapisać poświadczenia Wi-Fi i najechać kursorem na ustawienia IP. Aby uzyskać szczegółowe wprowadzenie do portalu dla niewoli, możesz przejść przez następujące instrukcje.
Portal przechwytujący daje nam możliwość wyboru między ustawieniami statycznymi i DHCP. Wystarczy wprowadzić dane uwierzytelniające, takie jak statyczny adres IP, maska podsieci, brama i brama czujnika bezprzewodowego zostaną skonfigurowane na tym adresie IP.
Hostowana jest strona internetowa, na której znajduje się lista z dostępnymi sieciami Wi-Fi i RSSI. Wybierz sieć Wi-Fi i hasło i wprowadź prześlij. Poświadczenia zostaną zapisane w pamięci EEPROM, a ustawienia IP zostaną zapisane w SPIFFS. Więcej na ten temat można znaleźć w tej instrukcji.
Krok 4: Konfiguracja UbiDots na ESP32

Tutaj używamy bezprzewodowych czujników ciśnienia i temperatury 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 Scheduler 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
jeśli (Serial1.available())
{ dane[0] = Serial1.odczyt(); opóźnienie(k); if(data[0]==0x7E) { while (!Serial1.available()); for (i = 1; i< 36; i++) { dane = Serial1.odczyt(); opóźnienie(1); } if(data[15]==0x7F) /////// aby sprawdzić, czy otrzymane dane są poprawne { if(data[22]==0x06) //////// upewnij się, że typ czujnika jest poprawne { int cTemp = ((((dane[24]) * 256) + dane[25])); int16_t abs_pressure = ((((uint16_t)(dane[26])<<8)| dane[27])*0,001; int rlt_pressure = ((((dane[28]) * 256) + dane[29])*0,001); int16_t delta_alt = ((((uint16_t)(dane[30])<<8)| dane[31])*0,01); bateria podtrzymująca = ((dane[18] * 256) + dane[19]); napięcie podtrzymujące = 0,00322 * bateria; Serial.print("Numer czujnika"); Serial.println(dane[16]); Serial.print("Typ czujnika"); Serial.println(dane[22]); Serial.print("Wersja oprogramowania"); Serial.println(dane[17]); Serial.print("Temperatura w stopniach Celsjusza:"); druk.seryjny(cTemp); Serial.println("C"); Serial.print("Ciśnienie absolutne:"); Serial.println(abs_pressure); Serial.print("mbar"); Serial.print("Ciśnienie względne:"); Serial.println(rlt_pressure); Serial.print(" mbar"); Serial.print("Delta Wysokość:"); Serial.println(delta_alt); Serial.print("metr"); Serial.print("wartość ADC:"); Serial.println(akumulator); Serial.print("Napięcie baterii:"); Serial.print(napięcie); Serial.println("\n"); if (napięcie < 1) { Serial.println("Czas na wymianę baterii"); } } }else{ for (i = 0; i< 36; i++) { Serial.print(data); Serial.print(", "); opóźnienie(1); }} } }
Łą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
#define TOKEN "BBFF-************************************" // Twój TOKEN Ubidots#define MQTT_CLIENT_NAME „******************************”
char mqttBroker = "rzeczy.ubidots.com";
ładunek znaków[100]; temat char[150]; //utwórz zmienną do przechowywania tokena ID tokena
Krok 5: Publikowanie odczytów czujników w UbiDots

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 6: 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 7: Ogólny kod
Kod Over dla HTML i ESP32 można znaleźć w tym repozytorium GitHub.
Kredyty
- Płytka zaciskowa ncd ESP32.
- Bezprzewodowe czujniki ciśnienia i temperatury ncd
- pubsubklient
- UbiDots
- Harmonogram zadań
Zalecana:
Przesyłanie danych bezprzewodowego czujnika temperatury i wilgotności do programu Excel: 34 kroki

Wysyłanie danych z bezprzewodowego czujnika temperatury i wilgotności do Excela: Używamy tutaj czujnika temperatury i wilgotności NCD, ale kroki pozostają takie same dla każdego produktu ncd, więc jeśli masz inne bezprzewodowe czujniki ncd, możesz swobodnie obserwować obok. Za pomocą stopu tego tekstu musisz
Wysyłanie danych bezprzewodowego czujnika wibracji i temperatury do Excela za pomocą Node-RED: 25 kroków

Wysyłanie danych z bezprzewodowego czujnika wibracji i temperatury do Excela za pomocą Node-RED: Przedstawiamy przemysłowy bezprzewodowy czujnik wibracji i temperatury Long Range IoT firmy NCD, który może pochwalić się zasięgiem do 2 mil przy użyciu bezprzewodowej struktury sieci kratowej. Wyposażony w precyzyjny 16-bitowy czujnik wibracji i temperatury, to urządzenie przek
Wysyłanie danych z bezprzewodowego czujnika temperatury i wilgotności dalekiego zasięgu IoT do arkusza Google: 39 kroków

Wysyłanie danych z bezprzewodowego czujnika temperatury i wilgotności dalekiego zasięgu IoT do arkusza Google: używamy tutaj czujnika temperatury i wilgotności NCD, ale kroki pozostają takie same dla każdego produktu ncd, więc jeśli masz inne bezprzewodowe czujniki ncd, możesz swobodnie obserwować obok. Za pomocą stopu tego tekstu musisz
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: ESP32 i ESP 8266 to bardzo dobrze znane 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 w
Wizualizacja danych z czujnika bezprzewodowego za pomocą wykresów Google: 6 kroków

Wizualizacja danych z czujników bezprzewodowych za pomocą wykresów Google: Analiza predykcyjna maszyn jest bardzo potrzebna, aby zminimalizować przestoje maszyny. Regularne przeglądy pomagają wydłużyć czas pracy maszyny, a to z kolei zwiększa jej odporność na uszkodzenia. Bezprzewodowy czujnik wibracji i temperatury