تا به حال پروژه های زیادی با عنوان مانیتورینگ دیتای سنسور های مختلف با وبسرور منتشر کردهایم. اما در اجرای و انتقال دیتا به این وب سرورها هیچوقت قانون یا بهتر است بگوییم استاندار خاصی وجود نداشت و از خود قابلیت های تراشههای ESP برای راهاندازی این پروزه ها استفاده میکردیم. اما در آموزش فشار و دما با ESP-DASH قصد داریم با استفاده از کتابخانه ESP-DASH مقادیر فشار و دما را از bmp180 دریافت به شکل استاندارد در یک وبسرور با ظاهر مناسب نمایش دهیم. در ادامه این آموزش با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.
سنسور دما و فشار BMP180
سنسور فشار سنج BMP180 برای مواردی که نیاز به دقت بالایی در اندازه گیری دارند استفاده میشود، این سنسور با دقت ۰٫۰۳ هکتوپاسکال قابلیت اندازهگیری فشار هوا و همچنین دما را دارد که این پروسه ابتدا با اندازه گیری دما محیط و سپس فشار صورت میگیرد، در واقع BMP180 فشار و دما را اندازه گیری می کند زیرا دما، چگالی گازها مانند هوا را تغییر می دهد. در دمای بالاتر هوا متراکم و سنگین نیست، بنابراین فشار کمتری به سنسور وارد می کند. در دمای پایین هوا چگال تر و وزن بیشتری دارد، بنابراین فشار بیشتری به سنسور وارد می کند. این سنسور از اندازه گیری دما در زمان واقعی برای جبران قرائت فشار برای تغییر در چگالی هوا استفاده می کند.
ESP.DASH چیه ؟!
برد Wemos
برد Wemos یکی از پرطرافدار ترین برد هایی است که در زمینه iot مورد استفاده قرار میگیرد، یکی از مزیت های این برد نسبت به برد هایی مانند Node MCU اندازه کوچک آن می باشد تراشه وای فای مورد استفاده در این برد ESP8266 می باشد. از دیگر مزیت های این برد وجود شیلد های مختلفی برای این برد می باشد، که انجام هر پروژه ای را برای کاربر بسیار آسان و لذت بخش می کند، شیلد هایی از جمله شیلد باتری، multi sensor ، DHT22 ، رله ، oled تعداد بسیار زیادی شیلد برای این برد توسعه داده شده که در نتیجه تجربه خوبی از iot برای شما به جا خواهد گذاشت.
روش کار این پروژه
در این پروژه ابتدا مقادیر مورد نیاز را از bmp180 دریافت میکنیم که شامل مقادیر دمای محیط و فشار است، در ادامه با راهاندازی ESP.DASH یک دشیورد با امکان نمایش مقادیر عددی خواهیم کرد سپس دیتای بدست آمده از محیط را با معرفی مقادیر، در دشبورد نمایش خواهیم داد. لازم به ذکر است ESP.DASH قابلیت اجرا بر روی هردو تراشه ESP یعنی ESP8266 و ESP32 را دارد پس بدون نگرانی میتوانید از این کتابخانه پرکاربرد و بهینه استفاده کنید.
وسایل مورد نیاز
کابل جامپر مخصوص اتصالات سنسور و بردها
نحوه نصب ESP.DASH
برای دسترسی به کتابخانه ESP.DASH دو روش وجود؛ اول اینکه با مراجعه به سایت رسمی اقدام به فایل zip. کنید بصورت دستی آن را به نرمافزار Arduino IDE اضافه کنید. و روش دوم که به شخصه پیشنهاد میکنم استفاده از نسخه ای است که در هنگام نصب افزونه ESPبه آردوینو بصورت پیشفرض اضافه خواهد، پس برای استفاده از امکانات این کتابخانه با استفاده از مراحل زیر اقدام نصب افزونه مرجع برد ESP کنید.
- ابتدا در نرم افزار Arduino IDE به مسیر File> Preferences بروید.
- لینک زیر را در بخش مشخص شده قرار دهید.
https://dl.espressif.com/dl/package_esp32_index.json, http://arduino.esp8266.com/stable/package_esp8266com_index.json
- سپس به مسیر Tools > Board > Boards Manager بروید.
- در بخش board manager کلمه ESP32 و ESP8266 را سرچ کنید و بر روی install کلیک کنید.
شماتیک و اتصالات
سنسور bmp180 با استفاده از پروتکل ارتباطی i2c دیتا مدنظر را انتقال میدهد پس تنها با اتصال ۴سیم، ۲ سیم دیتا یعنی SCL, SDA و ۲سیم پاور میتوانیم از این ماژول استفاده کنیم. اتصالات را مطابق جدول و شماتیک زیر برقرار کنید.
- شماتیک اتصالات پروژه مانیتورینگ فشار و دما با ESP-DASH
کد و راهاندازی
کد این پروژه از دو بخش تشکیل شده، راهاندازی سنسور bmp180 و دریافت مقادیر مربوط به فشار و دمای محیط و در بخش دوم و نهایی راهاندازی دشبورد iot و دریافت گرافیکی مقادیر از صفحه وب. در این بخش از آموزش به بررسی کد این پروژه خواهیم پرداخت. ابتدا کتابخانه های مورد نیاز را اضافه کردهایم.
#include <Arduino.h> #include <ESP8266WiFi.h> #include <Wire.h> #include <BMP180I2C.h> #include <ESPAsyncTCP.h> #include <ESPAsyncWebServer.h> #include <ESPDash.h>
در ادامه باید در این قسمت مشخصات مربوط به شبکه WiFi که ESP به آن متصل خواهد شد را وارد کنید.
const char* ssid = "C1F3R"; // نام شبکه وای فاای const char* password = "314159265"; // پسوورد سبکه
در این قسمت علاوه اجرای وب سرور، اقدام به افزودن المان های مربوط به نمایش مقادیر برای نمایش خواهیم کرد.
ESPDash.init(server); // اجرا کردن سرور ESPDash.addTemperatureCard("temp1", "Temperature Card", 0, 20); // اضافه کردن المان های مورد نیاز ESPDash.addNumberCard("num1", "Pressure Card", 98);
در این بخش با فراخوانی موارد محاسبه دما و فشار در بستر ESP.DASH اقدام به نمایش این مقادیر در وب سرور خواهیم کرد.
ESPDash.updateTemperatureCard("temp1", float(bmp180.getTemperature())); ESPDash.updateNumberCard("num1", float(bmp180.getPressure())); delay(3000);
کد کامل پروژه مانیتورینگ فشار و دما با ESP-DASH
#include <Arduino.h> #include <ESP8266WiFi.h> #include <Wire.h> #include <BMP180I2C.h> #include <ESPAsyncTCP.h> #include <ESPAsyncWebServer.h> #include <ESPDash.h> #define I2C_ADDRESS 0x77 BMP180I2C bmp180(I2C_ADDRESS); AsyncWebServer server(80); const char* ssid = "C1F3R"; // نام شبکه وای فاای const char* password = "314159265"; // پسوورد سبکه void setup() { Serial.begin(9600); while (!Serial); Wire.begin(); if (!bmp180.begin()) { Serial.println("begin() failed. check your BMP180 Interface and I2C Address."); while (1); } WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); if (WiFi.waitForConnectResult() != WL_CONNECTED) { Serial.printf("WiFi Failed!\n"); return; } Serial.print("IP Address: "); Serial.println(WiFi.localIP()); ESPDash.init(server); // اجرا کردن سرور ESPDash.addTemperatureCard("temp1", "Temperature Card", 0, 20); // اضافه کردن المان های مورد نیاز ESPDash.addNumberCard("num1", "Pressure Card", 98); server.begin(); bmp180.resetToDefaults(); bmp180.setSamplingMode(BMP180MI::MODE_UHR); Serial.print("IP address: "); Serial.println(WiFi.localIP()); } void loop() { if (!bmp180.measureTemperature()) { Serial.println("could not start temperature measurement, is a measurement already running?"); return; } do { delay(100); } while (!bmp180.hasValue()); Serial.print("Temperature: "); Serial.print(bmp180.getTemperature()); Serial.println(" degC"); if (!bmp180.measurePressure()) { Serial.println("could not start perssure measurement, is a measurement already running?"); return; } do { delay(100); } while (!bmp180.hasValue()); Serial.print("Pressure: "); Serial.print(bmp180.getPressure()); Serial.println(" Pa"); ESPDash.updateTemperatureCard("temp1", float(bmp180.getTemperature())); ESPDash.updateNumberCard("num1", float(bmp180.getPressure())); delay(3000); }
جمع بندی
در این پروژه با راهاندازی یک سرویس وبسرور بهینه مقادیر سنسور bmp180 را در برد ESP8266 تحلیل و در دشبورد گرافیکی و تحت وب ESP.DASH نمایش دادیم. با استفاده از این دشبور قادر خواهیم بود مقادیر نمایشی را علاوه داده های عددی بصورت گراف های گرافیکی نیز نمایش دهیم که در اپیزود های بعدی نیز به آن اشاره خواهیم کرد.
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.
سلام
خسته نباشید، عالی بود، فقط من دقیقا متوجه نشدم esp dash چی هست؟
در مجموع یک کتابخانه بهینه برای ساخت وبسرور.
سلام
نسخه کامل(PRO) ESP-Dash رو از کجا میتونم دانلود کنم(با توجه به مشکلات تحریم و عدم امکان خرید نسخه PRO)
با سلام
در این حصوص اطلاعی ندارم.