facebook_pixel

مستكشف سقوط الأمطار

توفير المياه واستخدامها السليم أمر مهم جدا. لذا في هذا المشروع سنقوم بستكشاف ما إذا كان هناك أمطار، حتى نتمكن من اتخاذ بعض الإجراءات وحفظ مياه الأمطار. يمكن استخدام كاشف مياه الأمطار في العديد من المجالات منها مجال الري، والتشغيل الآلي للمنزل، والاتصالات، والسيارات… الخ.

arduino-rain-sensor-module

نظام الدخول الآمن بإستخدام RFID

في السنوات الأخيرة، أصبحت إجراءات التعرف الآلي  (Auto-ID)منتشرة فى العدید من القطاعات مثل الصناعات، الخدمات، ومجال الشراء والتوزيع وأنظمة الحماية. حيث تستخدم هذه التقنية لتأمين معلومات كافية ومستمرة عن المنتجات الصناعية أو هوية الأشخاص.

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

security-access-using-rfid-reader

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

الأدوات التي سيتم استخدامها لهذا المشروع :

security-access-using-rfid-reader

MFID-RC522 module

Half-size Breadboard

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

arduino uno r3

Arduino Uno R3

Jumper Wires Male/Male

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

تقنية RFID :

هي إختصار لمصطلح radio frequency identification وهو تعبيرعام للتقنيات التي تستخدام ترددات الراديو لأغراض تحديد وتتبع الهوية . حيث أنها تستخدم المجالات الكهرومغناطيسية لتحديد وتتبع العلامات (tags) المرفقة بالأشياء تلقائيا. حيث تحتوي هذه العلامات على معلومات مخزنة إلكترونيا.

وتستخدم RFID tags  في العديد من الصناعات، على سبيل المثال، يتم تعليق RFID tag على السيارات أثناء الإنتاج ليتم استخدامها في تتبع خط الانتاج والتجميع، أو في مجال متابعة الامتعة بالمطار، كما تستخدم في أجهزة الحماية والانذار.

في هذا المشروع سيتم استخدام نظام RFID   لفتح الباب. على سبيل المثال، السماح لأشخاص معينين بالدخول.

يستخدم نظام RFID :

العلامات (Tags) التي يتم تعليقها بالكائنات أو الأشياء . في هذا المثال، لدينا سلسلة المفاتيح والبطاقة الكهرومغناطيسية. كل علامة tag له هوية خاصه به (UID).

security-access-using-rfid-reader

القارئ، جهاز ارسال وإستقبال، فهو يقوم بإرسال إشارات إلى الـ tag  ثم يقوم بقراءة ردها.

security-access-using-rfid-reader

 

المواصفات الأساسية للقارئ و بطاقات الـ tag :

مدخل الجهد :3.3v
التردد : 13.56MHz

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

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

security-access-using-rfid-reader

تم توصيل القارئ بالأردوينو كما يلي :

قارئ RFIDالأردوينو
SDAمنفذ 10
SCKمنفذ 13
MOSIمنفذ 11
MISOمنفذ 12
IRQلا يتم توصيله
GNDGND
 RSTمنفذ 9
 3.3v3.3v (لاتقم بتوصيله إلى 5v)

قراءة البيانات من RFID tag :

قبل كتابة التعليمات البرمجية اللازمة، تحتاج إلى تحميل المكتبة الازمة لهذا المستشعر من هنـا.

ثم قم بفك الضغط عن المجلد المضغوط “rfid-master” وإضافة هذه المكتبة إلى المكتبات الموجودة ببرنامج الاردوينو. بعد القيام بذلك، قم بإعادة تشغيل برنامج الاردوينو الخاص بك.

