الدرس الحادي عشر : التحكم بالاردوينو من خلال الانترنت

وضاح العونيمنذ 7 سنوات

الدرس الحادي عشر : التحكم بألاردوينو من خلال الانترنت

20161130_004800.jpg

 

نبذة عن الدرس :

في هذا الدرس سوف نقوم بعمل جهاز من خلال نستطيع التحكم بالأردوينو من خلال الإنترنت بحيث يكون هناك موقع يربط بين المستخدم و الاردوينو.

وتكون الاردوينو متصلة بالواي فاي من خلال درع الواي فاي ( Wifi Shield ).

 

دروع الاردوينو (Arduino Shields):

الدروع أو شيلد : هي لوحة إلكترونية يكون حجمها نفس حجم الاردوينو  توضع فوق الاردوينو لإضافة ميزة جديدة ,

حيث توفر الوقت بدلا من صنع دائرتك الخاصة و أيضا سهلة الاستخدام ,يحتوي الدرع على عدد من الدبابيس المعدنية يتم إدخال في منافذ الاردوينو ,

 ويوجد العديد من أنواع الدروع من أبرزها :

c722b90d7d79920c1a299687c0f7c2c5.image.447x354.jpg

 

درع الواي فاي (Wifi Shield): وهو يسمح للاردوينو بالاتصال بالانترنت من خلال الواي فاي .

06.Electronics-Ethernet-Shield-1.jpg

 

درع الايثرنت (Ethernet Shield ): يتيح للاردوينو ميزة الاتصال بالإنترنت وذلك من خلال كيبل الايثرنت.

MotorShield.jpg

 

درع التحكم بمحرك الخطي (Motor Shield ) : هذا الدرع يضيف للاردوينو سهولة في التحكم بالمحرك والتحكم بسرعة المحرك .

 

وهناك الكثير من أنواع الدروع ويمكنك البحث عنها من خلال هذا الموقع :

http://shieldlist.org

 

متطلبات المشروع :

أردوينو أونو

أسلاك توصيل

المرحل (Relay)

درع الواي فاي (Wifi shield )

إضاءة كهربائي

 

الدائرة الكهربائية:

تنبية تتضمن هذه الدائرة توصيل تيار مقياسه 220 فولت وهذ التيار خطير ويجب التعامل معه بحذر ,

لا تقم بتوصيل الجهاز الكهربائي بالمرحل وهو في حالة إنه موصول بالكهرباء .تاكد تماما إنه في حالة عزل عن الكهرباء (غير موصل بالكهرباء).

 

الدائرة الكهربائية.jpg

 

أنصح بالرجوع للدرس السابق وذلك لفهم آلية عمل وبرمجة المرحل.

https://3alam.pro/articles/microcontroller/waduino-arduino-controlling-devices-by-bluetooth/

الكود البرمجي :


#include <SPI.h>
#include <WiFi.h>

char ssid[] = "Waduino";      //  هنا تضع اسم الشبكة 
char pass[] = "11112222";   // هنا يكون كلمة السر الخاصة بالشبكة 

int light=6;               // المنفذ الخاص بالمرحل 
int status = WL_IDLE_STATUS;
WiFiServer server(80);

void setup() {
  Serial.begin(9600);     
  pinMode(light, OUTPUT);      

 
  if (WiFi.status() == WL_NO_SHIELD) {
    Serial.println("WiFi shield not present"); // إذ تم طباعة هذه الجملة ع الشاشة الرجاء التاكد من توصيل درع الواي فاي بالاردوينو
    while (true);       // هنا توقف محاول الاتصال بالشبكة 
  }

 
  while ( status != WL_CONNECTED) {
    Serial.print("Attempting to connect to Network named: "); // إذ تم طباعة هذا الجملة فعي تعني بانه جاري المحاولة الاتصال بالشبكة 
    Serial.println(ssid);                   // طباعة اسم الشبكة المراد الاتصال بها 

   
    status = WiFi.begin(ssid, pass); // نرى هنا دالة للاتصال بشبكة الواي فاي تحمل متغيرين الاول اسم الشبكة والاخر كلمة السر 
    delay(10000);
  }
  server.begin();                           // بداية تفعيل السيرفر على بورت 80
  printWifiStatus();                        // هنا يتم حالة الاتصال بالواي فاي مثل اسم الشبكة و الاي بي 
}


