آموزش آردوینو اینترنت اشیا IOT برد ESP8266

طراحی دیتالاگر با قابلیت ارسال آنلاین به کمک LCD TFT و MEGA2560WIFI

نوشته شده توسط معین صابری

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

 


شیلد نمایشگر TFT با اندازه ۲٫۴ اینچ


شیلد نمایشگر TFT، یک نمایشگر از نوع تاچ با قابلیت ذخیره سازی داده ها بر روی کارت SD است. به کمک این شیلد، به سادگی می توانید داده ها را علاوه بر نمایش، بر روی کارت SD ذخیره کنید. از طرف دیگر، به کمک این شیلد، قادر با خواندن داده های ذخیره شده بر روی کارت SD خواهید بود. با توجه به سازگاری پایه های این شیلد با بردهای آردوینو UNO و MEGA، این شیلد به سادگی و بدن نیاز به هیچ گونه سیم کشی، بر روی برد آردوینو قرار می گیرد.

راه اندازی شیلد نمایشگر TFT با اندازه 2.4 اینچ - دیجی اسپارک

 

با توجه به محل قرارگیری سوکت کارت SD، شما می توانید کارت حافظه را به سادگی و بدون نگرانی از فضا و محل قرارگیری، درون سوکت مخصوص قرار دهید. از این قابلیت به عنوان دیتالاگر استفاده خواهیم کرد.

دیتالاگر با اسلات SD کارت شیلد نمایشگر TFT با اندازه 2.4 اینچ - دیجی اسپارک

 


برد آردوینو MEGA2560WIFI


برد آردوینو MEGA2560WIFI، یک برد آردوینو بسیار قدرتمند و پیشرفته است. این برد با بهره گیری توان پردازشی بسیار بالای پردازنده ESP8266 و تعداد GPIO های پردازنده MEGA2560، انتخابی مناسب برای پروژه های کنترلی با رویکرد پردازش سنگین است. این برد که از دوبخش آردوینو مگا۲۵۶۰ و پردازنده وای فای ESP8266 تشکیل شده، قادر است تا با اتصال به اینترنت، به ارسال و دریافت داده بپردازد.

پروژه دیتالاگر با برد آردوینو MEGA2560WIFI - دیجی اسپارک

برد آردوینو MEGA2560WIFI دارای سوییچ هایی جهت تنظیم عملکرد است. به کمک این سوییچ ها می توانید وضعیت آپلود کد، وضعیت سریال مانیتور، وضعیت ماژول وای فای، ارتباط بین بین مگا۲۵۶۰-WIFI و…. را تنظیم کنید. جهت راه اندازی و کار با این برد، مطالعه آموزش راه اندازی و کار با این برد را که در این لینک آمده، مطالعه نمایید.

 


سنسور دما و رطوبت DHT11


سنسور دما و رطوبت DHT11، یک سنسور بسیار کاربردی جهت سنجش میزان دما و رطوبت است. به کمک این سنسور و به سادگی تمام، می توانید میزان دما و رطوبت محیط را با آردوینو بسنجید و نمایش دهید. این سنسور تنها از یک پایه جهت ارسال داده ها استفاده می کند. جهت راه اندازی و کار با این سنسور، کتابخانه تحت آردوینو توسعه یافته که روند توسعه پروژه را بسیار تسریع خواهد بخشید.

سنسور دما رطوبت DHT11 - دیجی اسپارک

در این پروژه، به کمک سنسور  دما و رطوبت DHT11، داده ها را دریافت کرده و بر روی نمایشگر TFT نمایش می دهیم. پس از نمایش، دما و روطبت را در یک فایل اکسل، بر روی کارت SD ذخیره خواهیم کرد. در نهایت با ارسال داده ها به بخش وای وای، آن ها را به سرور ارسال خواهیم نمود. جهت اطلاعات بیشتر در رابطه با ارسال آنلاین داده ها، می توانید این لینک را مطالعه نمایید.

 


کتابخانه ها و آموزش های پیش نیاز


