Obsah:
2025 Autor: John Day | [email protected]. Naposledy zmenené: 2025-01-13 06:58
V tomto tutoriáli vysvetlím čítanie obsahu vlhkosti v pôde pomocou esp32 a potom odoslanie hodnôt do cloudovej platformy IoT thingsio.ai.
Krok 1: KOMPONENTY
Hardvérové komponenty:
1. vývojová doska esp32
2. Snímač pôdy
3. Prepojovacie vodiče
Softvér:
1. Arduino IDE
2. Thingsio.ai
Krok 2: PRIPOJENIA
Senzor pôdnej vlhkosti ---------------------- doska esp32
VCC -------------------------------------- 3V3
GND -------------------------------------- GND
A0 ---------------------------------------- VP
Krok 3: KÓDOVANIE:
#zahrnúť
#zahrnúť
#zahrnúť
int počet = 0, i, m, j, k;
int t;
int sensor_pin = A0;
int hodnota;
////////////////////////////////////////////// VŠETKY VYHLÁSENIA
pre CLOUD ////////////////////////////////////
const char* host = "api.thingsai.io"; // ALEBO hostiteľ =
devapi2.thethingscloud.com
const char* post_url = "/devices/deviceData"; // ALEBO
/api/v2/thingscloud2/_table/data_ac
const char* time_server =
"baas.thethingscloud.com"; // toto má previesť časovú pečiatku
const int httpPort = 80;
const int httpsPort = 443;
const char* server =
"api.thingsai.io"; // Adresa URL servera
časová pečiatka znakov [10];
WiFiMulti WiFiMulti;
// Na vytvorenie TCP spojení použite triedu WiFiClient
Klient WiFiClient;
/////////////////////////////////////// ČASOVÁ ZNAČKA
Funkcia VÝPOČET /////////////////////////////////////////////
int GiveMeTimestamp ()
{
bez znamienka
časový limit = milis ();
// klient WiFiClient;
kým
(client.available () == 0)
{
ak (milis () -
časový limit> 50 000)
{
client.stop ();
návrat 0;
}
}
while (client.available ())
{
Reťazec reťazca =
client.readStringUntil ('\ r'); // indexOf () je funkcia na vyhľadávanie niečoho, vráti hodnotu -1, ak sa nenájde
int pos =
line.indexOf ("\" časová pečiatka / ""); // vyhľadajte "\" časovú pečiatku / "" od začiatku odpovede a skopírujte všetky údaje, potom to bude vaša časová pečiatka
ak (poz> =
0)
{
int j = 0;pre (j = 0; j <10; j ++)
{časová pečiatka [j] = riadok [pos + 12 + j];
}
}
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
neplatné nastavenie ()
{Serial.begin (115200);Serial.println („čítanie zo senzora …“);
oneskorenie (2000);
// Začíname od
pripojenie k sieti WiFi
WiFiMulti.addAP („Wifi_name“, "Wifi_Password");
Serial.println ();
Serial.println ();Serial.print („Počkajte na WiFi …“);while (WiFiMulti.run ()! = WL_CONNECTED) {Serial.print (".");
oneskorenie (500);
}Serial.println ("");Serial.println ("WiFi pripojené");
Serial.println ( IP
adresa: );Serial.println (WiFi.localIP ());
oneskorenie (500);
}
prázdna slučka ()
{
{
///////////////////////////////////////////// ODOSLAJTE DOTAZ A
ZÍSKAJTE ODPOVEĎ /////////////////////////////
hodnota =
analogRead (sensor_pin);
// hodnota =
mapa (hodnota, 550, 0, 0, 100);Serial.print ("Mositure:");Serial.print (hodnota);Serial.println ("%");oneskorenie (1000);Serial.print ("pripojenie k");Serial.println (hostiteľ); // definované hore nohami:- host = devapi2.thethingscloud.com alebo 139.59.26.117
/////////////////////////////////////////// TIMESTAMP CODE SNIPPET
/////////////////////////
Serial.println ("vnútri získať časovú pečiatku / n");
keby
(! client.connect (server_času, {
návrat;
//*-*-*-*-*-*-*-*-*-*
}client.println ("GET/api/timestamp HTTP/1.1"); // Čo robí táto časť, som nepochopilclient.println („Hostiteľ: baas.thethingscloud.com“);client.println ("Cache-Control: no-cache");client.println ("Poštár-Token: ea3c18c6-09ba-d049-ccf3-369a22a284b8");
client.println ();
GiveMeTimestamp ();
// zavolá funkciu, ktorá získa odpoveď časovej pečiatky zo servera
Serial.println ("prijaté časové razítko");
Serial.println (časová pečiatka);Serial.println ("inside ThingsCloudPost");
Reťazec PostValue =
"{" device_id / ": 61121695918, \" slave_id / ": 2";
PostValue =
PostValue + ", \" dts / ":" + časová pečiatka;
PostValue =
PostValue +", \" údaje / ": {" MOIST / ":" +hodnota +"}" +"}";Serial.println (PostValue);
/ * vytvorte inštanciu WiFiClientSecure */
WiFiClientSecure klient;Serial.println ("Pripojiť k serveru cez port 443");
keby
(! client.connect (server, 443)) {Serial.println ("Pripojenie zlyhalo!");
} else {Serial.println („Pripojené k serveru!“);
/* vytvoriť
žiadosť */client.println ("POST/devices/deviceData HTTP/1.1");client.println ("Hostiteľ: api.thingsai.io");//client.println("Connection: close ");client.println ("Typ obsahu: aplikácia/json");
client.println ( ovládanie vyrovnávacej pamäte:
bez vyrovnávacej pamäte “);client.println ( Autorizácia: Nositeľ eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9. IjVhMzBkZDFkN2QwYjNhNGQzODkwYzQ4OSI.kaY6OMj5cYlWNqC2PNTkxsclient.print („Dĺžka obsahu:“);
client.println (PostValue.length ());client.println ();client.println (PostValue);
////////////////////////////////////// ZADÁVANIE údajov na
cloud je hotový a teraz získajte formulár odpovede cloud server //////////////////////
Serial.print („Čaká sa na odpoveď
);
kým
(! client.available ()) {
oneskorenie (50);
//Serial.print (".");
}
/* ak sú údaje
k dispozícii, potom prijmite a vytlačte na terminál */
kým
(client.available ()) {
char c = client.read ();Serial.write (c);
}
/* ak
server odpojený, zastavte klienta */
keby
(! client.connected ()) {Serial.println ();Serial.println ("Server odpojený");
client.stop ();
}
}
Serial.println ( ////////////////////////// KONIEC
///////////////////// );
oneskorenie (3000);
}
}
Krok 4: VÝSTUP:
Zobrazí sa výstup kódu.
Krok 5: GRAF
Toto je grafické znázornenie hodnôt odčítaných zo snímača.
Krok 6:
Tu je kompletné video z projektu. Ďakujem.