facebook_pixel

فحص البطارية باستخدام الاردوينو

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

Battery Tester: اختبار البطارية باستخدام الاردينو

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

arduino uno r3

Arduino Uno

 

blue led 5mm

Blue LED

 

green led 5mm

Green LED

 

Red LED

 

220 Ω resistor

220 Ohm Resistors

 

2.2K Ohm Resistors

 

 

Full size breadboard 830

Breadboard

Breadboard Jumper Wire 65 pcs

Wires

البطارية Battery

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

Touch-Sensitive-On-Off-Circuit

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

توصيل الدارة

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

Battery Tester: اختبار البطارية باستخدام الاردينو

تم توصيل البطارية مع الاردوينو كما هو موضح بالجدول التالي .

البطاريةالاردوينو
الاحمرA0
الاسودGround
Battery Tester: اختبار البطارية باستخدام الاردينو

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

Battery Tester: اختبار البطارية باستخدام الاردينو

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

شرح الكود :

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

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

في الدالة ()loop، نقوم بقراءة قيمة جهد البطارية ثم تحويلها إلى قيمة الجهد الفعلية.

ثم نقوم بعملية المقارنه للجهد بقيم معينة، وإعتمادا على هذا الجهد يتم إضاءة الـ LED الذي يعبر عن حالة البطارية.

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

في هذا المشروع سنتعلم كيف يمكننا قياس رطوبة التربة باستخدام حساس Soil Moisture مع الاردوينو. لمعرفة ما اذا كانت التربة جافة تحتاج الى ماء ام رطبة بشكل كافي.

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

 

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

arduino uno r3

Arduino Uno

Soil Moisture Sensor

green led 5mm

Green LED

blue led 5mm

Blue LED

 

Red LED

 

220 Ω resistor

220 Ohm Resistor

Full size breadboard 830

Breadboard

Breadboard Jumper Wire 65 pcs

Wires

حساس الرطوبة Moisture Sensor :

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

يمكننا قياس هذا الجهد الناتج عن طريق الاردوينو ،ومن خلال الأوامر البرمجية يمكننا التحكم بإظهار نسبة الرطوبة على مجموعة الـ LEDs .

 

توصيل الدارة

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

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

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

الطرف (بداية من اليسار)التوصيل
VCCVCC
GNDGND
SIGOutput to Arduino

سنقوم بكتابه برنامج يقوم بقياس نسبة الرطوبة في التربة وعرضها على الشاشة التسلسلية Serial Monitor وتشغيل الـ LEDs للدلاله على نسبة الرطوبة في التربة.
فإذا كانت التربة جافة، لايتم تشغيل اي LED. وكلما زادت نسبة الرطوبة تبدأ الـ LEDs في الإضاءة تدريجيا. وعند وصول التربة إلى درجة التشبع تكون جميع الـ LEDs مضاءة.

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

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

شرح الكود :

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

ثم فى دالة ()setup نقوم بضبط الاعدادات اللازمة للمشروع مثل تشغيل الاتصال التسلسلى و ضبط الـ LEDs المستخدمة كمخرجات

في الدلة ()loop، نقوم بقراءة الحساس وعرض هذه القراءة على الشاشة التسلسلية Serial Monitor. بعد ذلك نبدأ بتشغيل الـ LEDs على حسب القيمة التي تمت قراءتها.

مثلا إذا كان قيمة الحساس أعلى من 760، يدل ذلك على أن التربطة رطبة جدا، لذلك يتم إضاءة جميع الـ LEDs.

على عكس إذا كان قيمة الحساس اقل من 250، دل ذلك على أن التربة جافة وتحتاج إلى ماء ونعبر عن ذلك بإطفاء جميع الـ LEDs .

ويتم إضاءة الـ LEDs تدريجيا اعتمادا على القيمة التي تم قراءتها من الحساس .

 

استشعار الاهتزاز باستخدام Piezo Element

خلال هذا المشروع، سنتعلم كيفية استخدام عنصر الـ piezo مع الاردوينو لإستشعار الإهتزازات.

