Spisu treści:
Wideo: Pomiar zawartości wilgoci w glebie za pomocą platformy Esp32 i Thingsio.ai: 6 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:31
W tym samouczku wyjaśnię, jak odczytywać zawartość wilgoci w glebie za pomocą esp32, a następnie przesyłać wartości do platformy internetowej thingsio.ai IoT.
Krok 1: KOMPONENTY
Komponenty sprzętowe:
1. Płytka rozwojowa esp32
2. Czujnik gleby
3. Przewody połączeniowe
Oprogramowanie:
1. Środowisko Arduino
2. Rzeczy.ai
Krok 2: POŁĄCZENIA
Czujnik wilgotności gleby ----------------------- płyta esp32
VCC-------------------------------------------3V3
GND-------------------------------------- GND
A0----------------------------------------- VP
Krok 3: KODOWANIE:
#włączać
#włączać
#włączać
liczba int=0, i, m, j, k;
int t;
wewn. pin_czujnika = A0;
int wartość;
/////////////////////////////////////// WSZYSTKIE OŚWIADCZENIA
dla CHMURY /////////////////////////////
const char* host = "api.thingsai.io"; // LUB host =
devapi2.thethingscloud.com
const char* post_url = "/devices/deviceData"; // LUB
/api/v2/thingscloud2/_table/data_ac
const char* serwer_czasu =
"baas.thethingscloud.com"; //to jest konwersja znacznika czasu
const int httpPort = 80;
const int httpsPort = 443;
const char* serwer =
"api.thingsai.io"; // Serwer URL
znacznik czasu znaków[10];
Wi-FiWiele Wi-FiWiele;
// Użyj klasy WiFiClient do tworzenia połączeń TCP
Klient WiFiClient;
/////////////////////////////////////// ZNAK CZASU
funkcja OBLICZENIA//////////////////////////////////////
int PodajMeTimestamp()
{
długi bez znaku
limit czasu = mili();
// Klient WiFiClient;
podczas
(klient.dostępny() == 0)
{
jeśli (millis() -
limit czasu > 50000)
{
klient.stop();
zwróć 0;
}
}
while (klient.dostępny())
{
Linia ciągu =
klient.odczytajStringUntil('\r'); //indexOf() to funkcja do wyszukiwania smthng, zwraca -1 jeśli nie znaleziono
wew poz =
line.indexOf("\"znacznik czasu\""); //wyszukaj "\"timestamp\"" od początku otrzymanej odpowiedzi i skopiuj wszystkie dane po tym, będzie to Twoja sygnatura czasowa
jeśli (poz >=
0)
{
intj = 0;dla(j=0;j<10;j++)
{znacznik czasu[j] = linia[poz + 12 + j];
}
}
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
pusta konfiguracja()
{Serial.początek(115200);Serial.println("Odczyt z czujnika…");
opóźnienie (2000);
// Zaczynamy od
łączenie z siecią Wi-Fi
WiFiMulti.addAP("Nazwa_Wi-Fi", "Hasło do wifi");
Serial.println();
Serial.println();Serial.print("Czekaj na Wi-Fi… ");while(WiFiMulti.run() != WL_CONNECTED) {Serial.print(".");
opóźnienie (500);
}Serial.println("");Serial.println("Połączenie WiFi");
Serial.println( IP
adres: );Serial.println(WiFi.localIP());
opóźnienie (500);
}
pusta pętla()
{
{
////////////////////////////////////// WYŚLIJ ZAPYTANIE I
ODBIERZ ODPOWIEDŹ///////////////////////
wartość=
analogRead (pin_czujnika);
// wartość =
mapa(wartość, 550, 0, 0, 100);Serial.print("Mosture: ");Serial.print(wartość);Serial.println("%");opóźnienie (1000);Serial.print("łączenie z");Serial.println(host); //zdefiniowany plus:- host = devapi2.thethingscloud.com lub 139.59.26.117
//////////////////////////////////// ZNACZNIK KODU
/////////////////////////
Serial.println("wewnątrz pobierz znacznik czasu\n");
Jeśli
(!client.connect(serwer_czasu, port
{
powrót;
//*-*-*-*-*-*-*-*-*-*
}client.println("POBIERZ /api/znacznik czasu HTTP/1.1"); //Co robi ta część, nie dostałemclient.println("Host: baas.thethingscloud.com");client.println("Kontrola pamięci podręcznej: brak pamięci podręcznej");client.println("Token listonosza: ea3c18c6-09ba-d049-ccf3-369a22a284b8");
klient.println();
GiveMeTimestamp();
//wywoła funkcję, która otrzyma odpowiedź ze znacznikiem czasu z serwera
Serial.println("otrzymany znacznik czasu");
Serial.println(sygnatura czasowa);Serial.println("wewnątrz ThingsCloudPost");
Wartość początkowa ciągu znaków =
"{"device_id\": 61121695918, \"slave_id\": 2";
PostValue =
PostValue +”, \"dts\":" +znacznik czasu;
PostValue =
PostValue +", \"data\":{"MOIST\":" + wartość +"}"+"}";Serial.println(PostValue);
/* utwórz instancję WiFiClientSecure */
Klient WiFiClientSecure;Serial.println("Połącz z serwerem przez port 443");
Jeśli
(!client.connect(serwer, 443)){Serial.println("Połączenie nie powiodło się!");
} w przeciwnym razie {Serial.println("Połączono z serwerem!");
/* tworzenie
wniosek */client.println("POST /devices/deviceData HTTP/1.1");client.println("Host: api.thingsai.io");//client.println("Połączenie: zamknij");client.println("Typ treści: aplikacja/json");
client.println( kontrola pamięci podręcznej:
bez pamięci podręcznej");client.println("Upoważnienie: okaziciel eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9. IjVhMzBkZDFkN2QwYjNhNGQzODkwYzQ4OSI.kaY6OMj5cYlW6YlWNQ9tP");client.print("Długość-treści: ");
klient.println(WartośćPoczta.długość());klient.println();klient.println(PostValue);
//////////////////////////////////PRZESYŁANIE danych na
chmura jest gotowa i teraz otrzymaj odpowiedź z serwera w chmurze//////////////////
Serial.print( Oczekiwanie na odpowiedź
);
podczas
(!klient.dostępny()){
opóźnienie(50);
//Serial.print(".");
}
/* jeśli dane to
dostępne, a następnie odbierz i wydrukuj do Terminala */
podczas
(klient.dostępny()) {
char c = klient.odczyt();Serial.zapis(c);
}
/* jeśli
serwer odłączony, zatrzymaj klienta */
Jeśli
(!klient.podłączony()) {Serial.println();Serial.println("Serwer odłączony");
klient.stop();
}
}
Serial.println( ////////////////////// KONIEC
///////////////////// );
opóźnienie(3000);
}
}
Krok 4: WYJŚCIE:
Wyświetlany jest wynik kodu.
Krok 5: WYKRES
Jest to graficzna reprezentacja wartości odczytanych z czujnika.
Krok 6:
Oto kompletny film z projektu. Dziękuję.
Zalecana:
System nawadniania kropelkowego z kontrolą sprzężenia zwrotnego wilgoci w glebie (ESP32 i Blynk): 5 kroków
System nawadniania kropelkowego z kontrolą wilgoci w glebie (ESP32 i Blynk): martw się o swój ogród lub rośliny podczas długich wakacji lub zapomnij o codziennym podlewaniu rośliny. Oto rozwiązanie. Jest to kontrolowany przez wilgotność gleby i globalnie połączony system nawadniania kropelkowego sterowany przez ESP32 na froncie oprogramowania i
Monitorowanie temperatury i wilgotności DHT za pomocą ESP8266 i platformy AskSensors IoT: 8 kroków
Monitorowanie temperatury i wilgotności DHT za pomocą ESP8266 i platformy AskSensors IoT: W poprzedniej instrukcji przedstawiłem przewodnik krok po kroku, jak rozpocząć pracę z nodeMCU ESP8266 i platformą AskSensors IoT. W tym samouczku podłączam czujnik DHT11 do węzła MCU. DHT11 to powszechnie stosowany czujnik temperatury i wilgotności
Bezprzewodowy monitor wilgoci (ESP8266 + czujnik wilgoci): 5 kroków
Bezprzewodowy monitor wilgotności (ESP8266 + czujnik wilgoci): Kupuję pietruszkę w doniczce i przez większość dnia gleba była sucha. Postanawiam więc zrobić ten projekt, dotyczący pomiaru wilgotności gleby w doniczce z pietruszką, aby sprawdzić, kiedy muszę zalać glebę wodą. Myślę, że ten czujnik (pojemnościowy czujnik wilgotności v1.2) jest dobry, bo
Pomiar temperatury za pomocą platformy Esp32 i Thingsio.ai: 6 kroków
Pomiar temperatury za pomocą platformy Esp32 i Thingsio.ai: W tym samouczku wyjaśnię, jak mierzyć temperaturę w otoczeniu za pomocą wbudowanego czujnika temperatury w płytce rozwojowej esp32. esp32 ma wiele wbudowanych czujników, takich jak czujnik Halla używany jako czujnik zbliżeniowy, dotykowy
Back Pi Smart Backpack z funkcją śledzenia zawartości NFC: 6 kroków
Back Pi Smart Backpack z funkcją śledzenia zawartości NFC: jako student często zapominam zabrać ze sobą niektóre moje książki i inne materiały na zajęcia. Próbowałem korzystać z agendy online, ale nawet z tym ciągle zostawiałem rzeczy na moim biurku. Rozwiązanie, które wymyśliłem, to sprytny plecak.W tym instruktażowym