أردوينو – الدرس الثامن عشر – ارسال بريد الكتروني حال استشعار الحركة

في هذا الدرس ستتعلم استخدام مستشعر الحركة ‘Motion PIR sesnor’ وجعل الأردوينو يرسل بريد إلكتروني حالما يستشعر الحركة عبر برنامج كتب بالبايثون Python بكمبيوترك.

يقوم متحكم الأردوينو بإنتظار إشارة من مستشعر الحركة ‘Motion PIR sensor’، وفور حصولة على اشارة من المسشتعر تشير لوجود تحرك ، يقوم متحكم الأردوينو بإرسال الأمر لجهاز الكمبيوتر عبر منفذ USB لإرسال البريد الإلكتروني.

pir email project

أردوينو – الدرس الثالث عشر – عرض درجة الحرارة والاضاءة على الشاشة (الجزء الثاني)

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

LCD Sensing project

سنقوم بقياس درجة سطوع اضاءة الغرفة عبر مستشعر الاضاءة ‘photocell’ الذي قمنا بإستخدامه في الدرس العاشر.

لقياس درجة الحرارة ، سنقوم بإستخدام  مستشعر الحرارة . هذه الاداة تمتلك ثلاث رؤوس ، واحدة للحصول على طاقة 5V وواحدةللمخرج الأرضي GND وواحدة لأجل التوصيل إلى مدخل تناظري analog input بالأردوينو.

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

lcd

LCD Display (16×2 characters)

pot

10kΩ variable resistor (pot)
مقاوم متغير

1 kΩ Resistor

1kΩ Resistor

Photocell

Photocell

TMP36 temperature sensor

TMP36 temperature sensor
مستشعر الحرارة

Half-size Breadboard

Half-size Breadboard

Arduino Uno R3

Arduino Uno R3

Jumper wires

Jumper wires

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

تصميم لوح التجارب يعتمد على تصميم الدرس الثاني عشر

lesson 13

قمنا بتغيير بعض التوصيلات في التصميم كما تلاحظ ، تحديداً التوصيلات التي حول المقاوم المتغير ‘pot’ .

مستشعر الضوء ‘photocell’ والمقاومه  1kΩ و مستشعر الحرارة TMP36  هي الاضافات التي قمنا باضافتها للوح التجارب. الجزء المقوس لمستشعر الحرارة TMP36 يكون بإتجاه الشاشة.

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

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

 

في السطر التالي قمنا بوضع تعليق ‘comment’ لمعرفة التوصيلات مابين منافذ الأردوينو ورؤوس شاشة الـLCD

 

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

في دالة setup هنالك امرين علينا القيام بها ، الأول علينا تحويل القيمة التناظرية analog لمستشعر الحرارة إلى مقياس حرارة صحيح ، والثاني هو اظهارها على شاشة الـLCD

أولا لنلقي نظرة على طريقة تحويل واحتساب درجة الحرارة

 

قمنا بالسطر الأول بقراءة القيمة التناظرية من مستشعر الحرارة وتخزين القيمة في tempReading
السطر الثاني قمنا بضرب قيمة tempReading في 5 ثم القسمة على 1024 وتخزين الناتج في tempVolts وهي قيمة الجهد ( مابين 0 و 5 )
السطر الثالث  قمنا بطرح 0.5 من قيمة tempVolts  (الجهد) ثم ضربها في 100 وتخزين القيمة في tempC وذلك لتحويل الجهد إلى درجة الحرارة C
السطر الرابع قمنا بضرب قيمة tempC (درجة حرارة C) في 9 ثم قسمتها على 5 ثم جمعها+32 وتخزين القيمة في tempF وذلك لتحويل درجة الحرارة C إلى درجة حرارة F

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

لحل هذه المشكلة ، كل ماعليك فعله  هو طباعة السطر كاملاً في كل مره  ، داخل دالة  loop.

 

سطر التعليق ‘comment’ وضع لاجلك حتى تعرف عدد الخانات 16 التي يمكن اظهارها في شاشة LCD في حال رغبت في بتغيير الجمل التي ترغب وضعها اسفلها.

لملء الفراغات ، قم بتحديد موضع المؤشر حيث بداية الخانة التي ترغب بإظهارها على الشاشة.