استشعار الاهتزاز باستخدام Piezo مع الاردوينو

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

arduino uno r3

Arduino Uno

piezo-element-murata-electronics-7bb

Piezo Element

LED 5mm

220 Ω resistor

مقاومة 220 اوم

 

 

Full size breadboard 830

Breadboard

Breadboard Jumper Wire 65 pcs

Wires

Piezo Element

يستخدم عنصر البيزو للكشف عن الأصوات. يمتلك هذا العنصر مواد لها القدرة على توليد فرق جهد كهربائي عندما تتعرض لإجهاد ميكانيكي مثل الطرق عليه أو تعرضه للإهتزاز. فهو بعمل بشكل معاكس لفكرة عمل الـ Buzzer الذي يتكون من piezo crystal ويصدر النغمات عند تعرضه إلى جهد كهربائي.

استشعار الاهتزاز باستخدام Piezo مع الاردوينو
piezo-element-murata-electronics-7bb

توصيل الدارة

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

piezo_element

 

يولد عنصر الـ Piezo اشارة تناظرية (analog) ، اي يتم توصيله على احد منافذ الاردوينو التناظرية من A0 إلى A5 ، والطرف الأخر يتم توصيله إلى الـ GND.

الطرفالتوصيل
1A0
2Ground

سنقوم بكتابه برنامج بحيث يقوم الـ LED بعمل فلاش عند تعرض عنصر الـ piezo للإهتزاز. طالما مصدر الإهتزاز موجود يظل الفلاش يعمل حتى يتوقف الإهتزاز.

استشعار الاهتزاز باستخدام Piezo مع الاردوينو

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

 

شرح الكود :

في البداية، نقوم بتعريف متغيرات لمنافذ الاردوينو التي تم استخدامها في المشروع. وتعريف متغيرات اخرى لإستخدامها في البرمجة. سيتم استخدام متغير threshold لحفظ القيمة التي تستخدم للدلاله على حدوث اهتزاز عند وصول قراءة عنصر البيزو إلى هذه القيمة. ومتغير sensorReading لحفظ قيمة قراءة العنصر. والمتغير ledState لحفظ حالة الـ LED .

في الدالة ()setup، نقوم بضبط الـ LED كمخرج، وتشغيل الشاشة التسلسلية Serial Monitor .

في الدالة ()loop ، نقوم بقراءة قيمة عنصر البيزو ومقارنتها بالقيمة المحفوظة داخل المتغير threshold. عندما تكون قيمة العنصر اكبر، اي ان العنصر قد اهتز، نقوم بعمل فلاش على الـ LED وكتابة “knock!” على الشاشة التسلسلية.

ملاحظة

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

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

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

Led Dice: لعبة نرد بسيطة باستخدام الاردوينو

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

arduino uno r3

Arduino Uno

 

blue led 5mm

LED

220 Ω resistor

220 Ohm Resistor

Push Button

10K Ohm Resistor

 

Full size breadboard 830

Breadboard

Breadboard Jumper Wire 65 pcs

Wires

 

توصيل الدارة

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

Led Dice: لعبة نرد بسيطة باستخدام الاردوينو

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

Led Dice: لعبة نرد بسيطة باستخدام الاردوينو

 

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

شرح الكود :

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

 سيتم استخدام المتغير buttonState لتسجيل حالة المفتاح إذا كان مضغوطا أو لا. والمتغير ran لتسجيل رقم يتم توليده عشوائيا بين رقم 1 و 6 . والمتغير time لتسجيل مدة التأخير الزمني الذي تحتفظ به الـ LEDs بالإضاءة قبل ان تنطفئ.

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

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

