آموزش گام به گام ساخت مدار کنترل وسایل با 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 رو باز کنه و اجرا کنه میکنه کنترل رو انجام بده :)