در این پروژه، قصد داریم تا دیتای سنسور دما و رطوبت DHT11 را بر روی نمایشگر TFT، نمایش داده و سپس در کارت SD، به صورت فایل اکسل، ذخیره کنیم. در نهایت داده ها ار از طریق وای فای برد MEGA2560 که به اینترنت متصل شده، به سرور ارسال نماییم. در ابتدای امر، به بررسی نحوه نصب کتابخانه نمایشگر TFT می پردازیم. برای نصب کتابخانه شیلد نمایشگر در آردویینو، ابتدا در نرم افزار آردویینو، بر روی منوی Tools و سپس Manage Libraries مطابق تصویر زیر، کلیک کنید.

 

سپس در منوی ظاهر شده، در قسمت کادر جستجو، عبارت MCUFRIEND_kbv  را وارد کرده و کتابخانه شیلد را مطابق تصویر زیر، نصب کنید.

 

توجه: کتابخانه کارت SD جهت استفاده از شیلد TFT بر روی بردهای آردوینو مگا، متفاوت است، بنابراین مراحل زیر را جهت نصب و اجرای درست پروژه، در پیش بگیرید.

  1. ابتدا کتابخانه بازنویسی شده کارت SD را از این لینک دانلود کنید.
  2.  در محل نصب نرم افزار آردوینو، وارد فولدر libraries شده و کتابخانه SD را به جای دیگری انتقا دهید.
  3.  فایل دانلود شده را از حالت فشرده خارج کنید. برای این کار از گزینه extact files here استفاده کنید.
  4.  فولدری که در مرحله پیش از حالت فشرده خارج کردید را در محل نصب آردوینو و در فولدر libraries، جایگزین کنید.

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

 


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


در این قسمت به بررسی شماتیک پروژه دیتالاگر می پردازیم. جهت اتصال سنسور DHT11 به برد آردوینو MEGAWIFI، مطابق تصویر زیر عمل کنید.

Data logger design with the ability to send online with the help of TFT and MEGA2560WIFI

مطابق تصویر فوق، پایه تغذیه مثبت سنسور، به پایه ۵v آردوینو متصل شده است. همچنین با اتصال پایه دیتای سنسور به پایه A8 برد و پایه GND سنسور به GND برد، اتصال سنسور تکمیل می شود. در نهایت، از آنجاییکه اتصال نمایشگر بر روی برد آردوینو به صورت شیلد است، نیاز به هیچ  سیم کشی نبوده و شیلد به سادگی بر روی برد آردوینو قرار می گیرد. برای اتصال شیلد، حتما دقت کنید که پایه ۳V3 آن، بر روی پایه ۳V3 برد قرار گیرد. چنانچه با این الگو پیش روید، اتصال شیلد نمایشگر و برد آردوینو، به سادگی صورت خواهد گرفت. در نهایت، با توجه به جریان مصرفی نسبتا بالای مدار، با توجه به استفاده از نمایشگر و قسمت وای فای، استفاده از آداپتور جهت تغذیه سیستم پیشنهاد می شود.

 


کدهای پروژه بخش اول: MEGA2560


در این قسمت کدهای پروژه دیتالاگر، بخش MEGA2560 را مشاهده می کنید. این کدها را در نرم افزار آردوینو خود قرار داده و برد را MEGA2560 انتخاب کنید.

 

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

 

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

 

 

جهت آپلود کدهای دیتالاگر بر روی برد، لطفا کلیدهای سلکتور را مطابق جدول زیر انجامدهید. در ادامه می توانید ازهمین جدول جهت تنظیم آپلود کد بر روی ESP8266 و ارتباط بین قسمت MEGA و وای فای، استفاده نمایید.

 


کد پروژه دیتالاگر بخش دوم: WIFI


در این قسمت به بررسی کدهای بخش وای فای می پردازیم. این کدها را در نرم افزار آردوینو خود کپی کنید. سپس در قسمت برد، ESP8266 GENERIC را انتخاب نمایید. در نهایت مطابق جدول قسمت قبلی، کلیدهای سلکتور را بر روی حالت آپلود کد بر روی ESP8266 قرار داده و یبمار دکمه MODE برد را فشار دهید. در این حالت برد آماده آپلود کد بر روی ESP8266 است.

#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
const char* ssid = "SSID"; //در این قسمت نام ssid و یاهمان نام وای فای خود را قرار دهید
const char* password = "PASSWD"; //در این قسمت رمز وای فایی که قرار است ماژول متصل شود را قرار دهید
String  data = "";
void setup () {
  Serial.begin(9600);  //تنظیم باودریت سریال جهت دریافت داده های ارسالی از سوی بخش مگا۲۵۶۰
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {  //اتصال به وای فای
    delay(1000);
    Serial.print("Connecting..");
    Serial.flush();
  }  
}
void loop() {
  if (Serial.available() > 0) {   //در صورتیکه از سمت برد مگا۲۵۶۰ داده ای ارسال گردد، آن رادریفات کرده و به سرور ارسال می نماییم. از سوی قسمت MEGA2560، داده دما و رطوبت ارسال می گردد.
    data = "tmp=";   //اضافه کردن هدر tmp در متد post جهت ارسال داده ها، در سمت سرور متغیری که در صفحه مسئول دریافت داده هاست،tmp نام دارد. برای اطلاعات بیشتر ساختار متد post را مطالعه نمایید.
    data = data + Serial.readString();
    HTTPClient http;    //ایجاد یک شی از کتابخانه httpclient
    http.begin("http://example.com/data_st.php");      //ایجاد url برای ارسال داده ها به جای example.com نام سرور خود را قرار دهید
    http.addHeader("Content-Type", "application/x-www-form-urlencoded");  //تعیین نوع هدر متد post
    int httpCode = http.POST(data);   //ارسال داده ها به سرور
    http.end(); //بستن کانکشن تا بتوانیم دفعه بعدی، مجددا داده ارسال نماییم.
    data = "";
  }
}

 


اجرای پروژه دیتالاگر آنلاین


در این قسمت، نوبت به اجرای پرژوه می رسد. پیش از اجرای پروژه، می بایست حتما کلیدهای سلکتور را مطابق تصویر زیر انجام داده و کلید ارتباطی بین پورت سریال MEGA و WIFI را بر روی RXD03/TDX03 قرار دهید.

 

پس از تنظیم کلیدهای سلکتور، ابتدا یکبار دکمه ریست برد را فشار دهید. در ادامه، ابتدا داده ها بر روی نمایشگر، به شکل زیر ظاهر می شوند.

Data logger design with the ability to send online with the help of TFT and MEGA2560WIFI

 

پس از راه اندازی و نمایش داده ها، با مراجعه به وب سایت، می توانید داده های ارسالی از سوی برد را مطابق تصویر زیر، مشاهده کنید.

 


مطابق تصویر فوق، مقابل عبارت دما، پیش از “,” رطوبت و پس از آن دما قرار گرفته است. این عبارت دقیقا طبق فرمت ذخیره سازی فایل های اکسل، از سوی برد ارسال شده است. در نهایت پس از خاموش کردن برد و خارج سازی کارت SD و با قرار دادن آن در رایانه، می توانید فایل را به صورت زیر مشاهده نمایید. در فایل اکسل زیر، ستون نخست رطوبت و ستون دوم دما ذخیره شده است.

 

به کمک نرم افزار اکسل، می توان نمودارهای متفاوتی جهت آنالیز داده ها ترسیم نمود. به عنوان مثال، در تصویر زیر، نمودار تغییرات دمایی را بر مبنای فایل اکسل دما و رطوبت، ترسیم نموده ایم.

 


تحلیل کدهای پروژه دیتالاگر آنلاین با ذخیره سازی داده


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

read_data

save_data

lcd_data

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

x,y

ذکر این نکته ضروریست که هر رکورد، در یک خط قرار گرفته و رکوردهای بعدی، می بایست در خط های بعدی ذخیره شوند. به همین دلیل، از تابع println در تابع ذخیره سازی، save_data استفاده شده که در ادامه به آن می پردازیم.

