תוכן עניינים:
2025 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2025-01-13 06:57
במדריך זה אני הולך להסביר על קריאת תכולת הלחות באדמה באמצעות esp32 ולאחר מכן שליחת הערכים לפלטפורמת הענן של דבריםio.ai IoT.
שלב 1: רכיבים
רכיבי חומרה:
1. לוח פיתוח esp32
2. חיישן קרקע
3. חוטי מגשר
תוֹכנָה:
1. Arduino IDE
2. Thingsio.ai
שלב 2: חיבורים
חיישן לחות קרקע ---------------------- esp32 לוח
VCC --------------------------------------- 3V3
GND -------------------------------------- GND
A0 ---------------------------------------- סמנכ ל
שלב 3: קידוד:
#לִכלוֹל
#לִכלוֹל
#לִכלוֹל
int count = 0, i, m, j, k;
int t;
int sensor_pin = A0;
ערך int;
/////////////////////////////////
עבור CLOUD //////////////////////////////////
const char* host = "api.thingsai.io"; // או מארח =
devapi2.thethingscloud.com
const char* post_url = "/devices/deviceData"; // או
/api/v2/thingscloud2/_table/data_ac
const char* time_server =
"baas.thethingscloud.com"; // זה כדי להמיר את חותמת הזמן
const int httpPort = 80;
const int httpsPort = 443;
const char* server =
"api.thingsai.io"; // כתובת URL של השרת
חותמת זמן של צ'ארה [10];
WiFiMulti WiFiMulti;
// השתמש בכיתה WiFiClient ליצירת חיבורי TCP
לקוח WiFiClient;
//////////////////////////////////////////
פונקציית חישוב ////////////////////////////
int GiveMeTimestamp ()
{
ארוך ללא סימן
פסק זמן = מיליס ();
// לקוח WiFiClient;
בזמן
(client.available () == 0)
{
אם (מיליס () -
פסק זמן> 50000)
{
client.stop ();
החזר 0;
}
}
בעוד (client.available ())
{
קו מחרוזת =
client.readStringUntil ('\ r'); // indexOf () הוא פונקציה לחיפוש smthng, הוא מחזיר -1 אם לא נמצא
int pos =
line.indexOf ("\" חותמת זמן / ""); // חפש "\" חותמת זמן / "" מתחילת התגובה שקיבלת והעתק את כל הנתונים לאחר מכן, זה יהיה חותמת הזמן שלך
אם (pos> =
0)
{
int j = 0;עבור (j = 0; j <10; j ++)
{חותמת זמן [j] = שורה [pos + 12 + j];
}
}
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
הגדרת חלל ()
{Serial.begin (115200);Serial.println ("קריאה מהחיישן …");
עיכוב (2000);
// נתחיל ב
חיבור לרשת WiFi
WiFiMulti.addAP ("Wifi_name", "Wifi_Password");
Serial.println ();
Serial.println ();Serial.print ("המתן ל- WiFi …");בעוד (WiFiMulti.run ()! = WL_CONNECTED) {Serial.print (".");
עיכוב (500);
}Serial.println ("");Serial.println ("WiFi מחובר");
Serial.println ( IP
כתובת: );Serial.println (WiFi.localIP ());
עיכוב (500);
}
לולאת חלל ()
{
{
/////////////////////////////////
קבל את התגובה /////////////////////
ערך =
analogRead (sensor_pin);
// ערך =
מפה (ערך, 550, 0, 0, 100);Serial.print ("Mositure:");Serial.print (ערך);Serial.println ("%");עיכוב (1000);Serial.print ("מתחבר אל");Serial.println (מארח); // מוגדר כלפי מעלה:- host = devapi2.thethingscloud.com או 139.59.26.117
////////////////////////////////////////// SNIPPET
/////////////////////////
Serial.println ("בפנים חותמת זמן / n");
אם
(! client.connect (שרת הזמן, {
לַחֲזוֹר;
//*-*-*-*-*-*-*-*-*-*
}client.println ("GET/api/timestamp HTTP/1.1"); // מה החלק הזה עושה, לא הבנתיclient.println ("מארח: baas.thethingscloud.com");client.println ("Cache-Control: no-cache");client.println ("אגרת דוור: ea3c18c6-09ba-d049-ccf3-369a22a284b8");
client.println ();
GiveMeTimestamp ();
// הוא יקרא לפונקציה שתקבל את תגובת חותמת הזמן מהשרת
Serial.println ("חותמת זמן התקבלה");
Serial.println (חותמת זמן);Serial.println ("בתוך ThingsCloudPost");
מחרוזת PostValue =
"{" device_id / ": 61121695918, \" slave_id / ": 2";
PostValue =
PostValue + ", \" dts / ":" + חותמת זמן;
PostValue =
PostValue +", \" data / ": {" MOIST / ":" +ערך +"}" +"}";Serial.println (PostValue);
/ * צור מופע של WiFiClientSecure */
לקוח WiFiClientSecure;Serial.println ("התחבר לשרת דרך יציאה 443");
אם
(! client.connect (שרת, 443)) {Serial.println ("החיבור נכשל!");
} אחר {Serial.println ("מחובר לשרת!");
/* צור
בקשה */client.println ("POST/devices/deviceData HTTP/1.1");client.println ("מארח: api.thingsai.io");//client.println("חיבור: קרוב ");client.println ("סוג תוכן: יישום/json");
client.println ( cache-control:
ללא מטמון ");client.println ("הרשאה: נושאת eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9. IjVhMzBkZDFkN2QwYjNhNGQzODkwYzQ4OSI.kaY6OMj5cYlWNqC2PNYs9k9y7y9y9s9y9k9y9c9y9c9y9c9y9c9p6y9c9y9c9y9c9y9c9p6y9c5j9J9JyJ9JyN9C9pK9y9YYYYYYN9CYPWzQy9J9yYyYNJC9pJ6y9JyJJJJJJJJ9JyJJ9JyJJJjJJJJJJJgclient.print ("אורך התוכן:");
client.println (PostValue.length ());client.println ();client.println (PostValue);
////////////////////////////////////// לפרסם את הנתונים ב
ענן נעשה ועכשיו קבל את טופס התגובה שרת ענן ////////////////////
Serial.print ( מחכה לתגובה
);
בזמן
(! client.available ()) {
עיכוב (50);
//Serial.print (".");
}
/* אם הנתונים
זמין ואז קבל והדפס לטרמינל */
בזמן
(client.available ()) {
char c = client.read ();Serial.write (ג);
}
/* אם
השרת נותק, עצור את הלקוח */
אם
(! client.connected ()) {Serial.println ();Serial.println ("השרת נותק");
client.stop ();
}
}
Serial.println ( //////////////////////// END
///////////////////// );
עיכוב (3000);
}
}
שלב 4: פלט:
מוצג פלט הקוד.
שלב 5: גרף
זהו הייצוג הגרפי של הערכים הנקראים מהחיישן.
שלב 6:
להלן הסרטון המלא של הפרויקט. תודה.