تابحال فکر کرده اید که چطور میتوانیم مقادیر یک سنسور را دریافت، تحلیل و نمایش دهیم! و همچنین این امکان برای ما وجود داشته باشد که در هر زمان و مکانی به آن دیتا دسترسی داشته باشیم، خب جواب شما همیم آموزش است، با کمک دشبور iot سایت ThingSpeak مقادیر سنسور DHT11 را نمایش خواهیم داد. برای آموزش های بیشتر به CiferTech مراجعه کنید، همچنین برای حمایت از من حتما پیج من در اینستاگرام را دنبال کنید. ^-^
ThingSpeak
ThingSpeak یک برنامه open source اینترنت اشیا و API برای ذخیره و بازیابی اطلاعات از طریق پروتکل های HTTP و MQTT با اینترنت و یا با استفاده از شبکه محلی است. Thingspeak به شما امکان می دهد داده های سنسور ها را جمع آوری، ذخیره کنید و تجزیه و تحلیل کنید، همچنین با استفاده از امکانات موجود در دشبورد IOT این سایت می توانیم نمودار هایی بر اساس مقادیر بدست آمده رسم کنیم.
سنسور دما رطوبت DHT11
سنسور دما و رطوبت DHT11 سنسوری ارزان قیمت جهت اندازه گیری دما و رطوبت هوا است. اندازه، مصرف کم انرژی آن را به یکی از بهترین گزینهها جهت استفاده در پروژههای مختلف، تبدیل کرده است. با توجه به خروجی دیجیتال این سنسور، به راحتی می تواند به pyboard و یا سایر میکروکنترلر ها متصل گردد. سنسور DHT11 کالیبره شده و دارای خروجی دیجیتال است. محدوده اندازه گیری رطوبت بین ۲۰ تا ۹۰% RH و محدودهی دما از ۰ تا ۵۰ درجه سانتی گراد میباشد. ولتاژ کاری ماژول DHT بین ۳٫۳ تا ۵ ولت DC است. فاصله انتقال سیگنال در ماژول DHT11 تا ۲۰ متر میباشد. ماژول دما و رطوبت DHT11 بسیار مقرون به صرفه، دارای کیفیت عالی و واکنش سریع نسبت به تغییر دمای محیط است. ماژول DHT11 به ترتیب دارای ۳ پایه GND, VCC, Signal میباشد.
برد ESP8266
تراشه های ESP8266 از موارد محبوب در زمینه اینترنت اشیا هستند که نسبت به دیگر نمونه ها کیفیت بهتر و همچنین قیمت پایین تری نیز دارند، هسته مرکزی این ماژول ESP8266 EX می باشد که در واقع زیر این شیلد فلزی قرار گرفته است، در ضمن این شیلد فلزی به منظور کاهش نویز و همچنین محافظت از قطعات SMD حساس این ماژول قرار داده شده است. این ماژول ها در سری های مختلفی تولید میشوند از جمله esp01 و esp12، در واقع تفاوتی که مدل ها با یکدیگر دارند تعداد GPIO ها و همچنین حافظه آن ها است البته معمولا از نظر ظاهری نیز تفاوت هایی که با یکدیگر دارند که قابل تشخیص است. این ماژول ها از شبکه WIFI داخلی پشتیبانی میکنند، این میکرو کنترلر ها اولین بار در سال ۲۰۱۴ به بازار عرضه شدند. ESP8266 دارای ۱۳ GPIO و همچنین یک ورودی آنالوگ (A0) است.
شرح آموزش
در این آموزش با استفاده از سنسور دما DHT11 مقادیر دمای محیط را بدست آورده و به کمک برد ESP8266، این مقادیر را به دشبورد ThingSpeak ارسال خواهیم کرد، در نتیجه می توانیم در هر مکان و زمانی به این اطلاعات دسترسی داشته باشیم و البته این امکان نیز فراهم خواهد شد که نمودار دقیقی از تغییرات دما داشته باشیم.
قطعات مورد نیاز
سنسور DHT11
برد ESP8266
کتابخانه های موردنیاز
ابتدا در نرم افزار Arduino IDE اقدام به نصب نرم افزار مرجع سنسور های DHT می پردازیم. مراحل زیر را دنبال کنید:
- این مسیر را دنبال کنید Sketch > Include Library > Manage Libraries
- کلمه DHT sensor را جستجو کنید.
- کتابخانه را نصب کنید.
در ادامه از این لینک کتابخانه Adafruit Unified Sensor را دانلود، و طبق مراحل زیر پیش بروید.
- ابتدا به مسیر Sketch > Include Library > Add .zip Library بروید، و فایل .Zip که از لینک های زیر دانلود کرده اید را اضافه کنید.
راه اندازی دشبورد ThingSpeak
ابتدا به آدرس thingspeak.com مراجعه کنید و یک یک اکانت جدید ایجاد کنید، سپس در قسمت Channels و در ادامه مانند تصویر زیر New Channel، اقدام به ساخت یک چنل یا دشبورد کنید.
در ادامه صفحه ای مانند تصویر زیر را مشاهده خواهید کرد، اطلاعات اسم و توضیحات را به دلخواه پر کنید و در انتهای صفحه گزینه save channel را انتخاب کنید.
در ادامه با صفحه زیر روبرو خواهید شد که میتوانید مقادیر دریافت شده را مشاهده کنید
همچنین با استفاده از گزینه Add Widgets، میتوانید، المان های دلخواه خود برای نمایش مقادیر را اضافه کنید.
دریافت API
در بخش API keys و در باکس مشخص شده میتوانید API مورد نیاز برای پروژه را پیدا کنید، از این API در ادامه استفاده خواهیم کرد.
شماتیک و اتصالات
ابتدا اتصالات را مطابق جدول و شماتیک زیر برقرار کنید، همچنین یک مقاومت بین پایه های VCC و DATA در سنسور DHT قرار میگیرد. در ادامه پین DATA از سنسور DHT به پین D3 در NODEMCU متصل میگردد.
کد و راهاندازی مدار
برای شروع بخش هایی از کد را بررسی خواهیم کرد، ابتدا دو کتابخانه مورد نیاز را فراخوانی میکنیم.
1 2 |
<span style="font-size: 14px;">#include <DHT.h> #include <ESP8266WiFi.h></span> |
در این قسمت اطلاعات شبکه وایفای مورد نظر را وارد کنید، همچنین در قسمت apikey، کدی که با عنوان API بدست آوردیم را وارد کنید.
1 2 3 4 |
<span style="font-size: 14px;">String apiKey = "6NL59VNRDMESSLQ9"; const char *ssid = "C1F3R"; const char *pass = "314159265";</span> |
بخش نهایی کد مربوط به استفاده از API و برقراری ارتباط با سایت ThingSpeak میباشد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<span style="font-size: 14px;"> String postStr = apiKey; postStr +="&field1="; postStr += String(t); postStr +="&field2="; postStr += String(h); postStr += "\r\n\r\n"; client.print("POST /update HTTP/1.1\n"); client.print("Host: api.thingspeak.com\n"); client.print("Connection: close\n"); client.print("X-THINGSPEAKAPIKEY: "+apiKey+"\n"); client.print("Content-Type: application/x-www-form-urlencoded\n"); client.print("Content-Length: "); client.print(postStr.length()); client.print("\n\n"); client.print(postStr); Serial.print("Temperature: "); Serial.print(t); Serial.print(" degrees Celcius, Humidity: "); Serial.print(h); Serial.println("%. Send to Thingspeak.");</span> |
کد کامل پروژه.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
<span style="font-size: 14px;">#include <DHT.h> #include <ESP8266WiFi.h> String apiKey = "6NL59VNRDMESSLQ9"; const char *ssid = "C1F3R"; const char *pass = "314159265"; const char* server = "api.thingspeak.com"; #define DHTPIN 0 DHT dht(DHTPIN, DHT11); WiFiClient client; void setup() { Serial.begin(115200); delay(10); dht.begin(); Serial.println("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, pass); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); } void loop() { float h = dht.readHumidity(); float t = dht.readTemperature(); if (isnan(h) || isnan(t)) { Serial.println("Failed to read from DHT sensor!"); return; } if (client.connect(server,80)) //"184.106.153.149" or api.thingspeak.com { String postStr = apiKey; postStr +="&field1="; postStr += String(t); postStr +="&field2="; postStr += String(h); postStr += "\r\n\r\n"; client.print("POST /update HTTP/1.1\n"); client.print("Host: api.thingspeak.com\n"); client.print("Connection: close\n"); client.print("X-THINGSPEAKAPIKEY: "+apiKey+"\n"); client.print("Content-Type: application/x-www-form-urlencoded\n"); client.print("Content-Length: "); client.print(postStr.length()); client.print("\n\n"); client.print(postStr); Serial.print("Temperature: "); Serial.print(t); Serial.print(" degrees Celcius, Humidity: "); Serial.print(h); Serial.println("%. Send to Thingspeak."); } client.stop(); Serial.println("Waiting..."); delay(500); }</span> |
جمع بندی
در این آموزش با استفاده از سنسور DHT11 و همچنین برد ESP8266 توانستیم دمای محیط را در سریال مانیتور نرمافزار Arduino چاپ کنیم. همچنین بدلیل استفاده از برد ESP8266 توانستیم با سایت ThingSpeak ارتباط برقرار کنیم و اطلاعات در دشبورد IOT این سایت مانیتور کنیم.
- تنظیمات منوی tools در نرم افزار آردوینو نیز مانند تصویر زیر است.