بعد أن تم توصيل الدائرة، انتقل إلى ملف (File) >  أمثلة (DumpInfo < MFRC522 < (Examples ثم قم بتحميل التعليمات البرمجية.  هذا الكود سوف يكون متاح في واجهة الاردوينو (بعد تثبيت مكتبة RFID).

ثم قم بفتح الشاشة التسلسلية، يجب أن ترى شيئا مثل الشكل أدناه :

security-access-using-rfid-reader

قم بتقريب بطاقة أو سلسلة المفاتيح RFID إلى القارئ. قم بجعلها أقرب حتى يتم عرض كافة المعلومات.

security-access-using-rfid-reader

كما هو موضح بالصورة السابقة، هذه المعلومات التي يمكنك قراءتها من البطاقة، بما في ذلك UID الخاص بالبطاقة والذي تم تمييزه باللون الأصفر. حيث يتم تخزين المعلومات في الذاكرة التي يتم تقسيمها إلى segments  و blocks . لديك 1024 بايت من تخزين البيانات مقسمة إلى 16sectors.

قم بكتابة UID الخاص ببطاقتك لأنك ستحتاج إليه لاحقا.

البرمجة

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

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

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

اولا يتم تعريف منافذ الأردوينو اعتمادا على ما تم توصيله بالقارئ، ثم يتم إنشاء كائن MFRC522 :

في دالة ()setup ، يتم تهيئة شاشة الإتصال التسلسلي، والبروتوكول SPI المستخدم لنقل البيانات وتبادلها مع المتحكمات.

في دالة ()loop، نقوم بقراءة قيمة الـ UID تدريجيا بإستخدام For loop، وطباعة القيمة بنظام الست عشر (Hex)، ويتم في كل مرة تحويل هذه القيمة إلى string وتخزينها في متغير concat لإستخدامه لاحقا في عملية المقارنة.

ثم نقوم بعملية التحقق ما إذا كانت قيمة الـ UDI  التي تم قراءتها تساوي قيمة الـ UID المسموح لها بالدخول أو لا .
يجب تغيير الـ UID في الشرط (if (content.substring(1) == “Your UID” حسب ما تم كتابته سابقا في مرحلة قراءة البيانات.

وأخيرا، تم إنشاء نظام يتحكم بنظام الدخول من البوابة الإلكترونية حسب صلاحيات البطاقة الممنوحة للمستخدم بإستخدام تقنية الـ RFID .

التحكم في محرك التيار المستمر بإستخدام L298

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

التحكم-فى-محرك-تيار-مستمر-باستخدام-l298

المكونات المطلوبة

arduino uno r3

Arduino Uno

L298 Motor driver

L298 Motor Driver

9V DC Motor

DC Motor

9VDC 1000mA regulated switching power adapter

DC Power Supply

Full size breadboard 830

Breadboard

Breadboard Jumper Wire 65 pcs

Wires

H-Bridge :

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

فكرة عمله :

الصورة التالية توضح كيف يتركب الـ H-Bridge:

hbridge-arduino

عند تشغيل كلا الترانزستور 1 و 4 يعمل المحرك نحو الإتجاه الأول وعند تشغيل الترانزستور 2 و 3 يعمل المحرك في الإتجاه المعاكس للإتجاه السابق.

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

التحكم-فى-اتجاه-دوران-محرك-تيار-مستمر-ب
التحكم-فى-اتجاه-دوران-محرك-تيار-مستمر-ب

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

L298 Motor Driver

هو عبارة عن H-Bridge تم تجميعها ووضعها معا في IC ، ليتم استخدامها بسهولة.  يمكن إستخدام واحد من IC للتحكم في محركين في نفس الوقت. لكل محرك مخرج خاص به وأطراف تحكم خاصة.

l298-motor-driver

الاطراف المستخدمة

Output Aطرفى المحرك
VCCطرف البطارية الموجب
5v5v فى الاردوينو
GNDgnd فى الاردوينو
IN112 فى الاردوينو
IN213 فى الاردوينو

شرح الدارة

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

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

التحكم-فى-محرك-تيار-مستمر-باستخدام-l298

 

ولنتمكن من تشغيل المحرك في إتجاهين، يتم تشغيل الطرف الأول من الـ L298 للأردوينو في المحرك، فيدور المحرك في الإتجاه الأول. وعند تشغيل الطرف الثاني سيدور بالإتجاه المعاكس.

 

التحكم-فى-محرك-تيار-مستمر-باستخدام-l298

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

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

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

 شرح الكود :

قمنا سابقا بتوصيل طرفى كلا من الترانزستور (IN1,IN2) بمنفذ 12 و 13 للأردوينو . لذلك قمنا بتسمية كلا المنفذين للأردونو تبعا لما تم توصيله بالدارة.

نقوم بتعرف المتغيرات IN1 و IN2 ( أطراف الـ H-bridge الموصله بالاردوينو) كمخرج.

في دالة ()loop، نقوم أولا بإستدعاء الدالة ()motor_forward . تقوم هذه الدالة بتشغيل المحرك مع اتجاه عقارب الساعة لمدة 3 ثوان ((delay(3000) . ثم نقوم باستخدام الدالة ()motor_stop ، لإيقاف المحرك عن العمل لمدة 3 ثوان. ثم يتم عكس اتجاه حركة المحرك باستخدام الدالة ()motor_reverse لمدة 3 ثوان. ومن ثم يعود ليكرر نفس هذه المهمة من البداية مرة أخرى.

الدلة ()motor_forward، تقوم بتحريك المحرك بإتجاه عقارب الساعة. تتم هذه العملية عن طريق جعل قيمة IN1 للمرحل HIGH والطرف الآخر LOW .

تعمل هذه الدالة ()motor_reverse بشكل مشابه للدالة السابقة، إلا أنها تعكس اتجاه دوران المحرك. تتم هذه العملية عن طريق جعل قيمة IN2 للمرحل HIGH، وIN1 قيمة LOW .

دالة ()motor_stop، تقوم بإيقاف المحرك تماما عن الحركة، عن طريق جعل قيمة كلا الطرفين LOW فلا يصل التيار للمحرك فيتوقف.

التحكم في محرك تيار مستمر باستخدام H-Bridge

في هذا المشروع سنتعلم فكرة عمل الH-Bridge  وكيفية استعماله للتحكم في تشغيل وايقاف محرك تيار مستمر وايضا عكس اتجاه حركته. قد يستخدم في روبوت متتبع الخط او اي روبوت نحتاج للتحكم في اتجاه حركته

التحكم-فى-اتجاه-دوران-محرك-تيار-مستمر-ب

المكونات المطلوبة

arduino uno r3

Arduino Uno

1k Ω Resistor

1K Resistor

NPN Transistor 2N2222

2n2222 NPN Transistor

9V DC Motor

DC Motor

9VDC 1000mA regulated switching power adapter

DC Power Supply

Full size breadboard 830

Breadboard

Breadboard Jumper Wire 65 pcs

Wires

الترانزستور Transistor :

هو عبارة عن مفتاح إلكتروني يتم التحكم في فتحه وإغلاقه إلكترونيا. ويتركب الترانزستور من مواد شبه موصلة وله ثلاث أطراف، الطرف الأول يسمة مشع (emitter)  والثاني يسمى القاعدة (base)، والثالث يمسى المجمع (collector) .

فكرة عمله :

عند مرور التيار إلى طرف القاعدة يصبح الترانزستور في حالة توصيل وسيتم مرور التيار بين المشع والمجمع. وعند قطع التيار يصبح في حالة القطع أي لا يتم مرور أي تيار بين المشع والمجمع.

التحكم-فى-اتجاه-دوران-محرك-تيار-مستمر-ب

H-Bridge :

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

فكرة عمله :

الصورة التالية توضح كيف يتركب الـ H-Bridge:

hbridge-arduino

عند تشغيل كلا الترانزستور 1 و 4 يعمل المحرك نحو الإتجاه الأول وعند تشغيل الترانزستور 2 و 3 يعمل المحرك في الإتجاه المعاكس للإتجاه السابق.

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

التحكم-فى-اتجاه-دوران-محرك-تيار-مستمر-ب
التحكم-فى-اتجاه-دوران-محرك-تيار-مستمر-ب

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

توصيل الدارة :

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

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

التحكم-فى-اتجاه-دوران-محرك-تيار-مستمر-ب
ولنتمكن من تشغيل المحرك في إتجاهين، يتم تشغيل الطرف الأول من الـ H-Bridge للأردوينو في المحرك، فيدور المحرك في الإتجاه الأول. وعند تشغيل الطرف الثاني سيدور بالإتجاه المعاكس.
التحكم-فى-اتجاه-دوران-محرك-تيار-مستمر-ب

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

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

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

شرح الكود :

قمنا سابقا بتوصيل طرفى كلا من الترانزستور (IN1,IN2) بمنفذ 12 و 13 للأردوينو . لذلك قمنا بتسمية كلا المنفذين للأردونو تبعا لما تم توصيله بالدارة.

نقوم بتعرف المتغيرات IN1 و IN2 ( أطراف الـ H-bridge الموصله بالاردوينو) كمخرج.

في دالة ()loop، نقوم أولا بإستدعاء الدالة ()motor_forward . تقوم هذه الدالة بتشغيل المحرك مع اتجاه عقارب الساعة لمدة 3 ثوان ((delay(3000)  . ثم نقوم باستخدام الدالة ()motor_stop ، لإيقاف المحرك عن العمل لمدة 3 ثوان. ثم يتم عكس اتجاه حركة المحرك باستخدام الدالة ()motor_reverse لمدة 3 ثوان. ومن ثم يعود ليكرر نفس هذه المهمة من البداية مرة أخرى.

الدلة ()motor_forward، تقوم بتحريك المحرك بإتجاه عقارب الساعة. تتم هذه العملية عن طريق جعل قيمة IN1  للمرحل HIGH والطرف الآخر LOW .

تعمل هذه الدالة ()motor_reverse بشكل مشابه للدالة السابقة، إلا أنها تعكس اتجاه دوران المحرك. تتم هذه العملية عن طريق جعل قيمة IN2 للمرحل HIGH، وIN1 قيمة LOW .

دالة ()motor_stop، تقوم بإيقاف المحرك تماما عن الحركة، عن طريق جعل قيمة كلا الطرفين LOW فلا يصل التيار للمحرك فيتوقف.

نظام إنذار باستخدام الأشعة تحت الحمراء

في هذا الدرس سوف نتعلم كيفية عمل نظام إنذار بسيط جدًا باستعمال Infrared LED و برمجة كود الأدروينو الخاص بها. هذا الدرس رائع جدا للتدريب على استعمال الأدروينو للمبتدئين.

نظام-إنذار-بسيط-بإستعمال-الأردوينو-و-ا

المكونات

arduino uno r3

Arduino Uno

IR LED Emitter 5mm

IR LED Emitter

photodiode 5mm

Photo Diode (Receiver)

100k ohm

100 K Ohm Resistor

220 Ω resistor

220 Ohm Resistor

Full size breadboard 830

Breadboard

Breadboard Jumper Wire 65 pcs

Wires

Piezo sounder

Piezo Sounder

ملحوظة :

في هذا الدرس، قمنا بإستعمال TCRT5000 module، والذي يحتوي على ترانزيستور للأشعة الحمراء بالإضافة إلى Infrared LED. وقمنا بإضافة Infrared LED خارجية لتقوية انبعاث الأشعة تحت الحمراء.

نظام-إنذار-بسيط-بإستعمال-الأردوينو-و-ا

كما يمكنك أن تستعمل دايود أشعة تحت الحمراء / ترانزيستور و لكن تأكد من وضع لاصق (أسود) حول الدايود أو الترانزيستور حتى لا يتأثر بالجوانب كما بالصورة.

نظام-إنذار-بسيط-بإستعمال-الأردوينو-و-ا

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

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

alert-system

 

alert-system

شرح الدارة

تقوم الدارة ببعث ضوء IR من خلال الـ LEDs الموضوعه، وعندما يتواجد سطح عاكس (تقريبا أي سطح عدا الاسطح السوداء فهي تمتص الضوء و لا تنعكس الا بجزء صغير)  تنعكس الأشعة تحت الحمراء لتقوم بالتأثير على الدايود أو الترانيستور وعندما يعمل الدايود يقوم بخفض الجهد نتيجة أن انخفاض مقاومته بشكل ملحوظ و يمكن من خلال الأردوينو قياس قيمة الفولت عن طريق استعمال Analog Read .

alert-system

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

قم بكتابة الكود كما هو موضح أدناه :

شرح الكود:

في البداية، نقوم بتسمية المدخل A0 بإسم SENSOR ، والمنفذ رقم 12 بإسم BUZZER . وهكذا يصبح الكود أسهل وأفضل في الفهم والتعامل.

داخل الدالة ()setup، نقوم بتعريف الـ SENSOR كمدخل، والـ BUZZER كمخرج.

في دالة ()loop، نقوم بالتحقق ما إذا كانت القراءة أقل من 600، فإذا تحقق الشرط نقوم بإصدار إنذار.

نقوم بإنشاء الدالة ()beep، لتوليد الإنذار. حيث تقوم الدالة بإصدار نغمة ذو تردد 1000 هيرتز، وتتوقف لمدة 200 ميلي ثانية بين النغمات.

نقوم بإنشاء الدالة readIR، والتي تقوم بقراءة قيمة الحساس وإذا كانت القيمة أصغر من القيمة refernce value فإن الدالة تقوم بإرجاع قيمة صحيحة true وإلا تقوم بإرجاع قيمة خاطئ false .

التحكم بمحرك DC باستخدام الترانزستور

يهدف هذا المشروع إلى تعلم كيفية تشغيل وإيقاف محرك التيار المستمر عن طريق الأردوينو. فسوف نقوم بتعلم كيفية التحكم بمحرك التيار المستمر عن طريق الترانزستور.

التحكم-فى-تشغيل-محرك-تيار-مستمر-باستخد

المكونات المطلوبة

arduino uno r3

Arduino Uno

1k Ω Resistor

1K Resistor

NPN Transistor 2N2222

2n2222 NPN Transistor

9V DC Motor

DC Motor

9VDC 1000mA regulated switching power adapter

DC Power Supply

Full size breadboard 830

Breadboard

Breadboard Jumper Wire 65 pcs

Wires

الترانستور Transistor

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

فكرة عملة 

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

التحكم-فى-تشغيل-محرك-تيار-مستمر-باستخد

محرك التيار المستمر (DC Motor)

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

التحكم-فى-تشغيل-محرك-تيار-مستمر-باستخد

توصيل الدارة :

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

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

التحكم-فى-تشغيل-محرك-تيار-مستمر-باستخد

 

التحكم-فى-تشغيل-محرك-تيار-مستمر-باستخد

عند توصيل التيار إلى قاعدة الترانزستور بواسطة الأردوينو، يقوم المحرك بالدوران وعند فصل التيار عن القاعدة يتوقف.

التحكم-فى-تشغيل-محرك-تيار-مستمر-باستخد

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

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

شرح الكود

يقوم هذا الكود بتشغيل المحرك و اطفاءة. فيعمل المحرك مدة 7 ثوان ثم يتوقف 7 ثوان اخرى ليعود للعمل بعدهم و هكذا حتى يتم فصل التيار الكهربائى عن الدارة.

في البداية، نقوم بتسمية الطرف 13 فى الاردوينو “MOTOR” بعد ذلك في الدالة  ()setup نقوم بتعريف هذا الطرف كمخرج

في الجزء التالي، نقوم بتشغيل أو وضع قيمة HIGH على الطرف MOTOR، فيعمل المحرك. ثم بإستخدام الدالة (delay(7000 نقوم بعمل تأخير زمني مدته 7 ثوان، فيضل المحرك سيعمل خلالها.

يتم إطفاء المحرك عن طريق وضع قيمة LOW على الطرف MOTOR ، فيتوقف المحرك عن الدوران لمدة 7 ثوان.

التحكم بالمروحة باستخدام الاردوينو

في هذا المشروع سنتعلم فكرة عمل المرحل وكيفية استعماله للتحكم في تشغيل مروحة تعمل على محرك تيار مستمر و ايضا عكس اتجاه حركتها.

التحكم-فى-تشغيل-و-اتجاه-دوران-مروحة-باس


المكونات المطلوبة

arduino uno r3

Arduino Uno

Relay module 5v

Relay Module 5v

Raspberry pi fans

DC Fan

9VDC 1000mA regulated switching power adapter

DC Power Supply

Full size breadboard 830

Breadboard

Breadboard Jumper Wire 65 pcs

Wires

المرحل Relay

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

التحكم-فى-تشغيل-و-اتجاه-دوران-مروحة-باس

مكونات المرحل

  1. ملف كهربائي
  2.   نقاط توصيل مغلقة ومفتوحة

لماذا يتم استخدام المرحل؟

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

التحكم-فى-تشغيل-و-اتجاه-دوران-مروحة-باس

مروحة التيار المستمر (DC Fan) :

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

التحكم-فى-تشغيل-و-اتجاه-دوران-مروحة-باس

توصيل الدارة :

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

التحكم-فى-تشغيل-و-اتجاه-دوران-مروحة-باس

التوصيلات :

التحكم-فى-تشغيل-و-اتجاه-دوران-مروحة-باس

 

طرفى المحرك طرفى COM للRelay Module
طرف البطارية الموجب طرفى NO للRelay Module
طرف البطارية السالب طرفى NC للRelay Module
طرف Vcc للArduino طرف Vcc لل Relay Module
طرف Gnd للArduino طرف GND للRelay Module
طرف 12 للArduino طرف IN1 للRelay Module
طرف 13 للArduino طرف IN2 للRelay Module

كيفية عمل الدارة

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

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

قم بكتابة الكود البرمجي كما يلي :

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

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

الشرح مفصلا :

يتم ضبط المنافذ الموصله مع المرحل IN1، IN2 كمخرج :

في دالة الـ ()loop ، نقوم باستدعاء الدالة ()motor_forward لتشغيل المروحة مع اتجاه عقارب الساعة. ثم نقوم باستخدام الدالة (delay(3000 لإضافة تأخير زمني مدته 3 ثوان تظل المروحة خلاله تدور في نفس الاتجاه. ثم يتم استخدام الدالة ()motor_stop لإيقاف المروحة عن العمل لمدة 3 ثوان. ثم بإستدعاء الدالة ()motor_reverse نقوم بعكس اتجاه الحركة للمروحة. يتم تكرار هذه العملية حتى يتم فصل التيار.

دالة ()motor_forward تقوم بتشغيل المروحة مع اتجاه عقارب الساعة. فهي تقوم بجعل أحد الأطراف HIGH والطرف الأخر LOW فتدور المروحة في هذا الإتجاه.

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

تقوم الدالة motor_stop() بإيقاف المروحة تماما عن الحركة، عن طريق جعل كلا الطرفان LOW فلا يصل تيار إلى المروحة فتتوقف.

عمل بيانو بسيط باستخدام اردوينو

الهدف من المشروع هو عمل بيانو بسيط باستخدام الاردوينو يقوم باصدار الاصوات و النغمات بالضغط على المفاتيح

عمل-بيانو-بسيط-باستخدام-اردوينو

المكونات المطلوبة

 

arduino uno r3

Arduino Uno

10k Ω Resistors 1/2 w 1%

K Ohm Resistor 10

Full size breadboard 830

Breadboard

Breadboard Jumper Wire 65 pcs

Wires

Piezo sounder

Piezo Sounder

Tactile Push Button Switch

Push Buttons

السماعه Piezo

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

عمل-بيانو-بسيط-باستخدام-اردوينو

شرح الدارة

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

عمل-بيانو-بسيط-باستخدام-اردوينو

سنقوم بعمل بيانو بسيط بإستخدام 8 مفاتيح من النوع PushButton، سيتم توليد النغمات المختلفة باستخدام الأردوينو وسماعة البيزو .  كل مفتاح يصدر صوت بنغمة ذو تردد مختلف.

عمل-بيانو-بسيط-باستخدام-اردوينو

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

شرح الكود:

في البداية نقوم بتعريف متغيرات لإستخدامها في تسجيل حالة الـ Push Buttons . ونقوم بالاعلان عن مصفوفة tones[] ، والتي سيتم تسجيل قيم الترددات عليها  لإستخدامها في توليد النغمات المختلفة عن طريق الـ Buzzer .

في الدالة setup() قمنا بتفعيل المنافذ الموصله مع المفاتيح كمدخل، والمنفذ الموصل مع الـ Buzzer كمخرج.

ثم نقوم بقراءة حالة الـ Push Buttons وتخزينها، وتخزينها في المتغيرات التي تم الاعلان عنها سابقا :

 نقوم بعملية التحقق من المفتاح الذي تم الضغط عليه. بعد ذلك يتم تسجيل قيمة معينة في متغير Cur_tone حسب المفتاح المضغوط عليه. ثم نقوم بتشغيل الـ Buzzer بتأخير زمني يعتمد على قيمة المتغير Cur_tone :

استخدم مفاتيح أخرى لإصدار نغمات مختلفة .

حساب المسافة بإستخدام حساس الموجات فوق صوتية

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

استخدام-حساس-الموجات-فوق-الصوتية-مع-ال

المكونات المطلوبة

arduino uno r3

Arduino Uno

Ultrasonic Sensor HC-SR04

HC-SR04 Ultrasonic Sensor

 

HD44780

LCD 16×2

220 Ω resistor

مقاومة 220 اوم

Full size breadboard 830

Breadboard

Breadboard Jumper Wire 65 pcs

Wires

حساس الموجات فوق الصوتية

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

استخدام-حساس-الموجات-فوق-الصوتية-مع-ال

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

استخدام-حساس-الموجات-فوق-الصوتية-مع-ال

الشاشة LCD

استخدام-حساس-الموجات-فوق-الصوتية-مع-ال
تعمل الشاشة في احد الحالات التالية:

1- أن تستقبل امر من الارودوينو و تقوم بتنفيذه مثلا: أمر مسح الشاشة و أمر التهيئة 

2- أن تستقبل معلومات من الاردوينو و تقوم بعرضها مثلا : كتابة جملة معينة  

 

قم بتوصيل شاشة LCD مع الأردوينو كما هو موضح بالصورة :

استخدام-حساس-الموجات-فوق-الصوتية-مع-ال

شرح الدارة

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

استخدام-حساس-الموجات-فوق-الصوتية-مع-ال

 

استخدام-حساس-الموجات-فوق-الصوتية-مع-ال

توصيل حساس الموجات فوق الصوتية

Ultrasonic SensorArduino
GNDGND
EchoPin 2
TriggerPin 3
Vcc5v

الكود

 شرح الكود :

في البداية قم بإدراج المكتبات المستخدمة في البرنامج, هنا سيتم استخدام مكتبة الشاشة LCD و مكتبة حساس الموجات فوق الصوتية Ultrasonic.

نقوم بتعريف أسماء منافذ الاردوينو التي تم توصيلها مع الحساس :

ننشىء المتغيرات اللازمة للمكتبات المستخدمة :

 أولا، نقوم بتعريف المتغير الخاص بمكتبة الشاشة LCD، وإعداده إعتمادا على كيفية توصيله مع الأردوينو :

ثم نقوم بتعريف المتغير الخاص بمكتبة Ultrasonic، وتحديد منافذ الأردوينو المتصل معها :

نقوم بتهيئة الشاشة LCD للعمل عن طريق الامر :

يقوم الكود بتشغيل الحساس و حساب المسافة ثم يتم عرضها على الشاشة :

في البداية، نقوم بإستخدام الدالة ()sonar.ping لنحصل على قيمة الوقت الذي استغرقته موجات الـUltrasonic لتصدم بكائن و تعود الى الحساس مرة اخرى. ثم نقوم بعمل حسابات بسيطة على هذة القيمة سيتم شرحها لاحقا بعد ذلك قمنا بعرض هذة الحسابات على شاشة LCD.

  • الحسابات الخاصة بعمل حساس الموجات فوق الصوتية:

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

 سرعه الصوت في الهواء في الحالة العادية تقريبا 340 متر لكل ثانية فيكون الوقت المستهلك لعبور 1 سم هو :

100 للتحويل من متر الى سم , و 10^6 للتحويل من ثانية الى مايكروثانية .

مشروع Mood lamp

في هذا الدرس سوف نقوم بعمل مشروع جمالي قليلا وهو مشروع الـ Mood lamp او مصباح المزاج، وهو عبارة عن أنبوبة من الورق المقوى الخفيف وبداخله مجموعه من الـ LEDs ذات الألوان (حمراء، خضراء، زرقاء). يقوم هذا المصباح بتغيير الألوان بشكل جميل وسلس لإضافة الهدوء والراحة في المكان.

مشروع-mood-lamp-لإضافة-ديكور-مميز-لبيتك

المكونات المطلوبة

arduino uno r3

Arduino Uno

220 Ω resistor

220 Ohm – 330 Ohm Resistors

Full size breadboard 830

Breadboard

Breadboard Jumper Wire 65 pcs

Wires

blue led 5mm

Blue LED

green led 5mm

Green LED

led 5mm red

Red LED

white-paper

ورق مقوى خفيف (أي شكل ترغب به، هذه لمستك الجمالية)

توصيل الدارة على لوحة التجارب

mood-lamp

 

mood-lamp

شرح المشروع

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

سبب اختيار ألوان الـ LED (الأحمر، الأخضر، الأزرق)، لأنها الألوان الرئيسية التي يمكن تكوين أي لون آخر منها عن طريق خلط النسب بين الثلاثة والعمل على تداخل الضوء بوضعهم بجانب بعضهم (وهذا ما يحدث حقيقة في RGB LED).

للتحكم في شدة الإضاءة يمكنك أن تكتب كود الأردينو (analogWrite(x  حيث x  تمتد من 0 الى 255 (و هذا نظير 0 الى 100% تقريبًا).

نقوم بفتح نافذة اختيار اللون color picker – والتي توجد غالبًا في برامج الجرافيك مثل الفوتوشوب- لإختيار قيم RGB حتى نقوم بعرض جميع ألوان الطيف فكانت النتيجة كالآتي:

مشروع-mood-lamp-لإضافة-ديكور-مميز-لبيتك

وبالتالي سوف نقوم بعمل دالتين decrease color ودالة أخرى increase color. كلتا الدالتين تأخذ معامل وهو اسم اللون الذي نريد أن نقوم بزيادته من 0 الى 255 او بنقصانه من 255 الى 0.

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

شرح الكود :

في البداية نقوم بتسمية مداخل الاردوينو حسب الـ LEDs  الموصلة معها، فالمدخل  9 موصل مع LED  الأزرق، والمدخل 10 موصل مع LED  الأخضر، ومدخل 11 موصل مع الأحمر.
ثم نقوم بتعريف هذه الأطراف كمخرج في دالة ()setup .

في دالة ()loop نقوم بالتحكم في شدة اضاءة كل LEDs ودمج الألوان الثلاثة معا، وبهذه الطريقة نحصل على مزيج من الألوان تعتمد على شدة تركيز كل لون LED على حدة .
يتم التحكم في شدة إضاء كل LED عن طريق استدعاء الدالة increaseColor والدالة decreaseColor .

الدالة increaseColor  تعمل على زيادة شدة اضاءة اللون تدريجيا. تقوم هذه الدالة باستخدام الدالة analogWrite(Pin_name,Vlaue) للتحكم في شدة الإضاءة، وبإستخدام for loop تبدأ شدة الاضاءة بالإزدياد تدريجيا من 0 إلى قيمة 255 .

تقوم الدالة decreaseColor  بتقليل شدة اضاءة الـ LED  تدريجيا. تعمل هذه الدالة بنفس طريقة الدالة السابقة increaseColor ، ولكن تستخدم الـ for loop لتقليل شدة الإضاءة من 255 إلى 0 .

باستخدام نفس التقنية مع باقي الـ LEDs يمكننا دمج الألوان بصورة رائعة لنحصل على Mood Lamp .

التحكم بمحرك DC باستخدام المرحل (Relay)

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

التحكم-فى-تشغيل-و-اتجاه-حركة-محرك-تيار-م

المكونات المطلوبة

arduino uno r3

Arduino Uno

Relay module 5v

Relay Module 5v

9V DC Motor

DC Motor

9VDC 1000mA regulated switching power adapter

DC Power Supply

Full size breadboard 830

Breadboard

Breadboard Jumper Wire 65 pcs

Wires

المرحل Relay

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

التحكم-فى-تشغيل-و-اتجاه-حركة-محرك-تيار-م

مكونات المرحل

  1. ملف كهربي
  2.   نقاط توصيل مغلقة و مفتوحة

لماذا يتم استخدام المرحل؟

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

التحكم-فى-تشغيل-و-اتجاه-حركة-محرك-تيار-م

محرك التيار المستمر DC Motor

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

التحكم-فى-تشغيل-و-اتجاه-حركة-محرك-تيار-م

توصيل الدارة :

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

التحكم-فى-تشغيل-و-اتجاه-حركة-محرك-تيار-م
التحكم-فى-تشغيل-و-اتجاه-حركة-محرك-تيار-م

التوصيل :

 الأردوينوالمرحل
طرفى المحرك طرفى COM
طرف البطارية الموجب طرفى NO
طرف البطارية السالب طرفى NC
 Vcc Vcc
Gnd  GND
منفذ 12 IN1
منفذ 13 IN2

كيفية عمل الدارة

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

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

يدور المحرك في الاتجاه الاول لمدة 3 ثوان ثم يتوقف مدة 3 ثوان و يدور فى الاتجاه المضاد لمده 3 ثوان ثم يتوقف مدة 3 ثوان اخرى وهكذا حتى يتم فصل التيار الكهربائي

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

هنا قمنا بضبط المخارج الموصولة على الدارة المتكاملة IN1 & IN2 كمخرج :

في البداية قمنا باستدعاء الدالة ()motor_forward  . تقوم هذه الدالة بتشغيل المحرك مع اتجاه عقارب الساعة لمدة 3 ثوان (delay(3000) ) . ثم نقوم باستخدام الدالة ()motor_stop ، لإيقاف المحرك عن العمل لمدة 3 ثوان. ثم يتم عكس اتجاه حركة المحرك باستخدام الدالة ()motor_reverse لمدة 3 ثوان. ومن ثم يعود ليكرر نفس هذه المهمة من البداية مرة أخرى.

الدلة ()motor_forward، تقوم بتحريك المحرك بإتجاه عقارب الساعة. تتم هذه العملية عن طريق جعل قيمة IN1  للمرحل HIGH والطرف الآخر LOW .

تعمل هذه الدالة ()motor_reverse بشكل مشابه للدالة السابقة، إلا أنها تعكس اتجاه دوران المحرك. تتم هذه العملية عن طريق جعل قيمة IN2 للمرحل HIGH، وIN1 قيمة LOW .

دالة ()motor_stop، تقوم بإيقاف المحرك تماما عن الحركة، عن طريق جعل قيمة كلا الطرفين LOW فلا يصل التيار للمحرك فيتوقف.

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

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

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

المكونات المطلوبة

arduino uno r3

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

عصا التحكم ( Joystick)

Full size breadboard 830

لوح التجارب (Breadboard)

Breadboard Jumper Wire 65 pcs

أسلاك توصيل (Wires)

عصا التحكم Joystick

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

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

تتكون عصا التحكم من مقاومتين متغيرتين للتحكم بمحاور الاتجاه X  و Y . يؤدي تحريك عصا التحكم  إلى تغيير في قيمة المقاومتان. ويتم تمثيل موضع عصا التحكم بنقطة يتم وصفها على محاور X,Y .

joystick-arduino

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

joystick-arduino

توصيل الدارة :

قم بتوصيل عصا التحكم إلى الأردوينو كما هو موضح بالصورة التالية :

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

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

التوصيل :
ArduinoJoystick
5vVcc
GndGnd
A0VRx
A1VRy

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

شرح الكود :

قمنا بتعريف متغيرين xVal، yVal إحداهما لتخزين قيمة X  والأخر لتخزين قيمة Y  ، حيث تمثل القيميتين موضع/موقع عصا التحكم.
في دالة التهيئة قمنا بتفعيل شاشة الاتصال التسلسلي، ثم ضبط الأطراف الموصله مع عصا التحكم كمدخل.

نقوم بقراءة قيم X  و Y  ثم عرض النتائج على شاشة الاتصال التسلسلي باستخدام الدالة (Serial.print(value .