پس از دریافت داده ها از سنسور، به کمک تابع save_data، داده ها را در کارت SD ذخیره می کنیم. جهت ذخیره سازی در فرمت فایل اکسل، پسوند فایل به صورت csv. می بایست تعیین شود. در ادامه، به کمک تابع lcd_data، داده ها بر روی نمایشگر نمایش داده می شوند. از آنجاییکه فرایند نمایش داده ها کمی زمانبر است، جهت جلوگیری از هرگونه تداخل، تابع نمایش داده ها پس از اولین فراخوانی، هر ده ثانیه یکبار قراخوانی شده تا به نمایش داده ها بپردازد. در نهایت به کمک تابع ارسال سریال، داده های دما و رطوبت از طریق پورت سریال شماره ۳ بخش آردوینو MEGA، به بخش ESP8266 ارسال می شود. در بخش وای فای، ابتدا  می بایست ماژول ESP8266 به یک مودم اینترنتی متصل شود. به همین منظور، تنظیمات وای فای و اتصال به مودم در ابتدای برنامه انجام می گیرد. پس از این مورد، داده های ارسالی از سوی بخش MEGA، از طریق پورت سریال به کمک تابع readString دریافت می شوند. پس از دریافت داده ها از قسمت MEGA، به کمک متد POST آن ها را به سرور ارسال خواهیم نمود. نحوه ارسال و فرمت آن، به طور کامل درون کدهای بخش وای فای، توضیح و تشریح شده است.

 


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


برد آردوینو MEGA2560WIFI

سنسور دما و رطوبت DHT11

شیلد نمایشگر TFT2.4 اینچ تاچ

آداپتور سوئیچینگ ۹ ولت یک آمپر

 


جمع بندی


در این آموزش به طراحی و پیاده سازی یک سیستم دیتالاگر آنلاین با قابلیت ذخیره سازی داده ها در کارت SD پرداختیم. در این سیستم، ابتدا میزان دما و رطوبت محیط به کمک سنسور DHT11 اندازه گیری می شود. در ادامه مقادیر اندازه گیری شده، بر روی نمایشگر TFT نمایش داده می شود. پس از این مرحله، به لطف وجود سوکت کارت SD بر روی نمایشگر، داده ها به صورت فایل اکسل، درون کارت SD ذخیره می گردند. در نهایت، با توجه به وجود تراشه ESP8266 بر روی برد MEGA2560WIFI، داده ها به سرور ارسال شده و بدین ترتیب امکان رصد آنلاین داده ها، فراهم می شود.

 

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

 

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

معین صابری

کارشناسی ارشد رشته معماری سیستم های کامپیوتری

مالي که ز تو کس نستاند، علم است
حرزي که تو را به حق رساند، علم است
جز علم طلب مکن تو اندر عالم
چيزي که تو را ز غم رهاند، علم است
(شیخ بهایی)

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