وأخيرا، في الدالة ()loop نقوم بقراءة حالة المفتاح، إذا كان مضغوط نستخدم الدالة (random (1,7 للحصول على رقم عشوائي بين 1و 6. ثم نقوم بإضاءة الـ LEDs اعتمادا على هذا الرقم العشوائي. يتم إضاءة مجموعة الـ LEDs بشكل معين كما لو كان نردا حقيقيا ثم ننتظر لمدة ثانيتين ونطفئ الـ LEDs لإنتظار ضغطة جديدة على المفتاح ليتم عرض رقم جديد.

الوميض – اردوينو Nano

في هذا المشروع سنتعلم كيف نستخدم بوردة اردينو نانو Arduino Nano لعمل Led Blinking

ليد فلاش باستخدام اردوينو نانو

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

Arduino Nano

 

220 Ω resistor

220 Ohm Resistors

 

LED 5mm

 

Full size breadboard 830

Breadboard

Breadboard Jumper Wire 65 pcs

Wires

اردوينو نانو Arduino Nano

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

ليد فلاش باستخدام اردوينو نانو

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

توصيل الدارة

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

ليد فلاش باستخدام اردوينو نانو

سنقوم ببرمجة اللوحة لإضاءة الـ LED لمدة ثانية واحدة ثم إطفاءه لمدة ثانية.

ليد فلاش باستخدام اردوينو نانو

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

شرح الكود

في البداية، نقوم بتعريف ثابت بإسم LED على المخرج رقم 13. في الدالة setup() نقوم بتعريفه كمخرج :

في الدالة loop() ، نقوم بتشغيل الـ LED لمدة ثانية واحدة ثم اطفاؤه لمدة ثانية أخرى وهكذا … .

 

تخطيط نبض القلب

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

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

measure-heart-rate

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

في هذا المشروع سنقوم بإستخدام القطع التالية :

Heart Rate Sensor Module

مستشعر لقياس معدل نبضات القلب

arduino uno r3

Arduino Uno R3

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

مستشعر نبض القلب :

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

measure-heart-rate

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

measure-heart-rate

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

measure-heart-rate

الجزء الخلفي من أجهزة الاستشعار هو المكان الذي يتم تركيب بقية الأجزاء.

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

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

measure-heart-rate

البرمجة :

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

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

أولا نقوم بتعريف المتغيرPulseSensorPurplePin إعتمادا على ما تم توصيله بين المستشعر والأردوينو، ومتغير LED13  وهو الضوء الموجود على لوحة الأردوينو

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

في دالة ()setup ،  نقوم بتهيئة المتغيرات كمخرج أو مدخل.

في دالة ()loop، نقوم بقراءة المستشعر ومن ثم طباعة القيمة.

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

وأخيرا قم بفتح نافذة Serial Plotter وراقب نبضك.

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

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

arduino-rain-sensor-module

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

في هذا المشروع سنقوم بإستخدام القطع التالية :

arduino-rain-sensor-module

حساس كاشف الأمطار

arduino uno r3

Arduino Uno R3

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

حساس كاشف الأمطار :

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

arduino-rain-sensor-module

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

مداخل ومخارج وحدة استشعار الأمطار :

توضح الصورة والجدول أدناه موقع ووصف للمخارج والمداخل والضوابط والمؤشرات.

arduino-rain-sensor-module
المخرج/ المدخل/ الضابطالوصف
Vccمصدر الطاقة 5 فولت
GNDمصدر الطاقة الأرضي أو السالب
المخرج الرقمي (DO)المخرج الرقمي: تكون القيمة LOW عندما تتجاوز الرطوبة قيمة معينة.
المخرج التناظري (AO)المخرج التناظري: من صفر إلى 5 فولت. يتم انخفاض الجهد عند زيادة الرطوبة.
ضبط الحساسيةمع إتجاه عقارب الساعة يكون أكثر حساسية. وعكس إتجاه عقارب الساعة تقل الحساسية.

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

توصيل المستشعر بالأردوينو :

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

arduino-rain-sensor-module

البرمجة :

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

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

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

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

في دلة ()loop، نقوم بقراءة القيمة التناظرية والرقمية،

والتحقق ما إذا كان هناك سقوط أمطار أم لا.

بعد ذلك، تتم طباعة النتائج على شاشة الإتصال التسلسلي.

نظام الدخول الآمن بإستخدام 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 .