Microcontroller

  1. السلام عليكم ورحمة الله وبركاته 
     
    اسأل الله ان يجعل اجازتكم سعيدة
     
    الدرس الثاني عشر : التغريد بواسطة الاردوينو .

     
    نبذة عن الدرس :
    في هذا الدرس سوف نقوم بعمل اتصال بين الاردوينو و تويتر وذلك لنستطيع إرسال تغريدات إلى تويتر
    من خلال الاردوينو وذلك بإستخدام مكتبة تسمح لاردوينو بالاتصال بتويتر وايضا نحتاج إن نستخدم  درع الواي فاي .
     
    متطلبات المشروع :

    أردوينو أونو

    درع الواي فاي (Wifi shield )
     
     
     
    التوكن (Token) :
    هو مجموعة من الرموز تمكن المكتبة من إستخدام حسابك بتويتر وذلك بعد الحصول على الصلاحيات منك .
     
    الحصول على التوكن :
    1-  قم بزيارة هذا الموقع.
    2- سجل الدخول إلى حسابك بتويتر.

    3- اضغط على زر إعطاء الصلاحيات لتطبيق.4- في نفس النافذة سوف يظهر التوكن الخاص بك. 

     
     
    الكود البرمجي :
    #include <SPI.h> #include <WiFi.h> #include <Twitter.h> //استدعاء المكتبة char ssid[] = ""; // اسم الشبكة المراد الاتصال بها char pass[] = ""; // كلمة السر الخاصة بالشبكة Twitter twitter(""); // التوكن الخاص بك char msg[] = ""; // هنا تقوم بكتابة التغريدة void setup() { delay(1000); WiFi.begin(ssid, pass); delay(10000); Serial.begin(9600); Serial.println("connect"); if (twitter.post(msg)) { int status = twitter.wait(&Serial); if (status == 200) { Serial.println("OK."); // عند ظهور هذه الرسالة تفيد بإن تم نشر التغريدة } else { Serial.print("failed : code "); // عند ظهور هذه الرسالة تفيد بحدوث خطا Serial.println(status); } } else { Serial.println("connection failed."); // هذه الرسالة تدل على حدوث خطا في الاتصال بالشكبة } } void loop() { }  
    رابط تحميل المكتبة Twitter.rar
    لمعرفة كيفية إضافة المكتبة للكود راجع هذا الدرس 
     
    تحدي :
    أجعل الاردوينو تتصل بـ ليد و عندما يتم إرسال التغريدة يضيء الليد .
     
     
    وإلى هنا نصل إلى ختام هذا الدرس 
    أتمنى إني أوضحت المعلومة بشكل المطلوب
    ونراكم إن شاء الله في دروس قادمة .
    مستوى المقال: مبتدئ
  2. الدرس الحادي عشر : التحكم بألاردوينو من خلال الانترنت

     
    نبذة عن الدرس :
    في هذا الدرس سوف نقوم بعمل جهاز من خلال نستطيع التحكم بالأردوينو من خلال الإنترنت بحيث يكون هناك موقع يربط بين المستخدم و الاردوينو.
    وتكون الاردوينو متصلة بالواي فاي من خلال درع الواي فاي ( Wifi Shield ).
     
    دروع الاردوينو (Arduino Shields):
    الدروع أو شيلد : هي لوحة إلكترونية يكون حجمها نفس حجم الاردوينو  توضع فوق الاردوينو لإضافة ميزة جديدة ,
    حيث توفر الوقت بدلا من صنع دائرتك الخاصة و أيضا سهلة الاستخدام ,يحتوي الدرع على عدد من الدبابيس المعدنية يتم إدخال في منافذ الاردوينو ,
     ويوجد العديد من أنواع الدروع من أبرزها :

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

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

     
    درع التحكم بمحرك الخطي (Motor Shield ) : هذا الدرع يضيف للاردوينو سهولة في التحكم بالمحرك والتحكم بسرعة المحرك .
     
    وهناك الكثير من أنواع الدروع ويمكنك البحث عنها من خلال هذا الموقع :
    http://shieldlist.org
     
    متطلبات المشروع :
    أردوينو أونو
    أسلاك توصيل
    المرحل (Relay)
    درع الواي فاي (Wifi shield )
    إضاءة كهربائي
     
    الدائرة الكهربائية:
    تنبية تتضمن هذه الدائرة توصيل تيار مقياسه 220 فولت وهذ التيار خطير ويجب التعامل معه بحذر ,
    لا تقم بتوصيل الجهاز الكهربائي بالمرحل وهو في حالة إنه موصول بالكهرباء .تاكد تماما إنه في حالة عزل عن الكهرباء (غير موصل بالكهرباء).
     

     
    أنصح بالرجوع للدرس السابق وذلك لفهم آلية عمل وبرمجة المرحل.
    الكود البرمجي :
    #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); } بعدها الانتهاء من رفع الكود إلى الاردوينو نقوم  بفتح شاشة المرقاب التسلسلي سوف تظهر هذه الرسالة :

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

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

    يظهر لنا هذا الموقع زر ON للتشغيل الاضاءة 
    و زر OFF لايقاف الاضاءة 
    طريقة معرفة الاردوينو بإن المستخدم قائم بالضغط على زر إيقاف أو تشغيل 
    إذ قام المستخدم بالضغظ على زر التشغيل 
    سوف ينتهي  عنوان الصفحة بـ : ?H
    أما زر إيقاف يكون أخر العنوان : ?L
    ويقوم الاردوينو بقراءة عنوان الصفحة من خلال متغير currentLine
    إذ كان أخر العنوان يكون  ?H سوف يقوم بتشغيل الاضاءة 
    أما إذ كانت أخر العنوان  ? L سوف يقوم بإطفاء الاضاءة 
     
    حل التحدي السابق :
    هذا التحدي مذكور في هذا الدرس 
    Waduino_6.ino
     
    وإلى هنا نصل إلى ختام درس هذا اليوم
    أتمنى إني أوضحت المعلومة بشكل المطلوب
    للاسئله والاستفسار اترك تعليق وسوف يتم الرد عليك
    ونراكم إن شاء الله في دروس قادمة .
    مستوى المقال: متوسط
  3. الدرس العاشر التحكم بالاجهزة الكهربائية من خلال البلوتوث .
     

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

    هو جهاز من خلاله نستطيع توصيل الاجهزة ذو مقدار فولت عالي ب أجهزة  أخرى يكون المقدار فيها منخفض   
    على سبيل المثال في هذا الدرس قمنا بتوصية اللمبة مقدار الفولت فيها 220 فولت بالاردوينو التي لا يتجاوز مقدار الفولت فيها 20 فولت . 
     
    يوجد للمرحل عدة أنواع وتختلف من ناحيتين الاولى يكون من ناحية مقدار الفولت التي يعمل عليه المرحل مثل 5 فولت أو 9 فولت أو 12 فولت .
    أما الناحية الثانية تختلف من ناحية عدد المرحلات الموجود في نفس الدارةالكهربائية كما في الصورة السابقة .
    للمرحل ثلاث مداخل لتوصيل بالجهاز الكهربائي :

     
    المدخل الرئيسي : ويوصل به السلك القادم من مصدر الطاقة .
    مدخل No  : ويعني إن هذا المدخل في حالة الاصلية يكون غير موصل بالمدخل الرئيسي .
    مدخل Nc  : ويعني إن هذا المدخل في حالة الاصلية يكون موصل بالمدخل الرئيسي .
    في منفذ NO عندما يستقبل المرحل أمر Low من الاردوينو يكون موصل بالمدخل الرئيسي (موصل للكهرباء ).
     وأمر High  يكون غير متصل بالمدخل الرئيسي (لا يتم توصيل الكهرباء ) , والعكس صحيح بالنسبة لمنفذ NC  .
     
    متطلبات المشروع :
    أردوينو اونو
    أسلاك توصيل
    مرحل (Relay 5v)
    بلوتوث (Bluetooth HR 06) للاجهزة الاندرويد 
    (hm-10 bluetooth) للاجهزة الايفون 
    جهاز كهربائي (الذي تريد التحكم به)
    برنامج لتحكم بالاردوينو من خلال البلوتوث بإجهزة الحديثة .
     
    الدائرة الكهربائية:
    تنبية تتضمن هذه الدائرة توصيل تيار مقياسه 220 فولت وهذ التيار خطير ويجب التعامل معه بحذر ,
    لا تقم بتوصيل الجهاز الكهربائي بالمرحل وهو في حالة إنه موصول بالكهرباء .تاكد تماما إنه في حالة عزل عن الكهرباء (غير موصل بالكهرباء).

     
    الكود البرمجي :
    int RELAY = 7; char command; void setup() { Serial.begin(9600); pinMode(RELAY, OUTPUT); digitalWrite(RELAY,LOW); } void loop() { if(Serial.available() > 0){ command = Serial.read(); if(command=='1') {digitalWrite(RELAY,LOW);} else if(command=='0') {digitalWrite(RELAY,HIGH);} }} شرح الكود البرمجي :
    راجع الدروس السابقة لفهم الكود بشكل الجيد .
     

    عندما يتم إستقبال قيمة تساوي 1 تقوم الاردوينو بتوصيل الكهرباء بين سلك مصدر الطاقة والسلك الذي موصل بالاجهزة الكهربائي من المرحل. 

     
    أما عند استقبال قيمة تساوي 0 تقوم الاردوينو بقطع توصيل الكهرباء بين سلك مصدر الطاقة والسلك الذي موصل بالاجهزة الكهربائي من المرحل.
    ولإرسال قيم للاردوينو نحتاج لتثبيت  بعض البرامج على الاجهزة الذكية التي تسمح لنا بإرسال قيم للاردوينو 
    لاجهزة الاندرويد : أنصح بتحميل هذا البرنامج Arduino bluetooth ثم الاقتران مع البلوتوث المتصل بالاردوينو (HC-05)من خلال البرنامج ويكون الرقم السري غالبا : 0000 أو 1234 ثم قم بإرسال أمر 0  أو 1 إلى الاردوينو .
    لاجهزة الايفون :  يجب عليك بتحميل هذا البرنامج HM10 Bluetooth Serial
     
    حل التحدي السابق :
    هذا التحدي مذكور في هذا المقال 
    يمكنك تحميل حل التحدي من هنا :
    Waduino_5.ino
     
    تحدي بسيط :
    عدل على البرنامج المذكور في هذا الدرس وقم بوضع شرط جديد حيث إذ تم إستقبل قيمة تساوي 2 يقوم بتشغيل الجهاز لمدة 10 ثواني ثم يقوم بإيقافة.
     
    وإلى هنا نصل إلى ختام درس هذا اليوم
    أتمنى إني أوضحت المعلومة بشكل المطلوب
    للاسئله والاستفسار اترك تعليق وسوف يتم الرد عليك
    ونراكم إن شاء الله في دروس قادمة .
    مستوى المقال: متوسط
  4. السلام عليكم ورحمة الله وبركاته
     
    الدرس التاسع : محرك السيرفو 

     
    نبذة عن الدرس :
    من خلال هذا الدرس سوف نتعرف على محرك السيرفو و كيفية التحكم بإتجاه المحرك .
    للمحرك عدة أنواع وتختلف من ناحية الحجم والقوة وأيضا درجة الدوران التي تنحصر بين نوعين دوران بمقدار 180 درجة (يستطيع المحرك الدوران لنصف دائرة فقط ) و دوران بمقدار 360 درجة (يستطيع المحرك الدوران بشكل دائرة كاملة).
    وفي هذا الدرس تم استخدام النوع الاول والذي يمكنه الدوارن بمقدار 180 درجة .
     
    متطلبات المشروع :
    أردوينو أونو
    أسلاك توصيل
    لوحة تجارب
    محرك سيرفو (Servo motor)
     
    استخدامات محرك السيرفو :

    يستخدم هذا المحرك غالبا كموجه للكاميرا أو مستشعر الموجات فوق الصوتية وذلك بسبب إمكانية التحكم بزواية دورانه  .
    وأيضا يستخدم في الروبوت و غالبا ما يمثل المفاصل للروبوت .
     
     الدائرة الكهربائية  :
     

     
    الكود البرمجي :
    #include <Servo.h> Servo myservo; int pos = 0; void setup() { myservo.attach(4); } void loop() { for (pos = 0; pos <= 180; pos += 1) { myservo.write(pos); delay(15); } for (pos = 180; pos >= 0; pos -= 1) { myservo.write(pos); delay(15); } } هذه المكتبة موجودة تلقائيا في برنامج Arduino IDE لا تحتاج إلى إضافة .
    int pos = 0; يمثل هذا المتغير قيمة زاوية دوران المحرك .
    myservo.attach(4); دالة لتعريف المنفذ المتصل مع محرك السيرفو وهنا نرى إن المنفذ المتصل هو المنفذ الرابع.
     
    for (pos = 0; pos <= 180; pos += 1) { myservo.write(pos); delay(15); } for (pos = 180; pos >= 0; pos -= 1) { myservo.write(pos); delay(15); }  دالة  for  وظيفتها هو تغير قيمة زواية الدوران بعد 15 ملي ثانية
    for (pos = 0; pos <= 180; pos += 1) { // in steps of 1 degree myservo.write(pos); delay(15); } في هذه الدالة تتغير الزواية من 0 وحتى 180 درجة بمقدار درجة واحدة كل 15 ملي ثانية .
     
    myservo.write(pos); دالة تحتوي على قيمة الزواية تقوم بإرسال قيمة الزواية إلى المحرك .
    for (pos = 180; pos >= 0; pos -= 1) { myservo.write(pos); delay(15); } أما هنا فهي تتغير الزواية من 180 إلى 0 درجة عكس الدالة الاولى بمقدار درجة واحدة كل 15 مل ثانية .
     
    حل تحدي السابق :
    التحدي مذكور في هذا المقال

    يمكنك تحميل حل التحدي من هنا :
    waduino_4.ino
     
    تحدي بسيط :
    أجعل المحرك يتسقبل قيمة الزاوية من نافذة المراقب التسلسلي و يقوم أيضا برجوع إلى الزاوية الاصلية .
    مستوى المقال: متوسط
  5. السلام عليكم ورحمة الله وبركاته
    الدرس الثامن : بناء جهاز لقياس درجة الحرارة والرطوبة .

     
    نبذة عن الدرس :
    من خلال هذا الدرس سوف نقوم بعمل جهاز قادر على قراءة درجة الحرارة وايضا نسبة الرطوبة وذلك من خلال مستشعر الحرارة والرطوبة , ويتم عرضها على الشاشة الكريستالية , المقاومة المتغيرة لتغيير سطوع الشاشة .
     
    متطلبات المشروع :
    أردوينو اونو (Arduino Uno)
    مستشعر الحرارة والرطوبة (DHT11 or DHT22)
    مقاومة متغيرة (variable resistor)
    الشاشة كريستالية(lcd 2*16 )
    أسلاك توصيل (Jumper wire) .
    لوحة تجارب (Breadborad)
     
    الدائرة الكهربائية :
     

     
    آلية عمل حساس الرطوبة والحرارة (DHT11) :
    لدى هذا الحساس القدرة على قراءة درجة الحرارة والرطوبة في البيئة المحيطة به .
     
    الفرق بين DHT11 و DHT22 :

     
    معلومات عن الشاشة الكربستالية :
    يوجد العديد من مقاسات الشاشات الكريستالية مثل 2*16 و 4*20  وفي هذا الدرس استخدمنا مقاس 2*16   وتعني إن الشاشة قادرة على عرض سطرين وكل سطر يحتوي على 16 حرف أو رمز.
     
    الكود البرمجي :
    في البداية نحتاج إلى إضافة مكتبة DHT  والتي تسهل علينا التعامل مع حساس الرطوبة والحرارة.
    أولا : نقوم بتحميل الملف المضغوط  .
    DHT library.zip
    ثانيا :نقوم بتشغيل برنامج Arduino IDE .
    ثالثا :نذهب إلى الشيفرة البرمجية ---< إدراج مكتبة  ---< أضف مكتبة ---< قم بإختيار الملف المضغوط .
    رابعا : قم بإغلاق البرنامج ثم إعد تشغيله .
     
    #include <LiquidCrystal.h> #include "DHT.h" LiquidCrystal lcd(8, 9, 10, 11, 12, 13); int DHTPIN =3; #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); void setup() { dht.begin(); lcd.begin(16, 2); } void loop() { int hum = dht.readHumidity(); int tem = dht.readTemperature(); lcd.setCursor(0, 0); lcd.print("Humidity: "); lcd.print(hum); lcd.setCursor(0, 1); lcd.print("Temperature: "); lcd.print(tem); delay(500); }  
    بعد رفع الكود للاردوينو أضف أحد مصادر الطاقة المذكورة في الدرس السابق لتنقل بها إلى أي مكان .

     
    شرح الكود البرمجي :
    #include <LiquidCrystal.h> تعريف بالمكتبة الخاصة بالشاشة الكريستالية
    #include "DHT.h" المكتبة الخاصة لمستشعر الحرارة والرطوبة
     
    LiquidCrystal lcd(8, 9, 10, 11, 12, 13); دالة تحمل أرقام المنافذ الاردوينو المتصلة بالشاشة الكريستالية .
     
    #define DHTTYPE DHT11 تعريف نوع مستشعر الحرارة والرطوبة المستخدم في درسنا وهو DHT11.
    لو كنت تستخدم نوع DHT22  فقط قم بإستبدال النوع في الكود السابق .
    DHT dht(DHTPIN, DHTTYPE); دالة لتهيئة الحساس وتحمل متغيرين متغير يحمل رقم المنفذ واخر نوع المستشعر .
     
    lcd.begin(16, 2); تعريف بمقاس الشاشة المستخدمة وهو 2*16 .
     
    int h = dht.readHumidity(); متغير لقراءة نسبة الرطوبة من المستشعر .
    int t = dht.readTemperature(); متغير لقراءة درجة الحرارة من المستشعر .
    lcd.setCursor(0, 0); هذه الدالة لجعل المؤشر في بداية السطر الاول.
    lcd.setCursor(0, 1); هذه الدالة لجعل المؤشر في بداية السطر الثاني.
     
    حل تحدي السابق :
    التحدي مذكور في هذا المقال

    يمكنك تحميل حل التحدي من هنا :
    waduino_3.ino
     
    تحدي بسيط :
    قم بجعل الشاشة تعرض فقط درجة الحرارة ثم تعرض درجة الرطوبة فقط لمدة 500 ملي ثانية لكل منهما .
    مستوى المقال: مبتدئ
  6. السلام عليكم ورحمة الله وبركاته
    لكثرة الاسلئة عن كيفية توصيل المستشعرات وغيرها بالاردوينو وأيضا عن كيفية تزويد الاردوينو بالطاقة و إمكانية التنقل بها حيث كانت مشاريعنا السابقة متصلة بالكمبيوتر ولا يمكن الفصل بينهما  .
    من خلال هذا الدرس سوف نقوم بإلاجابة على تلك التساؤلات .

     أولا : ما هي طرق تزويد الاردوينو بالطاقة ؟
    لترويد الاردوينو بالطاقة توجد ثلاثة طرق وهي:

     
    الطريقة الاولى : (منفذ (USB

    من خلال منفذ USB  ويستخدم هذا المنفذ لتوصيل الاردوينو بالكمبيوتر وعادة يكون لرفع   الكود البرمجي أو التحكم بالمراقب التسلسلي ويكون مقدار الجهد الكهربائي 5 فولت  .
     
    الطريقة الثانية :) بطارية 9 فولت موصلة بالاردوينو)

    من خلال وصلة الطاقة ويستخدم  مع محول  AC أو  DC حيث يترواح الجهد الكهربائي من 7 فولت وحتى 12 فولت حيث يتيح المحول إمكانية إختيار كمية الجهد الكهربائي , ويستخدم أيضا مع بطاريات 9 فولت.
     
    الطريقة الثالثة : (تم توصيل البطاريات 12فوات مع منفذ Vin  و GND)

    عن طريق منافذ الطاقة في الاردوينو وهي تحتوي على خمسة منافذ ولكن ليست جميعها لتوصيل الطاقة بالاردوينو بل يوجد العكس وهو إن تصبح الاردوينو مصدر للطاقة بالنسبة للدائرة الكهربائية وتحتوي على المنافذ التالية :
     
    منفذ 3.3v  : وهو مخرج من خلال هذا المنفذ يمكننك تأمين الدائرة الكهربائية بجهد كهربائي يساوي 3 فولت .
    منفذ 5V :هذا المنفذ مشابه للمنفذ السابقة ولكن يختلف من ناحية الجهد الكهربائي حيث يساوي 5 فولت وأيضا يمكن إن توصله به مصدر طاقة 5 فولت ويكون مصدر طاقة للاردوينو .
    منفذين GND : القطب السالب في الدوائر الكهربائية ويسمى خط أرضي وهو أيضا يمكن إن يكون مصدر للاردوينو أو للدائرة الكهربائية .
    منفذ Vin : يمكنك من خلال هذا المنفذ تأمين الاردوينو  بـ طاقة يترواح جهدها من 7 وحتى 20 فولت ويعتبر مدخل وعادة يستخدم مع  4 بطاريات يقدر جهدها بـ 12 فولت .
     
    ما هي لوحة التجارب ؟

    هي لوحة صممت لتسهيل عملية التوصيل الدائرة الكهربائية , حيث تحتوي على الكثير من المنافذ الموصولة ببعضا البعض ويوجد لها العديد من الانواع حيث تختلف من ناحية الحجم  وعدد المنافذ وأيضا في عملية التوصيل بين المنافذ سواء أفقي أو عامودي (لمنطقة القطع الالكترونية) وأيضا من ناحية الاستخدام سواء كانت للمشاريع الصغيرة أو الكبيرة المعقدة .
    كيفية التوصيل ؟
    نظرا لاختلاف لوحة التجارب من ناحية التوصيل لكن المستخدم في مشاريعنا السابقة هو التوصيل العامودي وهو الاكثر شيوعا  وفي الصورة التالية تم شرح اليه التوصيل .

     

    في هذه الصورة نرى توصيل منفذ الخط الارضي في الاردوينو بمنافذ الطاقة في لوحة التجارب حيث يكون الصف كامل محمل بالاشارة السالبة , ونرى الجرس ومستشعر حركة الاجسام متصلين بصف الاشارة السالبة حيث يعتبر الصف مصدر للخط الارضي ويحتوي الصف الاخر على جهد كهربائي بمقدار 5فولت .
    ملاحظة : في أغلب الدوائر الكهربائية يكون :
    السلك الاسود يمثل الاشارة السالبة والتي تتصل بمنفذ GND .
    السلك الاحمر :يمثل الاشارة الموجبة والتي تتصل بمنفذ 5V.
    مستوى المقال: مبتدئ
  7. السلام عليكم ورحمة الله وبركاته 
    الدرس السادس : التعرف على مستشعر الموجات فوق الصوتية .

     
    أهداف هذا الدرس :
    معرفة التعامل مع مستشعر الموجات فوق الصوتية . نبذة بسيطة :
    في هذا الدرس سوف نقوم بعمل جهاز يستطيع استشعار المسافات بينه وبين الاجسام التي تكون أمامه
    وذلك بواسطة مستشعر الموجات فوق الصوتية ,
    إذ كانت المسافة بينه وبين الجسم أقل من 10 سنتيمتر  
    سوف يضئء اللمبة الحمراء ويصدر صوت تحذيري
    أما إذ كانت أكبر من ذلك سوف يضيء اللمبة الخضراء .
    وللمعرفة المسافة يمكن الدخول على وضع المراقب التسلسلي بعد رفع الكود للاردوينو .
    الدائرة الكهرباية :
     

     
    آليه عمل حساس الموجات فوق الصوتية (Ultrasonic Sensor) :
     

     
    يتم إرسال الموجات الصوتية عن طريق منفذ Trig 
     بعد اصطدام الموجات مع الجسم تنعكس ويتم إستقبلها عبر منفذ Echo  
    ومن خلال الوقت بين إرسال الموجات ووقت استقبلها يتم حساب المسافة .
    ولحساب المسافة نستخدم المعادلة الرياضية التالية :
    المسافة = الوقت * السرعة
    حيث السرعة تكون ثابته وهي سرعة الصوت 340 متر في الثانية ولكن هنا نحسب الاشارة بـ سنتيمتر وسوف تكون سرعة الصوت تساوي 0.0340 سنتيمتر
    ولكن نلاحظ بالصورة ب أن المستشعر سوف يقوم بإرسال وإستقبال إشارة وذلك يسمح بإن تكون قيمة المسافة تتضاعف ونحتاج لتقسيمها على 2
    لتصبح المعادلة بالشكل النهائي
    المسافة = الوقت *السرعة / 2 .
    أقصى حد للمسافة في هذا الحساس هي 4 متر .
    الكود البرمجي :
    int echoPin =8; int trigPin =9; int Led_Red =7; int Led_Green =6; int Buzzer=5; void setup() { Serial.begin (9600); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); pinMode(Led_Red, OUTPUT); pinMode(Led_Green, OUTPUT); pinMode(Buzzer, OUTPUT); } void loop() { long duration; //المدة long distance;//المسافة digitalWrite(trigPin, LOW); delay(15); digitalWrite(trigPin, HIGH); delay(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance= duration*0.034/2; Serial.print(distance); Serial.println(" cm"); if (distance < 10) { digitalWrite(Led_Red,HIGH); digitalWrite(Buzzer,HIGH); digitalWrite(Led_Green,LOW); } else { digitalWrite(Led_Red,LOW); digitalWrite(Buzzer,LOW); digitalWrite(Led_Green,HIGH);} delay(500); } شرح الكود البرمجي :
    لفهم الكود بشكل جيد يمكنك الرجوع إلى الدروس السابقة .
    digitalWrite(trigPin, LOW); delay(10); digitalWrite(trigPin, HIGH); delay(15); في بداية الاستشعار للمسافة نحتاج إلى إرسال موجة قصيرة وذلك لكي يتم تهيئة الاستشعار .
    digitalWrite(trigPin, LOW); هذا الامر  لإيقاف تهيئة الاستشعار .
    duration = pulseIn(echoPin, HIGH); الدالة وظيفتها هي حساب مدة الوقت بين إرسال الموجات الصوتية من Trig pin وحتى إنعكاس الموجات وإستقبالها من خلال Echo pin  ,
    عندما يكون منفذ Echo  في حالة HIGH تعني بإن تم إستقبال الاشارة المنعكسة .
    distance= duration*0.034/2; نلاحظ هنا استخدمنا لقانون المسافة لايجادها بوحدة سنتيمتر .
    حل تحدي السابق :
    التحدي مذكور في هذا المقال 

    يمكنك تحميل حل التحدي السابق من هنا 
    Waduino_2.ino
    تحدي بسيط :
    قم بتحويل وحدة المسافة من سنتيسمتر إلى متر .
    وإلى هنا نصل إلى نهاية هذا الدرس
    ونراكم بالدرس القادم إن شاء الله.
    مستوى المقال: متوسط
  8. السلام عليكم ورحمة الله وبركاته
    الدرس الخامس : التعرف على مستشعر حركة الاجسام

     
    أهداف هذا الدرس :
    إن يدرك القارى إمكانية تطبيق الاردوينو في حياتنا الواقعية  .  
    نبذة بسيطة :
     هذا الدرس سوف نقوم بعمل جهاز عندما يستشعر حركة أجسامنا يقوم بإصدار صوت تحذيري
    وذلك عبر إستخدام حساس مستكشف حركة الجسم و أيضا الجرس .
     
    متطلبات  المشروع :
    أردوينو أونو حساس حركة الجسم (PIR sensor ) الجرس (buzzer  ) لوحة تجارب (Bread Board) اسلاك توصيل (jumper wire)  
    الدائرة الكهربائية :
     

     
    كيفية عمل حساس حركة الجسم :
     

     
    الحساس يقوم بإستقبال الاشعة تحت الحمراء والتي تصدر من أجسامنا وهي غير مرئية ومن ثم يحولها إلى إشارة كهربائية .
    أي جسم تكون حرارته أعلى من درجة الصفر المطلق (273-) يقوم بإصدار أشعة تحت الحمراء  .
     
    أما بالنسبة للجرس فهو في حالة إنتظار أمر تشغيل من الاردوينو .
     
    استخدامات الحساس :
    يستخدم المستشعر في حياتنا تقربيا بشكل يومي ومن أمثلة ذلك :
    بوابات المول . أجهزة الهواء المجفف لليدين . صنابير المياة الذكية . أجهزة الحماية من السرقة .  
    الكود البرمجي :
    int PIR = 3; int buzzer = 8; void setup(){ pinMode(PIR, INPUT); pinMode(buzzer, OUTPUT); } void loop(){ digitalWrite(buzzer,LOW); int Value= digitalRead(PIR); if(Value == HIGH){ digitalWrite(buzzer,HIGH);} delay(500);}  
    شرح الكود البرمجي :
    راجع الدروس السابقة لفهم الكود بشكل الجيد .
     
    حل التحدي السابق :
    التحدي المذكور في هذا المقال
    يمكنك تحميل حل التحدي السابق من هنا
    waduino_1.ino
     
    تحدي بسيط :
    التحدي لهذا الدرس أجعل الجهاز لا يعمل ‘إلا في حال إطفاء إضاءة الغرفة .
     
    وإلى هنا نصل إلى ختام درس هذا اليوم
    أتمنى إني أوضحت المعلومة بشكل المطلوب
    للاسئله والاستفسار اترك تعليق وسوف يتم الرد عليك
    ونراكم في الدرس القادم وسوف يكون عن مستشعر المسافات .
    مستوى المقال: مبتدئ
  9. السلام عليكم ورحمة الله وبركاته
    الدرس الرابع :التعرف على مستشعر الاضاءة (photocell)

    أهداف هذا الدرس :
    أن يعرف القارى ما هو المستشعر . أن يدرك القارى الفرق بين analogRead  و digitalRead . أن يعرف القارى ما هي شاشة المراقب التسلسلي .  
    نبذة بسيطة :
    في هذا الدرس سوف نتعامل مع مستشعر الاضاءة ,
    وسوف يكون المشروع عبارة عن قراءة درجة الاضاءة و إظهارها على الكمبيوتر عبر شاشة المراقب التسلسلي .
     
    ما هو المستشعر :
    هي أجهزة قادرة على قراءة المتغيرات في المنطقة المحيطة بها  كقراءة درجة الحرارة أو الرطوبة أو استشعار الاجسام القربية منها ..... الخ .
     
    متطلبات  المشروع :
    أردوينو أونو مقاومة 330 أوم (Resistor 330 ohm) لوحة تجارب (Bread Board) اسلاك توصيل (jumper wire) حساس الاضاءة (photocell)  
    الدائرة الكهربائية :

     
    آليه عمل حساس الاضاءة :
    حساس الاضاءة : هو مستشعر لقراءة حساسية الضوء في البيئة المحيطة به .

    الكود البرمجي :
    int Sensor_Light = A0; int value = 0; void setup() { pinMode(Sensor_Light,INPUT); Serial.begin(9600); } void loop() { value = analogRead(Sensor_Light); Serial.print("ISO : "); Serial.println(value); delay(500); } بعد الانتهاء من رفع الكود على الاردوينو
    قم بالضغط على
    وذلك لرؤية نتائج القراءة من المستشعر عبر شاشة المراقب التسلسلي .
    في الصورة التالية شاشة المراقب التسلسلي وهي تظهر القيم :

     
    عندما تكون قيمة القراءة صفر يعني ذلك إنه ليس هناك ضوء .
     
    شرح الكود البرمجي :
    سوف نقوم الان بشرح الاوامر الجديدة فقط ويمكن الرجوع للدروس السابقة لفهم الكود بشكل جيد .
    int Sensor_Light = A0; تم تعريف متغير يشير إلى منفذ A0   ويعتبر المنفذ أحدى المنافذ التماثلية (analog).
     
    Serial.begin(9600); ملاحظة : Serial  لعمل اتصال بين الاردوينو و الكمبيوتر أو الاردوينو و جهاز أخر , أما إذ كان بين الاردوينو والكمبيوتر فيتم الاتصال عبر شاشة المراقب التسلسلي ,حيث تستطيع إرسال أو استقبال قيم من و إلى الاردوينو .
     
    وفي هذه الامر يشير إلى بدء عملية الاتصال على تردد 9600   باود .
    value = analogRead(Sensor_Light); في هذه السطر نرى المتغير value لتخزين قيمة القراءة عبر دالة analogRead() والتي تحوي قيمة تتراوح بين 0 و 255  .
     
    Serial.print("ISO : "); لطباعة نص “ ISO :”  على شاشة المراقب التسلسلي .
     
    Serial.println(value); وهنا نرى أيضا طباعة قيمة المتغير value والاختلاف بين هذا السطر والسطر السابق هو إن هذا السطر بعد الطباعة ينتقل إلى سطر جديد.
     
    الفرق بين دالة digitalRead  و analogRead  :
    دالة digital : كما ذكرنا في الدروس السابقة فهي تستقبل قيمتين HIGH  أو LOW  .
    أما دالة analogRead  : فهي تستقبل قيمة تتراوح  من 0 وحتى 255 .
     
    تحدي بسيط :
    أضف لهذا المشروع لمبة خضراء وأخرى حمراء حيث إذ كانت قيمة القراءة أعلى من 20 تضيء اللمبة الخضراء أما إذا كانت أقل تضيء اللمبة الحمراء .
     
    وفي الختام 
    وسوف أقوم بحل التحدي  في الدرس القادم
    وتذكر الاستمتاع بحل المشكلة فن لا يتقنه إلا المبرمجون
    وإلى الدرس القادم أستودعكم الله .
    مستوى المقال: متوسط
  10. السلام عليكم ورحمة الله وبركاته  
    نبارك لكم دخول العشر الأواخر وجعلنا الله وإياكم ممن ربح فيها وأدرك ليلة القدر .
     

     
    أهداف هذا الدرس :
    أن يدرك القارى الفرق بين المخرجات و المدخلات (Input and Output ) .
     
    نبذة بسيطة :
    في هذا الدرس سوف نتعامل مع المفتاح
    عندما يتم الضغط عليه ولأول مرة
     تضيء اللمبة الحمراء
    وعند الضغط عليه مرة أخرى
    يضئ اللمبة الصفراء ويطفى الحمراء
    والضغط للمرة الثالثة
    يطفى الصفراء ويضئ اللمبة الحمراء
    وهكذأ .  
     
    متطلبات  المشروع :
    أردوينو أونو
    مفتاح ضغاط ((Push Button
    2 x لمبة صغيرة ( led ) 
     x 3مقاومة 220 أوم أو 330 أوم (Resistor 220 ohm or 330 ohm)
    لوحة تجارب (Bread Board)
    اسلاك توصيل (jumper wire)
     
    الدائرة الكهربائية :

     
    آليه عمل المفتاح (Push Button  ) :
    المفتاح هو مشابه لمفتاح تشغيل المكيف في بيوتنا ولكن مفاتيح البيت تبقى التيار متصل بعد الضغط
    إلى إن تضغط الزر مرة أخرى ولكن هنا فقط يبقى التيار متصل عند الضعط عليه .
     

     
    الكود البرمجي :
    int ledR = 12; int ledY = 13; int Button = 5; int counter=1; void setup(){ pinMode(ledR,OUTPUT); pinMode(ledY,OUTPUT); pinMode(Button,INPUT); Serial.begin(9600); } void loop(){ if(digitalRead(Button) == HIGH){ if(counter==1) {digitalWrite(ledY,LOW); digitalWrite(ledR,HIGH); counter=counter+1; } else if(counter==2) {digitalWrite(ledR,LOW); digitalWrite(ledY,HIGH); counter=counter-1;} delay(500); } } شرح الكود البرمجي :
    سوف نقوم الان بشرح الاوامر الجديدة فقط ويمكن الرجوع للدرس السابق لفهم الكود بشكل جيد .
    pinMode(Button,INPUT);  
    تم تعريف Button من نوع مدخل أي الاردينو يحتاج لإستقبال البيانات من المتغير لمعالجتها .
     
    if(digitalRead(Button) == HIGH)  
    سوف يستقبل الاردوينو حالتين من المتغير
    HIGH وتعني إن المفتاح يتم الضغط عليه الان .
    LOW تعني إن المفتاح في حالته العادية أي غير مضغوط.
    ولكن نرى هنا في الشرط إذ كان قيمته HIGH  أي في حالة الضغط عليه
    حيث يتحقق الشرط . 
    ويقوم بتشغيل اللمبة وذلك بالاعتماد على قيمة العداد (counter) .
     
    في هذه الصورة بعض المعلومات الهامة من الناحية البرمجية  التي ذكرتها في هذا الدرس والدرس السابق
     

     
    وإلى هنا نصل إلى ختام هذه الدرس ,
     و نراكم بالدرس القادم إن شاء الله
    مستوى المقال: متوسط
  11. نبذة بسيطة :
    في هذا الدرس سوف نتعامل مع لمبة صغيرة ويتم تشغيلها لمدة ثانية ثم إطفاها لمدة ثانية وتستمر هكذا .

    متطلبات  المشروع :
    ِأردوينو (في هذه الدورة سوف نتعامل مع Arduino Uno )
    لمبة صغيرة ( led )
    مقاومة 220 أوم أو 330 أوم (Resistor 220 ohm or 330 ohm)
    لوحة تجارب (Bread Board)
    اسلاك توصيل (jumper wire)
    الدائرة الكهربائية :
    ملاحظة : دائما المنفذ السالب يوصل بإحد منافذ GND  
    لمعرفة المنفذ السالب أو الموجب في اللمبة الصغيرة يوجد طريقتين :

     

     
    الكود البرمجي :
    int Led =7; void setup() { pinMode(Led,OUTPUT); } void loop() { digitalWrite(Led,HIGH); delay(1000); digitalWrite(Led,LOW); delay(1000); } بعد نسخ الكود ووضعه في برنامج Arduino IDE . 
    أضغط على  ليتم حفظ الكود . 
    ثم
    أضغط على  ليتم رفعه للأردوينو . 
    شرح الكود البرمجي :
    int Led=7; تعريف متغير يمثل المنفذ رقم 7 بالاردوينو.
    void setup(){ pinMode(Led,OUTPUT); } بالنسبة لدالة setup هي دالة التهيئة من خلالها يتم تهيئة المنفذ . ويتم تنفيذها مرة واحدة فقط عندما يتم تشغيل الكود على الاردوينو أول مرة .
    دالة (pinMode(Led,OUTPUT تحمل بداخلها متغيرين الاول يشير إلى رقم المنفذ (في هذا المثال إستخدمنا متغير Led والذي يشير إلى منفذ رقم 7 )والاخر يحدد نوعه (INPUT أو OUTPUT)  
    INPUT :في حالة إن الجهاز الاخر يرسل أمر أو إشارة إلى الاردوينو (مثل مفتاح الضغط (push Button)) .
    OUTPUT:عندما يتم إرسال أمر أو إشارة من الأردوينو إلى الاجهزة الاخرى مثل (اللمبة الصغير ) .
    وللتوضيح الصورة بشكل أكبر , عندما يتحدث شخص أخر إليك يكون الصوت هو الإشارة أو الامر ,
    ويكون فم الشخص الاخر (OUTPUT- المخرج ) لانه مصدر الصوت ,وتكون إذنك هي (INPUT- المدخل ) لانها تستقبل الصوت.
    void loop() { digitalWrite(Led,HIGH); delay(1000); digitalWrite(Led,LOW); delay(1000); } دالة loop هي الدالة الرئيسية في الاردوينو  وتكرارية أي تتكرر في كل وقت (في حالة توصيل الاردوينو بالطاقة ) , وفي هذا الدرس عملها يقوم على  تشغيل اللمبة لمدة ثانية و إطفاها لمدة ثانية وتكرر العملية .
    دالة (digitalWrite(Led,HIGH يتم من خلالها تشغيل المنفذ أو إيقافه . يتم إرسال إليها متغيرين الاول يشير إلى المنفذ والاخر أيقاف أو تشغيل المنفذ (HIGH أو LOW ). 
    HIGH :لتشغيل المنفذ . 
    LOW :لإيقاف المنفذ .
    دالة (delay(1000 : تحمل متغير واحد ويكون عدد صحيح ويشير إلى  زمن التاخير .
    في هذا المثال تم إرسال 1000 مللي ثانية وهذا ما يعادل ثانية واحدة .
    في حالة تعديل المثال إلى دقيقة واحدة : 1000*60 =60000 مللي ثانية تشير إلى دقيقة واحدة 
     
    في حالة لم يتضح لك نقطة في هذا الدرس ,
    أو للـ الاسئلة والاستفسار أو للشكر 
    إترك تعليق وسوف يتم الرد عليك
     
    هذه الدروس ضمن سلسلة الاردوينو (Waduino) يمكن الاستفادة من الدروس السابقة من هنا

    وإلى إن نراكم في الدرس القادم إن شاء الله
    مستوى المقال: متوسط
  12. السلام عليكم ورحمة الله وبركاته 
    أولا : أبارك لكم حلول شهر رمضان المبارك وتقبل الله القيام والصيام منا ومنكم .
     
    في هذا الدرس سوف نتعرف على البيئة التطويرية الخاصة بالإردوينو .
    كما تحدثنا في

    بأن أحد مميزات الاردوينو هي القدرة على برمجتها بعدة لغات , ولكن في هذه السلسلة سوف نتعلم على برمجة الاردوينو بواسطة لغة Arduino c حيث تتميز ببساطتها (حيث الاسم أعقد من اللغة  ).
    وللبرمجة بهذا اللغة نحتاج إلى تنزيل برنامج Arduino IDE حيث يمكن تنزيله من  موقع الاردوينو الرسمي ,  
    يتميز البرنامج بواجهة بسيطة وسهل الاستخدام ويوفر إمكانية كتابة ورفع الكود إلى الاردوينو .
    خطوات تحويل لغة البرنامج إلى اللغة العربية :
    عند بداية تشغيل البرنامج سيكون البرنامج باللغة الأنجليزية (غالبا)  :
     

     
    وخطوات تعريب البرنامج كالتالي :
    الخطوة الاولى : نقوم بالضغط على File ومن القائمة المنسدلة نختار Preferences :
     

     
    الخطوة الثانية : بعد الخطوة الاولى تظهر لنا عدة خيارات نختار منها Editor language ثم نختار اللغة العربية :
     

     
    نحتاج إلى إعادة تشغيل البرنامج لكي يظهر باللغة العربية .
     
    ربط الاردوينو مع البرنامج :
      لربط الاردوينو مع البرنامج نحتاج إلى 3 خطوات فقط :
    الخطوة الأولى :  نحتاج إلى توصيل الاردوينو بالكمبيوتر وذلك عبر الكبيل الخاص بها .
    حيث سيتم التعرف على الاردوينو تلقائيا (يجب تثبيت Arduino IDE مسبقا) .
    الخطوة الثانية :نذهب إلى خيار أدوات -> لوحة -> ثم تختار نوع الاردوينو الخاص بك :
     

     
    الخطوة الثانية : نقوم أيضا بإختيار أدوات -> المنفذ -> نختار المنفذ الذي تم توصيل الاردوينو بالكمبيوتر من خلاله
     
     
     
     في هذا الشرح تم توصيل الاردوينو من نوع أونو بالكمبيوتر عبر المنفذ الرابع :
     

     
    شرح شريط المهام :
     

     
    وإلى هنا نصل إلى ختام الدرس الاول من سلسة Waduino لبرمجة الاردوينو .
    في الدرس القادم سوف نقوم بعمل مشروع تشغيل لمبة صغيرة عن طريق الاردوينو . 
    مستوى المقال: مبتدئ

عالم البرمجة

عالم البرمجة مقالات برمجة و دورات مجانية لإحتراف البرمجة هدفنا تبسيط البرمجة ونشرها بيد الكل بشكل ممتع ومتطور ومحدث بإستمرار لمواكبة جديد تطورات البرمجة الحديثة و المتقدمة بدون مقابل