قمنا بعمل نفس الطريقة مع مستشعر الاضاءة ‘photocell’ ، لايوجد مقياس لدرجة سطوع الضوء لذلك قمنا بإظهار القراءة التناظرية analogRead التي حصلنا عليها من المستشعر مباشرة على الشاشة.

امور اخرى عليك القيام بها

حاول ان تظهر درجة الحرارة المئوية C بدلاً من الفهرنهايت F

أردوينو – الدرس الحادي عشر – اصدار الأصوات

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

making sounds

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

1 kΩ Resistor

1 kΩ Resistor

Piezo sounder

Piezo sounder

سماعة البيزو

photocell

Photocell
المستشعر الضوئي

Half-size Breadboard

Half-size Breadboard

Arduino Uno R3

Arduino Uno R3

Jumper wires

Jumper wires

تشغيل المقطع الصوتي

في هذا الجزء ستجد ان سماعة البيزو ‘piezo buzzer’ موضوعه على لوح التجارب . واحده من ارجل القطعه موصولة بالمجال الأرضي GND والرجل الأخرى مربوطه بالمنفذ الرقمي digital pin 12 .

piezo breadbaord

piezo breadboard2

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

 

لتشغيل مقطع صوتي ، تقوم بتحديد المجال الترددي . انظر للجزء التالي من الدرس المخصص للصوت .
كل مجال ترددي لكل نوته صوتية تم الاحتفاظ به في مصفوفه ‘array’ . المصفوفه ‘array’ هي مثل القائمة ، وبذلك يتم تشغيل المقطع عبر الانتقال لكل نوته صويته بالقائمه.

في حلقة ‘for’ loop سيبدأ العد من 0 وحتى 9 باستخدام القيمه i . للحصول على المجال الترددي للنوته الصوتية لتشغيلها بكل خطوه نقوم باستخدام ‘tone[i]’. هذا يعني ان القيمة الموجودة في مصفوفة ‘tones’  في موضع ‘i’
كمثال ، قيمة ‘[0]tones’ هي 261 ، وقمية ‘[1]tones’ هي 277 .. وهكذا ..

الأمر ‘tone’ في الأردوينو  يقوم بأخذ متغيرين اثنين ، الأول هو المنفذ الذي يقوم بتشغيل المقطع الصوتي والثاني هي التردد الصوتي للمقطع لتشغيله.

عند الانتهاء من تشغيل من جميع النوتات الصوتية ، أمر ‘noTone’ يقوم بإيقاف تشغيل الصوت.

كان بإمكاننا  ان نضع الكود البرمجي لتشغيل الاصوات داخل دالة loop عوضاَ عن دالة setup وذلك لأنها ستكرر المقطع الصوتي مره بعد مره دون توقف مما سيتسبب بالإزعاج لذلك تم وضعه داخل دالة setup
لذلك دالة loop فارغة .

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

الصوت

الصوت هو عبارة عن ذبذبة في ضغط الهواء . سرعة الذبذبة (دورات بالثانية أو هيرتز ) هي مايصدر الصوت. كلما زادت قوة الذبذبة كلما زاد علو الصوت.

piezo

المتوسط C عادة يعرف بالتردد 261Hz. وكأنك قمت بتشغيل واطفاء منفذ رقمي ‘digital pin’ لاكثر من 261 مره بالثانية .

لسماع النتيجة ، علينا القيام بتركيب قطعه تقوم بترجمة التردادت الالكترونية إلى صوت . هذا يمكن عن طريق تركيب سماعات كبيره او عبر استخدامنا لسماعة البيزو ‘piezo sounder’.

سماعة piezo تستخدم نوع خاص من الكريستال تتمدد وتنكمش كتردد الكتروني والتي ينتج عنها الصوت.

آلة Pseudo-Theremin الموسيقية

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

سنقوم باضافة المستشعر الضوئي ‘photocell’ و المقاوم resistor للوح التجارب.

piezo breadboard

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

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

الكود واضح ، نستخدم المنفذ التناظري ‘analog pin’  للقراءة من A0 لقياس الضوء. وستكون القيمة مابين 0 و 700.

