جدول المحتويات:

قياس محتوى رطوبة التربة باستخدام منصة Esp32 و Thingsio.ai: 6 خطوات
قياس محتوى رطوبة التربة باستخدام منصة Esp32 و Thingsio.ai: 6 خطوات

فيديو: قياس محتوى رطوبة التربة باستخدام منصة Esp32 و Thingsio.ai: 6 خطوات

فيديو: قياس محتوى رطوبة التربة باستخدام منصة Esp32 و Thingsio.ai: 6 خطوات
فيديو: ☑️ LCD أردوينو للمبتدئين - (26) فهم واستخدام شاشة 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 ---------------------------------------- VP

الخطوة الثالثة: الترميز:

#يشمل

#يشمل

#يشمل

عدد صحيح = 0 ، أنا ، م ، ي ، ك ؛

ر int ؛

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 للخادم

الطابع الزمني char [10] ؛

WiFi متعدد WiFi متعدد ؛

// استخدم فئة WiFiClient لإنشاء اتصالات TCP

عميل WiFiClient ؛

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

وظيفة الحساب ///////////////////////////////////////////

int GiveMeTimestamp ()

{

طويل بدون توقيع

المهلة = مللي () ؛

// عميل WiFiClient ؛

في حين

(client.available () == 0)

{

إذا (بالمللي () -

المهلة> 50000)

{

client.stop () ؛

العودة 0 ؛

}

}

بينما (client.available ())

{

خط السلسلة =

client.readStringUntil ('r') ، // indexOf () هي وظيفة للبحث عن smthng ، وتعيد -1 إذا لم يتم العثور عليها

نقاط البيع int =

line.indexOf ("\" الطابع الزمني / "")؛ // ابحث عن "\" timestamp / "" من بداية الرد ونسخ جميع البيانات بعد ذلك ، سيكون طابعك الزمني

إذا (نقاط البيع> =

0)

{

int j = 0 ؛لـ (j = 0 ؛ j <10 ؛ j ++)

{الطابع الزمني [j] = الخط [نقطة البيع + 12 + ي] ؛

}

}

}

}

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

الإعداد باطل()

{Serial.begin (115200) ؛Serial.println ("القراءة من جهاز الاستشعار …") ؛

تأخير (2000) ؛

// نبدأ بـ

الاتصال بشبكة WiFi

WiFiMulti.addAP ("Wifi_name" ،

"كلمة السر واي فاي")؛

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

/////////////////////////////////////// TIMESTAMP CODE 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 ("Postman-Token: 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 / ":" + value + "}" + "}"؛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("Connection: close ") ؛client.println ("نوع المحتوى: application / json") ؛

client.println ( التحكم في ذاكرة التخزين المؤقت:

no-cache ") ؛client.println ("التفويض: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9. IjVhMzBkZDFkN2QwYjNhNGQzODkwYzQ4OSI.kaY6OMj5cYlWNqm9PNTk6client.print ("طول المحتوى:") ؛

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

////////////////////////////////// نشر البيانات على

تم الانتهاء من السحابة والحصول الآن على نموذج الاستجابة للخادم السحابي ////////////////////

Serial.print ( في انتظار الرد

);

في حين

(! client.available ()) {

تأخير (50) ؛

//Serial.print (".") ؛

}

/ * إذا كانت البيانات

متاح ثم الاستلام والطباعة إلى Terminal * /

في حين

(client.available ()) {

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

}

/ * إذا كان ملف

الخادم غير متصل ، أوقف العميل * /

لو

(! client.connected ()) {Serial.println () ،Serial.println ("الخادم غير متصل") ؛

client.stop () ؛

}

}

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

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

تأخير (3000) ؛

}

}

الخطوة 4: الإخراج:

انتاج
انتاج

يتم عرض إخراج الكود.

الخطوة 5: الرسم البياني

رسم بياني
رسم بياني

هذا هو التمثيل الرسومي للقيم التي يتم قراءتها من المستشعر.

الخطوة السادسة:

هنا هو الفيديو الكامل للمشروع. اشكرك.

موصى به: