الأجزاء الرئيسية
العربية الإنجليزية الفرنسية |
الكمية |
القيمة أو الصيغة |
مقاومة Resistor Resistance |
2 |
220 أوم |
2 |
10 كيلوأوم |
|
حساس الحركة PIR- Pyroelectric Infrared Sensor |
2 |
هو عبارة عن مستشعر للأشعة تحت الحمراء |
محرك سيرفو Servo Motor |
1 |
|
صمام ضوئي LED |
2 |
|
بطاقة أوردوينو Arduino |
1 |
Deumilanove-w/ATMEGA328 |
لوحة تجميع مكونات كهربية Breadboard |
1 |
|
جسر Jumper Cavalier |
على حسبك |
|
مصدر كهربائي |
|
بطارية 9 فولط أو خذ الطاقة من بطاقة أردوينو مباشرة |
تقديم
سنقوم باستخدام حساسين يعملان بالأشعة تحت الحمراء (PIR) وتوصيلهما ببطاقة أردوينو للشعور بالحركة سواء من اليمين أو اليسار. والنتيجة ستكون إضاءة صمام ضوئي صغير يمثل كل حساس. ومن الممكن أيضا تركيب محرك صغير بحيث يدور لليمين أو اليسار لتحديد المرور بجوار أي حساس.
يمكننا استخدام حساس واحد فقط بدل من اثنين. وعلى كل حال،فـهذا مشروع للمبتدئين فنحن لن نستطيع تحديد السرعة والإتجاه ولكنه بداية لفعل ذلك. |
عمل الدارة الكهربائية
سترى الآن أنها مجرد بضع أسلاك ليس أكثر. ضع المقاومة 220 أوم بين موجب الصمام الضوئي (الـقطب الطويل) وبين بطاقة أردوينو. صل الحساس ببطاقة أردوينو بالطرف الآخر للمقاومة 10 كـيلوأوم كما هو موضح بالصور. |
|
البرمجة
قم بنقله إلى البرنامج كما هو إلا إذا أردت عمل تعديلات فيه طبعا. |
/********************************************** سنتحكم بحساس على اليمين وآخر على اليسار عندما يتم تنشيط الحساس الأيمن فإن صمامه الضوئي يشتعل ويتحرك المحرك السيرفو حتى لا يتم التقاط أي حركة. ويحدث نفس الشيء بالنسبة للحساس الأيسر. إذا قام الحساسان معا بالتقاط الحركة فهذا يعني أن الجسم المتحرك يقع في المجال بينهما **************************************************************************/
// http://www.arduino.cc/playground/ComponentLib/Servo بالنسبة لمكتبة السيرفو فيمكنك الحصول عليها من هنا
#include <....> //أكتب إسم المكتبة مكان النقاط
Servo myservo; // ننشئ متغيرا للمحرك سيرفو int pos =0; // متغير لحفظ زاوية السيرفو بالدرجة int pinPIRleft =4; // المربط الرقمي 4 يمثل الحساس الأيسر int pinLEDleft =8; // المربط الرقمي 8 يمثل الصمام الضوئي int pinPIRright =2; // المربط الرقمي 2 يمثل الحساس الأيسر int pinLEDright =10; // المربط الرقمي 10 يمثل الصمام الضوئي
void setup() { pinMode(pinLEDleft, OUTPUT); // نجعل الصمامين الضوئين كمخرجين pinMode(pinLEDright, OUTPUT); pinMode(pinPIRleft, INPUT); // نجعل الحساسين كمدخلين pinMode(pinPIRright, INPUT); myservo.attach(9); // نربط المحرك بالمربط الرقمي 9 }
void loop() { if(digitalRead(pinPIRleft)== LOW) // إذا حدد الحساس الأيسر الحركة { digitalWrite(pinLEDleft, HIGH); // أشعل صمامه الضوئي
// إذا كانت الزاوية أقل من 180 درجة وأن الحساس الأيمن غير مفعل فنقوم إذن بتشغيل المحرك سيرفو if ((pos < 180) && (digitalRead(pinPIRright) == HIGH)) { pos +=1; // نزد في زاوية المحرك بواحد myservo.write(pos); // إرسال الأمر بتحريك السيرفو نحو الزاوية الجديدة delay(15); } } else { digitalWrite(pinLEDleft, LOW); // وإلا فسنقم بإيقاف الصمام الضوئي ولا حركة أيضا }
if (digitalRead(pinPIRright) == LOW) { digitalWrite(pinLEDright, HIGH); if ((pos >= 1) && (digitalRead(pinPIRleft) == HIGH)) { pos -= 1; myservo.write(pos); delay(15); } } else { digitalWrite(pinLEDright, LOW); }
if ((digitalRead(pinPIRleft) == LOW) && (digitalRead(pinPIRright) == LOW)) { // نفس الشيء أعلاه بالنسبة للحساس الأيمن } |
في النهاية
يمكنك بالنهاية وضع حساس ثالث زيادة وتطوير المشروع إذا اردت. |
تأليف
تأليف: Lucky Larry
ترجمة بتصرف: عبد الله سعد عبد الستار فراج (الجيزة – مصر)
{jumi [*3]}
المراجع
http://luckylarry.co.uk/arduino-projects/arduino-very-basic-motion-tracking-with-2-pir-sensors/