Cuprins:
- Pasul 1: COMPONENTE
- Pasul 2: CONEXIUNI
- Pasul 3: CODIFICARE:
- Pasul 4: IEȘIRE:
- Pasul 5: GRAPH
- Pasul 6:
Video: Măsurarea conținutului de umiditate a solului utilizând platforma Esp32 și Thingsio.ai: 6 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:44
În acest tutorial voi explica despre citirea conținutului de umiditate din sol folosind esp32 și apoi trimiterea valorilor în platforma cloud IoT Thingsio.
Pasul 1: COMPONENTE
Componente hardware:
1. placa de dezvoltare esp32
2. Senzor de sol
3. Sârme de jumper
Software:
1. IDE Arduino
2. Thingsio.ai
Pasul 2: CONEXIUNI
Senzor de umiditate a solului ---------------------- Esp32 Board
VCC --------------------------------------- 3V3
GND -------------------------------------- GND
A0 ---------------------------------------- VP
Pasul 3: CODIFICARE:
#include
#include
#include
int count = 0, i, m, j, k;
int t;
int sensor_pin = A0;
valoarea int;
////////////////////////////////////////// TOATE DECLARAȚIILE
pentru CLOUD ////////////////////////////////
const char * host = "api.thingsai.io"; // SAU gazdă =
devapi2.thethingscloud.com
const char * post_url = "/ devices / deviceData"; // SAU
/ api / v2 / thingscloud2 / _table / data_ac
const char * time_server =
„baas.thethingscloud.com”; // aceasta este pentru a converti marca de timp
const int httpPort = 80;
const int httpsPort = 443;
const char * server =
"api.thingsai.io"; // Adresa URL a serverului
timestamp char [10];
WiFiMulti WiFiMulti;
// Utilizați clasa WiFiClient pentru a crea conexiuni TCP
Client WiFiClient;
/////////////////////////////////////// TIMESTAMP-UL
Funcția CALCUL // /////////////////////////////////////////
int GiveMeTimestamp ()
{
nesemnat mult
timeout = milis ();
// client WiFiClient;
in timp ce
(client.available () == 0)
{
if (milis () -
expirare> 50000)
{
client.stop ();
retur 0;
}
}
while (client.available ())
{
Linia șirului =
client.readStringUntil ('\ r'); // indexOf () este o funcție pentru a căuta smthng, returnează -1 dacă nu este găsit
int pos =
line.indexOf ("\" timestamp / ""); // căutați "\" timestamp / "" de la începutul răspunsului și copiați toate datele după aceea, va fi marca dvs. de timp
if (pos> =
0)
{
int j = 0;pentru (j = 0; j <10; j ++)
{timestamp [j] = line [pos + 12 + j];
}
}
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
configurare nulă ()
{Serial.begin (115200);Serial.println ("Citirea din senzor …");
întârziere (2000);
// Începem prin
conectarea la o rețea WiFi
WiFiMulti.addAP ("Wifi_name", „Parola_Wifi”);
Serial.println ();
Serial.println ();Serial.print („Așteptați WiFi …”);while (WiFiMulti.run ()! = WL_CONNECTED) {Serial.print (".");
întârziere (500);
}Serial.println ("");Serial.println ("WiFi conectat");
Serial.println ( IP
abordare: );Serial.println (WiFi.localIP ());
întârziere (500);
}
bucla nulă ()
{
{
///////////////////////////////////////// TRIMITE CERERE ȘI
PRIMI RĂSPUNSUL /////////////////////////
valoare =
analogRead (senzor_pin);
// valoare =
hartă (valoare, 550, 0, 0, 100);Serial.print ("Mositure:");Serial.print (valoare);Serial.println ("%");întârziere (1000);Serial.print („conectarea la”);Serial.println (gazdă); // definită invers: - host = devapi2.thethingscloud.com sau 139.59.26.117
/////////////////////////////////////// COD TIMESTAMP SNIPPET
/////////////////////////
Serial.println ("inside get timestamp / n");
dacă
(! client.connect (time_server, {
întoarcere;
//*-*-*-*-*-*-*-*-*-*
}client.println ("GET / api / timestamp HTTP / 1.1"); // Ce face această parte, nu am primitclient.println („Gazdă: baas.thethingscloud.com”);client.println ("Cache-Control: no-cache");client.println ("Postman-Token: ea3c18c6-09ba-d049-ccf3-369a22a284b8");
client.println ();
GiveMeTimestamp ();
// va apela funcția care va primi răspunsul de timestamp de la server
Serial.println ("timestamp primit");
Serial.println (timestamp);Serial.println („în interiorul ThingsCloudPost”);
String PostValue =
"{" device_id / ": 61121695918, \" slave_id / ": 2";
PostValue =
PostValue + ", \" dts / ":" + timestamp;
PostValue =
PostValue + ", \" data / ": {" MOIST / ":" + valoare + "}" + "}";Serial.println (PostValue);
/ * creați o instanță WiFiClientSecure * /
Client WiFiClientSecure;Serial.println („Conectare la server prin portul 443”);
dacă
(! client.connect (server, 443)) {Serial.println ("Conexiunea a eșuat!");
} altceva {Serial.println ("Conectat la server!");
/ * creați
cerere */client.println ("POST / dispozitive / dispozitivDate HTTP / 1.1");client.println ("Gazdă: api.thingsai.io");//client.println("Connection: close ");client.println ("Content-Type: application / json");
client.println ( cache-control:
no-cache );client.println („Autorizație: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9. IjVhMzBkZDFkN2QwYjNhNGQzODkwYzQ4OSI.kaY6OMj5cYlWNqC2KT5XA7_K6_7)client.print („Lungime conținut:”);
client.println (PostValue.length ());client.println ();client.println (PostValue);
//////////////////////////////////// PUBLICAREA datelor pe
cloud este gata și acum obțineți formularul de răspuns server cloud //////////////////
Serial.print („Se așteaptă răspunsul
);
in timp ce
(! client.available ()) {
întârziere (50);
//Serial.print (".");
}
/ * dacă datele sunt
disponibil apoi primiți și tipăriți la Terminal * /
in timp ce
(client.available ()) {
char c = client.read ();Serial.write (c);
}
/ * dacă
server deconectat, opriți clientul * /
dacă
(! client.connected ()) {Serial.println ();Serial.println („Server deconectat”);
client.stop ();
}
}
Serial.println ( //////////////////////// SFÂRȘITUL
///////////////////// );
întârziere (3000);
}
}
Pasul 4: IEȘIRE:
Se afișează ieșirea codului.
Pasul 5: GRAPH
Aceasta este reprezentarea grafică a valorilor care sunt citite de la senzor.
Pasul 6:
Iată videoclipul complet al proiectului. Mulțumesc.
Recomandat:
Măsurarea umidității solului cu Raspberry Pi 4: 4 pași
Măsurarea umidității solului cu Raspberry Pi 4: Știți cât de des să udați plantele? Sau a revărsat plante și le-a pierdut. Pentru a rezolva acest lucru, am crezut că ar fi mai circumstanțial dacă putem obține valoarea conținutului de apă din sol pentru a lua o decizie de udare a plantelor adecvate
Automatizarea unei sere cu LoRa! (Partea 1) -- Senzori (temperatură, umiditate, umiditate a solului): 5 pași
Automatizarea unei sere cu LoRa! (Partea 1) || Senzori (temperatură, umiditate, umiditate a solului): În acest proiect vă voi arăta cum am automatizat o seră. Asta înseamnă că vă voi arăta cum am construit sera și cum am conectat electronica de putere și automatizare. De asemenea, vă voi arăta cum să programați o placă Arduino care utilizează L
Filtrarea conținutului Internet utilizând DNS: 10 pași
Filtrarea conținutului Internet utilizând DNS: actualizat la 3 februarie 2021 pentru a include informații suplimentare în pașii 8 și amp; 9. Este cunoscut faptul că există o mulțime de conținut pe internet care nu este tocmai potrivit pentru vizionarea de către copii. Ceea ce nu este atât de cunoscut este faptul că tu
Măsurarea umidității solului cu Arduino: 6 pași
Măsurarea umidității solului cu Arduino: În acest tutorial rapid, vă voi arăta cum să citiți un senzor de umiditate a solului folosind arduino și să imprimați nivelul de umiditate al solului în Arduino Serial Monitor. Puteți găsi postarea originală scrisă de mine în sinhala din acest link
Măsurarea temperaturii utilizând platforma Esp32 și Thingsio.ai: 6 pași
Măsurarea temperaturii utilizând platforma Esp32 și Thingsio.ai: În acest tutorial voi explica despre măsurarea temperaturii din împrejurimi folosind senzorul de temperatură încorporat prezent pe placa de dezvoltare esp32. esp32 are mulți senzori încorporați, cum ar fi senzorul de hol utilizat ca senzor de proximitate, atingere