فهرست مطالب:

اندازه گیری رطوبت خاک با استفاده از Esp32 و بستر Thingsio.ai: 6 مرحله
اندازه گیری رطوبت خاک با استفاده از Esp32 و بستر Thingsio.ai: 6 مرحله

تصویری: اندازه گیری رطوبت خاک با استفاده از Esp32 و بستر Thingsio.ai: 6 مرحله

تصویری: اندازه گیری رطوبت خاک با استفاده از Esp32 و بستر Thingsio.ai: 6 مرحله
تصویری: گل خانه هوشمند | روش کنترل حرارت و رطوبت در گلخانه 2024, نوامبر
Anonim
اندازه گیری رطوبت خاک با استفاده از Esp32 و بستر Thingsio.ai
اندازه گیری رطوبت خاک با استفاده از Esp32 و بستر Thingsio.ai

در این آموزش من قصد دارم در مورد خواندن میزان رطوبت خاک با استفاده از esp32 و سپس ارسال مقادیر به پلت فرم ابر thingsio.ai IoT توضیح دهم.

مرحله 1: اجزاء

اجزاء
اجزاء
اجزاء
اجزاء

اجزای سخت افزاری:

1. صفحه توسعه esp32

2. سنسور خاک

3. سیم جامپر

نرم افزار:

1. Arduino IDE

2. Thingsio.ai

مرحله 2: اتصالات

اتصالات
اتصالات

سنسور رطوبت خاک ---------------------- برد esp32

VCC ------------------------------------------ 3V3

GND -------------------------------------- GND

A0 ---------------------------------------- معاون

مرحله 3: کدگذاری:

#عبارتند از

#عبارتند از

#عبارتند از

int شمارش = 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"؛ // این برای تبدیل timestamp است

const int httpPort = 80؛

const int httpsPort = 443؛

const char* سرور =

"api.thingsai.io" ؛ // آدرس سرور

timestamp char [10]؛

WiFiMulti WiFiMulti؛

// برای ایجاد اتصالات TCP از کلاس WiFiClient استفاده کنید

مشتری WiFiClient ؛

/////////////////////////////////////// TIMESTAMP

عملکرد محاسبه /////////////////////////////////////

int GiveMeTimestamp ()

{

بدون امضا طولانی

timeout = millis ()؛

// مشتری WiFiClient ؛

در حالی که

(client.available () == 0)

{

if (millis () -

مهلت زمانی> 50000)

{

client.stop ()؛

بازگشت 0 ؛

}

}

while (client.available ())

{

خط رشته =

client.readStringUntil ('\ r')؛ // indexOf () یک کار برای جستجوی smthng است ، اگر یافت نشد -1 را برمی گرداند

int pos =

line.indexOf ("\" timestamp / "")؛ // "\" timestamp / "" را از ابتدای پاسخ جستجو کنید و پس از آن همه داده ها را کپی کنید ، این نشان زمان شما خواهد بود

if (pos> =

0)

{

int j = 0 ؛برای (j = 0 ؛ j <10 ؛ j ++)

{timestamp [j] = خط [pos + 12 + j] ؛

}

}

}

}

////////////////////////////////////////////////////////////////////////////////////////////////////////

void setup ()

{Serial.begin (115200) ؛Serial.println ("خواندن از سنسور …") ؛

تاخیر (2000) ؛

// شروع می کنیم با

اتصال به شبکه WiFi

WiFiMulti.addAP ("Wifi_name" ،

"رمز عبور Wifi") ؛

Serial.println ()؛

Serial.println ()؛Serial.print ("منتظر وای فای باشید …") ؛در حالی که (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

/////////////////////////////////////// TIMESTAMP CODE SNIPPET

/////////////////////////

Serial.println ("در داخل دریافت timestamp / n")؛

اگر

(! client.connect (time_server،

{

برگشت؛

//*-*-*-*-*-*-*-*-*-*

}client.println ("GET/api/timestamp HTTP/1.1") ؛ // این قسمت چه می کند ، متوجه نشدمclient.println ("میزبان: baas.thethingscloud.com")؛client.println ("Cache-Control: no-cache") ؛client.println ("Postman-Token: ea3c18c6-09ba-d049-ccf3-369a22a284b8") ؛

client.println ()؛

GiveMeTimestamp ()؛

// تابع را فراخوانی می کند که زمان پاسخ سرور را دریافت می کند

Serial.println ("زمان دریافت شده") ؛

Serial.println (timestamp)؛Serial.println ("داخل ThingsCloudPost") ؛

String PostValue =

"{" device_id / ": 61121695918، \" slave_id / ": 2"؛

PostValue =

PostValue + "، \" dts / ":" + timestamp؛

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("Connect: close ")؛client.println ("نوع محتوا: برنامه/json") ؛

client.println ( cache-control:

بدون کش ") ؛client.println ("مجوز: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9. IjVhMzBkZDFkN2QwYjNhNGQzODkwYzQ4OSI.kaY6OMj5cYlWnqmq9q2kYkYkYkYkYkYkVyq2k5k9k2ktYk2ktwt5g2k2tcd5dwtw2k"client.print ("Content-Length:")؛

client.println (PostValue.length ()) ؛client.println ()؛client.println (PostValue) ؛

/////////////////////////////////// ارسال اطلاعات در

cloud تمام شده است و اکنون فرم پاسخ را دریافت کنید سرور cloud //////////////////

Serial.print ( در انتظار پاسخ

);

در حالی که

(! client.available ()) {

تأخیر (50) ؛

//Serial.print (".") ؛

}

/* اگر داده باشد

در دسترس و سپس دریافت و چاپ در ترمینال */

در حالی که

(client.available ()) {

char c = client.read ()؛Serial.write (c)؛

}

/* اگر

سرور قطع شد ، سرویس گیرنده را متوقف کنید */

اگر

(! client.connected ()) {Serial.println ()؛Serial.println ("سرور قطع شده است")؛

client.stop ()؛

}

}

Serial.println ( ////////////////////// END

///////////////////// );

تاخیر (3000) ؛

}

}

مرحله 4: خروجی:

خروجی
خروجی

خروجی کد نشان داده شده است.

مرحله 5: نمودار

گراف
گراف

این نمایش گرافیکی مقادیری است که از سنسور خوانده می شود.

مرحله 6:

در اینجا فیلم کامل این پروژه وجود دارد. متشکرم.

توصیه شده: