التحكم في مصفوفة ليدات (LED Matrix)

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

 

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

 

arduino uno r3

Arduino Uno

 

8×8 LED Matrix

 

MAX7219

Potentiometer 10K Ω

Full size breadboard 830

Breadboard

Breadboard Jumper Wire 65 pcs

Wires

مصفوفة الليدات LED Matrix :

هي عبارة عن 64 LEDs موصلين معا على شكل مصفوفة مكونة من صفوف وأعمدة.

كل عامود يتصل بالـ cathode الخاص بمجموعة الـ LEDs لهذا العامود، وكل صف يتصل بالـ Anode الخاص بمجموعة الـ LEDs لهذا الصف.

كي نقوم بتشغيل LED معين، نضع الجهد الموجب على الصف الموجود به الـ LED والجهد السالب على العامود الموجود به. كما هو موضح بالصورة التالية: عند وضع جهد موجب على الصف A وأرضي على العامود 2 تعمل الـ LED رقم L2 وهكذا.

التحكم فى مصفوفة ليدات Led Matrix باستخدام الاردوينو

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

التحكم فى مصفوفة ليدات Led Matrix باستخدام الاردوينو

كي نتمكن من توصيل مصفوفة الليد (LED Matrix)، نحتاج إلى معرفة اين مواقع الصفوف والأعمدة، انظر الصورة أدناه :

التحكم فى مصفوفة ليدات Led Matrix باستخدام الاردوينو

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

التحكم فى مصفوفة ليدات Led Matrix باستخدام الاردوينو

MAX7219 :

هي عبارة عن دارة متكاملة تقوم بتشغيل الـ LED Matrix. وما يميزها هو أن دخلها عبارة عن إشارة تسلسلية بمعنى أننا إذا قمنا بتوصيل الـ LED Matrix مباشرة إلى الأردوينو نحتاج إلى 16 منفذ، أما بإستخدام هذه الشريحة فإننا بحاجة إلى 3 منافذ فقط.

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

توصيلها :

توصيلها مع الاردوينو و الLED Matrix من الداتا شيت

led-matrix

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

MAX7219التوصيل
اى رجل تسمى SEGمع الصفوف
اى رجل تسمى DIGمع الاعمدة
24Not Connected
19Vcc
1810K Ohm to VCC
13Arduino Pin 9
12Arduino Pin 10
9Ground
4Ground
1Arduino Pin 8

الجدول أعلاه يوضح أن الأرجل ذو الإسم SEG توصل مع الصفوف، والأرجل ذو الإسم DIG يتم توصيلها مع الأعمدة. على سبيل المثال: SEG A يتم توصيلها مع الصف الأول و SEG B يتم توصيلها مع الصف الثاني، وهكذا. اما DIG0 يتم توصيلها مع العامود الأول، و DIG1 يتم توصيلها مع العامود الثاني وهكذا.. .

لاحظ:

بداية الاعمدة فى الدارة MAX7219 من DIG 0. لذلك اول عمود يتصل مع DIG 0 و ليس DIG 1

توصيل الدارة

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

التحكم فى مصفوفة ليدات Led Matrix باستخدام الاردوينو

 

يقوم البرنامج بقراءة قيمة مقاومة متغيرة و على حسب القيمة يقوم برسم شكل وجه مبتسم على الLED Matrix

التحكم فى مصفوفة ليدات Led Matrix باستخدام الاردوينو

البرمجة :

يعتمد الكود على بعض المكتبات التى نحتاج الى اضافتها الى Arduino IDE يمكنك تحميلها من هنا

شرح الكود :

في البداية نقوم بإدراج المكتبات التي نحتاجها في المشروع. وهم عبارة عن مكتبات للتعامل مع الـ LED Matrix والدارة MAX7219 :

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

ثم نقوم بإنشاء متغير مسؤول عن الـ LED Matrix .  و يتم تعريف الارجل التي يتم توصيلها بين الاردوينو و الدارة MAX7219 في هذا المتغير

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

فى الدالة ()setup نقوم بوضع الاعدادات اللازمة للمشروع مثل اطفاء جميع الليدات فى البداية .

و في الدالة ()loop نقوم بقراءة قيمة المقاومة المتغيرة و بإستخدام الدالة map نقوم بتحويل القيمة التي تمت قرائتها وتتراوح بين 0 الى 1023 الى رقم بين 0 الى 2
ونستخدم الرقم الناتج في تشغيل وعرض الشكل المقابل له في مصفوفة الأشكال على الـ LED Matrix

قياس مستوى الصوت باستخدام الاردوينو

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

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

arduino uno r3

Arduino Uno

Electret Microphone

10K Ohm Potentiometer

LM386

Capacitor 10uF 50V

100nF capacitor

Red LED

 

220 Ω resistor

220 Ohm Resistor

10K Ohm Resistor

Full size breadboard 830

Breadboard

Breadboard Jumper Wire 65 pcs

Wires

 

LM386 :

هو عبارة عن دارة متكاملة تحتوي على مكبر عمليات (Operational Amplifier) ،يقوم بتكبير الاشارة الصوتية القادمة اليه من المايكروفون

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

توصيل الدارة

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

قياس مستوى الصوت باستخدام الاردوينو

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

قياس مستوى الصوت باستخدام الاردوينو

 

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

شرح الكود :

في البداية نقوم بتسمية منافذ الأردوينو المستخدمة في المشروع. ونقوم بالإعلان عن المتغير value الذي سيستخدم في تخزين قيمة قراءة الإشارة الصوتية :

في الدلة ()setup ، نقوم بضبط الإعدادات اللازمة مثل ضبط المنافذ الموصله مع الـ LEDs كمخرج :

في الدالة ()loop ، نقوم بقراءة الإشارة الصوتية الناتجة عن المايكروفون بعد تكبيرها بواسطة LM386 :

بعد ذلك نقوم بإختبار القيمة المقاسه وإعتمادا على هذه القيمة نقوم بإضاءة الـ LEDs بإستخدام الدالتين Clear وGlow للتعبر عن مدى ارتفاع أو انخفاض شدة الإشارة الصوتية :

نستخدم الدالة Glow لإضاءة الـ LEDs تدريجيا حسب قيمة شدة الصوت :

نستخدم الدالة Clear لإطفاء الـ LEDs تدريجيا حسب قيمة شدة الصوت :

جهاز تنبيه لوصول رسائل بريد إلكتروني

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

Email Alert: استخدام الاردوينو مع البلوتوث لعمل تنبية لرسائل البريد

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

arduino uno r3

Arduino Uno

serial port bluetooth module hc-06

Bluetooth Module HC-06

blue led 5mm

LED

220 Ω resistor

220 Ohm Resistor

 

Full size breadboard 830

Breadboard

Breadboard Jumper Wire 65 pcs

Wires

 

توصيل الدارة

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

Email Alert: استخدام الاردوينو مع البلوتوث لعمل تنبية لرسائل البريد

قمنا بتوصيل وحدة البلوتوث كما هو موضح بالجدول أدناه :
موديول البلوتوثالاردوينو
VCC5 v
GNDGND
TXDRX (Pin 0)
RXDTX (Pin 1)

 

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

Email Alert: استخدام الاردوينو مع البلوتوث لعمل تنبية لرسائل البريد

 

البرامج المطلوبة

نحتاج لتجهيز بعض البرمجيات كي يعمل منبة الرسائل الإلكترونية بشكل صحيح :

  1. Microsoft Outlook
  2. Script File “.vbs”
  3. Bluetooth
  4. Putty

Script File

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

مثلا بدلا من أن نضغط بأنفسنا مفتاح Enter يمكننا

عند تنفيذه سيحاكي مفتاح Enter كما لو ان أحد ما ضغط عليه.

 

