Përmbajtje:
2025 Autor: John Day | [email protected]. E modifikuara e fundit: 2025-01-13 06:58
Në këtë tutorial do të shpjegoj në lidhje me leximin e përmbajtjes së lagështisë në tokë duke përdorur esp32 dhe më pas dërgimin e vlerave në platformën cloud thingso.ai IoT.
Hapi 1: PMPRBRSIT
Komponentët e harduerit:
1. bordi i zhvillimit esp32
2. Sensori i tokës
3. Telat Jumper
Softuer:
1. Arduino IDE
2. Thingsio.ai
Hapi 2: LIDHJET
Sensori i Lagështisë së Tokës ---------------------- Bordi esp32
KQV ------------------------------------------ 3V3
GND -------------------------------------- GND
A0 ---------------------------------------- VP
Hapi 3: KODIMI:
#përfshi
#përfshi
#përfshi
int numërimi = 0, i, m, j, k;
int t;
int sensor_pin = A0;
vlera int;
//////////////////////////////////////// GJITHA DEKLARATAT
për CLOUD ///////////////////////////////
const char* host = "api.thingsai.io"; // OSE host =
devapi2.thethingscloud.com
const char* post_url = "/devices/deviceData"; // OSE
/api/v2/thingscloud2/_table/data_ac
const char* serveri i kohës =
"baas.thethingscloud.com"; // kjo është për të konvertuar vulën kohore
const int httpPort = 80;
const int httpsPort = 443;
const char* server =
"api.thingsai.io"; // URL e serverit
vula e kohës char [10];
WiFiMulti WiFiMulti;
// Përdorni klasën WiFiClient për të krijuar lidhje TCP
Klienti WiFiClient;
//////////////////////////////////////// TIMESTAMP
Funksioni i llogaritjes ////////////////////////////////////////
int GiveMeTimestamp ()
{
pa firmosur gjatë
timeout = millis ();
// klienti WiFiClient;
derisa
(klienti i disponueshëm () == 0)
{
nëse (milis () -
timeout> 50000)
{
client.stop ();
kthimi 0;
}
}
ndërsa (klienti i disponueshëm ())
{
Linja e vargut =
client.readStringUntil ('\ r'); // indexOf () është një funksion për të kërkuar smthng, ai kthen -1 nëse nuk gjendet
int pos =
line.indexOf ("\" afati kohor / ""); // kërko për "\" timestamp / "" që nga fillimi i përgjigjes mori dhe kopjo të gjitha të dhënat pas kësaj, do të jetë vula juaj kohore
nëse (pos> =
0)
{
int j = 0;për (j = 0; j <10; j ++)
{vula kohore [j] = rreshti [pos + 12 + j];
}
}
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
void setup ()
{Serial.fillo (115200);Serial.println ("Leximi nga Sensori …");
vonesa (2000);
// Fillojmë nga
lidhja me një rrjet WiFi
WiFiMulti.addAP ("Emri Wifi", "Wifi_Password");
Serial.println ();
Serial.println ();Serial.print ("Prisni për WiFi …");ndërsa (WiFiMulti.run ()! = WL_CONNECTED) {Serial.print (".");
vonesë (500);
}Serial.println ("");Serial.println ("WiFi i lidhur");
Serial.println ( IP
adresë: );Serial.println (WiFi.localIP ());
vonesë (500);
}
lak void ()
{
{
//////////////////////////////////////// DENDRGUAR PYETJEN DHE
MERRNI PESRGJIGJEN ///////////////////////
vlera =
analogRead (sensor_pin);
// vlera =
hartë (vlera, 550, 0, 0, 100);Serial.print ("Mositure:");Serial.print (vlera);Serial.println ("%");vonesa (1000);Serial.print ("lidh me");Serial.println (host); // e përcaktuar me kokë:- host = devapi2.thethingscloud.com ose 139.59.26.117
/////////////////////////////////////// TIMESTAMP KODI SNIPPET
/////////////////////////
Serial.println ("brenda merrni vulën kohore / n");
nëse
(! client.connect (server_ kohor, {
kthim;
//*-*-*-*-*-*-*-*-*-*
}client.println ("GET/api/timestamp HTTP/1.1"); // Çfarë bën kjo pjesë, nuk e kuptovaclient.println ("Pritësi: baas.thethingscloud.com");client.println ("Cache-Control: pa-cache");client.println ("Postier-Token: ea3c18c6-09ba-d049-ccf3-369a22a284b8");
klient.println ();
GiveMeTimestamp ();
// do të thërrasë funksionin i cili do të marrë përgjigjen e afatit kohor nga serveri
Serial.println ("vula kohore e marrë");
Serial.println (vula kohore);Serial.println ("brenda ThingsCloudPost");
String PostValue =
"{" device_id / ": 61121695918, \" slave_id / ": 2";
Vlera Postare =
PostValue + ", \" dts / ":" + vula kohore;
Vlera Postare =
PostValue +", \" data / ": {" MOIST / ":" +vlera +"}" +"}";Serial.println (PostValue);
/ * krijoni një shembull të WiFiClientSecure */
Klient WiFiClientSecure;Serial.println ("Lidhu me serverin përmes portit 443");
nëse
(! client.connect (server, 443)) {Serial.println ("Lidhja dështoi!");
} tjetër {Serial.println ("I lidhur me serverin!");
/* krijoni
kërkesë */client.println ("POST/pajisje/pajisjeData HTTP/1.1");client.println ("Pritësi: api.thingsai.io");//client.println("Lidhja: mbyll ");client.println ("Lloji i përmbajtjes: aplikacion/json");
client.println ( cache-control:
pa cache ");client.println ("autorizimit Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9. IjVhMzBkZDFkN2QwYjNhNGQzODkwYzQ4OSI.kaY6OMj5cYlWNqC2PNTkXs9PKy6_m9tdW5AG7ajfVlY");client.print ("Përmbajtja-Gjatësia:");
client.println (PostValue.length ());klient.println ();client.println (PostValue);
/////////////////////////////////// POSTIMI i të dhënave në
cloud është përfunduar dhe tani merrni përgjigjen nga serveri cloud //////////////////
Serial.print ( Në pritje të përgjigjes
);
derisa
(! client.available ()) {
vonesë (50);
//Serial.print (".");
}
/* nëse të dhënat janë
e disponueshme pastaj merrni dhe printoni në Terminal */
derisa
(client.available ()) {
char c = client.read ();Serial.shkruani (c);
}
/* nëse
serveri u shkëput, ndaloni klientin */
nëse
(! client.connected ()) {Serial.println ();Serial.println ("Serveri u shkëput");
client.stop ();
}
}
Serial.println ( ////////////////////// FUNDI
///////////////////// );
vonesë (3000);
}
}
Hapi 4: dalje:
Tregohet dalja e kodit.
Hapi 5: Grafiku
Ky është paraqitja grafike e vlerave të cilat lexohen nga sensori.
Hapi 6:
Këtu keni videon e plotë të projektit. Faleminderit.