آموزش نمایش دما و رطوبت از طریق وب برای برد های مبنی بر ESP8266

در آموزش قبلی برای برد هایی نظیر NodeMCU، D1 Mini و Mini S1 که مبنی بر هسته ی ESP8266 هستند، صفحه ی وب ساده ای را ساختیم که با استفاده از آن توانستیم LED ماژول ESP8266 را کنترل نماییم. در این آموزش نیز با استفاده از یک Sketch ساده و نرم افزار Arduino یک صفحه ی وب درست می کنیم تا با استفاده از ماژول DHT11 میزان دما و رطوبت را روی وب به نمایش بگذاریم.

 

همانطور که گفته شد، یکی از مزیت های استفاده از ESP8266 امکان نمایش صفحات وب به صورت مستقیم روی دستگاه های دارای WiFi است و محدودیتی در استفاده از محتوی نیست پس صرفا به خلاقیت فرد بستگی دارد. همچنین در کدنویسی و برنامه ریزی میکروکنترلر ها نیز محدودیتی وجود ندارد. در اینجا با استفاده از یک صفحه ی ساده و چند خط کد، یک صفحه ی وب درست می کنیم که مقادیر DHT11 را خوانده و روی صفحه به نمایش می گذارد. کد ارائه شده تنها جهت امتحان و آشنایی با مباحث مطرح شده است و در استفاده ای اصلی می توان آن را بسیار کامل تر، پیچیده تر، کارآمد تر و با ظاهر مناسب تری ارائه کرد.

توضیحات لازم به زبان فارسی داخل اسکچ ذکر شده است. دانلود اسکچدانلود کتابخوانه DHTESP

/*

 AK ESP8266 Temperature and Humidity

*/

 

#include <ESP8266WiFi.h>

#include <DHTesp.h>

 

DHTesp dht;

 

// تنظیمات شبکه ی خود را در این قسمت وارد کنید.

const char* ssid =      "ssid";      //نام شبکه

const char* password =  "password";  //رمز شبکه

 

WiFiServer server(80);

 

void setup()

{

 // شروع ارتباط سریال

 Serial.begin(115200);

 // تنظیم پین و نوع سنسور دما و رطوبت

 dht.setup(2, DHTesp::DHT11);

 

 // در حال برقراری ارتباط با مودم یا روتر

 WiFi.begin(ssid, password);

 // نمایش وضعیت ارتباط

 Serial.println();

 Serial.print("Connecting");

 while (WiFi.status() != WL_CONNECTED)

 {

   delay(500);

   Serial.print(".");

 }

 // نمایش ارتباط موفقیت آمیز

 Serial.println("success!");

 // نمایش ایپی برد

 Serial.print("IP Address is: ");

 Serial.println(WiFi.localIP());

 // شروع سرور

 server.begin();

 Serial.println("Server started");

}

 

void loop() {

 // بررسی وضعیت بازدید کننده

 WiFiClient client = server.available();

 if (!client) {

   return;

 }

  

 // منتظر ارسال فرمان بازدید کننده

 Serial.println("new client");

 while(!client.available()){

   delay(1);

 }

  

 // خواندن اولین خط درخواست بازدید کننده

 String request = client.readStringUntil('\r');

 Serial.println(request);

 client.flush();

  

 // ارسال پاسخ یا صفحه ی وب مورد نظر

 client.println("HTTP/1.1 200 OK");

 client.println("Content-Type: text/html");

 client.println("");

 client.println("<!DOCTYPE HTML>");

 client.println("<html>");

 //تنظیم نوشته در وسط صفحه

 client.println("<center><font dir='rtl'>");

 // نمایش میزان دما و رطوبت

 client.println("دما: ");

 client.println(dht.getHumidity(), 2);

 client.println("C° – رطوبت: ");

 client.println(dht.getTemperature(), 2);

 client.println("%<br>");

 // ابوالفضل خزائی

 client.println("ابوالفضل خزائی");

 client.println("</font></center>");

 client.println("</html>");

 delay(1);

 // قطع ارتباط بازدید کننده

 Serial.println("Client disonnected");

 Serial.println("");

}