لانشاء هذا الملف

  1. نفتح ملف جديد باستخدام برنامج Notepad
  2. اضف السطور التالية للملف، لاحظ الحروف يجب ان تكون بنفس الشكل
  3. قم بحفظ الملف عن طريق :
    save as –> Email.vbs
    و تأكد من إختيار  Save as Type : All Files

Email Alert: استخدام الاردوينو مع البلوتوث لعمل تنبية لرسائل البريد

 

Microsoft Outlook

هنا سنقوم بضبط بعض الإعدادات بحيث عندما يصلنا رسالة إلكترونية جديدة يقوم برنامج Outlook بتنفيذ ملف الScript الذي قمنا بتجهيزه.

  1. قم بفتح برنامج Outlook بعدها قم بالضغط على ‘Rules’ ثم إختار ‘Manage Rules & Alerts’

    Email Alert: استخدام الاردوينو مع البلوتوث لعمل تنبية لرسائل البريد

  2. بعد ذلك إضغط على ‘New Rule’ تحت التوبيب في أعلى يسار النافذة

    Email Alert: استخدام الاردوينو مع البلوتوث لعمل تنبية لرسائل البريد

  3. اضغط ‘Apply on messages I receive’، بعد ذلك اضغط ‘Next’

    Email Alert: استخدام الاردوينو مع البلوتوث لعمل تنبية لرسائل البريد

  4. اختار ‘Where my name is in the To Box’، ثم اضغط ‘Next’

    Email Alert: استخدام الاردوينو مع البلوتوث لعمل تنبية لرسائل البريد

  5. اختار ‘Start application’،بعد ذلك في اسفل النافذة اضغط على كلمة ‘application’

    Email Alert: استخدام الاردوينو مع البلوتوث لعمل تنبية لرسائل البريد

  6. في النافذة الجديدة، قم بتغيير نوع الملفات من ‘(Executable Files (EXE’، الى ‘All files’.بعد ذلك اذهب الى المكان الموجود به الملف الذي قمنا بإنشاءة سابقا وقم باختياره، ‘Email.vbs’، ثم اضغط ‘Open’

    Email Alert: استخدام الاردوينو مع البلوتوث لعمل تنبية لرسائل البريد

  7. قم بإعطاء اسم ما لهذا الـRule ثم قم بالضغط على  ‘Finish’

    Email Alert: استخدام الاردوينو مع البلوتوث لعمل تنبية لرسائل البريد

  8. اضغط على  ‘Apply’ ثم  ‘Ok’

    Email Alert: استخدام الاردوينو مع البلوتوث لعمل تنبية لرسائل البريد

Bluetooth

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

  1. قم بالتوجه الى Control Panel
  2. اضغط على ‘Hardware and Sound’
  3. تأكد من توصيل موديول البلوتوث بالاردوينو ثم قم بتوصيل الاردوينو الى جهاز الحاسوب ستلاحظ ان ضوء الليد على موديول البلوتوث يضىء و يطفىء بسرعه
  4. ثم بعد ذلك اختار ‘Add a Device’
  5. انتظر حتى يظهر موديول البلوتوث على الحاسوب بإسم ‘HC-06’ ثم اضغط عليه
  6. ستظهر نافذة أخرى تطلب ادخال كود مرور، قم بكتابة ‘1234’
  7. انتظر حتى تظهر رساله انه تم الاتصال

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

في أعلى النافذة ستجد ‘COM Ports’ قم بالضغط عليها و ستجد رقم فيOutgoing port تذكره جيدا

Email Alert: استخدام الاردوينو مع البلوتوث لعمل تنبية لرسائل البريد

ملاحظة

لمزيد من المعلومات عن وحدة البلوتوث وكيفية ضبطة، يرجى الإطلاع على مشروع نظام التحكم في الإضاءة عبر البلوتوث.

 

Putty

  1. أولا، قم بتنزيله من الرابط هنـا   Putty
  2. نقوم بفتحه من Putty.exe
  3. نختار Serial
  4. نقوم بتغير COM1 الى رقم الـPort الذي حصلنا عليه من خطوة البلوتوث
  5. نضغط Open
  6. سنرى شاشة سوداء مما يعنى اننا نجحنا في عمل إتصال مع البلوتوث

 

البرمجة :

شرح الكود :

في البداية نقوم بتسمية منافذ الأردوينو التي تم استخدامها في المشروع. اي منفذ 13 الذي تم توصيل الـ LED عليه. ثم نقوم بالإعلان عن المتغيرات التي سنحتاج إليها.

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

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

في الدالة ()loop، نقوم بقراءة الـ Serial وفي حال وصول قيمة جديدة، نقوم بمقارنتها بقيمة ‘a’ التي تم ضبطها سابقا في ملف الـ Script. إذا كانت القيمة التي تم إستقبالها هي ‘a’ أي انه تم وصول رسالة جديدة.

ملخص للدارة كاملة

قمنا بضبط برنامج Outlook بحيث عندما تصل رسالة جديدة يقوم بفتح ملف الscript الذي قمنا بتسميته Email.vbs و الذي يحتوى على بعض الأوامر التي يقوم الحاسوب بتنفيذها .

يقوم بكتابة حرف ‘a’  على شاشة برنامج Putty الذي يقوم بإرسالها إلى البلوتوث فيستقبلها الأردوينو ويقوم الحاسوب بتشغيل الـ LED

ملاحظة هامة

لكي يعمل كل شيء بشكل صحيح يحب أن يكون برنامج Outlook مفتوح و ايضا برنامج Putty مفتوح و يكون التركيز على الشاشة السوداء لبرنامج Putty
اي أن يكون كما في الصورة

Email Alert: استخدام الاردوينو مع البلوتوث لعمل تنبية لرسائل البريد

استخدام شاشة Nokia 5110 مع الاردوينو

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

استخدام شاشة جرافيك مع الاردوينو (Nokia 5110)

 

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

arduino uno r3

Arduino Uno

nokia screen 5110

Nokia Screen 5110

220 Ω resistor

220 Ohm Resistor

 

Full size breadboard 830

Breadboard

Breadboard Jumper Wire 65 pcs

Wires

Nokia Screen 5110

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

nokia screen 5110

كما يمكننها التحكم بها على مستوى الـ Pixels، اي انها تعطي مرونة عالية للكتابة أو الرسم عليها.

توصيلها مع الأردوينو :

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

توصيل الدارة

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

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

استخدام شاشة جرافيك مع الاردوينو (Nokia 5110)

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

الطرف (بداية من اليسار)التوصيل
1Arduino Pin 6
2Arduino Pin 7
3Arduino Pin 5
4 Arduino Pin 11
5 Arduino Pin 13
6 3.3v
7 Arduino Pin 4
8 GND

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

استخدام شاشة جرافيك مع الاردوينو (Nokia 5110)

البرمجة

في البداية، نقوم بإدراج المكتبة الخاصة بالـ SPI حتى نتمكن من استخدامه :

ثم نقوم بتسمية بعض الثوابت المستخدمة في إرسال الأوامر إلى الشاشة :

بعد ذلك نقوم بتمسية منافذ الأردوينو المستخدمة في توصيل الشاشة :

بعد ذلك قمنا بعمل مصفوفة تحتوي على قيم الحروف والرموز والأرقام الممثلة بصيغة الـ ASCII ، وهي طريقة قياسية لتمثيل الحروف والأقام وبعض الرموز. فعند عرض الحرف a فإن القيمة المكافئة له تساوي 0x16 وهكذا.

بعد ذلك نقوم بالإعلان عن المصفوفة displayMap ، وهي تمثل الـ Pixels الموجودة في الشاشة. فعند وضع قيمة 0 في إحدى قيم المصفوفة، نقوم بذلك بإطفاء الـ Pixel المكافئة له على الشاشة. وعند وضع قيمة 255 نقوم بإضاءة الـ Pixel المكافئة :

نقوم بإنشاء مصفوفة xkcdSandwich التي يقوم الأردوينو بإرسالها إلى الشاشة فتقوم برسم صورة معينة سنراها عندما نكمل كتابة الكود ويتم رفعه إلى الأردوينو :

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

في الدله ()loop، تقوم بإنتظار المستخدم إدخال الحروف أو الكلمات إلى الشاشة التسلسلية (Serial Monitor) ، ليقوم الأردوينو بإرسالها إلى الشاشة ليتم كتابتها. نقوم بعمل إختبار على ماتم ادخاله من قبل المستخدم. فمثلا إذا ادخل المستخدم الرمز ~ فإنه عبارة عن أمر لمسح الشاشة.

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

إذا كنت تريد تغيير ما يظهر على الشاشة، فلا حاجة إلى تغيير هذه الدوال، فقط قم بعمل التغير الذي تريده داخل الداليتين ()loop، و ()setup.

 

استخدام الاردوينو في قياس الجهود الكهربائية

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

Voltameter: استخدام الاردوينو فى قياس الجهود الكهربية

 

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

arduino uno r3

Arduino Uno

 

10K Ohm Resistor

 

1k Ohm Resistor

 

Full size breadboard 830

Breadboard

Breadboard Jumper Wire 65 pcs

Wires

شرح الدارة

تعتمد الدارة على مبدا تقسيم الجهد Voltage Divider في حساب الجهد المراد قياسه.

Servo Motor: استخدام مقاومة متغيرة للتحكم فى حركة محرك سيرفو

مثلا، لقياس الجهد على المقاومة R2 :

V(R2) = Vcc * R2 / (R1 + R2)

ملاحظة : مدى الجهود التى يمكن قياسها من 0 الى 5 فولت

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

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

Voltameter: استخدام الاردوينو فى قياس الجهود الكهربية

Voltameter: استخدام الاردوينو فى قياس الجهود الكهربية

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

Voltameter: استخدام الاردوينو فى قياس الجهود الكهربية

 

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

شرح الكود :

في البداية نقوم بالإعلان عن المتغيرات التي سيتم استخدامها في البرمجة. سيتم استخدام المتغير vPow لتسجيل قيمة الجهد المرجعي المستخدم في هذه الحالة 5 فولت. والمتغير r1 لتسجيل قيمة المقاومة الأولى المستخدمة في الـ Voltage Divider . والمتغير r2 لتسجيل قيمة المقاومة الثانية المستخدمة في voltage Divider.

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

في الدالة ()loop، نقوم بقراءة قيمة الجهد على المقاومة 10k ohm، ثم عن طريق استخدام قانون Voltage Divider نقوم بحساب الجهد الكلي وعرضة على الشاشة التسلسلية.

مشغل موسيقى بإستخدام الأردوينو

سنقوم في هذا المشروع بعمل مشغل موسيقى mp3 باستخدام الاردوينو و موديول DFPlayer Mini الذي يستخدم كارت ذاكرة يمكننا من وضع الموسيقى التي نريد تشغيلها .

Mp3 Player: مشغل اغانى باستخدام الاردينو

 

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

arduino uno r3

Arduino Uno

 

 

Full size breadboard 830

Breadboard

Breadboard Jumper Wire 65 pcs

Wires

 

DFPlayer Mini MP3 Module :

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

Mp3 Player: مشغل اغانى باستخدام الاردينو

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

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

Mp3 Player: مشغل اغانى باستخدام الاردينو
ملاحظة : الملفات الصوتية ذات الإمتداد mp3 هي التي تعمل فقط مع هذا الموديول.

يجب ان نقوم باعادة تسمية الملفات الصوتية بالشكل التالى :

0001.mp3 – 0002.mp3 – ……….. – 0100.mp3

 

Mp3 Player: مشغل اغانى باستخدام الاردينو

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

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

Mp3 Player: مشغل اغانى باستخدام الاردينو

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

Mp3 Player: مشغل اغانى باستخدام الاردينو

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

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

 

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

في البداية سنحتاج الى تحميل مكتبة الموديول من الرابط .
ثم نقوم باضافتة الى مكتبات الاردوينو :

في الدالة ()setup، نقوم بتشغيل بروتوكول التسلسلي، الذي سيتم استخدامه لإرسال الأوامر بين الأردوينو وموديول الـ Mp3 .

في الدالة ()loop، نقوم بإعطاء ترتيب الملفات الصوتية المراد تشغيلها. فمثلا، نبدأ بتشغيل الملف الصوتي  0001.mp3 وننتظر 10 ثوان قبل البدء في الملف التالي وهكذا.

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

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

في هذا المشروع سنتعلم كيفية استخدام الأردوينو لعمل ساعة رقمية. سنقوم بعرض الوقت على شاشة الـ LCD والتحكم في ضبط الوقت من خلال مفاتيح الـ Push Buttons.

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

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

arduino uno r3

Arduino Uno

16×2 LCD

10K Ohms Resistors

Push Buttons

220 Ω resistor

220 Ohm Resistor

Full size breadboard 830

Breadboard

Breadboard Jumper Wire 65 pcs

Wires

الشاشة LCD

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

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

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

 

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

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

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

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

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

 

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

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

شرح الكود :

في البداية نقوم بإضافة مكتبة شاشة الـ LCD وتسمية منافذ الأردوينو المستخدمة مع مفاتيح الضبط :

ثم نقوم نقوم بالإعلان عن بعض الثوابت التي سيتم استخدامها لاحقا :

بعد ذلك نقوم بالإعلان عن بعض المتغيرات. يستخدم المتغير minute لحفظ الدقائق. والمتغير hour لحفظ الساعات. والمتغير am لتسجيل ما إذا كان التوقيت صباحا أم مساءاً. وسيتم تسجيل الوقت الخاص بأخر مرة تم حساب التوقيت في المتغير previousMillis .

في الدالة ()setup قمنا بضبط الاعدادات اللازمة للمشروع مثل ضبط ارجل الاردوينو كمخارج للمفاتيح وتشغيل الشاشة LCD :

في الدلة ()loop، نقوم بحساب عدد الثوان التي مرت، فإذا كانت 60 ثانية نقوم بزيادة عدد الدقائق في المتغير minute. كما نقوم بإختبار الدقائق التي مرت، فعند مرور 60 دقيقة نقوم بزيادة عدد الساعات في المتغير hour. ثم نقوم بالنهاية بعرض الدقائق والساعات على شاشة الـ LCD.

أيضا اثناء الإختبار نقوم بإختبار المفاتيح إذا ما تم الضغط عليها ام لا عبر استدعاء الدالة ()checkTick . فإذا تم الضغط على مفتاح الدقائق نقوم بزيادة عدد الدقائق في المتغير minute، ويعمل بنفس الطريقة عند الضغط على مفتاح الساعات.

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

الدالة ()checkTick ، في كل مرة يتم استدعائها تقوم بحفظ الوقت الذي مضى منذ عمل Reset للأردوينو. ثم تتم مقارنة الوقت الحالي بقيمة مسبقة فإذا اصبح الفارق بين التوقيتين يتعدى الـ TICK_LENGTH الذي تم تحديده في أول البرنامج، فهذا يعني انه قد مرة دقيقة فنقوم بزيادتها بإستخدام الدالة ()tick. ثم نقوم بتسجيل هذا التوقيت لإستخدامه مرة ارخى لمعرفة هل مر دقيقة أخرى ام لا.

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

الدالة ()tick، تقوم بإستدعاء الدالة ()minuteUp، والتي بدورها تقوم بزيادة عداد الدقائق.

 

الدالة ()readHourtButton تقوم بقراءة المفتاح الخاص بتعديل خانة الساعات فإذا تم الضغط عليه تقوم بتشغيل الدالة ()hourUp التي تقوم بزيادة عداد الساعات.

الدالة readMinuteButton() تقوم بقراءة المفتاح الخاص بتعديل خانة الدقائق فإذا تم الضغط عليه تقوم بإستدعاء دالة ()minuteUp التي تقوم بزيادة عداد الدقائق.

الدالة hourUp() في كل مرة يتم إستعداء هذه الدالة تقوم بزيادة عداد الساعات بمقدار واحد وعمل اختبار اذا كان التوقيت تغير من الصباح إلى المساء .

الداله minuteUp() في كل مرة يتم إستدعائها تقوم بزيادة عداد الدقائق بمقدار واحد وعمل اختبار اذا وصل عداد الدقائق الى 60 تقوم بتصفير عداد الدقائق و زيادة عداد الساعات بمقدار واحد .

نظام الحماية ضد السرقة

في هذا المشروع سنتعلم كيفية استخدام حساس الحركة PIR Sensor مع الاردوينو لعمل نظام انذار ضد السرقة.

Anti-Thief System: نظام انذار باستخدام PIR Sensor مع الاردوينو

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

arduino uno r3

Arduino Uno

PIR Sensor

 

Buzzer

 

LED

 

220 Ω resistor

220 Ohm Resistor

 

Full size breadboard 830

Breadboard

Breadboard Jumper Wire 65 pcs

Wires

حساس الحركة PIR Sensor

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

Anti-Theft System: نظام انذار باستخدام PIR Sensor مع الاردوينو

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

عناصر الحساس :

Anti-Theft System: نظام انذار باستخدام PIR Sensor مع الاردوينو

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

الطرف (بداية من اليسار)التوصيل
1GND
2Output To Arduino
3VCC

توصيل الدارة

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

Anti-Theft System: نظام انذار باستخدام PIR Sensor مع الاردوينو

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

Anti-Theft System: نظام انذار باستخدام PIR Sensor مع الاردوينو

 

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

شرح الكود :

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

سيتم استخدام المتغير pirFlag لتسجيل حالة الحساس. نقوم بوضع قيمة ابتدائية للحالة وهي 0. والمتغير val يستخدم لتسجيل الإشارة القادمة من الحساس إلى الأردوينو حسب وجود حركة ام لا.

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

ويتم تفعيل الاتصال التسلسلي من أجل الطباعة على الشاشة التسلسلية Serial Monitor عند الكشف عن وجود حركة.

في دالة الـ ()loop، نقوم بقراءة الإشارات القادمة من الحساس واختبارها. إذا كانت الإشارة High اي انه تم الكشف عن وجود حركة، نقوم بتشغيل ال LED والـ Buzzer . ثم نقوم بتحقق من الحالة المسجله في المتغير PirFlag إذا كانت 0 نقوم بطباعة رسالة تدل على وجود حركة على الشاشة التسلسلية وتغير قيمة المتغير pirFlag إلى 1 .

في حال كانت الإشاءة القادمة من الحساس LOW اي انه لم يتم الكشف عن وجود حركة، نقوم بإيقاف تشغيل الـ LED و الـ Buzzer . والتحقق من الحالة المسجله لدى الـ pirFlag إذا كانت 1 اي انه كانت هناك حركة وتوقفت فنقوم بالطباعة على الشاشة التسلسلية رساله تدل على وقف الحركة، وتغير قيمة المتغير pirFlag إلى 0 .

تستخدم الدالة tone() لتوليد اشارات يكمننا من سماعها عن طريق سماعه او Buzzer

 

جهاز للتحكم وقياس درجة الحرارة

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

جهاز لقياس و التحكم فى درجة الحرارة باستخدام LM35

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

arduino uno r3

Arduino Uno

LM35 Temperature Sensor

LM35

HD44780

LCD 16×2

220 Ω resistor

مقاومة 220 اوم

10K Ohms Resistors

Push Buttons

Full size breadboard 830

Breadboard

Breadboard Jumper Wire 65 pcs

Wires

الشاشة LCD

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

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

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

 للإطلاع على المزيد حول شاشة الـ LCD قم بالإطلاع على درس التحكم بشاشة LCD

حساس الحرارة LM35

LM35 Temperature Sensor

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

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

مُخرج هذا الحساس يكون قيمة تناظرية (Analog) ، اي نحتاج إلى توصيله على أحد المنافذ التناظرية (Analog) في الأردوينو. الأطراف التناظرية في الأردوينو من A0 إلى A5 .

جهاز لقياس و التحكم فى درجة الحرارة باستخدام LM35

الطرف (بداية من اليسار)التوصيل
1Vcc
2Output To Arduino
3Ground

ملاحظة هامة :

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

شرح الدارة

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

جهاز لقياس و التحكم فى درجة الحرارة باستخدام LM35

سيقوم الحساس LM35 بقياس درجة الحرارة بإستمرار وعرضها على شاشة الـ LCD وبإستخدام مفتاح التحكم (Push Buttons) يمكننا التحكم في رفع أو خفض درجة الحرارة المطلوبة في المكان.

جهاز لقياس و التحكم فى درجة الحرارة باستخدام LM35

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

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

شرح الكود :

في البداية، نقوم بإضافة المكتبة الخاصة بشاشة الـ LCD :

ثم نقوم بتسمية منافذ الأردوينو المستخدمة في المشروع :

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

يتم تسجيل درجة الحرارة الناتجة من حساس الحرارة على المتغير temp. واستخدام المتغير defC لتسجيل درجة الحرارة المطلوبة. والمتغير upstate لتسجيل حالة المفتاح الأول الخاص برفع درجة الحرارة المطلوبة. والمتغير downstate لتسجيل حالة المفتاح الثاني الخاص بخفض درجة الحرارة المطلوبة.

ثم نقوم بإنشاء المتغير الخاص بشاشة الـ LCD وتحديد الأرجل التي سيتم توصيلها مع الأردوينو :

في الدالة ()setup، نقوم بضبط الإعدادات اللازمة، كإعدادات شاشة الـ LCD وضبط المفاتيح (Push Buttons) كمخرج :

في الدالة ()loop، نقوم بقراءة المفاتيح (Push Buttons) ، وقراءة قيمة الجهد الناتج من الحساس :

ثم نقوم بإختبار ما إذا تم الضغط على المفاتيح. فعند الضغط على مفتاح زيادة درجة الحرارة المطلوبة نقوم بإضافة 1 إلى درجة الحرارة المسجلة في المتغير defC. ويتم العكس عند الضغط على مفتاح خفض درجة الحرارة المطلوبة :

ونقوم بإستخدام قيمة الجهد الناتج من الحساس لإيجاد قيمة درجة الحرارة عن طريق المعادلة التالية :

وأخيرا، يتم عرض درجة الحرارة الحالية وأيضا درجة الحرارة المطلوبة على شاشة الـ LCD :

نظام الأمن للصندوق بإستخدام الاردوينو

في هذا المشروع سنتعلم كيف نستخدم المقاومة الضوئية (LDR (Light Dependent Resistor مع الاردوينو لعمل صندوق امان يقوم بإصدار صوت انذار عند فتحه.

 

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

 

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

 

arduino uno r3

Arduino Uno

Piezo sounder
220 Ω resistor
Full size breadboard 830

Breadboard

Breadboard Jumper Wire 65 pcs

Wires

 

Buzzer

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

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

المقاومة الضوئية LDR :

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

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

توصيل الدارة

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

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

يقوم البرنامج بمراقبة شدة الاضاءة في الصندوق عن طريق المقاومة الضوئية. طالما كان الصندوق مقفل تكون شدة الاضاءة ضعيفة جدا فلا يعمل الانذار و بمجرد فتح الصندوق خزانة يعمل الانذار .

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

 

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

شرح الكود :

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

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

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

غير ذلك يتم ايقاف الإنذار .

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

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

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 الذي يعبر عن حالة البطارية.