مقدمة
في هذا الدرس ستتعلم برمجة الأردوينو لتتمكن من التحكم التلقائي بالضوء بحيث تعمل مصابيح المحيط عند تواجد أشخاص ضمن المحيط وذلك عن طريق استخدام حساس الحركة (PIR Sensor) للكشف عن أي حركة في المحيط، وسيتم تشغيل المصابيح باستخدام المرحل (Relay) الذي يتحكم بمرور التيار الكهربائي.
المواد والأدوات
X1 حساس الحركة (pir motion sensor)
X1 لوح تجارب صغير (small size breadboard)
اسلاك توصيل أنثى/ذكر (Jumper Wires Female/male)
اسلاك توصيل ذكر/ذكر (Jumper Wires Male Male)
Light Bulb Socket (غير متوفر بالمتجر)
X1 لمبة 12 فولت (غير متوفر بالمتجر)*
X1 محول طاقة 12 فولت**
*يمكن استخدام 220 فولت (نحن لا نفضل ذلك)
** عند استخدام 220 فولت لن تحتاج لهذا المنتج
في المشاريع او التطبيقات العملية قد نود أن نتحكم بأحمال ذات قدرات عالية High Power باستخدام المتحكم الاصغر Microcontroller . فمثلاً أن نتحكم بإنارة مصباح يعمل على تيار متردد (AC) او تشغيل محركات كهربائية حثية مثل مضخات المياه.
من خلال الاردوينو ,لا يمكننا تشغيل اي حمل ذو استهلاك كبير للطاقة (220v,110v) لأن اقصى جهد يمكن توليده من الاردوينو هو 5 فولت فقط. احد الاجهزة التي لا يمكن للاكترونيات الاستغناء عنها والتي تلعب دور كبير في التحكم بالدرات الكهربائية هو المرحٌل -الريلي-(Relay) .
المرحٌل–Relay
الوظيفة الأولية للمرحل هي فصل دوائر التحكم عن دوائر القدرة، لقيادة تيار مرتفع انطلاقا من إشارة تحكم ضعيفة نسبيا. وبالتالي عن طريق تطبيق تيار صغير يمكننا تشغيل المرحل للسماح بتدفق التيار الأكبر.
فالمرحل يعمل كعنصر وصل/فصل (ON-OFF switch) لتوصيل التيار الكهربائي للأحمال او فصلها.
في هذا المشروع ,سنقوم باستخدام HL-52S ريلي , يحتوي على ثلاث اقطاب يتم وصلها بمصدر الطاقة ذات الفولتية العالية. القطب الاوسط يشير الحرف C الى كلمة Common والتي تعني مشترك, يشير ان هذا القطب اما ان يكون موصولاً بالقطب (NC) تشير الى Normally Closed والتي تعني مغلق عادةً او (NO) تشير الى Normally Open والتي تعني مفتوح عادةً ،فلذلك سمي بالقطب المشترك.
وعلى الجانب الآخر لدينا مجموعتين من الدبابيس، اول مجموعة تحتوي على 4 دبابيس، دبوس GND الأرض و دبوس الـ Vcc لتزويد الريلي بالطاقة ومدخلين IN1 ,IN2 . والمجموعة الثانية عبارة عن 3 دبابيس، Jumper بين الـ JD-Vccو VCC و دبوس الارض GND
تحذير: يجب وضع الـ Relay على لوح عازل وعدم لمسه من اسفل اللوح الملحوم عليه لأنها قد تكون موصله للتيار الكهربائي بعد وصله بالجهد العالي.
انتبه:
قبل ان نبدأ بتوصيل الدائرة، ينبغي تحذيرك ، أن هذا المشروع يتطلب توصيل تيار متردد (AC – 220V) ،هذا التيار خطير و يجب التعامل معه بحذر شديد. لا تقم بالتوصيل مالم تكن على دراية كاملة بما تفعل او اطلب مساعدة من شخص ذو خبرة في هذا المجال.
اذا استخدم بطريقة غير صحيحة او غير سليمة يمكن ان يؤدي إلى إصابات خطيرة أو وفاة. لذلك يجب الحذر جدا من ما تقومون به لأننا لا نتحمل اي مسؤولية من اي اجراءات تقوم به.
تصميم لوحة التجارب:
قم بتوصيل الدائرة الكهربائية على لوحة التجارب كما هو موضح بالصورة:
قم بتوصيل سلك الطاقة الموجبة الخاص بالريلي بمنفذ ال 5v على لوحة التجارب، وسلك الطاقة السالبة بمنفذ ال Gnd المتواجد على لوحة التجارب. قم بتوصيل سلك الاشارة (IN1) بمنفذ رقم 10 على لوحة الاردوينو.
يمكنك العودة الى الدرس الثامن عشر لمعرفة طريقة التوصيل المتعلق في مستشعر الحركة (PIR Sensor) ، قم بتوصيل سلك الاشارة (Signal) للمستشعر بمنفذ رقم 9 على لوحة الاردوينو.
اذا كانت الإضاءة 12 فولت استخدم المحول اذا كانت الاضاءة 220 يمكن توصله مباشرة بدون محول
تنبيه :
– قد تختلف طرق توصيل مستشعر الحركة بلوحة الارديونو بناءً على نوع المستشعر، الرجاء تفقد أستمارة البينات لمستشعرك قبل توصيله.
– قد تختلف طرق توصيل الريلي بلوحة الاردوينو بناءً على نوع الريلي، الرجاء تفقد وصف البينات للريلي الخاص بك قبل توصيله.
– اذا كنت تملك نوع اخر من انواع الريلي الذي لا يكون ملحوم على دارة، فاللأسف لا يمكنك توصيله بشكل مباشر بالارديونو.
– اي توصيل خاطئ قد يؤدي الى تلف المتحكم الدقيق للوحة الاردوينو.
البرمجة:
يقوم الاردوينو بإنتظار إشارة من مستشعر الحركةMotion PIR sensor ، وفور حصولة على اشارة من المسشتعر تشير لوجود تحرك، يقوم بتفعيل الـ Relay لفتح الإضاءة.
قم بتوصيل الاردوينو بالكمبيوتر، وقم بتحميل البرمجة التالي على الاردوينو:
int Relay=10; int inputPin = 9; // choose the input pin (for PIR sensor) int pirState = LOW; // we start, assuming no motion detected int val = 0; // variable for reading the pin status void setup() { pinMode(inputPin, INPUT); // declare sensor as input pinMode(Relay,OUTPUT); Serial.begin(9600); } void loop(){ val = digitalRead(inputPin); // read input value // Serial.println(val); if (val == HIGH) { digitalWrite(Relay,LOW); Serial.println(val);// check if the input is HIGH if (pirState == LOW) { Serial.println("Motion detected!"); pirState = HIGH; } delay(2000); } else { digitalWrite(Relay,HIGH); if (pirState == HIGH){ Serial.println("Motion ended!"); pirState = LOW; } delay(2000); } }
لمحة سريعة عن الكود:
لفتح و اغلاق انارة AC يجب تفعيل الـ Relayعن طريق مدخل IN1 . يعمل مدخل IN1 في الـ Relay عكسيا، فيتم تفعيل المرحل (Relay) عند ادخال قيمة (LOW) الى مدخل (IN1)( حسب طريقة صنع الدارة على اللوحة الصغيرة التي يلحم عليها الريلي) .
digitalWrite(Relay,LOW);
يمكنك العودة الى الدرس الثامن عشر لمعرفة شرح الكود المتعلق بحساس الحركة (Motion Sensor).