void loop() {
 
  WiFiClient client = server.available();   // هنا ينتظر حتى ياتي مستخدم للموقع 

  if (client) {                             // إذ يوجد اتصال مع المستخدم يقوم بالاتي 
    Serial.println("new client");          
    String currentLine = "";                
    while (client.connected()) {            
      if (client.available()) {             
        char c = client.read();             
        Serial.write(c);                   
        if (c == '\n') {                    

         
          if (currentLine.length() == 0) {
           
            client.println("HTTP/1.1 200 OK");
            client.println("Content-type:text/html");
            client.println();
            /* بداية الجزء الخاص بالموقع وهي زرين الاول لتشغيل الاضاءة والاخر لايقافها */
            client.print("<center>");
            client.print("<form action=\"/H\">");
            client.print("<input type=\"submit\" value=\"ON\"/>");
            client.print("</form>");
            client.print("<br>");
            client.print("<form action=\"/L\">");
            client.print("<input type=\"submit\" value=\"OFF\"/>");
            client.print("</form>");
            client.print("</center>");
       /*نهاية جزء الخاص بالموقع */
           
            client.println();
           
            break;
          }
          else {    
            currentLine = "";
          }
        }
        else if (c != '\r') { 
          currentLine += c;   
        }

     
       if (currentLine.endsWith("GET /H")) {
          digitalWrite(light, LOW);
        }
        if (currentLine.endsWith("GET /L")) {
          digitalWrite(light, HIGH);                
        }
      
      }
    }

    client.stop();
    Serial.println("client disonnected");
  }
}

void printWifiStatus() {
 
  Serial.print("SSID: ");
  Serial.println(WiFi.SSID());

  // دالة طباعة معلومات الشبكة 
  IPAddress ip = WiFi.localIP();
  Serial.print("IP Address: ");
  Serial.println(ip);

  
  long rssi = WiFi.RSSI();
  Serial.print("signal strength (RSSI):");
  Serial.print(rssi);
  Serial.println(" dBm");
  
  Serial.print("To see this page in action, open a browser to http://");
  Serial.println(ip);
}

بعدها الانتهاء من رفع الكود إلى الاردوينو نقوم  بفتح شاشة المرقاب التسلسلي سوف تظهر هذه الرسالة :

3.PNG

إذ ظهرت هذه الرسالة فهي دليل على اتصال الاردوينو بالشبكة .

361.PNG

نقوم بفتح الـ IP من خلال المتصفح من خلال الكمبيوتر أو الجوال .

قد يختلف الـ IP من شبكة إلى أخرى .

1112.PNG

يظهر لنا هذا الموقع زر ON للتشغيل الاضاءة 

و زر OFF لايقاف الاضاءة 

طريقة معرفة الاردوينو بإن المستخدم قائم بالضغط على زر إيقاف أو تشغيل 

إذ قام المستخدم بالضغظ على زر التشغيل 

سوف ينتهي  عنوان الصفحة بـ : ?H

أما زر إيقاف يكون أخر العنوان : ?L

ويقوم الاردوينو بقراءة عنوان الصفحة من خلال متغير currentLine

إذ كان أخر العنوان يكون  ?H سوف يقوم بتشغيل الاضاءة 

أما إذ كانت أخر العنوان  ? L سوف يقوم بإطفاء الاضاءة 

 

حل التحدي السابق :

هذا التحدي مذكور في هذا الدرس 

https://3alam.pro/articles/microcontroller/waduino-arduino-controlling-devices-by-bluetooth/

Waduino_6.ino

 

وإلى هنا نصل إلى ختام درس هذا اليوم

أتمنى إني أوضحت المعلومة بشكل المطلوب

للاسئله والاستفسار اترك تعليق وسوف يتم الرد عليك

ونراكم إن شاء الله في دروس قادمة .

كلمات دليلية:
1
إعجاب
17008
مشاهدات
0
مشاركة
0
متابع
متميز
محتوى رهيب

التعليقات (1)

محمود الزهراني:

ماشاء الله شرح موفق وممتع يعطيك العافيه يارب ❤️❤️❤️???

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !