facebook_pixel

استخدام عصا التحكم joystick مع الاردوينو

خلال هذا المشروع، سنتعلم كيفية استخدام عصا التحكم  Joystick مع الاردوينو. ليتم استخدامها في تطبيقات مختلفة مثل التحكم في حركة الروبوت وتوجيهه، أو في عمل ألعاب الفيديو باستخدام الاردوينو.

استخدام-عصا-التحكم-joystick-مع-الاردوينو

التحكم بالاردوينو من خلال windows 10

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

windows-remote-arduino-experience

القطع المطلوبة:

الأدوات التي تحتاجها لهذا المشروع :

(Bluetooth Module(HC-06

Diffused RGB 5mm LED

RGB 5mm LED

220 Ω resistor

مقاومة 220 اوم

potentiometer 10k

Potentiometer 10K Ω

Half-size Breadboard

 لوح تجارب حجم متوسط (Half size breadboard)

arduino uno r3

Arduino Uno R3

Female-Male Jumper Wires

 اسلاك توصيل أنثى/ذكر (Jumper Wires Female/male)

Jumper Wires Male/Male

سلاك توصيل ذكر/ذكر (Jumper Wires Male Male)

ما هو Windows Remote Arduino وماذا يمكنك أن تفعل من خلاله؟

windows Remote Arduino  هي مكتبة ويندوز مفتوحة المصدر التي تسمح لأي جهاز ويندوز 10 -سواء كان هاتف ويندوز أو جهاز كمبيوتر أو حتى راسبيري باي 2 – التحكم بالاردوينو عن بعد.
تمكن المكتبة للمطورين من دمج أجهزة الاستشعار الخاصة بالاردوينو في مشاريع windows  الخاصة بهم . يمكنك العثور على المكتبة الخاصة لـ Windowd Remote Arduino  على الصفحة هنـا.

Windows Remote Arduino قادرة على التحكم بالوظائف التالية للأردوينو:
1- المداخل و المخارج الرقمية و التناظرية.
– الكتابة الرقمية.
– قراءة رقمية.
– الكتابة التناظرية (PWM).
– قراءة تناظرية.
– تعيين Pin Mode.
– تلقي الإشارات في حالة تم تغيير قيم الـ pins .
2- إرسال و إستقبال البيانات بين جهازين عبر I2C .

windows-remote-arduino-experience

للمستخدمين المتقدمين، تتيح Windows Remote Arduino  أوامر مخصصة عبر Firmata SysEx – يمكن الإطلاع على مزيد من المعلومات هنـا.

تصميم لوحة التجارب:

قم بتوصيل لوح التجارب كما هو موضح بالصورة :

windows-remote-arduino-experience

يمكنك الاطلاع على الدرس الرابع لمعرفة طريقة توصيل الـ RGB LED.

لتبدأ التحكم بالأردوينو بإستخدام التطبيق Windows Arduino Experience ، قم بإتباع الخطوات الثلاثة :
1- تهيئة الاردوينو.
2- تهيئة جهاز Windows 10.
3- إجراء عملية الإتصال و التحكم .

تهيئة الأردوينو:

قم بتنزيل مكتبة “Arduino Firmata ” قم بإتباع الخطوات التالية :
إذهب إلى الشيفرة البرمجية (Sketch menu) / إدراج مكتبة (Include Library)  /  إدارة المكتبات (Manage Library)  ثم قم بالبحث عن “ “Firmataو قم بتنزيل أخر إصدار للمكتبة.
الآن قم بفتح   “StandardFirmata”من ملف (File) / أمثلة StandardFirmata / Firmata /  Examples   .

قم بالعديل baud rate على الكود

ثم قم برفع الكود على الأردوينو.

تهيئة جهاز الويندوز :

لتنزيل تطبيق Windows Remote Arduino Experience من هنـا.

قم بتفعيل البلوتوث على جهازك ثم قم بالاقتران الى البلوتوث عن طريق ادخال كلمة المرور الافتراضية  1234 او   0000.

windows-remote-arduino-experience

إجراء عملية الإ تصال و التحكم :

قم بفتح تطبيق windows ، بمجرد اختيار الاعدادات الصحيحة ، قم بإختيار البلوتوث HC-06 ثم انقر فوق  “Connect” للإتصال بالاردوينو عن بعد.

windows-remote-arduino-experience

قم بالتحكم بالـ RGB LED من خلال نافذة PWM :

windows-remote-arduino-experience

كما يمكنك قراءة القيم التناظرية للمقاومة المتغيرة عبر النافذة Analog :

windows-remote-arduino-experience

نظام انذار الحريق

أنظمة الكشف عن الحريق تلعب دورا هاما في الحماية و السلامة من الحرائق. في هذا المشروع، سنقوم ببناء نظام إنذار الحريق بإستخدام الأردوينو و مستشعر كاشف اللهب.

arduino-fire-alarm-system

القطع المطلوبة:

الأدوات التي تحتاجها لهذا المشروع :

flame sensor

حساس كاشف اللهب (Flame Sensor)

Piezo sounder

Piezo sounder

small size breadboard 170 colors

  لوح تجارب صغير (small size breadboard)

arduino uno r3

Arduino Uno R3

Jumper Wires Male/Male

 اسلاك توصيل ذكر/ذكر (Jumper Wires Male Male)

Female-Male Jumper Wires

 اسلاك توصيل أنثى/ذكر (Jumper Wires Female/male)

في هذا المشروع، نحن بحاجة إلى جهاز إستشعار الأشعة تحت الحمراء استنادا على مستشعر اللهب (Flame Sensor) للكشف عن ضوء النار، و إعطاء إشارة إلى الاردوينو لتفعيل جهاز الإنذار (Buzzer) .
هناك نوعان من أجهزة استشعار اللهب إما رقمية أو تناظرية، ولكن يوجد بعض الأجهزة تحتوي على النوعين (رقمية و تناظرية) .

arduino-fire-alarm-system

زاوية الرؤية:
زاوية الرؤية 60 درجة، و بالتالي فإنة توجية رؤية المستشعر أمر مهم للغاية في تصاميم المشاريع الخاصة بك.

arduino-fire-alarm-system

الطول الموجي لمستشعر اللهب:
وحدة مستشعر اللهب لها قدرة بالكشف عن الموجات من 760nm إلى 1100nm .

ملاحظة : يتم إستخدام مستشعر اللهب للكشف عن الحريق دون أي حماية للمستشعر من الحريق، يرجى ترك مسافة بينه وبين النار لتجنب أي ضرر.

تصميم لوحة التجارب:

قم بتوصيل الدائرة كما هو موضح بالصورة التالية :

arduino-fire-alarm-system

برمجة الأردوينو

قم برفع البرنامج التالي إلى متحكم الأردوينو:

لمحة عن الكود:

في جزء الـ Loop يتم بإستمرار قراءة  قيمة مستشعر اللهب :

إذا كانت القيمة تساوي LOW سيتم تفعيل جهاز الإنذار و عكس ذلك يتم إلغاء التفعيل :

التحقق من عملية الكشف عن اللهب و ضبط الحساسية :

قم بفتح النافذة التسلسلية (Serial Monitor) على برنامج الأردوينو الخاص بك . قم بتشغيل نار على بعد مسافة من المستشعر ، سوف تلاحظ التغييرعلى النافذة التسلسلية كما هو موضح بالصورة أدناه. في حالة الكشف عن الحريق ستلاحظ تشغيل LED   مؤشر الحريق ، وإذا تم غير ذلك قم بضبط الحساسية للمستشعر.

arduino-fire-alarm-system

التحكم بالروبوت عبر الهاتف الذكي

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

bluetooth-controlled-robot-car

القطع المطلوبة:

الأدوات التي تحتاجها لهذا المشروع :

4WD Robot Chassis kit

L298 Motor driver

L298 H bridge Module

serial port bluetooth module hc-06

وحدة البلوتوث (HC-06)

battery holder

حامل البطارية

arduino uno r3

Arduino Uno R3

Jumper Wires Male/Male

 اسلاك توصيل ذكر/ذكر  (Jumper Wires Male Male)

Female-Male Jumper Wires

 اسلاك توصيل أنثى/ذكر (Jumper Wires Female/male)

 

ما هو الروبوت ؟

الروبوت هو جهاز كهروميكانيكي قادر على التفاعل بطرية أو بأخرى مع بيئته، و اتخاذ قرارات مستقلة أو إجراءات من أجل تحقيق مهنمة محددة.
يتكون الروبوت من العناصر التالية:
1- الهيكل.
2- المشغل الميكانيكي .
3- وحدة التحكم.
4-المدخلات/ الحساسات.
5- امدادات الطاقة.
في الخطوات التالية سنذكر كل عنصر من العناصر المذكورة اعلاه، بحث يمكن أن نفهمها بسهولة.

الهيكل (Structure / Chassis) :

smartphone-controlled-arduino-robot

يتألف الهيكل من المكونات الفزيائية. الروبوت يتكون من مكون او اكثر من المكونات الفزيائية التي تتحركة لتنفيذ مهام معينة. وفي حالتنا هيكل السيارة و العجلات تمثل هيكل الروبوت

المشغل الميكانيكي Actuator :

smartphone-controlled-arduino-robot

المحرك هو جهاز يقوم بتحويل الطاقة (في مجال الروبوت، تكون الطاقة الكهربائية) الى طاقة حركية. تنتج معظم المحركات إما الحركة الدورانية أو الخطية.
في حالتنا المحرك هو(DC Gear motor)  وهو بالاساس عبارة عن محرك  DC مركب مع علبة تروس (gear) تعمل على تقليل سرعة المحرك و زيادة عزم الدورات .

إعداد أطراف المحركات :

قطع اربع قطع من أسلاك (الحمراء و السوداء) مع طول حوالي 5-6 انش. قم بتجريد السلك من العازل في كل نهاية , ثم قم بلحم الأسلاك على المحركات.

smartphone-controlled-arduino-robot

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

تركيب المحرك :

smartphone-controlled-arduino-robot

لاحظ أن الأسلاك على كل محرك تشير الى إتجاه مركز الهيكل.

smartphone-controlled-arduino-robot

قم بضم اثنان من الأسلاك الحمراء و اثنان من الاسلاك السوداء معا على كل جانب من جوانب الهيكل. بعد الانضمام, سيكون لديك اثنان من النهايات على الجانب الايمن و اثنان على الجانب الأيسر.

تثبيت السقف العلوي:

بعد تركيب الاربع محركات في الطابق السفلي، قم بتركيب السقف العلوي. ثم قم بسحب نهايات الاسلاك نحو السطح العلوي.

smartphone-controlled-arduino-robot

هناك حاجة إلى المتحكم (العقل) لتحريك الروبوت من مكان إلى أخر. المتحكم له القدرة على تنفيذ برنامج و يكون مسؤولا عن جميع العمليات الحسابية، واتخاذ القرارات، و الاتصال . في هذا المشروع سيتم استخدام متحكمArduino  كـوحدة تحكم.

يمكنك استخدام وحدة التحكم لدوران المحركات في إتجاه واحد. ولكن اذا كنت تريد أن تكون  قادر على التحكم في المحرك بإتجاهات مختلفة (الأمام ،الخلف، يمين، ويسار) مع لوحة التحكم, فإنك بحاجة إلى مزيد من الدوائر . انت بحاجة إلى H-Bridge.

 L298  H Bridge Module

smartphone-controlled-arduino-robot

H-Bridge، يقوم بتحريك محرك الـ DC بإتجاه الامام و الخلف. وهو يتكون من اربع مفاتيح الكترونية S1,S2,S3,S4  (Transistors / MOSFETS / IGBT).

smartphone-controlled-arduino-robot

الية العمل: انظر للصورة اعلاه لفهم ألية العمل للـ H-Bridge . المفاتيح في نفس الجهة إما (S1,S2) أو  (S3,S4)لا يتم إغلاقهم بنفس الوقت , سيتم حدوث ماس كهربائي .
H-bridge توفر لك دائرة متكاملة، أو يمكنك أن تقوم ببناء الدائرة بنفسك عن طريق إستخدام اربع Transistor او MOSFETs. في هذا المشروع سيتم استخدام  L298 H-bridge Module الذي يمكن من خلاله التحكم في سرعة واتجاه المحركات.

وصف مداخل و مخراج الـ L298H-bridge Module : 

smartphone-controlled-arduino-robot

توصيل الأسلاك الكهربائية

قم بتوصيل الأسلاك الحمراء للمحركين على كل جهة معا و الأسلاك السوداء معا.

smartphone-controlled-arduino-robot

MOTOR A هو المسؤول عن المحركات على الجانب الأيمن, وفي المقابل يتم ربط المحركات على الجانب الايسر للـ MOTOR B.

اتبع التعليمات التالية ليتم توصيل كل شي :

smartphone-controlled-arduino-robot
يمكنك العودة لمشروع نظام التحكم في الإضاءة عبر البلوتوث للإطلاع على الشرح المتعلق بوحدة البلوتوث .

برمجة الأردوينو

في الكود البرمجي سنقوم بمراجعة البيانات الواردة وتنفيذ عملية المقارنة ، اذا كانت البيانات المستقبلة من الهاتف الذكي F يتم تحريك الروبوت للأمام و إذا كانت B يتم تحريكه للخلف و اذا كانت R  يتم تغير حركة لليمين و L  للتحرك لليسار. ويتم إيقافة إذا كانت البيانات المستقبلة 0 .

قم برفع البرنامج التالي إلى متحكم الأردوينو:

 شرح الكود :

أولا لفعم الية العمل قم بالاطلاع على الجدول التالي. هو مفيد جدا أثناء كتابة التعليمات البرمجي :

smartphone-controlled-arduino-robot

في قسم الـ Loop يتم قراءة البيانات التي تم إرسالها من قبل الهاتف الذكي ثم يتم التحقق منها. فمثلا إذا كانت حرف “F” يتم إستدعاء الدالة Forward()ليتم تحريك الروبوت إلى الأمام ،وإذا كات حرف “B” يتم إستدعاء الدالة backward() ليتم تحريك الروبوت للخلف.

نقوم بإنشاء الدالة Forward() , Backward() , Right(),Left() لتحكم في إتجاهات الروبوت.
و الدالة Stop1() لإيقاف حركة الروبوت

تطبيق الاندرويد

في هذا المشروع لن يتم تغطية طريقة برمجة تطبيق الاندرويد , يمكنك تحميل البرنامج من هنا

كيف يمكن استخدام التطبيق؟
1- قم بتنزيل البرنامج من هنا
2- قم بإقتران جهازك مع البلوتوث   HC-06:
– تشغيل البلوتوث HC-06.
– تفحص الجهاز المتوفر .
-يتم الاقتران الى البلوتوث عن طريق ادخال كلمة المرور الافتراضية  1234 او   0000.
3- قم بفتح التطبيق , ثم قم بالضغط على زر الاجهزة المقترنة  ثم قم بإختيار وحدة البلوتوث الخاصة بك (HC-06) .

smartphone-controlled-arduino-robot

قم بالضغط على الأسهم لتغير حركة الروبوت و على زر Stop لإيقاف الحركة .

smartphone-controlled-arduino-robot

التحكم بالـ LED عن طريق التصفيق

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

arduino-sound-detection-sensor

القطع المطلوبة:

الأدوات التي تحتاجها لهذا المشروع :

sound detection sensor

حساس الصوت Sound Detection Sensor

5mm Red LED

220 Ω resistor

مقاومة 220 اوم

small size breadboard 170 colors

small size breadboard  لوح تجارب صغير

arduino uno r3

Arduino Uno R3

Jumper Wires Male/Male

سلاك توصيل ذكر/ذكر (Jumper Wires Male Male)

حساس كاشف الصوت Sound Detection Sensor

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

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

 arduino-microphone

لتكون قادر على الكشف عن الإشارات يجب أن تكون كبيرة بما يكفي، فيجب  تضخيم الإشارة لتكون قابلة للإستخدام من قبل الاردوينو. لذا يجب علينا توصيل الميكروفون إلى مكبر للصوت (amplifier) ، فيتم تضخيم الاشارة ليتم الكشف عنها من قبل للأردوينو. اذا من أجل بناء هذة الدائرة نحن بحاجة إلى ميكروفون يتم توصيله إلى مكبر صوت (audio Amplifier)  للحصول على إشارات مضخمة.

في هذا المشروع سيتم استخدام  sounder detection module للكشف عن الصوت . في هذة اللوحة تم توصيل الميكروفون على مكبر  للصوت (LM939 op amp) ، و ويمكنك ضبط نقطة التحديد (threshold) لمستوى الصوت عن طريق المقاومة المتغيرة (Potentiometer) ، فعد تجاوز الصوت هذة النقطة يتم إضاءة الضوء LED .

الصوة  أدناه توضح التفاصيل للضوابط و المنافذ و المكونات الأساسية للوحة كاشف الصوت :

arduino-sound-detection-sensor

تصميم لوحة التجارب:

قم بتوصيل الدائرة كما هو موضح بالصورة التالية :

arduino-sound-detection-sensor

برمجة الأردوينو

قم برفع البرنامج التالي إلى متحكم الأردوينو:

لمحة عن الكود:

اولا نقوم بقراءة مستشعر كاشف الصوت واذا تم الكشف عن صوت  يتم تشغيل الـ LED

واذا تم الكشف عن صوت للمرة الثانية يتم التحقق ما اذا كان الـ  LED في حالة التشغيل أو الإيقاف، فإذا كان في حالة التشغيل يتم إطفاءه :

نظام حماية الخزنة

كما نعلم جميعا أن أنظمة الأمان و الحماية من أهم متطلبات العصر، في هذا المشروع ستتعلم كيفية عمل نظام الحماية و الإنذار من خلال استخدام الاردوينو.

security-alarm-system-project

القطع المطلوبة:

الأدوات التي تحتاجها لهذا المشروع :

matrix keypad 4x4

Matrix Keypad 4×4

 مستشعر الموجات فوق الصوتية (Ultrasonic Sensor HC-SR04)

Piezo sounder

Piezo sounder

HD44780

LCD 16×2 شاشة

potentiometer 10k

Potentiometer 10K Ω

220 Ω resistor

مقاومة 220 اوم

Full size breadboard 830

  لوح تجارب كبير (Full size breadboard)

arduino uno r3

Arduino Uno R3

Jumper Wires Male/Male

 اسلاك توصيل ذكر/ذكر (Jumper Wires Male Male)

نظرة عامة

لتفعيل نظام الحماية  في البداية يتم تفعيل أنظمة الانذار بعد 10 ثواني من الضغط على الزر A. وللكشف عن الأجسام يتم استخدام جهاز استشعار الموجات فوق الصوتية (Ultrasonic Sensor) ، في حال الكشف عن وجود جسم قريب يبدأ تفعيل صفارة الانذار (Buzzer) . ولإيقاف صفارة الانذار أنت بحاجة لادخال كلمة المرور المكونة من 4 أرقام ثم الضغط على زر النجمة للتحقق ما اذا كانت الكلمة المدخلة صحيحة او لا . تم وضع كلمة السر الحالية  1234 ولكن لديك ايضا امكانية تغيرها.

security-alarm-system-project

عن طريق الضغط على زر B سيتم الدخول على قائمة تغيير كلمة المرور ، أولا انت بحاجة إلى إدخال كلمة المرور الحالية من أجل المواصلة في إجراءات تغير كلمة المرور، ومن ثم يطلب منك النظام إدخال كلمة المرور الجديدة مكونة من اربع أرقام .

security-alarm-system-project

في حال تغيير كلمة المرور, اذا تم تفعيل الانذار سوف تكون قادر على إيقافة عن طريق إدخال كلمة المرور الجديدة فقط. إذا تم إدخال كلمة مرور خاطئة ستظهر رسالة تسمع بإعادة المحاولة.

 

لوحة المفاتيح Keypad

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

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

security-alarm-system-project

لوحة المفاتيح 4×4  تتكون من 8-Pins  ، أربعة منهم للصفوف و أربعة منهم للأعمدة . كل زر بالواقع عبارة عن مفتاح (Push button)عند الضغط يتم التوصيل بين الصف و العامود.

security-alarm-system-project

على سبيل المثال : اذا وضع على الصف الأول  (Row 1قيمة LOW) ، وجميع الأعمدة قيمة HIGH ، عندما يتم الضغط على الزر الثالث ، سيتم التوصيل بين الصف الأول والعامود الثالث فسوف تصبح قيمة العامود الثالث LOW، وبالتالي يمكننا معرفة الزر الذي تم الضغط عليه.

تصميم لوح التجارب

قم بتوصيل الدائرة الكهربائية للوحة المفاتيح كما هو موضح بالصورة :

security-alarm-system-project

توصيل لوحة المفاتيح :

الأردوينولوحة المفاتيح
Pin A0 الصف الأول
Pin A1الصف الثاني
Pin 6الصف الثالث
Pin 7الصف الرابع
Pin A5العامود الأول
Pin A4العامود الثاني
Pin A3العامود الثالث
Pin A2العامود الرابع

 قم بإضافة توصيل باقي القطع الإلكترونية كما هو موضح بالصورة التالية :

security-alarm-system-project

توصيل  شاشة الـ LCD :

ArduinoLCD
Pin 12RS pin
Pin 11Enable pin
Pin 5D4 pin
Pin 4D5 pin
Pin 3D6 pin
Pin 2D7 pin
توصيل حساس الموجات فوق الصوتية (Ultrasonic Sensor) :
Ultrasonic SensorArduino
VCC+5V
TrigPin 10
EchoPin 9
GroundGND
توصيل Buzzer:
BuzzerArduino
Shorter leadGND
Longer leadPin 8

الكود البرمجي للأردوينو

لفهم الكود بشكل أفضل ، سيتم شرح الكود على أقسام وفي النهاية سأقوم بوضع الكود الكامل.

قم بتنزيل المكتبة الخاصة بلوحة المفاتيح KeyPad من هنـا او من خلال الرابط المباشر هنـا .

أولا نحن بحاجة الى مكتبة الـ LCD   و مكتبة لوحة المفاتيح. ثم تحديد و تعريف المتغيرات لدبابيس جهاز الانذار  (Buzzer)و جهاز استشعار الموجات فوق الصوتية  (Ultrasonic)، و تعريف بعض المتغيرات اللازمة لهذا المشروع.

في قسم الأعداد (setup)، نحن بحاجة لتهيئة الـ LCD وتحديد ما اذا كان الـ Pin الخاص بالمستشعر و جهاز الانذار مدخل او مخرج .

في القسم Loop، نحن أولا بحاجة للتحقق ما اذا تم تفعيل أنظمة الانذار او لا. فإذا لم يتم التفعيل ، سيتم ظهور القائمة الرئيسية على شاشة الـ LCD التي تقدم خيارين ، خيار A لتفعيل الانذار وخيار B لتغير كلمة المرور.
ثم استخدام ()myKeypad.getKey لقراءة الزر الذي تم الضغط عليه من لوحة المفاتيح ، اذا تم الضغط على زر A ، يتم تفعيل جهاز الانذار لمدة200 milliseconds و تصبح قيمة المتغير activeAlarm =true.

في حالة تم الضغط على زر A يتم تفعيل الانذار و يتم طباعة الرسالة “Alarm will be activated in” على شاشة الـ LCD و عن طريق استخدام while loop يتم انشاء عداد تنازلي لمدة 9 ثواني قبل تفعيل الانذار .
ثم يتم ظهور الرسالة “Alarm Activated ” على الشاشة ويتم حساب المسافة الأولية بين نظام الامن (بإستخدام حساس الموجات فوق الصوتية ) و اي جسم امامه .

في الخطوة التالية يقوم جهاز استشعار الموجات فوق الصوتية بالتحقق باستمرار ما إذا كانت المسافة المقاسة حاليا أصغر من المسافة الأولية ، فهذا يدل على وجود كائن اما جهاز الاستشعار فيتم تفعيل الانذار. يتم استخدام الدالة ()tone لتفعيل الـ Buzzer و ثم استدعاء الدالة ()enterPassword .

()enterPassword  هذة الدالة تقوم بطباعة رسالة على الشاشة توضح بها أن جهاز الانذار مفعل , وأننا بحاجة إلى إدخال كلمة السر من أجل إيقاف الانذار. وبإستخدام الـ while Loop سيتم التحقق باستمرار ما اذا تم ضغط زر على لوحة المفاتيح ، وكل زر يتم ضغطة يتم اضافته إلى متغير tempPassword. اذا تم ادخال اكثر من 4 ارقام او رمز # يتم مسح الادخال القديم و يمكنك اعادة ادخال كلمة المرور.

و من ناحية أخرى إذا تم الضغط على زر النجمة سوف يتم التحقق ما اذا كانت الكلمة المدخلة صحيحة او لا. اذا كانت الكلمة صحيحة سيتم إيقاف الانزار و سيتم الرجوع الى الشاشة الرئيسية على شاشة الـ LCD. واذا تم ادخال كلمة مرور خاطئة يتم ظهور الرسالة (!Wrong! Try Again) و سيكون لدينا محاولة لإدخال كلمة المرور الصحيحة مرة أخرى .
لتغير كلمة المرور نستخدم طريقة مماثلة . أولا سنحتاج إلى ادخال كلمة المرور الحالية لتكون قادر على تعيين كلمة المرور الجديدة.

الكود التالي هو البرنامج الكامل قم برفعه على الاردوينو:

عرض درجة الحرارة والرطوبة

في هذا المشروع سوف نتعلم كيفية استخدام DHT11 أو جهاز الاستشعار DHT22  مع لوحة الاردوينو لقياس درجة الحرارة و الرطوبة . وسيتم طباعة درجة حرارة الغرفة والرطوبة على شاشة الـ LCD .

temp-humidity-display

القطع المطلوبة:

الأدوات التي تحتاجها لهذا المشروع :

humidity sensor

مستشعر درجة الحرارة و الرطوبة DHT11

HD44780

LCD 16×2 شاشة

potentiometer 10k

Potentiometer 10K Ω

220 Ω resistor

مقاومة 220 اوم

Half-size Breadboard

لوح تجارب حجم متوسط (Half size breadboard )

arduino uno r3

Arduino Uno R3

Jumper Wires Male/Male

 اسلاك توصيل ذكر/ذكر (Jumper Wires Male Male)

حساسات DHT11/DHT22 :

هذه الأجهزة شعبية جدا لهواة الالكترونيات لأنها رخيصة و تقدم أداء رائعة. وفي يلي يتم توضيح المواصفات و الفرق بين هذه الحساسات :
DHT22 هو نسخة أكثر تكلفة لأنها تقدم مواصفات أفضل . مثلا في نطاق قياس درجة الحرارة هو من -40 إلى +125  درجة مئوية مع 0.5 درجة دقة ، في حين  DHT11من 0 الى 50 درجة مئوية مع 2 درجة دقة. أيضا DHT22 لديه نطاق قياس رطوبة أفضل ، من 0 إلى 100% مع 2-5% من الدقة. في حين DHT11  نطاق الرطوبة من 20 الى 90% مع  5% من الدقة.

temp-humidity-display

هناك مواصفتان في DHT11 هي أفضل من DHT22. وهي معدل أخذ العينات (Sampling Rate) في مستشعر DHT11  هي 1Hz او قراءة كل ثانية، في حين  DHT22 معدل أخذ العينات هي 0.5Hz أو قراءة كل 2 ثانية. كما أن DHT11  أصغر حجما.
جهد التشغيل الكهربائي لكل من أجهزة الاستشعار هي 5-3 فولت ، في حين الحد الأقصى للتيار المستخدم عند القياس هو 2.5mA.

هذة الحساسات  تتألف من مستشعر الرطوبة , و NTC  مستشعر درجة الحرارة (أو الثرمستور) و IC على الجانب الخلفي للحساس .

temp-humidity-display

حساسات DHTxx  لديها أربعة دبابيس ، VCC ، GND ، دبوس البيانات (Data Pin)  ودبوس لا يتم استخدامه. مطلوب Pull-up resistor من  5Kالى 10K اوم للحفاظ على خط البيانات و من أجل تمكين الاتصال بين المستشعر و لوحة الاردوينو. هناك بعض الإصدارات من هذه الحساسات التي تأتي مع لوحة جانبية مدمجة مع pull-up resistor و لديها 3 دبابيس.

temp-humidity-display

مبدأ عمل DHT11 :

في هذا المشروع سنقوم بإستخدام المستشعر DHT11. بعد توصيل المستشعر إلى المتحكم، يقوم المتحكم MCU بإرسال نبضة بدء (Start signal ) للحساس لينقله من وضع الأستعداد إلى وضع التشغيل و بعد اكتمال وصول النبضه إلى الحساس و استجابته لهذه النبضة ، يرسل الحساس موجه تضم 40 Bit تضم اشارات الحرارة و الرطوبة إلى المتحكم الذي يقوم بدوره بمعالجتها و إظهار النتائج .

temp-humidity-display

تصميم لوح التجارب

 قم بتوصيل الدائرة الكهربائية للمستشعر كما هو موضح بالصورة :

temp-humidity-display

ثم قم بإضافة  LCD  ويتم توصيلها كما هو موضح بالصورة التالية :

temp-humidity-display

في هذا المشروع سيتم توصيل الشاشة كالتالي :

ArduinoLCD
Pin 12RS pin
Pin 11Enable pin
Pin 5D4 pin
Pin 4D5 pin
Pin 3D6 pin
Pin 2D7 pin

يمكنك العودة إلى الدرس الثاني عشر للإطلاع على طريقة توصيل باقي المنافذ على شاشة الـ LCD .

الكود البرمجي للأردوينو

أولا نحن بحاجة إلى تثبيت مكتبة الـDHT  التي يمكنك تنزيلها من  هنا أو من الموقع الرسمي اردوينو هنا. ثم يتم تحديد رقم المنفذ لقراءة البيانات من المستشعر.

ثم قم برفع البرنامج التالي على الاردوينو:

لمحة عن الكود :

سيتم استخدام الدالة ()read11 ليتم قراءة البيانات من المستشعر

 ثم الحصول على قيم درجة الحرارة و الرطوبة و يتم وضع القيم في متغيرات.

الرسم على شاشة LCD

يمكن عرض جميع الرسائل المكونة من الحروف الانجليزية والأرقام ورموز خاصة مثل ( علامات الترقيم، الرموز الرياضية) وكذلك بعض الاحرف اليابانية و اليونانية على شاشة الـ LCD . ولكن كيف يمكننا عرض الحروف العربية أو رموز الخاصة بك على الشاشة ؟!

في هذا المشروع سنقوم بكتابة كلمات باللغة العربية و رسم رموز مخصصة عن طريق الرسم على شاشة LCD.

custom-characters-on-lcd

القطع المطلوبة:

الأدوات التي تحتاجها لهذا المشروع :

HD44780

LCD 16×2 شاشة

potentiometer 10k

Potentiometer 10K Ω

220 Ω resistor

مقاومة 220 اوم

Half-size Breadboard

لوح تجارب حجم متوسط (Half size breadboard )

arduino uno r3

Arduino Uno R3

Jumper Wires Male/Male

 اسلاك توصيل ذكر/ذكر (Jumper Wires Male Male)

طباعة الحروف العربية او الرموز الخاصة بك على شاشة العرض LCD ليس من الصعب جدا، يتطلب ذلك معرفة CG-RAM لشاشة LCD .

 ذاكرة CG-RAM

CG-RAM هي العنصر الأساسي لإنشاء الرسومات و الاحرف الخاصة بك . حيث تقوم بتخزين الرسومات التي تم إنشاءها بمجرد اعلانها بالكود .
– حجم ذاكرة CG-RAM هو 64 بايت(64-byte) . ولذلك يمكنك تشكيل 8 احرف في وقت واحد، وكل حرف يتكون من  8 بايت (8-Byte)  . ثمانية احرف كل منها 8بايت (8-characters* 8-byte) تساوي 64-Byte .
– يبدأ عنوان الذاكرة CG-RAM من (0x40 Hex (64 decimal.

سنقوم بإنشاء الاحرف العربية او رسومات على هذه الذاكرة. بمجرد إنشاء هذة الاحرف يمكننا عرضها على شاشة LCD  في اي وقت عن طريق ارسل امر معين الى شاشة  الـ LCD .

في الجدول التالي يتم توضيح عناوين الاحرف و الرسومات التي سيتم إنشاءها  وأوامر الطباعة الخاصة بهم:

custom-characters-on-lcd

في الجدول اعلاه ستلاحظ العنوان الذي سيبدأ به كل رمز خاصة بك مع امر الطباعة الخاص به. مثلا اول حرف يتم انشاؤه وتخزينة على الموقع من 0x40 الى 0x47 في الذاكرة،  ثم يتم طباعته على شاشة الـ LCD  بواسطة ارسال الامر 0 الى شاشة الـ LCD. والحرف الثاني تبدأ تخزينة من الموقع 0x48 الى 0x4F ويتم طباعتة من خلال ارسل الامر 1 الى الشاشة.

custom-characters-on-lcd

كيف يتم إنشاء أحرف مخصصة في  CG-RAM

يتم تشكيل كل حرف او رمز على الشاشة في مصفوفة تكون ابعادها 8×5. حيث ان 5 تمثل عدد الاعمدة و 8 تمثل عدد الصفوف.

custom-characters-on-lcd

اولا: قم برسم مصفوفة 8*5 بكسل، ثم قم برسم الرمز او الحرف الخاص بك في داخل المصفوفة، ثم قم بوضع على كل خلية ملون قيمة 1 , و قيمة صفر على الباقي.

custom-characters-on-lcd

ثانيا: قم بتحويل تلك المصفوفة الى 8-Bytes.

custom-characters-on-lcd

تصميم لوح التجارب

قم بتوصيل الدائرة الكهربائية على لوحة التجارب كما هو موضح بالصورة :

custom-characters-on-lcd

توصيل  شاشة الـ LCD :

ArduinoLCD
Pin 12RS pin
Pin 11Enable pin
Pin 5D4 pin
Pin 4D5 pin
Pin 3D6 pin
Pin 2D7 pin

يمكنك العودة إلى الدرس الثاني عشر للإطلاع على طريقة توصيل شاشة الـ LCD .

الكود البرمجي للأردوينو

قم برفع البرنامج التالي على الاردوينو:

شرح الكود :

تم رسم الأحرف داخل مصفوفة و تحويلها الى 8-byte :

custom-characters-on-lcd

يتم استخدام createChar لتشكيل رمز يمكن طباعته على شاشة LCD و تكون ابعادة 8×5 بكسل.

وليتم رسمه على شاشة الـ LCD  يتم استخدام الامر write

بعد رفع الكود البرمجي على لوحة الأردوينو سيتم عرض كلمة مرحبا و رمز على شاشة الـ LCD .

custom-characters-on-lcd

مشروع الرادار الالكتروني

سنقوم في هذا المشروع بعمل نظام بسيط لرصد إحداثيات موقع الأجسام عن طريق صناعة رادار رقمي بإستخدام جهاز مستشعر الموجات فوق الصوتية HC-SR04، ولوحة الأردوينو كمتحكم للنظام . ويتم استخدام جهاز الحاسوب لعرض الواجهة الرسومية.

arduino-radar-project

القطع المطلوبة:

الأدوات التي تحتاجها لهذا المشروع :

 مستشعر الموجات فوق الصوتية (Ultrasonic sensor HC- SR04).

tower pro sg90

محرك سيرفو ( Servo Motor).

arduino uno r3

Arduino Uno R3

Half-size Breadboard

 لوح تجارب حجم متوسط (Half size breadboard)

Jumper Wires Male/Male

 اسلاك توصيل ذكر/ذكر (Jumper Wires Male Male)

Female-Male Jumper Wires

 اسلاك توصيل أنثى/ذكر (Jumper Wires Female/male)

تصميم لوح التجارب

يقوم الاردوينو بالتحكم بزاوية دوران محرك السيرفو(Servo motor) ، لذلك يتم تثبيت حساس الموجات فوق الصوتية على المحرك ليتم قياس المسافة عند تلك الزاوية.

قم بتوصيل الدائرة الكهربائية على لوحة التجارب كما هو موضح بالصورة.

arduino-radar-project

يتحتوي مستشعر الموجات فوق الصوتية على اربع منافذ، منفذ الطاقة  Vcc و منفذ GND و منفذ Trig الذي يتم من خلاله ارسال النبضة, و منفذ Echo الذي يتم من خلاله استقبال صدى النبضة المرسلة من قبل Trig.
يتم توصيل مستشعر الموجات فوق الصوتية بالاردوينو كالتالي:

حساس الموجات فوق الصوتيةلوحة الاردوينو
Vcc5v
GNDGND
TrigPin 10
EchoPin 11

و توصيل محرك السيرفو كالتالي:

لوحة الاردوينومحرك السيرفو
5vالسلك الأحمر
GND السلك الأسود/البني
 Pin 9 السلك الاصفر/البرتقالي

عندما يقوم الاردوينو بتحريك محرك السيرفو بدرجات معينة (و بالتالي يتحرك حساس الموجات الفوق صوتية)  يتم حساب المسافة عند تلك الزاوية. سيتم ارسال هذة البيانات إلى جهاز الحاسوب عبر المنفذ التسلسلي (Serial port)، و بالتالي يقوم الحاسوب باستخدام برنامج لرسم الخريطة البيانية اعتمادا على هذة القيم .

واجهة المستخدم:

Processing IDE، هي بيئة تطوير متكاملة تم بناؤها من أجل الأشخاص المهتمين بالتصميم المرئي والفنون الإلكترونية الأخرى. حيث تمكنك من برمجة الرسوم و الصور المتحركة و تقوم بتحديث الرسومات المعروضه على شاشة الكمبيوتر و الاستجابة لتفاعل المستخدم.

arduino-radar-project

الان نحن بحتاج لعمل برنامج يتم رفعه على الاردوينو الذي من شأنه تمكين التفاعل بين    Arduino IDE  و  IDE Processing.

*يمكنك تنزيل برنامج Processing من هنـا.

الكود البرمجي للأردوينو

قم برفع البرنامج التالي على الاردوينو:

لمحة عن الكود :

يقوم محرك السيرفو بالدوران من 0 إلى 180 درجة  و العكس ، ومن خلاله يقوم مستشعر الموجات فوق الصوتية بالمسح الأرضي و الجوي لما يجري داخل منطقة محدودة وهي ابعد ما يستطيع المستشعر التعامل معه.

دالة for  تقوم بتغير قيمة زاوية الدوران للمحرك :

تقوم الدالة ()AVG اعتمادا على القيم التي يتلقاها حساس الموجات فوق الصوتية بحساب المسافة التي يبعد عنها الجسم عن الحساس :

* يمكنك الاطلاع على مشروع نظام الحسّاسات لاصطفاف السيارة لفهم الكود المتعلق بحساس الموجات فوق الصوتية و حساب المسافة , و الدرس الخامس عشر للاطلاع على شرح الكود المتعلق بمحرك السيرفو.

يتم ارسال قيمة المسافة و الزاوية عند هذة القيمة إلى الحاسوب فيقوم البرنامج  (Processing IDE)  برسم خطوط الرادار باستعمال الدوال المثلثة طبقا للمعلومات المستقبله.

برمجة الواجهة الرسومية

 الحاسوب بعد ارسال قيم الزاوية و المسافة من الاردوينو الى (processing IDE) ، يتم استقبالها بإستخدام دالة ()SerialEvent  .
تقوم ()SerialEvent بقراءة البيانات من المنفذ التسلسلي (serial port) ثم نقوم بوضع قيم الزاوية و المسافة في متغيرات (degree, value). هذة المتغيرات سيتم استخدامها لرسم الرادار، و الخطوط، و الكشف عن الأجسام ، وتغير النصوص .

لعرض البيانات على الشاشة يتم انشاء Arrays  لتخزين القيم الحديثة على newValue Array و عمل تحديث للقيم القديمة على oldValue Array . لأن الموقع اتباعا لحركة  محرك السيرفو يتغير بإستمرار ، فسنفقد البيانات القديمة التي سيتم عرضها على الشاشة.

arduino-radar-project

لرسم الرادار سيتم كتابة الداله ()drawRadar التي تتكون من دوال ()arc و ()line.

arduino-radar-project

ليتم عمل مسح للرادار يتم رسم الخط الذي يتحرك جنب إلى جنب اتباعا لحركة محرك السيرفو بإستخدام الدالة  ()setupSweep  .

تستخدم الدالة  ()setupSweep الدالة ()line التي تستخدم المتغير degree لإعادة رسم الخط لكل درجة.

لإعداد تحديث الأشكال يتم عمل الدالة ()SetupShapes . سنقوم بإستخدام الدالة  For loop للتحرك بين القيم التي تم تخزينها بالـ (Arrays  (newValue, oldValue

لرسم موقع الاجسام التي تم رصدها  ، نقوم بعمل الدالة ()drawObject .التي تستخدم المسافة الملتقطة من مستشعر الموجات فوق الصوتية و بالاشتراك مع الزاوية لرسم الجسم على الرادار.

وللإطلاع على القيم التي تم استقبالها و النصوص تم إنشاء الدالة ()drawText  .

arduino-radar-project

يمكنك تنزيل كود  الـ (Processing) المتعلق بالواجهة الرسومية للرادار من هنـا.

التحكم بإضاءة RGB LED من خلال واجهة رسومية عبر Matlab

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

في هذا المشروع ستتعلم كيفية انشاء واجهة المستخدم الرسومية بإستخدام الماتلاب ، للتحكم في RGB LED المتصل بالاردوينو.

matlab-gui

الماتلاب Matlab

الماتلاب أنسب للمشاريع المعقدة حيث يسمح بالتلاعب حسابيا بالمصفوفات، وبالرسم البياني للتوابع الرياضية، وبتنفيذ الخوارزميات المختلفة، وإنشاء واجهات المستخدم الرسومية، ومعالجة الصور فهي تعالج تخصص تحليل الصور وكتابة خوارزميات لترتيب البكسلات. فهو أكثر فاعلية , و يمكن تنفيذ أوامر الإدخال و الإخراج لحظياً دون الحاجة للبرمجة، الترجمة، التحميل و التنفيذ كل مرة.

سنقوم بإنشاء واجهة للمستخدم باستخدام برنامج الماتلاب (Matlab) للتحكم بالاجهزة المرتبطة بالاردوينو, ليتم ارسال الأوامر من جهاز الحاسوب (Matlab) للأردوينو عبر المنفذ التسلسلي (Serial port).

matlab-gui

تجهيز الأردوينو و إعداد الماتلاب:
1- قم بتحميل برنامج الماتلاب من الرابط هنـا.
2-  قم بتحميل حزمة الدعم للأردوينو من الرابط هنـا : لقراءة, وكتابة, وتحليل بيانات الأجهزة المربوطة مع الاردوينو .

القطع المطلوبة:

الأدوات التي تحتاجها لهذا المشروع :

Diffused RGB 5mm LED

RGB 5mm LED

220 Ω resistor

مقاومة 220 اوم

small size breadboard 170 colors

  لوح تجارب صغير (small size breadboard)

arduino uno r3

Arduino Uno R3

Jumper Wires Male/Male

 اسلاك توصيل ذكر/ذكر  (Jumper Wires Male Male)

 

تصميم لوحة التجارب:

قم بتوصيل الدائرة الكهربائية على لوحة التجارب كما هو موضح بالصورة:

matlab-gui

يمكنك العودة للـدرس الرابع للاطلاع على شرح و تفاصيل اكثر حول RGB LED .

إنشاء الواجهة الرسومية

واجهات المستخدم الرسومية GUI’s في الماتلاب يتم إنشاؤها بواسطة أداة تدعى :
GUIDE : Graphical User Interface Development Environment
هذه الأداة تسمح للمبرمج أن يقوم بتحرير الواجهة الرسومية GUI ،وتنسيقها وإضافة العناصر التي يريدها إلى الواجهة،كما يمكنه  تغيير الخصائص لكل كائن في الواجهة: الإسم،اللون،الحجم،نوع الخط,وغيرها من الخصائص .

على شاشة الاوامر للماتلاب قم بكتابة الأمر : guide

matlab-gui

 

matlab-gui

قم بالضغط على (Blank GUI(Default  الموجودة في علامة التويب (Create New GUI) كما هو مبين بالصورة اعلاه.
ثم  OK ليظهر محرر التخطيط الرسومي للواجهات.

matlab-gui

 

سنقوم بإنشاء ثلاثة Sliders لتتحكم بـ RGB LED عن طريق الواجهة الرسومية.
قم بالضغط على  Slider, ثم قم برسم الشكل على نافذة العمل , كما هو مبين بالشكل التالي :

matlab-gui

انقر نقرا مزدوجا على كلSlider  ليفتح اطار جديد يمكن من خلاله معرفة الخصائص  للعناصر المضافة و تغيرها  مثل تغيير الخلفية.
قم بتحديد القيمة الأكبر و الاقل لكل slider كما هو موضح بالشكل التالي

matlab-gui

في الاردوينو, الجهد على المداخل التناظرية يكون محدود بين 0v-5v .

يمكنك اضافة نص من خلال Static text، و تغير الخصائص المتعلقة بالخط ,و تغير لون خلفية الواجهة.

matlab-gui

قم بحفظ save الشكل  figure كملف،عندما تقوم بحفظه سيتم تقائيا توليد ملفين لهما نفس الإسم لكن ذو لاحقة مختلفة.
Fig file: يحتوي على الواجهة الرسومية  GUI التي قمت بإنشائها.
M-File : يحتوي code التعليمات البرمجية التي تتحكم بتنفيذ وسلوك الواجهة.

الكود البرمجي للواجهة

بعد بحفظ الواجهة الرسومية التي بنيتها بإستخدام الأداة GUIDE ،GUIDE سيقوم بتوليد الكود البرمجي لتعمل الواجهة، يتضمن التوابع الهيكلية التي يمكن للمبرمج أن يُعدّل عليها ويتحكم بتنفيذ وسلوك الواجهة الرسومية.

نقوم بفتح والتعديل على الكود البرمجي للواجهة (rgb.m) كما يلي :

لمحة عن الكود : 

  إنشاء الاتصال

لإنشاء الاتصال بين الماتلاب ولوحة الاردوينو :

او إذا كان لديك أكثر من لوحة ارديونو متصلة قم بتحديد المنفذ و نوع اللوحة كما يلي :

الكتابة على المنافذ :

لتعيين القيمة المتغيرة لكل منفذ( PWM pin) نستخدم الامر:

في هذا المشروع يتم تغير القيمة لكل منفذ اعتمادا على حركة ال Slider ، فتم اضافة الكود التالي لكل Slider كما يلي :

يتم تغير الـ Pin لكل Slider اعتمادا على المدخل المرتبط به على لوحة الاردوينو

قم بحفظ و تشغيل الملف للتحكم بالـ RGB LED .

*يمكنك تنزيل واجهة المستخدم و الكود لهذا المشروع من هنـا.

التحكم التلقائي للضوء

أحياناً كثيرة نترك المنزل او الممرات وننسى به إضاءة كثيرة مُضيئة، وبالتالي سيتم تشغيل الإضاءة دون الحاجة إليها وبهذا يحدث إهدار للطاقة. ولكن يمكنك تحويل محيطك لمكان ذكي بحيث يمكن لكافة الأجهزة والمعدات إتخاذ القرارت التلقائية دون الحاجة إلى ضرورة وجود المستخدم للتدخل.

في هذا المشروع ستكون قادر على جعل المصابيح او المراوح اوغيرها من الأجهزة تتفعل تلقائيا عند المشي في الممرات او الغرف. عن طريق إستخدام حساس الحركة (PIR Sensor) للكشف عن اي حركة على مدار قطره و إستخدام المحول (Relay) للتحكم بكهرباء.

automatic-room-lights

في المشاريع او التطبيقات العملية قد نود أن نتحكم بأحمال ذات قدرات عالية High Power باستخدام المتحكم الاصغر Microcontroller . فمثلاً أن نتحكم بإنارة مصباح يعمل على تيار متردد (AC) او تشغيل محركات كهربائية حثية مثل مضخات المياه.

من خلال الاردوينو ,لا يمكننا تشغيل اي حمل ذو استهلاك كبير للطاقة (220v,110v) لأن اقصى جهد يمكن توليده من الاردوينو هو 5 فولت فقط. احد الاجهزة التي لا يمكن للاكترونيات الاستغناء عنها والتي تلعب دور كبير في التحكم بالدرات الكهربائية هو المرحٌل -الريلي-(Relay) .

المرحٌلRelay

الوظيفة الأولية للمرحل هي فصل دوائر التحكم عن دوائر القدرة، لقيادة تيار مرتفع انطلاقا من إشارة تحكم ضعيفة نسبيا. وبالتالي عن طريق تطبيق تيار صغير يمكننا تشغيل المرحل للسماح بتدفق التيار الأكبر.

فالمرحل يعمل كعنصر وصل/فصل (ON-OFF switch) لتوصيل التيار الكهربائي للأحمال او فصلها.

automatic-room-lights

في هذا المشروع ,سنقوم باستخدام HL-52S  ريلي , يحتوي على ثلاث اقطاب يتم وصلها بمصدر الطاقة ذات الفولتية العالية. القطب الاوسط  يشير الحرف C الى كلمة Common  والتي تعني مشترك, يشير ان هذا القطب اما ان يكون موصولاً بالقطب (NC) تشير الى Normally Closed  والتي تعني مغلق عادةً او (NO) تشير الى  Normally Open والتي تعني مفتوح عادةً ،فلذلك سمي بالقطب المشترك.

automatic-room-lights

وعلى الجانب الآخر لدينا مجموعتين من الدبابيس، اول مجموعة تحتوي على 4 دبابيس، دبوس GND الأرض و دبوس الـ Vcc لتزويد الريلي بالطاقة ومدخلين IN1 ,IN2 . والمجموعة الثانية عبارة عن 3 دبابيس، Jumper  بين الـ JD-Vccو VCC  و دبوس الارض GND

automatic-room-lights

تحذير: يجب وضع الـ Relay على لوح عازل وعدم لمسه من اسفل اللوح الملحوم عليه لأنها قد تكون موصله للتيار الكهربائي بعد وصله بالجهد العالي.

القطع المطلوبة:

الأدوات التي تحتاجها لهذا المشروع :

المرحل (5V Relay Module)

pir motion sensor

حساس الحركة (pir motion sensor)

small size breadboard 170 colors

  لوح تجارب صغير (small size breadboard)

arduino uno r3

Arduino Uno R3

Female-Male Jumper Wires

 اسلاك توصيل أنثى/ذكر (Jumper Wires Female/male)

Jumper Wires Male/Male

 اسلاك توصيل ذكر/ذكر (Jumper Wires Male Male)

automatic-room-lights

Light Bulb Socket

 

انتبه:

قبل ان نبدأ بتوصيل الدائرة، ينبغي تحذيرك ، أن هذا المشروع يتطلب توصيل تيار متردد (AC – 220V) ،هذا التيار خطير و يجب التعامل معه بحذر شديد. لا تقم بالتوصيل مالم تكن على دراية كاملة بما تفعل او اطلب مساعدة من شخص ذو خبرة في هذا المجال.
اذا استخدم بطريقة غير صحيحة  او غير سليمة يمكن ان يؤدي إلى إصابات خطيرة أو وفاة. لذلك يجب الحذر جدا من ما تقومون به لأننا لا نتحمل اي مسؤولية من اي اجراءات تقوم به.

automatic-room-lights

تصميم لوحة التجارب:

قم بتوصيل الدائرة الكهربائية على لوحة التجارب كما هو موضح بالصورة:

automatic-room-lights

قم بتوصيل سلك الطاقة الموجبة الخاص بالريلي بمنفذ ال 5v على لوحة التجارب،  وسلك الطاقة السالبة بمنفذ ال Gnd المتواجد على لوحة التجارب. قم بتوصيل سلك الاشارة (IN1) بمنفذ رقم 10 على لوحة الاردوينو.
يمكنك العودة الى الدرس الثامن عشر لمعرفة  طريقة التوصيل المتعلق في مستشعر الحركة (PIR Sensor) ،  قم بتوصيل سلك الاشارة  (Signal) للمستشعر بمنفذ رقم 9 على لوحة الاردوينو.

تنبيه :
– قد تختلف طرق توصيل مستشعر الحركة بلوحة الارديونو بناءً على نوع المستشعر، الرجاء تفقد أستمارة البينات لمستشعرك قبل توصيله.
– قد تختلف طرق توصيل الريلي بلوحة الاردوينو بناءً على نوع الريلي، الرجاء تفقد وصف البينات للريلي الخاص بك قبل توصيله.
– اذا كنت تملك نوع اخر من انواع الريلي الذي لا يكون ملحوم على دارة، فاللأسف لا يمكنك توصيله بشكل مباشر بالارديونو.
– اي توصيل  خاطئ قد يؤدي الى تلف المتحكم الدقيق للوحة الاردوينو.

البرمجة:

يقوم الاردوينو بإنتظار إشارة من مستشعر الحركةMotion PIR sensor ، وفور حصولة على اشارة من المسشتعر تشير لوجود تحرك، يقوم بتفعيل الـ Relay  لفتح الإضاءة.

قم بتوصيل الاردوينو بالكمبيوتر، وقم بتحميل البرمجة التالي على الاردوينو:

لمحة سريعة عن الكود:

لفتح و اغلاق انارة AC يجب تفعيل الـ Relayعن طريق مدخل IN1 . يعمل مدخل IN1 في الـ Relay عكسيا، فيتم تفعيل المرحل (Relay) عند ادخال قيمة (LOW) الى مدخل (IN1)( حسب طريقة صنع الدارة على اللوحة الصغيرة التي يلحم عليها الريلي) .

يمكنك العودة الى الدرس الثامن عشر لمعرفة شرح الكود المتعلق بحساس الحركة (Motion Sensor).

نظام الحسّاسات لاصطفاف السيارة

في هذا المشروع سنقوم بعمل نظام حساسات اصطفاف السيارة ، حيث يقوم على أساس قياس المسافة اعتمادا على البيانات المستقبلة من حساس الموجات فوق الصوتية بين السيارة والجسم الذي خلفها وتنبيه السائق إلى المسافة الآمنة بالضبط في حالة الرجوع.

يقوم متحكم الاردوينو بتحسس الأجسام القريبة ،مستخدماً حساس الموجات فوق الصوتية (Ultrasonic sensor)  لحساب المسافة بين المستشعر والجسم ، وكلما اقترب الحساس من جسم ما، يقوم الاردوينو بإصدار تنبيه صوتي أو وميض ضوئي إلى الإقتراب واحتمالية الإصطدام.

parking-sensor

حساس الموجات فوق الصوتية (Ultrasonic sensor)

حساس الموجات فوق الصوتية (Ultrasonic sensor)  يقوم باطلاق موجات عالية التردد والتي عند اصطدامها بجسم ما ترتد هذه الموجات على شكل صدى Echo ،عند ارتداد هذه الموجه يتم حساب الزمن التي استغرقته في الارتداد ( العوده ). مثل ما يقوم به الخفاش الذي يطير في الليل مستعينا بالموجات الفوق صوتية التي يحدثها لتسقط على الاجسام امامه وتنعكس عنها ويسمعها فيحدد مساره دون الحاجة الى حاسة الابصار .

parking-sensor

يحتوي حساس الموجات الفوق صوتية على اربع دبابيس  (Vcc,Trig, Echo, GND) .
– Vcc و GND  لتزويد الحساس بالطاقة.
– Trig  لإرسال الموجات فوق الصوتية.
–   Echo  لتلقي  الموجة.

القطع المطلوبة:

سنقوم باستعمال الطنان (Buzzer) و الـ LEDs وحساس الموجات الفوق صوتي (Ultrasonic sensor) معا لتقدير قرب أو بعد مسافة الأشياء عن الحساس الفوق صوتي.

الأدوات التي تحتاجها لهذا المشروع :

-حساس الموجات الفوق صوتي (Ultrasonic)

parking-sensor

LEDs

العدد: 8 ( 3×احمر , 3× أصفر , 2× أخضر).

74HC595 Shift Register

74HC595 Shift Register

Piezo sounder

Buzzer

220 Ω resistor

مقاومة 220 اوم

العدد: 9

arduino uno r3

لوحة الاردوينو (Arduino)

Full size breadboard 830

لوحة التجارب (Breaddboard)

Jumper Wires Male/Male

 اسلاك توصيل ذكر/ذكر (Jumper Wires Male Male)

تصميم لوح التجارب:

يتم توصيل الدائرة كما هو موضح بالصورة:

parking-sensor
توصيل    74HC595 8 Bit Shift Register:
Shift RegisterArduino/LEDs
IC Pin 8 , Pin 13GND
IC Pin 10 , Pin 16Vcc
IC Pin 11Pin 11
IC Pin 12Pin 12
IC Pin 14Pin 13
IC Pin 151st LED
IC Pin 1 -IC Pin 82nd – 8th LEDs

ملاحظة : يتم توصيل shift register بالجزء الموجب (Anod) للـ LEDs.

توصيل حساس الموجات فوق الصوتية (Ultrasonic Sensor) :
Ultrasonic SensorArduino
VCC+5V
TrigPin 10
EchoPin 9
GroundGND
توصيل Buzzer:
BuzzerArduino
Shorter leadGND
Longer leadPin 4
توصيل LEDs :

يتم توصيل الجزء السالب (Cathod) للـ LEDs  بمقاومة 220 اوم لكل LED ثم يتم توصيلهم بالـ GND .

 *يمكنك الإطلاع على الدرس الخامس لمعرفة المزيد عن  الـ Shift Register.

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

قم برفع الكود التالي على الاردوينو :

لمحة سريعة عن الكود:

لإستخدام الحساس يتم ارسال نبضة (HIGH Level)على Trig Pin لمدة تزيد عن 10 Microseconds,ثم بعد ذلك LOW, وهذه تمثل الموجه فوق الصوتية المرسلة .

إذا تم الكشف عن جسم ما أمام جهاز الاستشعار(ستصبح قيمة Echo Pin =HIGH Level)، يتم حساب مدة بقاء الإشارةHIGH   المستقبلة عن Echo pin .

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

حساب المسافة :

المسافة الكلية = الزمن x السرعة

ومن المعروف ان سرعة الصوت  في الهواء ثابت و يساوي 343 م/ث

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

بعد الجسم عن مصدر الأمواج الفوق صوتية =( الزمن x السرعة)/2