اتصال WIFI للأردوينو باستخدام ESP-01

ماهو ESP-01 ؟

ESP-01 هي وحدة تحكم مبنية على المتحكم ESP8266 و تتميز بخاصية الاتصال اللاسلكي مع دعم كامل لبروتوكول TCP/IP مما يجعلها مناسبة لتطبيقات إنترنت الأشياء. صغر حجم الوحدة بالإضافة لسعرها المنخفض يجعلها مثالية لتوصيل الأردوينو بالشبكة. لربط الأردوينو بالشبكة سنقوم بتوصيل وحدة ESP-01 بالشبكة ومن ثم نقوم بتوصيل الوحدة بالأردوينو  عبر منافذ التواصل التسلسلي.

upgraded-version-1m-flash-esp8266-esp01-wifi-transceiver-wireless-module

برمجة ESP-01 باستخدام الأردوينو

لوحدة ESP-01 طورين عمل الأول طور البرمجة والثاني طور التشغيل. ليتم برمجة ESP-01 يجب أن تعمل بطور البرمجة من خلال التوصيل بالشكل التالي :

الأردوينوESP-01
3.3V3.3V
GNDGND
3.3VCH_EN
GNDIO0
TXTX
RXRX
upgraded-version-1m-flash-esp8266-esp01-wifi-transceiver-wireless-module

تهيئة بيئة العمل لبرمجة ESP-01

بعد الإنتهاء من التوصيل حان الوقت لتجهيز بيئة العمل لبرمجة ESP-01. في محرر أكواد اردوينو قم بفتح التفضيلات من القائمة العلوية File > Preference

و إضافة الرابط التالي http://arduino.esp8266.com/stable/package_esp8266com_index.json

في خانة Additional Boards Manager URLs 

بعد ذلك يجب تثبيت الملفات المخصصة لدعم وحدات ولوحات تطوير ESP عن طريق القائمة العلوي   Tools > Board: >Board Manager.

بعد ذلك قم باختيار نوع اللوحة والمنفذ من  خلال القائمة العلوية Tools.

برمجة ESP-01

الآن يتم برمجة الوحدة للاتصال بشبكة الانترنت المحلية وعرض صفحة ويب تحتوي زرين مختلفة وعند الضغط على كل زر يتم ارسال قيم مختلفة للوح الأردوينو. لاحقا نستخدم هذه الأزرار لتشغيل وأطفاء مصباح ليد متصل بالأردوينو. لاحظ أنه يجب عليك ادخال اسم الشبكة التي تريد الاتصال بها بالاضافة للرقم السري للشبكة بدلا من ssid و password. سيتم ارسال “1” عند ضغط المستخدم على خيار تشغيل LED و “2” عند  ضغط المستخدم على خيار إطفاء LED. بعد الانتهاء من اضافة البرنامج يمكنك رفعه على ESP-01 وقد تلاحظ استمرار الشكل الموضح في الأسفل في الظهور خلال عملية الرفع.

كل ما عليك فعله هو الضغط على زر RST في لوحة الأردوينو وسيبدأ الرفع بشكل مباشر بالشكل التالي. 

إذا مازالت المشكلة مستمرة تأكد من التوصيل ومن ثم قم بعمل reset لESP-01 (يمكنك ذلك من خلال توصيل reset بGND ثواني معدودة  ومن ثم اعادة فصله ). بعد ذلك قم بالمحاولة من جديد.

				
					#include "ESP8266WiFi.h"
const char* ssid = "Handasa3";
const char* password = "11223366sS@";
WiFiServer server(80);
void setup() {
  Serial.begin(115200);
  delay(10);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
  delay(500);}
  server.begin();
  Serial.println(WiFi.localIP());}
void loop() {
  WiFiClient client = server.available();
  if (!client) {return;}
 while (!client.available()) {delay(1);}
  String request = client.readStringUntil('\r');
  client.flush();
  if (request.indexOf('/RED_ON') != -1) { Serial.println('1');}
  else if (request.indexOf('/RED_OFF') != -1) { Serial.println('2');}
  delay(1);
  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  client.println("");
  client.println("<!DOCTYPE HTML>");
  client.println("<html>");
  client.println("<head>");
  client.println("<title>LED control</title>");
  client.println("<meta charset=\"utf-8\">");
  client.println("<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">");
  client.println("<link rel=\"stylesheet\" href=\"http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css\">");
  client.println("<script src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js\"></script>");
  client.println("<script src=\"http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js\"></script>");
  client.println("</head>");
  client.println("<body>");
  client.println("<div class=\"container\">");                              
  client.print("<h1>Arduino LED Controlling page</h1>");
  client.print("<a href=\"/RED_ON\" class=\"btn btn-danger\"  role=\"button\">ON</a>");
  client.print("<a href=\"/RED_OFF\" class=\"btn btn-primary\" role=\"button\">OFF</a>");
  client.print("<br><br>");
  client.println("</div>");
  client.println("");
  client.println("");}

				
			

الأردوينو

الآن يتم برمجة الأردوينو لاستقبال البيانات المرسلة من ESP-01 و التحكم بوضع مصباح الليد على أساس هذه البيانات. أولا يجب توصيل ESP-01 بالأردوينو والتاكد انها انها تعمل في طور التشغيل (قم بالتوصيل بالشكل التالي  ثم اعد تشغيل  الأردوينو لجعل ESP-01 تعمل في طور التشغيل) 

الأردوينوESP-01
3.3V3.3V
GNDGND
3.3VCH_EN
3RX
2TX

لاحظ استخدام مكتبة SoftwareSerial.h لنتكمن من استقبال وارسال البيانات عبر المنافذ (2 ، 3) بدلا من (0 ، 1) حيث نتجب هكذا تداخل بيانات ESP و Serial monitor. بعد ذلك نعرض للمستخدم عنوان IP لصفحة التحكم بعد الحصول عليه من ESP-01. في حال ارسل ESP-01 قيمة 1 يتم تشغيل مصباح الليد وفي حال قام بارسال القيمة 2 يتم  اطفاءه.

بعد رفع البرنامج على الأردوينو قم بفتح شاشاة السيريال وعمل reset لESP-01(يمكنك ذلك من خلال توصيل reset و GND  ومن ثم اعادة فصله ) وستلاحظ ظهور عنوان IP على الشاشة بعد عدة ثواني.

				
					#include 

SoftwareSerial mySerial(2, 3); // RX, TX
int LED = 12 ;

void setup() {
   Serial.begin(9600);  
   mySerial.begin(115200);  
   pinMode(LED,OUTPUT);
   while (mySerial.available()==0)  {}
   mySerial.readString();
   while (mySerial.available()==0){}
   Serial.print("IP Address : ");
   String x = mySerial.readString();
   Serial.print(x);}

void loop() {
  if(mySerial.available()&gt;0){ 
    char y = mySerial.read();
    if(y == '1'){digitalWrite(LED,HIGH);}
    if(y == '2'){digitalWrite(LED,LOW);}}}
				
			

أخيرا بالدخول على IP الظاهر على الشاشة يمكنك التحكم بالليد عن طريق الصفحة التالية 

انتقل إلى المتجر

انتقال إلى الأعلى