۱۶ دیدگاه

  • سلام وقتتون بخیر ببخشید من همین پروژه رو میخوام با ۳٫۲ TFT SPI 240*320 V1.0 انجام بدم ولی متاسفانه درایور این ال سی دی رو پیدا نمیکنم آیدی ال سی دی هم ۰X0000 هستش .امکانش هست راهنمایی کنید ممنونم

    • سلام
      کتابخانه mcufriend بخش اعظمی از نمایشگرها را در بر می گیرد. به کمک این کتابخانه و معرفی درایور نمایشگر به کتابخانه، احتمالا بتوانید آن را راه اندازی کنید. در زیر می توانید آموزش تحلیل و بررسی کتابخانه را بررسی کنید:
      لینک اموزش کتابخانه، کلیک کنید

  • سلام ، بنده از این نمایشگر روی uno استفاده میکنم و مشکلی ندارم اما وقتی که میخوام با esp32 کار کنم جواب نمیده از چند تا کتابخونه مخبلف هم استفاده کردم ولی نتیجه نگرفتم میشه لطفا کتابخانه و پین اوت رو بهم بگین؟

  • سلام و عرض ادب. ممنون از سایت خوبتون. یه سوال داشتم من میخوام دیتاهایی که پاورمتر دیجیتالی نشون میده و دارای خروجی سریال RS485 هست رو انتقال بدم به اردوینو و با ماژول جی اس ام سیمکارت از وب سرور مانیتورینگ کنم. باید از دو تا اردوینو استفاده کنم؟ چون Tx و Rx اردوینو به ماژول سیمکارت وصل میشه ورودی سریال رو به کدوم پورتها باید وصل کنم؟

    • سلام و متشکرم از شما
      خیر
      نیازی به دو اردوینو نیست، شما می توانید به کمک سریال نرم افزاری داده های دستگاه پاورمتر را بخوانید. به کمک سریال نرم افزاری شما م یتوانید هر پایه از آردوینو را به صورت UART تعریف نمایید. فقط باید توجه داشته باشید که برای این مورد باید از مبدل UART به RS485 استفاده نمایید.

  • سلام وقت بخیر.
    لینک خرید “شیلد نمایشگر TFT2.4 اینچ تاچ ” در سایت دانشجو کیت ، را میزنم، پیغام میده که این قطعه موجود نیست.
    من میخوام این پروژه را اجرا کنم اما با عدم موجودی صفحه نمایش در سایت دانشجو کیت با مشکل برخوردم ، میترسم که از سایتهای دیگه خرید کنم اما با این پروژه سازگار نباشه.
    شما لینک خرید این نمایشگر از سایت دیگر ، یا مدل نمایشگر دیگری رو میتوانید بهم معرفی کنید ؟

  • سلام . این پروژه با چه نسخه ای از آردینو اجرا شده است؟ ضمن اینکه نسخه کتابخانه را اعلام کنید. من پروژه رو روی برد اجرا کردم ، دما روی ال سی دی نمایش داده می شود، اما اتصال به وای فای ممکن نیست. نام SSID روی وای فای موبایل یا پی سی نمایش داده نمی شود. ممنون میشم توضیح بدید. بیش از یک میلیون و نیم تومان هزینه کردم . اما پروژه ناقصه انجام شده

    • سلام
      نسخه مهم نیست روی تمام نسخه ها جواب می دهد. شما esp را پروگرام کردید چه پیغامی دریافت کردید؟

      • در ide آردوینو نسخه ۱٫۸٫۱۰ , کتابخانه esp نسخه ۲٫۳٫۰؛ برنامه را کامپایل بدون خطا و در نهایت با تنظیم سلکتور مربوط به آپلود esp ، برنامه آپلود شده و پیام uploading done ظاهر شد . با تنظیم سلکتور برد برای ارتباط با میکرو mega و تنظیم دکمه بروی tdx3 تمام مراحل گفته شده را اعمال کردم.
        متاسفانه ssid تنظیم شده در سورس برنامه ، روی وای فای موبایل یا pc نمایش داده نمی شود.
        لازم بذکر است قبل از آپلود این برنامه ، سورس کد وای فای مربوط به پست “معرفی برد آردوینو Mega2560 با تراشه وای فای ESP8266 Nodemcu” را فقط برای یک بار بارگزاری شده و یکبار عمل کرد، اما در حال حاضر هر برنامه ای روی espآپلود می کنم در نهایت هیچ ssid نمایش داده نمی شود ، ولی هر از چندگاهی یک ssid با عنوان MEGA2560WIFI مربوط به برنامه قبلی ظاهر شده ، که امکان اتصال وجود ندارد

          • سلام
            تمام مشکلات فوق بر طرف شد ولی به هنگام کامپایل سورس esp8622 خطای زیر را می دهد:

            D:\project_arduino\p1\p1_wifi\p1_wifi.ino: In function ‘void loop()’:
            D:\project_arduino\p1\p1_wifi\p1_wifi.ino:21:15: error: call to ‘HTTPClient::begin’ declared with attribute error: obsolete API, use ::begin(WiFiClient, url)
            ۲۱ | http.begin(“http://example.com/data_st.php”);
            | ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

            exit status 1

            Compilation error: call to ‘HTTPClient::begin’ declared with attribute error: obsolete API, use ::begin(WiFiClient, url)