اینترنت اشیا - IOTمطالب علمی

ساخت وب سرور نمایش دما با ESP8266

ماژول ESP8266 یک ماژول عالی برای ایجاد وب سرور و اتصال به اینرنت می باشد در این آموزش ما به وسیله سنسور دمای DS18b20 و ماژول Node-MCU یک وب سرور با قابلیت نمایش آنلاین دما میسازیم.

لوازم مورد نیاز:

WP 20160308 08 57 46 Pro LI 2

روش اضافه کردن برد های ESP8266 به آردوینو

برای آن که بتوانید بر روی این ماژول توسط IDE آردوینو برنامه نویسی کنید باید درایورها و بورد آن را بر روی نرم افزار آردوینو نصب کنید.برای این منظور وارد  نرم افزار آردوینو شوید. سپس از قسمت File وارد Preferences  شوید.

node-mcu-setup-arduino-ide
سپس لینک زیر را کپی کنید و در پنجره Preferences در قسمت Additional Boards Manager URLs ، لینک را paste کنید و OK را بزنید.

http://arduino.esp8266.com/stable/package_esp8266com_index.json

node-mcu-setup-arduino-ide-2
سپس از قسمت Tools وارد Boards Manager… شوید.

arduinoesp2
سپس در لیست نمایش داده شده به دنبال esp8266 by ESP8266 Community بگردید و آن را نصب کنید.

arduinoesp3
منتظر بمانید تا عملیات نصب تکمیل شود.

arduinoesp

برای استفاده از ماژول NodeMCU باید در لیست برد ها برد NodeMCU را انتخاب کنید.

نحوه اتصال سنسور DS18B20 به ماژول NodeMCU

برای تغذیه نیاز به کاری نیست و تغذیه NodeMCU از طریق پورت USB تامین می شود. نکته ی دیگر این که باید پین data سنسور دما به وسیله مقاومت DS18b20 پول آپ شود.

VCC -> 3.3 volts
GND -> GND
Data -> D1

Sketch bb

و در نهایت برنامه وب سرور نمایش دما با ESP8266

#include <OneWire.h>
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <DallasTemperature.h>

#define ONE_WIRE_BUS D1

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature DS18B20(&oneWire);

const char* ssid = "YOUR SSID HERE";
const char* password = "YOUR PASSWORD HERE";

ESP8266WebServer server(80);
char temperatureString[6];

const int led = 13;

float getTemperature() {
  float temp;
  
  do {
    DS18B20.requestTemperatures(); 
    temp = DS18B20.getTempCByIndex(0);
    delay(100);
  } while (temp == 85.0 || temp == (-127.0));
  
  return temp;
}

void setup(void){
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  Serial.println("");

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  
  Serial.println("");
  Serial.print("Connected to ");
  Serial.println(ssid);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());

  server.on("/", []() {
    float temperature = getTemperature();
    dtostrf(temperature, 2, 2, temperatureString);
  
    String title = "Temperature";
    String cssClass = "mediumhot";
  
    if (temperature < 0)
      cssClass = "cold";
    else if (temperature > 20)
      cssClass = "hot";
  
    String message = "<!DOCTYPE html><html><head><title>" + title + "</title><meta charset=\"utf-8\" /><meta name=\"viewport\" content=\"width=device-width\" /><link href='https://fonts.googleapis.com/css?family=Advent+Pro' rel=\"stylesheet\" type=\"text/css\"><style>\n";
    message += "html {height: 100%;}";
    message += "div {color: #fff;font-family: 'Advent Pro';font-weight: 400;left: 50%;position: absolute;text-align: center;top: 50%;transform: translateX(-50%) translateY(-50%);}";
    message += "h2 {font-size: 90px;font-weight: 400; margin: 0}";
    message += "body {height: 100%;}";
    message += ".cold {background: linear-gradient(to bottom, #7abcff, #0665e0 );}";
    message += ".mediumhot {background: linear-gradient(to bottom, #81ef85,#057003);}";
    message += ".hot {background: linear-gradient(to bottom, #fcdb88,#d32106);}";
    message += "</style></head><body class=\"" + cssClass + "\"><div><h1>" + title +  "</h1><h2>" + temperatureString + "&nbsp;<small>&deg;C</small></h2></div></body></html>";
    
    server.send(200, "text/html", message);
  });

  server.begin();
  
  Serial.println("Temperature web server started!");
}

void loop(void){
  server.handleClient();
}

قبل از پروگرم کردن توجه داشته باشید که باید در قسمت ssid نام شبکه wifi و در قسمت pass رمز شبکه WiFi رو وارد کنید. بعد از پروگرام شدن NodeMCU قسمت سریال مانیتور برنامه آردوینو را باز کنید تا IP که به برد NodeMCU اختصاص یافته را بدانیم. با وارد کردن IP در مرورگر دما به این شکل نمایش داده می شود.

wp ss 20160308 0001

در صورتی که پیشنهادی در مورد نوشته دارید و یا در راه اندازی پروژه به مشکلی برخوردید در قسمت نظرات مطرح کنید مشتاقانه منتظر نظرات شما هستیم.

نوشته های مشابه

13 دیدگاه

  1. با سلام:
    بسیار خوب.کاش یه پروژه هم در رابطه با اتصال از طریق اینترنت راه دور با سرور مربوطه بدون دستکاری مودم هم ارائه می کردید.

  2. ببخشید امکانش هست بگید اگه میخواستیم به جای nodemcu از آردویینو و ماژول وای فای استفاده کنیم تنظیماتش چطور بود؟

  3. سلام اگه به خوام تو محیط سرور دو تا گزینه اضافه کنم که یکی دما رو زیاد کنه و یکی دما رو کم کنه.باید چیکار کنم

  4. سلام.چجوری میشه دو تا گزینه بهش اضافه کرد که یکی دما رو زیاد کنه و یکی دما رو کم کنه.البته توی وب سرور این دو گزینه باشن

  5. سلام.من وقتی برنامه رو تست میکنم این ارور رو نشون میده.چیکار کنم؟؟

    #include

    ^

    compilation terminated.

    exit status 1
    Error compiling.

  6. سلام بسیار عالی
    ممنون
    امکانش هست مقدار دما و رطوبت داشته باشه یابهتر دمای خارج و دما و رطوبت داخل

  7. سلام وقت بخیر. ممنون از آموزش خوبتون
    اگر بخواهیم مثلا هر 3 ثانیه صفحه وب نمایش دما refresh بشه تا دمای جدید رو نشون بده چه تغییری باید در کد انجام بدیم؟
    متشکرم

  8. سلام پاسخ رو پیدا کردم : یک فانکشن جاوا اسکریپت برای رفرش صفحه در کد html تعریف می کنیم
    function autoRefresh(t) { setTimeout(‘location.reload(true)’, t); }
    و بعد در onLoad تگ با زمان مورد نظرمون به میلی ثانیه فراخوانی می کنیم:
    <body onload=\"autoRefresh(1000);\"
    …..

  9. سلام با توجه به اینکه IP اختصاص یافته به NodeMCU با روشن و خاموش شدن مودم و NodeMCU ممکنه تغییر کنه (که برای خودم این مورد پیش آمد) جطور میتونیم یک HP ثابت در شبکه وای فای به NodeMCU اختصاص بدیم که همیشه با همون IP بشه بهش وصل شد؟

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا