فهرست مطالب:
تصویری: اندازه گیری رطوبت خاک با استفاده از Esp32 و بستر Thingsio.ai: 6 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:55
در این آموزش من قصد دارم در مورد خواندن میزان رطوبت خاک با استفاده از 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:
در اینجا فیلم کامل این پروژه وجود دارد. متشکرم.
توصیه شده:
اندازه گیری زمان (ساعت اندازه گیری نوار): 5 مرحله (همراه با تصاویر)
Time Time (Tape Measure Clock): برای این پروژه ، ما (Alex Fiel & amp؛ Anna Lynton) یک ابزار اندازه گیری روزانه تهیه کردیم و آن را به ساعت تبدیل کردیم! طرح اولیه این بود که یک نوار اندازه گیری موجود را موتور کنید. در ساخت آن ، ما تصمیم گرفتیم که راحت تر بتوانیم پوسته خودمان را ایجاد کنیم
اندازه گیری رطوبت خاک با تمشک پای 4: 4 مرحله
اندازه گیری رطوبت خاک با تمشک پای 4: آیا می دانید هر چند وقت یکبار به گیاهان آب می دهید؟ یا گیاهان را بیرون ریخته و آنها را از دست می دهد. برای حل این مشکل ، فکر می کنم اگر بتوانیم مقدار آب موجود در خاک را به منظور تصمیم گیری در مورد آبیاری مناسب گیاهان بدست آوریم ، بسیار مهم است
اندازه گیری رطوبت خاک با آردوینو: 6 مرحله
اندازه گیری رطوبت خاک با آردوینو: در این آموزش سریع ، من به شما نحوه خواندن سنسور رطوبت خاک با استفاده از آردوینو و چاپ سطح رطوبت خاک در مانیتور سریال آردوینو را نشان خواهم داد. می توانید پست اصلی نوشته شده توسط من را در سینالایی از این پیوند پیدا کنید
اندازه گیری دما با استفاده از نرم افزار Esp32 و Thingsio.ai: 6 مرحله
اندازه گیری دما با استفاده از Esp32 و Thingsio.ai Platform: در این آموزش قصد دارم در مورد اندازه گیری دمای محیط با استفاده از سنسور دمای داخلی موجود در صفحه توسعه esp32 توضیح دهم. esp32 دارای بسیاری از سنسورهای داخلی است مانند سنسور سالن که به عنوان سنسور مجاورت استفاده می شود ، لمس
اندازه گیری رطوبت خاک با دامنه های صوتی: 6 مرحله (همراه با تصاویر)
اندازه گیری رطوبت خاک با دامنه های صوتی: در این آموزش نحوه ساخت دستگاهی که رطوبت خاک را با دامنه های صوتی اندازه گیری می کند توضیح خواهیم داد