آموزش آردوینو اینترنت اشیا IOT برد ESP8266 برد Nodemcu برد ویموس Wemos خانه هوشمند

سنجش دما با چندین سنسور DS18b20 و نمایش اطلاعات در وب سرور ESP8266

نوشته شده توسط CiferTech

یکی از دغدغه هایی که برای مایتورینگ دما در یک محیط بسته مانند خانه، انبار و یا حتی اتاق های سرور وجود دارد، تفاوت دما در نقاط مختلف آن محیط است، برای حل این مشکل استفاده از سنسور های دمایی مانند Ds18 پیشنهاد می‌شود. طبیعتا بر اساس متراژ محیط مورد استفاده بایستی از چند سنسور DS18b20 استفاده کنیم. یکی از قابلیت‌های بسیار مهم این سنسور اتصال چند سنسور به یک پایه از برد میکرو است. ولی احتمالا نمونه پروژه هایی از این سنسور را قبلا مشاهده کرده‌اید، که فقط یک سنسور دما DS18B20 راه اندازی شده است. اما در این آموزش قصد داریم علاوه بر راه‌اندازی چند سنسور Ds18B20 با استفاده از برد ESP8266، مقادیر موجود را در یک صفحه وب نمایش دهیم. پس درنتیچه می‌توانیم همواره از تغییرات دما آگاه باشیم. در ادامه این آموزش با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.

 


سنسور دما Ds18b20


سنسور دما Ds18b20 با رنج اندازه‌گیری دما بین ۱۲۵+ تا ۵۵- درجه سانتیگراد و ولتاژ کاری ۵ ولت از سنسور های پر استفاده در زمینه اندازی‌گیری دما بشمار می‌رود. از ویژگی‌های مهم این سنسور می‎‌توان به قابلیت ارسال دیتا تنها از یک پین اشاره کرد. در ادامه می‌توان با استفاده از کد ۶۴ بیتی مختص به هر سنسور مقادیر آن ها را تنها از یک ورودی در میکروکنتلر اندازه‌گیری کرد. به عبارتی قابلیت اتصال چند سنسور DS18b20 به صورت همزمان از یک پایه وجود دارد. همچنین این سنسور ضد آب بوده پس می‌توان در شرایط مختلف از آن استفاده کرد. برای اطلاعات بیشتر به این آموزش مراجعه کنید.


نقش وب سرور WebServer


وب سرورها برنامه هایی هستند که مسئولیت آن ها قبول کردن درخواست های Http است که از سمت کاربران ارسال می شود، وب سرور ها در پاسخ اطلاعاتی را ارسال می کنند که ما معمولا به نام صفحات Html می‌شناسیم. خب حالا فرض کنیم که در مرورگر https://digispark.ir را سرچ کردیم، اتفاقی که می‌افتد به این شکل است که مرورگر شما یک درخواست به دامنه‌ای با نام digispark.ir ارسال می‌کند. در حالت عادی زمانی که شما آدرس سایتی را در مرورگر جست و جو می‌کنید از حروف انگلیس استفاده می‌کنید یعنی کلماتی قابل فهم برای انسان اما در واقع برای ورود به یک سایت باید از طریق ip آن اقدام کنید، اینجاست که مفهومی به نام DNS وارد کار می‌شود، پس در واقع زمانی که شما URL سایتی را جستجو می کنید مرورگر از طریق سرویس DNS، آی پی مربوط را پیدا می‌کند و درخواستی ارسال خواهد کرد.

 


برد ESP8266


تراشه های ESP8266 از موارد محبوب در زمینه اینترنت اشیا هستند که نسبت به دیگر نمونه ها کیفیت بهتر و همچنین قیمت پایین تری نیز دارند، هسته مرکزی این ماژول ESP8266 EX می باشد که در واقع زیر این شیلد فلزی قرار گرفته است، در ضمن این شیلد فلزی به منظور کاهش نویز و همچنین محافظت از قطعات SMD حساس این ماژول قرار داده شده است. این ماژول ها در سری های مختلفی تولید می‌شوند از جمله esp01 و esp12، در واقع تفاوتی که مدل ها با یکدیگر دارند تعداد GPIO ها و همچنین حافظه آن ها است البته معمولا از نظر ظاهری نیز تفاوت هایی که با یکدیگر دارند که قابل تشخیص است. این ماژول ها از شبکه WIFI داخلی پشتیبانی می‌کنند، این میکرو کنترلر ها اولین بار در سال ۲۰۱۴ به بازار عرضه شدند. ESP8266 دارای ۱۳ GPIO و همچنین یک ورودی آنالوگ (A0) است.

 


شرح پروژه چند سنسور DS18B20


در این آموزش با استفاده از یک برد esp8266 اقدام به راه اندازی وب سرور می‌کنیم. همچنین به کمک چند سنسور Ds18b20 اقدام به اندازه گیری دما محیط می‌کنیم. ابتدا کد ۶۴ بیتی مختص به هر سنسور را با استفاده از یک کد چند خطی بدست آورده و در ادامه آن را در کد اصلی قرار خواهیم داد. به ما این امکان را می‌دهد که چندین سنسور را همزمان استفاده کرده و مقادیر هر کدام را بدست بیاوریم. سپس با استفاده از ip که دریافت خواهیم کرد به وب سرور متصل و قادر خواهیم بود مقادیر هر سنسور را بصورت جداگانه مشاهده کنیم. دقیقا مشابه تصویر زیر

 


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


