תוכן עניינים:

מדידת תכולת לחות הקרקע באמצעות פלטפורמת Esp32 ו- Thingsio.ai: 6 שלבים
מדידת תכולת לחות הקרקע באמצעות פלטפורמת Esp32 ו- Thingsio.ai: 6 שלבים

וִידֵאוֹ: מדידת תכולת לחות הקרקע באמצעות פלטפורמת Esp32 ו- Thingsio.ai: 6 שלבים

וִידֵאוֹ: מדידת תכולת לחות הקרקע באמצעות פלטפורמת Esp32 ו- Thingsio.ai: 6 שלבים
וִידֵאוֹ: 4 הסיור האקולוגי 2024, יוני
Anonim
מדידת תכולת לחות הקרקע באמצעות פלטפורמת Esp32 ו- Thingsio.ai
מדידת תכולת לחות הקרקע באמצעות פלטפורמת Esp32 ו- Thingsio.ai

במדריך זה אני הולך להסביר על קריאת תכולת הלחות באדמה באמצעות 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:

להלן הסרטון המלא של הפרויקט. תודה.

מוּמלָץ: