آموزش گام به گام ساخت مدار کنترل وسایل با WIFI
من در این آموزش میخوام نحوه کنترل ، روشن و خاموش کردن یک LED ( یا هر دستگاه دیگه ای ) توسط ماژول وای فای ESP8266 و برد Arduino رو به شما آموزش بدم .
دقیقا چکار قرار انجام بدیم ؟!!
الان میگم ، ما با یه موبایل میخوایم توسط شبکه وای فای داخلی یک LED یا با کمی تغییر یک دستگاه رو کنترل کنیم کنیم .
برای اینکار از یک ماژول ESP8266 که با ارتیاط سریال به برد آردوینو وصل هست استفاده میکنیم . برد آردوینو از طریق ESP8266 به شبکه وای فای متصل میشه تا دیتا رو از کلاینت ( در این جا موبایل ) دریافت و یا به کلایت ارسال کنه .
نقشه مدار :
شکل زیر نقشه مدار کنترل LED توسط وای فای به وسیله برد آردینو و ماژول ESP8266 نشون میده .
قطعات مورد نیاز :
- برد Arduino UNO
ماژول ESP-01S دارای هسته وایفای ESP8266
- LED
- مقاومت 330 اهم 1/4 وات
- مقاومت 1 کیلو اهم 1/4 وات
- مقاومت 2.2 کیلو اهم 1/4 وات
- کلید فشاری
- سیم های اتصال
- مینی بردبرد
اینم شکل GPIO های ESP-01S
طراحی مدار
من از ارتباط سریال نرم افزاری برد آردینو استفاده کردم . برای این ارتباط سریالی از پایه 2 و3 برد آردینو به عنوان RX و TX استفاده کردم . پایه 2 به TX و پایه 3 توسط مقاومت 1 کیلو به RX ماژول ESP8266 متصل شوند .
یه LED هم به GPIO 11 آردوینو متصل کردیم .
تغذیه ماژول ESP8266 هم از خروجی ولتاژ 3.3 ولت برد آردینو گرفته شده .
کلید فشارد هم بین پایه RESET ماژول وای فای و GND مدار قرار میگیره .
کدهای برنامه آردینو :
#include <SoftwareSerial.h> SoftwareSerial esp8266(2,3); //Pin 2 & 3 of Arduino as RX and TX. Connect TX and RX of ESP8266 respectively. #define DEBUG true #define led_pin 11 //LED is connected to Pin 11 of Arduino void setup() { pinMode(led_pin, OUTPUT); digitalWrite(led_pin, LOW); Serial.begin(9600); esp8266.begin(115200); //Baud rate for communicating with ESP8266. Your's might be different. esp8266Serial("AT+RST\r\n", 5000, DEBUG); // Reset the ESP8266 esp8266Serial("AT+CWMODE=1\r\n", 5000, DEBUG); //Set station mode Operation esp8266Serial("AT+CWJAP=\"SSID\",\"Password\"\r\n", 5000, DEBUG);//Enter your WiFi network's SSID and Password. while(!esp8266.find("OK")) { } esp8266Serial("AT+CIFSR\r\n", 5000, DEBUG);//You will get the IP Address of the ESP8266 from this command. esp8266Serial("AT+CIPMUX=1\r\n", 5000, DEBUG); esp8266Serial("AT+CIPSERVER=1,80\r\n", 5000, DEBUG); } void loop() { if (esp8266.available()) { if (esp8266.find("+IPD,")) { String msg; esp8266.find("?"); msg = esp8266.readStringUntil(' '); String command1 = msg.substring(0, 3); String command2 = msg.substring(4); if (DEBUG) { Serial.println(command1);//Must print "led" Serial.println(command2);//Must print "ON" or "OFF" } delay(100); if (command2 == "ON") { digitalWrite(led_pin, HIGH); } else { digitalWrite(led_pin, LOW); } } } } String esp8266Serial(String command, const int timeout, boolean debug) { String response = ""; esp8266.print(command); long int time = millis(); while ( (time + timeout) > millis()) { while (esp8266.available()) { char c = esp8266.read(); response += c; } } if (debug) { Serial.print(response); } return response; }
کدهای HTML برای فرستادن فرمان به ماژول WIFI و مدار :
کدهای زیر رو در یک فایل با پسوند html ذخیره کنید .
<!DOCTYPE html > <html> <head> <title>WiFi controlled LED</title> <script src="jquery.js"></script> </head> <body> <h2> <i> WiFi Controlled LED using Arduino and ESP8266 </i> </h2> <h4> <i> Enter the IP address of ESP8266 </i> </h4> <div style="margin: 0; width:400px; height:30px;"> <FORM NAME="form" ACTION="" METHOD="GET"> ESP8266 IP Address: <INPUT TYPE="text" NAME="inputbox" VALUE="" /> </FORM> </div> <h3> Click to toggle LED! </h3> <input type="button" NAME="butname" value="Turn ON LED" /> <p>STATUS: LED is OFF!</p> </body> <script> $.ajaxSetup({timeout:1000}); btn = document.querySelector('input[name="butname"]'); txt = document.querySelector('p'); btn.addEventListener('click', led1); function led1() { var val1 = 'OFF'; if (btn.value === 'Turn OFF LED') { btn.value = 'Turn ON LED'; val1 = 'OFF'; txt.textContent = 'STATUS: LED is OFF!'; } else { btn.value = 'Turn OFF LED'; val1 = 'ON'; txt.textContent = 'STATUS: LED is ON!'; } TextVar = form.inputbox.value; ArduinoVar = "http://" + TextVar + ":80/"; $.get( ArduinoVar, {led: val1}) ; {Connection: close}; } </script> </html>
در کد های html بالا از کتابخانه
“jQuery.js” استفاده شده . این کتابخانه رو از لینک زیر دانلود کنید و به همان مسیری و محلی که فایل html قرار داره اتقال بدید .
خب حالا فایل html رو با یک Browser باز کنید . باید صفحه شما مثل عکس زیر باشه :
حالا کد آردینو را روی برد آردینو آپلود کنید . وقتی کد آپلود شد سریال مانیتور Arduino IDE رو باز کنید تا مراحل ارتباط با ماژول WIFI ESP8266 رو ببینید .
ممکنه بعضی قسمت ها به صورت درهم و نامفهم نشون داده بشه ، اما نگران نباشید همه چیر درسته :)
اگر در اطلاعات نشون داده شده در سریال مانیتور IP ماژول رو پیدا نکردید از نرم افزار Advanced IP Scanner استفاده کنید .
حالا وب پیجی که ساختیم رو باز کنید و IP که نشون میده رو توی کادر خالی وارد کنید .
بعد از اینکار میتونید روی دکمه turn ON و OFF the LED کلیک کنید یا ضربه بزنید .
نتیجه گیری :
یک پروژه ساده با نام WiFi Controlled LED با استفاده از ESP8266 و Arduino در اینجا طراحی شد ،
که در آن LED متصل به Arduino توسط WiFi (در همان شبکه) کنترل می شود.
اگر به جای LED و مقاومت 330 مدار زیر یعنی یک رله با درایور ترانزیستور جایگزین کنید ، میتونید به جای LED هر دستگاه یا وسیله ای رو کنترل کنید .
هر دستگاهی که توی یک شبکه WIFI باشه و این Web Page رو باز کنه و اجرا کنه میکنه کنترل رو انجام بده :)
برای اینکه بتونم با فشردن یک کلید متصل به آردویینو پیغامی به صفحه وب ارسال کنم راهنمایی کنید.