برد ESP8266

سنسور دما Ds18b20

 


کتابخانه مورد نیاز


در این آموزش از دو کتابخانه Ds18b20 و oneWire استفاده خواهیم کرد، مراحل زیر را برای نصب کتابخانه ها دنبال کنید.

  1. این مسیر را دنبال کنید Sketch Include Library > Manage Libraries
  2. کلمه Ds18b20 و oneWire را جستجو کنید.
  3. کتابخانه را نصب کنید.

 


شماتیک و اتصالات


برای سنجش دما توسط چند سنسور DS18b20 اتصالات را مطابق جدول و شماتیک زیر برقرار کنید. همچنین در این مدار از یک مقاومت Pull-UP با مقدار ۴٫۷k در محل مشخص در شماتیک استفاده کرده‌ایم. استفاده از این مقاومت بسیار اهمیت دارد.

اتصال چند سنسور DS18b20 به برد ESP8266 - دیجی اسپارک

شماتیک اتصال چند سنسور DS18b20 به Nodemcu - دیجی اسپارک

 


دریافت آدرس سنسور Ds18B20


هر سنسور Ds18b20 یک آدرس ۶۴ بیتی منحصر به فرد، به خود اختصاص داده است تا آنها را از یکدیگر متمایز کند. به عبارتی با این روش امکان اتصال چند سنسور DS18b20 به یک پایه از میکروکنترلر وجود خواهد داشت. ابتدا آدرس را پیدا خواهیم کرد تا بر اساس آن سنسورها مشخص کنیم. سپس می توان از آدرس ها برای خواندن هر سنسور به صورت جداگانه استفاده کرد. کد زیر را در برد ESP8266 خود آپلود کنید و در ادامه با استفاده از سریال مانیتور در حالی که سنسور به برد متصل است، قادر خواهید بود آدرس مربوط به آن سنسور Ds18B20 را مشاهده کنید.
کد زیر را در برد ESP8266 آپلود کنید. سپس سریال مانیتور را باز کرده و با اتصال سنسور دما DS18B20 به آردوینو امکان دریافت آدرس آن فراهم خواهد بود.
#include <OneWire.h>
#include <DallasTemperature.h>

// Data wire is plugged into port D2 on the ESP8266
#define ONE_WIRE_BUS D2

// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);

// variable to hold device addresses
DeviceAddress Thermometer;

int deviceCount = 0;

void setup(void)
{
  // start serial port
  Serial.begin(115200);

  // Start up the library
  sensors.begin();

  // locate devices on the bus
  Serial.println("Locating devices...");
  Serial.print("Found ");
  deviceCount = sensors.getDeviceCount();
  Serial.print(deviceCount, DEC);
  Serial.println(" devices.");
  Serial.println("");
  
  Serial.println("Printing addresses...");
  for (int i = 0;  i < deviceCount;  i++)
  {
    Serial.print("Sensor ");
    Serial.print(i+1);
    Serial.print(" : ");
    sensors.getAddress(Thermometer, i);
    printAddress(Thermometer);
  }
}

void loop(void)
{ }

void printAddress(DeviceAddress deviceAddress)
{ 
  for (uint8_t i = 0; i < 8; i++)
  {
    Serial.print("0x");
    if (deviceAddress[i] < 0x10) Serial.print("0");
    Serial.print(deviceAddress[i], HEX);
    if (i < 7) Serial.print(", ");
  }
  Serial.println("");
}

 


کد پروژه چند سنسور DS18b20


ابتدا به بررسی بخش های مهم کد می‌پردازیم، در اولین قدم کتابخانه های مورد نیاز را معرفی می‌کنیم.

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

 

محدودیت در دسترسی کامل به این مجموعه آموزش

 

دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندس‌های دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید.

 

 


جمع بندی


در این آموزش با استفاده از سنسور دما Ds18B20 دمای محیط را اندازی‌گیری، در میکروکنترلر پدازش و در نهایت با استفاده از برد ESP8266 مقادیر بدست آمده در صفحه وب نمایش دهیم. همچنین میتوانیم تنها با استفاده از یک سیم مقادیر چند سنسور را همزمان بدست آورده و نمایش دهیم.

 

چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریع‌ترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند می‌توانید از همین طریق اطلاع رسانی کنید.

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

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

CiferTech

تبادل نظر و رفع عیب با ثبت دیدگاه

۲ دیدگاه

  • سلام من در یک فضای ۳۰۰ متر مربعی میخوام استفاده کنم
    در واقع از یک esp8266 و چند سنسور استفاده میشه یا برای هر سنسور یک esp8266 جداگانه دا یم؟
    اگه حالت اول، فقط بطور کلی یک esp8266 هست، اون وقت با توجه به فاصله زیاد (۱۶*۱۸) سنسورها چجوری به برد esp8266 متصل میشند؟ باسیم؟
    ضمنا به مودم معمولی برای اتصال به اینترنت هم نیاز هست دیگه درسته؟

    • سلام، امکان اتصال چند سنسور به یک برد هم هست اما با توجه به فضایی که در اختیار دارید پیشنهاد می‌کنم پروژه های ESP now و ESP mesh من را در سایت مطالعه کنید. برای مورد شما مناسب تر هستند.
      -بله نیاز به کانکشن وای فای داریم.