آردوینو, پروژه آردوینو

راه اندازی ماژول ESP8266 با آردوینو

interfacing esp8266 with arduino

در این مطلب از بلاگ بهنام رباتیک چگونگی راه اندازی ماژول ESP8266 با آردوینو را خواهیم آموخت. با این کار، برد آردوینو با کمک ماژول نامبرده به یک دستگاه اینترنت اشیا (IoT) تبدیل خواهد شد؛ پس با ما همراه باشید.

فهرست مطالب

اگر قصد دارید که یک پروژه اینترنت اشیا آماتور را آغاز کنید، ماژول ESP8266 می‌تواند گزینه‌ای مناسب برای ورود به این حوزه باشد. امکان کدنویسی روی این ماژول با دو روش وجود دارد؛ 1) از طریق LUA و 2) از طریق آردوینو. از آن جایی که آردوینو دارد روزبه‌روز محبوبیت بیشتری پیدا می‌کند، ما نیز می‌خواهیم در این مطلب چگونگی انجام این کار را به شما آموزش دهیم.

لوازم مورد نیاز برای پروژه راه اندازی ماژول ESP8266 با آردوینو

نگاهی به ماژول ESP8266

ماژول وای‌فای ESP8266 که در پروژه راه اندازی ماژول ESP8266 با آردوینو استفاده شده، یک گیرنده بیسیم ارزان قیمت است که می‌تواند برای پروژه‌های اینترنت اشیا به کار برود. این ماژول امکان برقراری ارتباط اینترنتی میان دستگاه‌های مختلف را به وجود می‌آورد. ESP8266 از پروتکل ارتباطی TCP/UDP بهره می‌برد تا با سرور ارتباط برقرار کند.

ماژول ESP8266
ماژول ESP8266

برای ارتباط برقرار کردن با ماژول وای‌فای ESP8266، میکروکنترلر روی آن می‌بایست از دستورات AT پیروی کند. این میکروکنترلر با استفاده از پروتکل UART و با بادریت پیش‌فرض 115200 با این ماژول در ارتباط خواهد بود.

سیم‌کشی مدار پروژه راه اندازی ماژول ESP8266 با آردوینو

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

راه‌اندازی ماژول ESP8266 با آردوینو
راه‌اندازی ماژول ESP8266 با آردوینو

TCP Client با استفاده از ماژول وای‌فای ESP8266

اینک بد نیست برد آردوینو خود را برنامه‌نویسی کنیم تا امکان کنترل ماژول وای‌فای ESP8266 به عنوان TCP Client وجود داشته باشد و بتوان داده‌ها را با استفاده از وای‌فای، از سرور دریافت و آنها را ارسال کرد.

در پروژه راه اندازی ماژول ESP8266 با آردوینو، ما از سرور Thingspeak برای TCP Client استفاده کرده‌ایم.

Thingspeak یک پلتفرم اینترنت اشیا منبع باز است که هر کسی می‌تواند داده‌های به دست آمده از دستگاه‌های سنسوری را به صورت زنده مشاهده کند. به علاوه، در این پلتفرم می‌توان داده‌های پست شده توسط دستگاه‌های از راه دور از طریق کدنویسی برنامه Matlab را نیز آنالیز کرد.

برای استفاده از Thingspeak فقط باید یک کانال راه‌اندازی کنید. در پروژه راه اندازی ماژول ESP8266 با آردوینو، ما از کانال زیر بهره گرفته و با به کارگیری آن توانسته‌ایم داده‌ها را در پلتفرم نامبرده دریافت یا ارسال کنیم.

شناسه کانال: 119922

کلید نوشتن: C7JFHZY54GLCJY38

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

برای روش TCP RECEIVE، از دستورات AT زیر که در اسکرین‌شات‌های گرفته شده از RealTerm Serial Terminal قابل مشاهده هستند، استفاده نمایید.

در این اسکرین‌شات‌ها، دستورات AT با رنگ سبز و پاسخ‌ها با رنگ زرد به چشم می‌خورند.

دریافت TCP
دریافت TCP

برای روش TCP SEND هم از دستورات AT زیر که در اسکرین‌شات‌های گرفته شده از RealTerm Serial Terminal قابل مشاهده هستند، استفاده نمایید.

ارسال TCP
ارسال TCP

برای دسترسی به کاربردهای مختلف نظیر دریافت یا ارسال TCP، مطابق دستورات زیر، تغییرات را به وجود بیاورید.

برای TCP Client RECEIVE

				
					#define RECEIVE_DEMO        /* Define RECEIVE demo */
//#define SEND_DEMO         /* Define SEND demo */
				
			

برای TCP Client SEND

				
					//#define RECEIVE_DEMO     /* Define RECEIVE demo */
#define SEND_DEMO          /* Define SEND demo */
				
			

کدهای زیر را با داده‌های مربوطه در فایل هدر ESP8266 ویرایش کنید.

				
					/* Define Required fields shown below */
#define DOMAIN           "api.thingspeak.com"
#define PORT             "80"
#define API_WRITE_KEY    " Thingspeak Write Key "
#define CHANNEL_ID       " Thingspeak Channel ID "
#define SSID             " WiFi SSID "
#define PASSWORD         " WiFi Password "
				
			

کدهای پروژه راه اندازی ماژول ESP8266 با آردوینو

				
					/*
 * ESP8266 wifi module Interfacing with Arduino Uno
 * http://www.behnamrobotic.com
 */ 
 
#include "ESP8266_AT.h"

/* Select Demo */
//#define RECEIVE_DEMO			/* Define RECEIVE demo */
#define SEND_DEMO				/* Define SEND demo */

/* Define Required fields shown below */
#define DOMAIN          "api.thingspeak.com"
#define PORT            "80"
#define API_WRITE_KEY   "Write your Write Key here"
#define CHANNEL_ID      "Write your Channel ID here"

#define SSID            "Write your WIFI SSID here"
#define PASSWORD        "Write your WIFI Password here"

char _buffer[150];
uint8_t Connect_Status;
#ifdef SEND_DEMO
uint8_t Sample = 0;
#endif

void setup() {
    Serial.begin(115200);
 
    while(!ESP8266_Begin());
    ESP8266_WIFIMode(BOTH_STATION_AND_ACCESPOINT);	/* 3 = Both (AP and STA) */
    ESP8266_ConnectionMode(SINGLE);     			/* 0 = Single; 1 = Multi */
    ESP8266_ApplicationMode(NORMAL);    			/* 0 = Normal Mode; 1 = Transperant Mode */
    if(ESP8266_connected() == ESP8266_NOT_CONNECTED_TO_AP)/*Check WIFI connection*/
    ESP8266_JoinAccessPoint(SSID, PASSWORD);		/*Connect to WIFI*/
    ESP8266_Start(0, DOMAIN, PORT);	
}

void loop() {
    Connect_Status = ESP8266_connected();
    if(Connect_Status == ESP8266_NOT_CONNECTED_TO_AP)	/*Again check connection to WIFI*/
    ESP8266_JoinAccessPoint(SSID, PASSWORD);			/*Connect to WIFI*/
    if(Connect_Status == ESP8266_TRANSMISSION_DISCONNECTED)
    ESP8266_Start(0, DOMAIN, PORT);						/*Connect to TCP port*/

    #ifdef SEND_DEMO
    memset(_buffer, 0, 150);
    sprintf(_buffer, "GET /update?api_key=%s&field1=%d", API_WRITE_KEY, Sample++); 	/*connect to thingspeak server to post data using your API_WRITE_KEY*/
    ESP8266_Send(_buffer);
    delay(15000); 										/* Thingspeak server delay */
    #endif
    
    #ifdef RECEIVE_DEMO
    memset(_buffer, 0, 150);
    sprintf(_buffer, "GET /channels/%s/feeds/last.txt", CHANNEL_ID); /*Connect to thingspeak server to get data using your channel ID*/
    ESP8266_Send(_buffer);
    Read_Data(_buffer);
    delay(600);
    #endif
  }
				
			

پاسخ‌های ماژول ESP8266 در آردوینو

به عنوان کاربر، باید پاسخ‌های ماژول ESP8266 را بررسی کنیم. می‌توان این کار را با آنالیز سریال ترمینال رایانه انجام داد. فقط کافی است پین TX ماژول ESP8266 را به پین RX آردوینو بزنید و پین RX کابل USB را به مبدل سریال وصل کنید (مطابق تصویر زیر). در ادامه سریال ترمینال را در رایانه اجرا نمایید تا پاسخ‌های ESP8266 برای دستورات AT ارسال شده از آردوینو را ببینید.

پاسخ ماژول ESP8266 در آردوینو و رایانه
پاسخ ماژول ESP8266 در آردوینو و رایانه

اینک برای دستورات TCP SEND که از ماژول آردوینو ارسال شده‌اند، می‌توانیم پاسخ‌ها را مطابق تصویر زیر در سریال ترمینال سرور Thingspeak مشاهده نماییم.

ارسال TCP
ارسال TCP

در پاسخ به TCP SEND، ورودی داده را به صورت عددی (مطابق تصویر بالا 1131، 1132 و . . .) خواهیم دید.

برای دستورات TCP RECEIVE که از آردوینو ارسال شده‌اند، می‌توانیم پاسخ‌ها را مطابق تصویر زیر در سریال ترمینال سرور Thingspeak مشاهده نماییم.

دریافت TCP

در پاسخ به TCP RECEIVE، آخرین داده ورودی برای فیلد اول 1 می‌باشد که در تصویر بالا قابل مشاهده است.

نکته: در اینجا آخرین داده ورودی در فیلد اول سرور Thingspeak را دریافت می‌کنیم حال آنکه آخرین داده آپدیت شده از سرور 11 می‌باشد. در عمل، از فایل GET/channels/119922/feeds/last.txt صرفاً برای مشاهده آخرین داده آپدیت شده بهره می‌بریم.

آپدیت داده‌ها در TCP SEND سرور Thingspeak

برای TCP SEND، می‌توانیم خروجی را در سرور ببینیم. در اینجا ما از سرور Thingspeak استفاده و مقادیر افزایش یافته را به فیلد شماره 1 ارسال می‌کنیم. همان‌طور که در تصویر زیر می‌بینید، مقادیر افزایش یافته به این صورت می‌باشد.

داده‌های دریافتی و ارسالی از سرور Thingspeak
داده‌های دریافتی و ارسالی از سرور Thingspeak

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

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