Sisukord:
2025 Autor: John Day | [email protected]. Viimati modifitseeritud: 2025-01-13 06:57
Selles õpetuses selgitan mullas oleva niiskusesisalduse lugemist esp32 abil ja seejärel väärtuste saatmist asjade Interneti pilvplatvormile.
1. samm: KOMPONENDID
Riistvara komponendid:
1. esp32 arendusplaat
2. Mullaandur
3. Jumper juhtmed
Tarkvara:
1. Arduino IDE
2. Thingsio.ai
2. samm: ÜHENDUSED
Mulla niiskusandur ---------------------- esp32 Board
VCC --------------------------------------- 3V3
GND -------------------------------------- GND
A0 ---------------------------------------- VP
3. samm: KOODIMINE:
#kaasake
#kaasake
#kaasake
int arv = 0, i, m, j, k;
int t;
int sensor_pin = A0;
int väärtus;
//////////////////////////////////////////////////////// KÕIK DEKLARATSIOONID
PILVE jaoks //////////////////////////////
const char* host = "api.thingsai.io"; // VÕI host =
devapi2.thethingscloud.com
const char* post_url = "/devices/deviceData"; // VÕI
/api/v2/thingscloud2/_table/data_ac
const char* ajaserver =
"baas.thethingscloud.com"; // see on ajatempli teisendamiseks
const int httpPort = 80;
const int httpsPort = 443;
const char* server =
"api.thingsai.io"; // Serveri URL
sümboli ajatempel [10];
WiFiMulti WiFiMulti;
// Kasutage WiFi -kliendi klassi TCP -ühenduste loomiseks
WiFiClient klient;
/////////////////////////////////////////////////////// TIMESTAMP
Funktsioon ARVUTAMINE ///////////////////////////////////////
int GiveMeTimestamp ()
{
allkirjata pikk
timeout = millis ();
// WiFiClient klient;
samas
(client.available () == 0)
{
kui (millis () -
ajalõpp> 50000)
{
client.stop ();
tagasitulek 0;
}
}
samas (client.available ())
{
Stringirida =
client.readStringUntil ('\ r'); // indexOf () on funktsioon smthng otsimiseks, tagastab -1, kui seda ei leita
int pos =
line.indexOf ("\" ajatempel / ""); // otsi vastuse algusest "\" ajatempel / "" ja kopeeri pärast seda kõik andmed, see on sinu ajatempel
kui (pos> =
0)
{
int j = 0;jaoks (j = 0; j <10; j ++)
{ajatempel [j] = rida [pos + 12 + j];
}
}
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
tühine seadistus ()
{Seriaalne algus (115200);Serial.println ("Andurilt lugemine …");
viivitus (2000);
// Alustame
WiFi -võrguga ühenduse loomine
WiFiMulti.addAP ("Wifi_name", "Wifi_Password");
Serial.println ();
Serial.println ();Serial.print ("Oota WiFi …");samas (WiFiMulti.run ()! = WL_CONNECTED) {Seeria.print (".");
viivitus (500);
}Serial.println ("");Serial.println ("WiFi ühendatud");
Serial.println ( IP
aadress: );Serial.println (WiFi.localIP ());
viivitus (500);
}
tühine tsükkel ()
{
{
///////////////////////////////////////////////////////////////////////////////////////-
VASTA VASTUS ///////////////////////
väärtus =
analogRead (sensor_pin);
// väärtus =
kaart (väärtus, 550, 0, 0, 100);Serial.print ("Mositure:");Serial.print (väärtus);Serial.println ("%");viivitus (1000);Serial.print ("ühenduse loomine");Serial.println (host); // määratletud tagurpidi:- host = devapi2.thethingscloud.com või 139.59.26.117
/////////////////////////////////////////////////-
/////////////////////////
Serial.println ("inside get timestamp / n");
kui
(! client.connect (time_server, {
tagasipöördumine;
//*-*-*-*-*-*-*-*-*-*
}client.println ("GET/api/ajatempel HTTP/1.1"); // Mida see osa teeb, ma ei saanud aruclient.println ("Host: baas.thethingscloud.com");client.println ("Vahemälu kontroll: vahemälu puudub");client.println ("Postimees-märk: ea3c18c6-09ba-d049-ccf3-369a22a284b8");
klient.println ();
GiveMeTimestamp ();
// see kutsub funktsiooni, mis saab serverilt ajatempli vastuse
Serial.println ("ajatempel saadud");
Serial.println (ajatempel);Serial.println ("sees ThingsCloudPost");
String PostValue =
"{" seadme_id / ": 61121695918, \" orja_id / ": 2";
PostValue =
PostValue + ", \" dts / ":" + ajatempel;
PostValue =
PostValue +", \" andmed / ": {" MOIST / ":" +väärtus +"}" +"}";Serial.println (PostValue);
/ * looge WiFiClientSecure'i eksemplar */
WiFiClientSecure klient;Serial.println ("Ühenda serveriga pordi 443 kaudu");
kui
(! client.connect (server, 443)) {Serial.println ("Ühendus ebaõnnestus!");
} muud {Serial.println ("Ühendatud serveriga!");
/* luua
taotlus */client.println ("POST/seadmed/seadmeandmed HTTP/1.1");client.println ("Host: api.thingsai.io");//client.println("Connection: close ");client.println ("Sisu tüüp: rakendus/json");
client.println ( cache-control:
vahemälu puudub ");client.println ("Autoriseerimine: kandja eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9. IjVhMzBkZDFkN2QwYjNhNGQzODkwYzQ4OSI.kaY6OMj5cYlWNqs22k2k2kvkclient.print ("Sisu-pikkus:");
klient.println (PostValue.length ());klient.println ();klient.println (PostValue);
//////////////////////////////////////////////// ning andmete postitamine
pilv on tehtud ja hankige nüüd vastusvorm pilveserver //////////////////
Serial.print ( Ootan vastust
);
samas
(! client.available ()) {
viivitus (50);
//Seeria.print (".");
}
/* kui andmed on
saadaval, seejärel võtke vastu ja printige terminali */
samas
(client.available ()) {
char c = klient.lugemine ();Serial.write (c);
}
/* kui
server on lahti ühendatud, peatage klient */
kui
(! client.connected ()) {Serial.println ();Serial.println ("Server on lahti ühendatud");
client.stop ();
}
}
Serial.println ( ////////////////////// LÕPP
///////////////////// );
viivitus (3000);
}
}
4. samm: VÄLJUND:
Kuvatakse koodi väljund.
5. samm: GRAFIK
See on andurilt loetud väärtuste graafiline esitus.
6. samm:
Siin on projekti täielik video. Aitäh.