اضفنا القيمة 200 لجعل التردد 200Hz كأقل تردد ، وببساطه يتم اضافة القراءه عبر قسمة القيمة على 4 ، لاصدار تردد مابين 200Hz و 370Hz.

امور اخرى عليك القيام بها

حاول تغيير القيمة 4 بالسطر التالي لخفض القيم المرتفعة

 

تغيير القيمه سيرفع أو يقلل من التردد اعتماداً على الرقم الذي قمت بوضعه.

حاول التلاعب بقيم النوتات الصوتية لترى ماذا سيحدث..

أردوينو – الدرس العاشر– استشعار الاضاءة

ستتعلم في هذا الدرس كيفية قياس قوة الاضاءة باستخدام المدخل التناظري ‘analog input’.
ستستخدم ماتعلمته في الدرس التاسع، واستخدام قوة الاضاءة بالغرفة للتحكم في عدد مصابيح الـLEDs التي يتم اضاءتها.

sensing light

تم استبدال المقاوم المتغير ‘pot’ في الدرس التاسع ووضعنا مكانه المستشعر الضوئي ‘photocell’

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

5mm Red LED

5mm red LED

عدد 8

270 Ω Resistors

270 Ω Resistors

عدد 8

1 kΩ Resistor

1 kΩ Resistor

74HC595 Shift Register

74HC595 Shift Register

Photocell

Photocell

المستشعر الضوئي

Half-size Breadboard

Half-size Breadboard

Arduino Uno R3

Arduino Uno R3

Jumper wires

Jumper wires

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

تصميم الدائرة في هذا الدرس هو نفس التصميم بالدرس التاسع ولكن قمنا باستبدال المقاوم المتغير ‘pot’ بـالمستشعر الضوئي ‘photocell’ و مقاومة 1 kΩ .

التالي هو تصميم لوح التجارب من الدرس التاسع

lesson 9

فقط قم بازالة المقاوم المتغير ‘pot’ واستبداله بالمستشعر الضوئي’photocell’ ومقاوم ..كالتالي

lesson 10

المستشعر الضوئي photocell

المستشعر الضوئي ‘photocell’ يعتبر مقاوم يعتمد على الضوء ويدعى احيانا بـ’LDR’ وذلك اختصار لـ Light Dependent Resistor.

المستشعر الضوئي يملك قوة مقاومه تصل حتى 50kΩ في الظلام الدامس و 500Ω عند وجود الاضاءة . يمكنان بواسطة متحكم الأردوينو أن نقرأ قيمة المقاومه للمستشعر عبر مدخل تناظري ‘Analog input’

أسهل طريقة للقيام بهذا هو ربطها مع مقاوم ثابث

photocell_fixedResistor

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

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

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

الكود التالي مشابه للدرس التاسع ولكن نظراً لإستخدامنا للمستشعر الضوئي قمنا ببعض التغيرات البسيطه

 

أول شيء قمنا بتغييره هو تسيمة المنفذ التناظري ‘analog pin’ من ‘potPin’ إلى ‘lightPin’  وذلك قمنا بتبديل المقاوم المتغير ‘pot’ بالمستعشر الضوئي ‘photocell’ .

التغيير الآخر هو السطر الذي يقوم باحتساب عدد مصابيح الـLEDs لإضاءتها

هذه المره قمنا بقسمة القراءة على 57 بدلاً من 114 من الدرس التاسع . بمعنى آخر قمنا بقسمتها على نصف القيمة السابقه  حتى نقوم بتوزيعها على 9 مجموعات، ابتداءاً من (حيث لايتم اضاءة أي من المصابيح الثمانية) وحتى (اضاءة جميع المصابيح الثمانية) ، العامل الاضافي هو حساب قيمة المقاومه الثابته 1kΩ
هذا يعني انه عندما تكون قيمة المستشعر الضوئي ‘photocell’ هي 1kΩ (نفس قيمة المقاوم الثابت ) يتم قراءة الصف 1023 وقسمته على 2 = 511 . بذلك يتم اضاءة جميع المصابيح (numLEDSLit ستكون 9)

امور اخرى عليك القيام بها

لتغيير مقدار حساسية المستشعر للضوء قم بتغيير القيمة 57 التي يتم قسمة القراءه عليها.

زيادة القيمه ستجعل من المستشعر أقل حساسية.