التحكم بالـ LED من خلال Node-RED

خلال هذا المشروع، ستتعرف على كيفية استخدام الـ Node-RED للتواصل مع منافذ GPIO الخاصة بالـ Raspberry Pi.
سنقوم بإنشاء تدفق Node-RED للتحكم في LED.

getting-started-with-node-red

التحكم بالروبوت عبر صفحة الويب

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

web-controlled-robot

الأدوات المستخدمة :

4WD Robot Chassis kit

L298 H bridge Module

 كاميرا للراسبري باي (raspberry pi camera module) أو USB webcam

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

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

 راسبيري باي (Raspberry Pi 3 Model B)

 

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

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

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

smartphone-controlled-arduino-robot

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

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

smartphone-controlled-arduino-robot

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

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

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

smartphone-controlled-arduino-robot

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

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

smartphone-controlled-arduino-robot

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

smartphone-controlled-arduino-robot

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

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

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

smartphone-controlled-arduino-robot

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

لا يمكن توصيل المحركات مباشرة مع الراسبيري باي، لأن المحركات تحتاج تيار عالي لا يستطيع الراسبيري باي إعطاءه. لهذا السبب سيتم استخدام Dual H-bridge كدائرة بين الراسبيري باي والمحركات.

 

 L298  H Bridge Module

smartphone-controlled-arduino-robot

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

smartphone-controlled-arduino-robot

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

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

smartphone-controlled-arduino-robot

توصيل جميع القطع الإلكترونية :

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

web-controlled-robot

اتبع الجداول التالية ليتم توصيل باقي القطع :

توصيل المحركات :
L298H-bridgeأسلاك المحركات
OUT  1الأسلاك ذات اللون الأسود على جهة اليسار (-)
OUT 2الأسلاك ذات اللون الأحمر على جهة اليسار (+)
OUT 3الأسلاك ذات اللون الأسود على جهة اليمين (-)
OUT 4الأسلاك ذات اللون الأحمر على جهة اليمين (+)
توصيل الطاقة مع قطعة L298H-bridge :
L298H-bridgeالبطاريات
12 Vالسلك ذو اللون الأحمر للبطارية (+)
GNDالسلك ذو اللون الأسود للبطارية مع GND على الراسبيري باي
توصيل الراسبيري باي مع L298H-bridge :
L298H-bridge الراسبيري باي (WiringPi Pin)
IN 1GPIO 0
IN 2GPIO 7
IN 3GPIO 3
IN 4GPIO 2
GNDGND

تثبيت و إستخدام المكتبة Wiring Pi :

مكتبة Wiring Pi هي مكتبة الوصول إلى GPIO  على لوحة الراسبيري باي . و انها تسمح لك التحكم بمداخل و مخارج الراسبيري باي من خلال bash script   او مباشر من خلال سطر أوامر.
تحقق أولا ما اذا كانت مكتبة wiringPi مثبتة مسبقا ام لا ، من خلال نافذة الـ  terminal قم بتشغل الامر التالي:

 اذا لم تقم بتثبيت GIT،  يمكنك تثبيتها من خلال الأمر التالي :

اذا تم ظهور رسالة خطأ هنا ، تأكد من تحديث الراسبيري باي إلى أخر اصدار من Raspbian :

للحصول على WiringPi باستخدام GIT، قم بكتابة الأمر التالي:

سوف تجلب النسخة المحدثة ثم يمكنك إعادة تشغيل البرنامج من خلال الأمر أدناه .
لبناء/ تثبيت البرنامج :

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

الآن يجب أن تكون قادر على إستخدام الأداة، قم بكتابة الأمر التالي على نافذة الـ Terminal :

اذا لم يتم ظهور شي أو رسالة خطأ فقد تم التثبيت للمكتبة بشكل صحيح. في حال تم ظهور رسالة الخطأ “command not found error” أو شي من هذا القبيل، تأكد من تثبيت و بناء المكتبة. للقيام بتشغيل و إطفاء الـ Wiring pin 0 )LED) ، تحتاج اولا إلى تعيين الدبوس كمخرج من خلال الأمر التالي :

“0”هي رقم المنفذ wiring، و “OUT”  لتعيين المنفذ كمخرج . سيتم تشغيل الـ LED  من خلال الأمر التالي :

“0” للدلاله على رقم المنفذ ، و “1”  لوضع الدبوس في حالة التشغيل الـ LED( للتشغيل 1 و إطفاءه 0) . و لإيقاف التشغيل ببساطة استخدم الأمر :

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

“0” لتعيين رقم المنفذ Wiring. هذا الأمر يقوم بترجيع  قيمة 1 اذا كان الضوء في حالة التشغيل و قيمة 0 اذا كان الضوء في حالة الإيقاف.

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

http://wiringpi.com/reference/

https://projects.drogon.net/raspberry-pi/wiringpi/the-gpio-utility/

سنقوم بإنشاء صفحة ويب على شبكة النت ، حيث انها ستكون متوافقه مع جميع الأجهزة ، و ستكون بحاجة لمعرفة اربع لغات : CSS,HTML (نمط الصفحة)، PHP (للتفاعل مع الخادم )،  JavaScript (التفاعلات مع المستخدم) . نحن بحاجة لتثبيت خادم الويب على الراسبيري باي. في حالتنا نحن لسنا بحاجة إلى قاعدة بيانات MySQL ، فقط بحاجة إلى خادم HTTP و PHP.

 تثبيت خادم الويب(Web Server) :

أولا قم بعمل تحديث للراسبيري باي :

أولا قم بتثبيت حزمة apache2 ، من خلال الأمر التالي :

 

الان قم بالتحقق ما اذا كان الخادم (Server) يعمل، قم بكتابة العنوان IP الخاص بالراسبيري باي على متصفح الويب. اذا كان يعمل ستظهر رسالة “It works!” كما هو موضح بالصورة أدناه.

remote-control-raspberry-pi-leds

إذا لم يتم مثل ما سبق، قم بالتحقق من العنوان IP الخاص بالراسبيري باي من خلال الأمر التالي :

أو قم بمحاولة إعادة تثبيت Apache  أو إعادة تشغيل الراسبيري باي.

للسماح للـ apache بمعالجة ملفات PHP، انت بحاجة إلى تثبيت PHP5 ووحدة PHP5 للـApache. قم بتتبع الخطوات التالية ليتم التثبيت :

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

قم بالدخول إلى ملف /var/www/html/ عبر نافذة الـTerminal من خلال الأمر التالي :

قم بعرض الملفات الموجودة على هذا الملف بإستخدام الامر التالي:

سيظهر لك ملف واحد يسمى “index.html”  هذا الملف يتوافق مع صفحة “It works!”. يمكنك حذفه ليتم إنشاء الصفحة الخاصة بهاذا المشروع. قم بحذف الملف بإستخدام الأمر التالي :

و إنشاء ملف أخر يسمى “index.php”  :

ثم قم بكتابة النص التالي داخل الملف:

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

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

إنشاء واجهة التحكم :

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

web-controlled-robot

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

web-controlled-robot

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

ملف Camera.php :

يتم استخدام لغة الـ HTML لتصميم واجهة المستخدم :

 أولا : يتم إدراج فيديو البث عن طريق الأمر التالي، كما يتم تحديد الـ src  URL (عنوان الويب ) الخاص بالبث المباشر

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

بعد ذلك، بإستخدام لغة الـ PHP نقوم بضبط إعدادات GPIO المستخدمة على الراسبيري باي كمخرج، وإعطاء الـ Pins المستخدمة القيم الإبتدائية :

لجعل هذه المفاتيح الأربعة تعمل مع المحركات (على سبيل المثال عند الضغط على مفتاح الرجوع للخلف يتم اشارات إلى المحركات من شأنها تحريك الروبوت للخلف)، لعمل ذلك يتم إنشاء ملفات أخرى :
– ملف camera.js يحتوي هذا الملف على الدالتين mouse_up و mouse_down للتحكم بمنافذ الراسبيري باي.
– ملف camera_rotate.php يتلقى المحتوى من camera.js، وبعد ذلك يتم تطبيق الإشارات على الـ GPIO المستخدمة في المشروع عن طريق إرسال إشارات إلى المحركات للتحكم بها إما 0v أو 5v.

يمكنك تنزيل ملفات صفحة الويب لهذا المشروع من هنا.  يجب حفظ جميع الملفات في /var/www/html على الراسبيري باي.
الآن قم بالإنتقال إلى شبكة الإنترنت والدخول إلى YourRaspiIPAddress/camera.php ، ستتمكن من رؤية بث الكاميرا، وسيتحرك الروبوت عند الضغط على أحد المفاتيح.

بث فيديو مباشر عبر شبكة الإنترنت

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

raspberry-pi-webcam-server

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

raspberry-pi-iot-intruder-alert-system

 كاميرا للراسبري باي (raspberry pi camera module) أو USB webcam

8Gb Microsd 

 راسبيري باي (Raspberry Pi 3 Model B)

كيفية إعداد خادم كاميرا الويب :

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

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

للبدء، سنقوم بإستخدام الـ Termial  لتحديث الراسبيري باي إلى أحدث إصدار.

إعتمادا على إصدار الـ Raspbian الذي تستخدمه سوف تحتاج إلى القيام ببعض الخطوات المختلفة.

إصدار  Raspbian Jessie :

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

قم بتنزيل وتثبيت الحزم التالية عن طريق إدخال الأوامر التالية  على الـ Terminal

الآن نحن بحاجة إلى تثبيت الحزم التالية :

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

إصدار Raspbian Stretch :

أولا قم بتثبيت الحزم التالية. الأمر التالي يعمل على الإصدارين من Raspbian Stretch .

بعد ذلك، قم بتنزيل ملف motion deb من GitHub وتثبيته بإستخدام dpkg.

هذا كل ماعليك القيام به للإنتقال إلى إعداد motion بحيث يتم تشغيلها على الراسبيري باي الخاص بك.

إعداد Motion :

الآن نحن بحاجة إلى إجراء بعض التعديلات على ملف motion.conf ، قم بفتح الملف عبر الأمر التالي :

قم بالبحث عن الأسطر التالية، ثم قم بتغييرها إلى ما يلي :

الآن نحن بحاجة إلى إعداد الـ daemon، أولا نحن بحاجة إلى تحرير ملف الـ Motion.

ابحث عن السطر التالي وقم بتغييره إلى ما يلي :

بمجرد الإنتهاء من ذلك، قم بحفظ الملف والخروج منه عن طريق الضعط على ctrl+x ثم Y

تأكد الآن من توصيل الكاميرا، وتشغيلها عبر الأمر التالي:

إذا كنت بحاجة إلى إيقاف البث، ببساطة قم بتشغيل الأمر التالي:

الآن يمكنك مشاهدة البث المباشر عبر صفحة الويب بإستخدام عنوان الـ IP Address الخاص بالراسبيري باي. قم بفتح المتصفح واستخدام IP address للراسبيري باي كما يلي :

إذا لم يتم تحميل صفحة الويب حاول إعادة تشغيل الخدمة عبر الأمر التالي :

 

raspberry-pi-webcam-server

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

خطوات إضافية لمستخدمي كاميرا الراسبيري باي

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

تثبيت الجهاز :

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

raspberry-pi-webcam-server

إعداد البرنامج :

لجعل كاميرا الراسبيري باي تعمل، ستحتاج للقيام ببعض الخطوات الإضافية.

تأكد من تفعيل كاميرا الراسبيري باي. بعد توصيل الكاميرا إلى لوحة الراسبيري باي ، من قائمة البدء ثم preferences قم بفتح Raspberry Pi Configuration Tool

raspberry-pi-webcam-server

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

raspberry-pi-webcam-server

إذا لم تكن مفعلة قم بتفعيلها عن طريق اختيار (Enable) ،   ثم قم بإعادة تشغيل نظام الراسبيري باي.

الآن قم بفتح ملف modules عن طريق إدخال الأمر التالي عبر الـ Terminal.

قم بإدخال السطر التالي في الجزء السفلي من الملف إذا لم يكن موجودا بالفعل، وبمجرد الإنتهاء قم بحفظ والخروج من الملف عبر الضغط على ctrl+x ثم y .

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

 

raspberry-pi-webcam-server

 

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

الإعدادات للوصول من خارج الشبكة  للبث :

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

ملاحظة: فتح منفذ (Port) على شبكة الإنترنت يمكن أن يتسبب في مخاطر أمنية .

 – أولا ، انتقل إلى صفحة router adimn (بالعادة يكون العنوان 192.168.1.1 أو 192.168.1.254)

raspberry-pi-webcam-server

 – بعد ذلك، قم بإدخال اسم المستخدم وكلمة المرور. الإفتراضي تكون admin , adimn.

– ثم قم بالذهاب إلى Advanced ، ثم Nat ، ثم قم بالضغط على Port Mapping .

– هنا قم بإدخال التالي :

Protocol : TCP/UDP ■
External start port: 8081 ■
External end port: 8081 ■
(Internal host: (Address of your Pi ■
Internal port: 8081 ■
Enable: Enable ■

raspberry-pi-webcam-server

يجب أن تكون الآن قادر على الإتصال ببث الـ webcam على الراسبيري باي من خارج الشبكة. قد تحتاج إلى إعادة تشغيل الـ Router لتصبح التغييرات مفعلة.

إذا لم تتمكن من الإتصال من خارج الشبكة المحلية، يمكنك تجربة ما يلي :

– تحقق من إعدادات جهاز router الخاص بك وتأكد من صحتها.
– تحقق من عنوان الـ IP انه لم يتغير . يمكنك إعداد Dynamic dns لمواجهة هذا.
– إعادة تشغيل الـ router .

تشغيل الراسبيري باي بالبطاريات

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

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

Raspberry Pi

راسبري باي

Raspberry_Pi_Batteries

DC-DC Converter

Raspberry_Pi_Batteries

حامل بطاريات 4 x AA

Raspberry_Pi_Batteries

أسلاك توصيل Female / Male jumper

Raspberry_Pi_Batteries

أطراف توصيل Pin Header Male

Raspberry_Pi_Batteries

مكواة لحام

Raspberry_Pi_Batteries

قصدير لحام

Raspberry_Pi_Batteries

جهاز قياس فولت وتيار متعدد Multimeter

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

نقوم بتوصيل طرفى حامل البطاريات على المدخلين IN+ و IN- لمحول الفولت DC-DC Converter بحيث يتم توصيل السلك الأحمر بـ  IN+ و السلك الأسود بـ IN- كالصورة التالية.

Raspberry_Pi_Batteries
Raspberry_Pi_Batteries
Raspberry_Pi_Batteries

نقوم بلحام طرفى توصيل Pin Header Male فى طرفى المخرج من محول الفولت DC-DC Converter كالتالي.

Raspberry_Pi_Batteries

 

Raspberry_Pi_Batteries

 

Raspberry_Pi_Batteries

 

Raspberry_Pi_Batteries

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

Raspberry_Pi_Batteries

 

الآن نقوم بضبط الفولت الخارج من الـ DC-DC Converter عن طريق قياس هذا الفولت بمقاس الفولت والتيار المتعدد Multimeter وذلك بضبطه على قياس الفولت المستمر DC ونقيس طرفى المخرج، ثم نقوم بظبط المكثف المتغير بإستخدام أى مفك رفيع حتى يصبح الفولت الخارج 5 فولت كالتالي.

Raspberry_Pi_Batteries

 

Raspberry_Pi_Batteries

 

Raspberry_Pi_Batteries

نقوم بالتوصيل بين طرفى التوصيل Pin Header والراسبيري باي عن طريق أسلاك التوصيل Female / Female بحيث يتم توصيل السلك الأحمر بالـ 5 فولت والسلك الأسود بالـ GND كالتالي.

Raspberry_Pi_Batteries

توصيل مؤقت الساعة الحقيقي RTC على الراسبيري باي

فى هذا الدرس سنتعلم كيفية توصيل مؤقت الساعة الحقيقي Real Time Clock – RTC على الراسبيري باي عن طريق بروتوكول I2C، حيث سيمكننا ذلك من جعل توقيت الراسبري باي يعمل بإستمرار حتى مع قطع التيار الكهربي عنها.

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

Raspberry_Pi_RTC_2

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

Raspberry Pi

راسبيري باي

Raspberry_Pi_RTC

مؤقت ساعة حقيقي Real Time Colck – RTC

Raspberry_Pi_RTC_Wires

أسلاك توصيل Female / Female jumper

 

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

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

Raspberry_Pi_RTC_1

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

في البداية نقوم بفتح الـ Terminal الخاص بالراسبري باي وكتابة الأوامر التالية أو نقوم بفتح نافذه الـ SSH الخاصة بها من جهاز آخر مربوط معها علي نفس الشبكة كما تم شرحه في الدرس الخامس.

فى البداية نقوم بتحديث نظام تشغيل الراسبيري باي.

ثم نقوم بالتعديل في أحد ملفات النظام كالتالي.

قم بإضافة السطر التالي (rtc-ds1307) داخل ملف modules الذى قمنا بفتحه بمحرك النصوص Nano، ثم نقوم بالضغط على Ctrl+O ثم enter ثم Ctrl+X وذلك لحفظ الملف السابق.

Raspberry_Pi_RTC_4

نقوم بإعادة تشغيل الراسبري باي كالتالي.

نقوم بتشغيل الراسبري باي وكتابة الأمر التالي، إذا كنت تستخدم راسبيرى باى ذات الإصدار Rev 1، ستحتاج لتغيير الرقم 1 فى آخر الأمر وإستبدالة بـ 0.

سوف تشاهد التالي بعد كتابة الأمر.

Raspberry_Pi_RTC_5

فى هذه التجربة يكون 0x68 هو عنوان الـ RTC Module .

ثم نقوم بالتعديل فى أحد ملفات النظام مرة أخرى كالتالي.

قم بإضافة السطرين التاليين داخل ملف rc.local الذي قمنا بفتحه بمحرك النصوص Nano.

Raspberry_Pi_RTC_6

ثم نقوم بالضغط على Ctrl+O ثم enter ثم Ctrl+X وذلك لحفظ الملف السابق.

لاحظ أنه يجب تغيير العنوان 0x68 للعنوان الذي سيظهر لك من الخطوة السابقة، وكذلك إذا كنت تستخدم راسبيري باي Rev1 نقم بتغيير i2c-1 إلى i2c-0.

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

بعد إعادة التشغيل إذا قمت بكتابة أمر i2cdetect ستلاحظ أن عنوان الموديول قد تغير إلى UU، وهذا دليل على أن الموديول يعمل جيداً.

Raspberry_Pi_RTC_7

الآن نقوم بضبط إعدادات الوقت والتاريخ من خلال الأمر التالي.

نقوم بإختيار Internationalisation Options ثم Change Timezone  وتختار بعد المنطقة والدولة التى تقيم بها.

Raspberry_Pi_RTC_8

 

Raspberry_Pi_RTC_9

 

Raspberry_Pi_RTC_10

يمكنك قراءة وقت وتاريخ الراسبيري باي بالأمر التالي.

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

وبمجرد تغيره يجب عليك كتابته على الـ RTC Module كالتالي.

وللتأكد يمكنك قراءة الوقت والتاريخ من الموديول مرة أخرى كالتالي.

يمكنك قراءة وقت الراسبيري باي وكذلك وقت الـ RTC Module سوياً لتتأكد من أنهم نفس التوقيت كالتالي.

Raspberry_Pi_RTC_11

 

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

في هذا الدرس سنتعلم كيفية توصيل حساس تحديد المسافات Ultrasonic Module بالراسبيري باي، حيث سيمكِنك هذا الحساس من تصميم الروبوتات التى تتفادى العوائق من حولها حتى وهي تتحرك في الظلام.

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

Raspberry_Pi_Ultrasonic

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

Raspberry Pi

راسبيري باي

Raspberry_Pi_Ultrasonic

حساس تحديد المسافات Ultrasonic Module

Raspberry_Pi_RTC_Wires

أسلاك توصيل Female / Female jumper

raspberry-pi-lcd-16x2-3

أسلاك توصيل Female / Male jumper

Raspberry-pi-lcd-16x2-15

لوحة تجارب Breadboard

Raspberry_Pi_Ultrasonic

مقاومة 1.2 كيلو أوم

Raspberry_Pi_Ultrasonic

مقاومة 2.2 كيلو أوم

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

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

Raspberry_Pi_Ultrasonic
Raspberry_Pi_Ultrasonic

توصيل هذه الدائرة سهل وبسيط ولكن الأساس بها مراعاة أن حساس الـ ultrasonic يعمل على 5 فولت وأن الراسبيري باي تعمل على 3 فولت، فيجب علينا تقسيم الفولت الخارج من الحساس لكي يصل للراسبيري باي كفولت منخض ولا يحرق الدائرة، كل ذلك يتم بإستخدام مقاومتين أحدهما كبيرة 2.2  كيلوأوم والأخري صغيرة 1.2 كيلوأوم كالتالي.

Raspberry_Pi_Ultrasonic

فى البداية نقوم بفتح الـ Terminal الخاص ب الراسبيري باي وكتابة الأوامر التالية أو نقوم بفتح نافذه الـ SSH الخاصة بها من جهاز آخر مربوط معها علي نفس الشبكة كما تم شرحه في الدرس الخامس.

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

Raspberry_Pi_Ultrasonic

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

Raspberry_Pi_Ultrasonic

 

Raspberry_Pi_Ultrasonic

فى البداية نقوم بفتح ملف بايثون ونسميه ultrasonic.py

ثم نقوم بكتابة الكود التالي بداخله.

ثم نقوم بتشغل البرنامج عن طريق الأمر التالي.

نلاحظ أن البرنامج يعمل ويقوم بعرض المسافة بين حساس الـ ultrasonic والكائن الذى أمام، قم بتغيير المسافة بين الحساس والكائن الذى أمامة ستلاحظ أن المسافة تتغير بالفعل.

Raspberry_Pi_Ultrasonic

أما عن شرح الكود الذي استخدمناه فهو في غاية السهولة حيث يتم إرسال نبضة للرجل Trig مع الأخذ فى الإعتبار مقدار الوقت بين high و الـ low وهو 10 ميكرو ثانية كالتالي.

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

بمعلومية سرعة الصوت فى الهواء والتى تساوي 343 متر فى الثانية أي تساوي 34300 سنتى متر في الثانية، نقوم بالتعويض في المعادلة لتصبح الصيغة النهاية هي حاصل ضرب الزمن فى 17150، ثم نقوم بالتقريب لأقرب رقمين عشريين.

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

توصيل شاشة OLED على الراسبري باي

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

Raspberry-Pi-OLED

 

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

Raspberry Pi

راسبري باي

Raspberry_pi_OLED_1

شاشة عرض OLED

raspberry-pi-lcd-16x2-2

أسلاك توصيل Female / Female jumper

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

نقوم بتوصيل الدائرة كما في الصورة التالية ومن الممكن أن نقوم بتوصيلها بإستخدام لوحة التجارب الـ breadboard

raspberry-pi-oled
Raspberry-Pi-OLED

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

فى البداية نقوم بفتح الـ Terminal  الخاص بالراسبري باي وكتابة الأوامر التالية أو نقوم بفتح نافذه الـ SSH الخاصة بها من جهاز آخر مربوط معها علي نفس الشبكة كما تم شرحه في الدرس الخامس

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

ثم نقوم بتنصيب مكتبات إضافية لتعمل الشاشة على الراسبري باي.

ثم نقوم بتحميل ملفات مكتبة SSD1306 للتحكم فى الـOLED والمعدة مسبقاً من Adafruit من خلال الأوامر التالية.

نقوم بتغيير المسار إلى الملف الذي قمنا بتنزيلة ونقوم بعمل تنصيب للمكتبة من خلال الأوامر التالية.

بمجرد الإنتهاء من تنصيب المكتبة تصبح جاهزة مباشرة لإستدعائها من خلال أي برنامج Python عن طريق كتابة الأمر التالي في ملف الـ Python.

سنقوم الآن بالذهاب لملف examples داخل مكتبة الـ OLED لنشغل أحد الأمثلة حتى نتأكد من أن الشاشة تعمل بنجاح وذلك كالتالي.

سنلاحظ أن الشاشة تعمل وتعرض مجموعة من الأشكال المختلفة وكذلك كلمة Hello World كالتالي.

Raspberry_Pi_OLED_3

يجب ملاحظة أن هذه المكتبة تدعم برتوكول I2C وكذلك SPI وكذلك عدد مختلف من مقاسات الشاشات، فكل ما عليك أن تقوم بتحدد البروتوكول الذي تعمل علية شاشتك وفي هذه الحالة I2C ومقاس الشاشة 128×64، فنقوم بفتح ملف shapes.py من خلال برنامج nano.

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

بإمكانك قراءة المزيد ومراجعة الكود المكتوب فى برنامج py فهو سهل وبسيط حيث يقوم برسم مجموعة من الخطوط عن طريق الأمر draw وكذلك طباعة كلمة Hello World مثل التالي.

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

Raspberry_Pi_OLED_4

توصيل شاشة LCD 16×2 للراسبيري باي

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

raspberry_pi_LCD_16x2

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

راسبري باي

Raspberry Pi

شاشة عرض LCD 16×2

Raspberry-pi-lcd-16x2-1

أسلاك توصيل Female / Female jumper

raspberry-pi-lcd-16x2-2

أسلاك توصيل Female / Male jumper

raspberry-pi-lcd-16x2-3

مقاومة متغيرة 10 كيلو أوم

raspberry-pi-lcd-16x2-3

لوحة تجارب

 Raspberry-pi-lcd-16x2-15

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

نقوم بلحام الـ Pin Header المرفق مع الشاشة كالتالى.

raspberry-pi-lcd-16x2-5

 

raspberry-pi-lcd-16x2-6

 

raspberry-pi-lcd-16x2-7

 

raspberry-pi-lcd-16x2-8

 

نقوم بتوصيل الدائرة كما فى الصورة التالية ومن الممكن أن نقوم بتوصيلها بإستخدام لوحة التجارب الـ  breadboard

raspberry-pi-lcd-16x2-9
Raspberry-pi-lcd-16x2-10

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

في البداية نقوم بفتح الـ Terminal الخاص ب الراسبري باي وكتابة الأوامر التالية أو نقوم بفتح نافذة الـ SSH الخاصة بها من جهاز آخر مربوط معها على نفس الشبكة كما تم شرحه في الدرس الخامس.

في البداية يجب ان نقوم بتحميل ملفات مكتبة التحكم فى الـ LCD والمعدة مسبقاً من Adafruit من خلال الأمر التالي.

نقوم بتغيير المسار إلى الملف الذى قمنا بتنزيلة ونقوم بعمل تنصيب للمكتبة من خلال الأوامر التالية.

بمجرد الإنتهاء من تنصيب المكتبة تصبح جاهزة مباشرة لإستدعائها من خلال أى برنامج Python عن طريق كتابة الأمر التالي فى ملف الـ Python

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

ثم نقوم بكتابة الكود التالي بداخله والذي يقوم بإختبار مجموعة من الأوامر الأساسية فى إستخدام الـ LCD

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

يقوم البرنامج السابق بمجرد تشغيله بعرض كلمة Hello World لمدة 5 ثوانى .

Raspberry-pi-lcd-16x2-11
  • بعد ذلك يقوم بعرض رسالة من خلال سطر الأوامر ويطلب منك أن تقوم بكتابة جملة ما لتعرض على الشاشة مثل Geeks Valley وبمجرد الضغط على Enter سنلاحظ أن تم طباعة جملة Geeks Valley على الشاشة لمدة 5 ثوانى.
Raspberry-pi-lcd-16x2-12

 

Raspberry-pi-lcd-16x2-13

بعد ذلك يقوم البرنامج بطباعة جملة Goodbye World على الشاشة لمدة خمس ثوانى أخرى.

Raspberry-pi-lcd-16x2-14

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

هناك الكتير من الأوامر الخاصة بهذه المكتبة وهذه المجموعة من أهمها.

home()– يقوم هذا الأمر بتحريك نقطة الكتابة لأول الشاشة
clear()– يقوم بمسح كل ما هو مكتوب على الشاشة
set_cursor(col, row)– يقوم هذا الأمر بتحديد نقطة الكتابة على الشاشة وذلك بتحديد رقم العمود col وكذلك رقم السطر row
show_cursor(show)– يقوم بعرض نقطة الكتابة على الشاشة
blink(blink)– يقوم بومض نقطة الكتابة على الشاشة
move_left()or move_right() – يقوم بتحريك نقطة الكتابة على الشاشة يميناً ويساراً
set_right_to_left()or set_left_to_right() – يقوم بتغيير إتجاه الكتابة من اليمين لليسار ومن اليسار لليمين
message(text)– ببساطة نقوم بكتابة النص المراد عرضه على الشاشة

تنفيذ برنامج البايثون تلقائياً على الراسبيري باي

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

DSC00009

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

DSC00009

راسبيري باي

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

فى البداية نقوم بفتح ال Terminal الخاص ب الراسبيري باي وكتابة الأوامر التالىة أو نقوم بفتح نافذه ال SSH الخاصة بها من جهاز آخر مربوط معها على نفس الشبكة كما تم شرحة فى الدرس الخامس.
نقوم بفتح محرر النصوص Nano ويقوم بإنشاء ملف البرنامج الذى نريد تشغيلة مع فتح الراسبري باي وليكن اسمه print.py

نقوم بكتابة الكود بداخلة بلغة البايثون python وللتوضيح سأقوم بكتابة برنامج يقوم بطباعة كلمة Hello World! ويقوم بطباعة الوقت والتاريخ الحالى.

ثم نقوم بالضغط علي Ctrl+O ثم enter ثم Ctrl+X وذلك لحفظ الملف السابق.
نقوم بإنشاء directory جديد لنضع الكود بداخلة ونسمية launcher ونوجه الـ terminal لهذا المسار الجديد ونقوم بإنشاء برنامج shell script.

فى هذا البرنامج نكتب الكود التالى الذى يقوم بتوجيه الـ terminal إلى مكان تواجد كود البايثون المراد تنفيذه وكذلك بدأ تشغيله.

ثم نقوم بالضغط علي Ctrl+O ثم enter ثم Ctrl+X وذلك لحفظ الملف السابق.
نحتاج الآن أن نجعل هذا البرنامج excutable كالتالي.

نقوم بإنشاء directory جديد بإسم logs فى الـ home وهو لكى يقوم الـ crontab بكتابة أى رسائل أخطاء هناك.

الـ crontab هو عبارة عن deamon يعمل فى خلفية نظام الـ Linux وهو يتيح لنا تنفيذ برامج فى أوقات محددة.
نقوم بكتابة الأمر التالى لكي يفتح نافذة الـ crontab

نقوم بكتابة الأمر التالي والذى يقوم بتشغيل الـ script مع كل Reboot للراسبري باي وسوف تلاحظ أنه أمر بسيط جداً فقط نقوم بكتابة @ ثم متى نريد تنفيذ هذا الأمر ثم مسار الملف المراد تنفيذه وهنا كي يتضح المثال سنقوم بعمل حفظ لناتج تنفيذ الأمر فى file بإسم cronlog فى directory الـ logs الذى قمنا بإنشائه مسبقاً عن طريق (<<) وهى تقوم بالإستمرار فى الحفظ فى نفس الملف ثم نقوم بعمل redirection للـ standard error فى الـ standard out  عن طريق كتابة 2>&1.

نقوم بعمل أعادة تشغيل للراسبري باى عن طريق الأمر التالي.

إذا قمنا الآن بفتح الـفايل cronlog سنجد أنه قد طبع بداخلة كلمة Hello World! ومن بعدها التاريخ والوقت ، وفى كل مرة نعيد تشغيل الجهاز فيها سيقوم بنفس الكتابة مجدداً مما يعنى أن الـ crontab يعمل جيداً.
الآن إذا أردت تنفيذ أمر معين فى وقت محدد كل ما عليك هو إتباع الـ format التالي فى الأمر.

الخانةالوصفالقيم المتاحة
MINالدقائق0 to 59
HOURالساعات0 to 23
DOMيوم فى الشهر1 to 31
MONالشهر1 to 12
DOWيوم فى الأسبوع 0 to 6
CMD الأمر المراد تنفيذه

وإذا أرت التكرار بشكل منتظم قم بإستبدل الخانة المراد التكرار فيها بـ * بدلاً من القيمة.
فمثلا إذا أردت تنفيذ البرنامج السابق فى وقت محدد وكتبت التالى فى الـ crontab.

 فهذا يعنى التالى :

30 => 30 دقيقة

08 => الساعة الثامنة صباحاً

10 => اليوم العاشر من الشهر

06 => شهر يونيو

*  => أى يوم من أيام الأسبوع

مثلاً أيضاً أذا أردت تنفيذ برنامج كل دقيقة فما عليك إلا الكود التالي.

أما إستخدام @ يكون كالتالي:

الأمريساوىالمعنى
@yearly0 0 1 1 *كل عام
@daily0 0 * * *كل يوم
@hourly0 * * * *كل ساعة
@rebootمع كل إعادة تشغيل

إستخدام الراسبيري باي كجهاز إرسال موجات FM

فى هذا الدرس سنتعلم كيفية إسخدام الراسبيرى باى كجهاز راديو لإرسال الأصوات عن طريق موجات ال FM ويتم ذلك عن طريق ال hardware  المدمج فى الراسبيرى باى الذى يقوم بتوليد spread-spectrum clock من خلال أحد أطراف ال GPIO وهو GPIO4 وكل ما تحتاج إضافته هو سلك لهذا الطرف كي يحدث التذبذب حولة وتنتشر الموجات لمسافة كبيره تصل إلى 100 متر ومن الممكن أن لا تستخدم هذا الهوائي ولكن مدى الراديو سيقل إلى 10 cm فقط.

raspberry_pi_fm_radio

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

Raspberry Pi

راسبيرى باى

raspberry_pi_fm_radio_1

سلك توصيل طوله أكبر من 75 cm

raspberry_pi_fm_radio_1

سلك توصيل Female jumper

raspberry_pi_fm_radio_3

قطعة Heat Shrink

raspberry_pi_fm_radio_5

مكواة لحام

raspberry_pi_fm_radio_6

قصدير لحام

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

نقوم بقياس 75 cm  من كابل التوصيل (من الممكن أن يقل الكابل عن هذا الطول ولكن كلما قل طوله كلما قلت المساحة المغطاه لبث الراديو)، ونقوم بلحامه فى طرف واحد من سلك التوصيل ال Female  بإستخدام مكواة اللحام كالتالي ويكون مجال بث هذا الهوائي حوالي 100 متر .

raspberry_pi_fm_radio_7

 

raspberry_pi_fm_radio_8

 

نقوم بإستخدام قطعة ال heat shrink لتغطية مكان اللحام ثم نقوم بتسخينها بإستخدام قداحة حتى تنكمش على السلك لتقوم بحمايته كالتالي :

raspberry_pi_fm_radio_9
raspberry_pi_fm_radio_10

 

نقوم بتوصيل الكابل السابق الإعداد فى الطرف رقم 7 من ارجل التوصيل GPIO وهو GPIO4.

 

raspberry_pi_fm_radio_11

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

فى البداية نقوم بفتح ال Terminal  الخاص ب الراسبيري باي وكتابة الأوامر التالية أو نقوم بفتح نافذه ال SSH الخاصة بها من جهاز آخر مربوط معها على نفس الشبكة كما تم شرحة فى الدرس الخامس.

 نقوم بكتابة الأمر التالي وهو يقوم بتزيل مالفات PiFm الخاصة بتحويل الراسبيري باي لجهاز إرسال وهي تكون مضغوطة في ملف من النوع tar.

نقوم بفك ضغط الملفات التي تم إنزالها عن طريق الأمر التالي.

نقوم بالـتأكد أنه تم فك ضغط كل الملفات التي تقوم بتشغيل الراديو عن طريق الأمر ls الذي يعرض محتويات المجلد المتواجدين فيه.

raspberry-pi-fm-radio-12

نقوم بكتابة الأمر التالى الذي بدورة يقوم بتشغيل الراديو على تردد ال FM الذى نكتبة فى نهاية الأمر فقد أستخدمت تردد 93.7 MHz  وهو تردد لا ينتمي لأى قناه إذاعية وكذلك قمت بإختار التسجيل المرفق مع الملفات المسمي sound.wav ولكنك تستطيع تغيره إلى أى تسجيل تفضلة على أى يكون إمتداده .wav وليس .mp3 ويكون أيضاً 16-bit mono

إذا أرت فى أى وقت وقف الصوت ما عليك سوى الضغط على ctrl + c فيتوقف الصوت المرسل تماماً.

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

raspberry-pi-fm-radio-13

كيفية زيادة سرعة الراسبيري باي؟

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

raspberry_pi_overclock_1

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

DSC00009

راسبيرى باى

raspberry-pi-overclock-2

مشتت حرارى

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

في البداية يجب أن تلاحظ أن كسر السرعة فى الراسبيري باي كان يؤدى إلى فقد الضمان قبل عام 2012 حيث أن مؤسسة راسبري فاونديشن لم تكن تدعم كسر السرعة وذلك لخطورته على حرق اللوحة بسبب زيادة درجة الحرارة عليها بشكل كبير، ولكنها بعد ذلك قامت بدعم كسر السرعة في نظام راسبيان بما يحافظ على اللوحات ولا يعرضها للخطر وذلك فى كل الإصدارات من راسبري باي 1 و B+ و 2 ماعدا راسبري باي 3 حيث أن تعطى أداء يقارب أقصى إمكانيات ممكنة فى اللوحة فلا داعي لكسر السرعة.

بإمكانك بسهولة تغير تفعيل كسر السرعة من قائمة خصائص الراسبيري باي Raspi-config كالتالي فبإمكانك الإختيار من مجموعة من الإعدادات المعدة مسبقاً التي بإمكانها أن تصل الراسبيري باي حتى تردد 1000 ميجاهرتز.

raspberry_pi_overclock_3

 

raspberry_pi_overclock_4

أو من خلال سطر أوامر لينكس وذلك بالتعديل على ملف txt كالتالى فنقوم بكتابة الأمر التالي في سطر أوامر النظام Terminal.

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

Frequency Overclocking
arm_freq – تردد البروسيسور والقيمة الأولية لها هي 700
gpu_freq – تردد كارت الشاشة الخاص باللوحة والقيمة الأولية لها هي 250
sdram_freq – تردد الرامات والقيمة الأولية لها هي 500
core_freq – تردد ال core الخاص بكارت الشاشة وهو له تأثير على أداء البروسيسور حيث أنه يتم التحكم به من خلال الـ L2 cache
h264_freq – تردد دائرة فك تشفير الفيديو
isp_freq – تردد دائرة التحكم فى الكاميرا
v3d_freq – تردد عرض الفيديو  3D
Voltage Overclocking
over_voltage – مقدار فرق الجهد الذي سيصل له البروسيسور وكذلك كارت الشاشة وأقل قيمة له هي (-16) و أقصى قيمة له هي (8) والقيمة الأولية له هي (0)

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

arm_freq=900
gpu_freq=300
core_freq=250
h264_freq=250
isp_freq=250
v3d_freq=250
sdram_freq=450
over_voltage=6

 

زر إغلاق الراسبري باي

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

IMAG3682

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

DSC00009

راسبرى باى

IMAG3664

سلك توصيل female \ female

IMAG3671

زر ذو طرفين press button

IMAG3665

مكواة لحام

DSC00096

قصدير لحام

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

نقوم بقص سلك التوصيل لنصفين متساويين فى الطول ثم نقوم بقطع جزء من الغلاف البلاستيكي الحامي للسلك حتى يظهر جزء مناسب من السلك فنستطيع لحامه فى زر الضغط.

IMAG3672

نقوم بلحام طرفيى السلكين فى طرفى رز الضغط كالتالي.

IMAG3677

إذا كان زر الضغط من ذوى الأربعة أطراف فعليك ملاحظة الصورة التالية وأن تقوم بلحام طرفى الأسلاك فى النقطتين A,B أو C,D.

Pi Shutdown Button

كل ما عليك فعله الآن هو إختيار أحد أرجل التوصيل GPIO المناسبة والتى ستختلف طبقاً لنوع الراسبرى باى المستخدمة، في حالتي هذه أستخدم راسبرى باى موديل B+ فقمت بإختيار أقرب رجل توصيل لأحد رجول الأرضي GND وكانت هى الرجل GPIO7نا للا وبإمكانك إختيار ما تريد.

gpio-pinout-bplus

نقوم بتوصيل الزر السابق الإعداد فى الطرفين رقم 26 و رقم 25 من أرجل التوصيل GPIO كالتالي

IMAG3682

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

فى البداية نقوم بفتح ال Terminal الخاص ب الراسبري باي وكتابة الأوامر التالية أو نقوم بفتح نافذه الـ SSH الخاصة بها من جهاز آخر مربوط معها على نفس الشبكة كما تم شرحة فى الدرس الخامس.
نقوم بكتابة الأمر التالي الذى يقوم بفتح محرر النصوص الشهير Nano ويقوم بإنشاء ملف اسمه off_button_pi.py لكتابة الكود بداخلة بلغة البايثون python.

نقوم بكتابة الكود التالي بداخل الملف السابق

2

ثم نقوم بالضغط على Ctrl+O ثم enter ثم ctrl+X وذلك لحفظ الملف السابق.

وكما نلاحظ الكود بسيط جداً يعتمد على إستدعاء مكتبتين رئيسيتين وهما GPIO وهى للتعامل مع أرجل التوصيل وجعل الرجل الموصلة على زر الضغط تعمل كطرف إدخال، وكذلك لتشغيل الـ Pull Up Resistor الداخلية فى الراسبرى باى فيمكننا بذلك جعل رجل التوصيل موصلة دائماً على فولت  Highوعند الضغط فقط على الزر تصبح موصلة بـ Low
ومكتبة os وهى الأهم هنا حيث تمكننا من التعامل مع نظام التشغيل وارسال أوامر له عن طريق كود البايثون فنستخدمها داخل أمر try الذى يتنظر أن يتم الضغط على الزرعن طريق أمر  GPIO.wait_for_edge ليقوم بعد ذلك بإرسال الأمر sudo shutdown -h now ليغلق الراسبرى باى بطريقة سليمة.

إذا كنت تريد تغيير رجل التوصيل GPIO كل ماعليك هو تغيّر رقمها فى الملف السابق gpio_pin_number لتصبح تساوى رقم الـ GPIO الأخرى التى تريد إستخدامها.

يبقى لنا خطوة واحده وهى أن نجعل هذا البرنامج يعمل تلقائياً عند فتح الراسبرى باى وذلك بفتح الملف rc.local بمحرر النصوص Nano مع كتابة sudo قبل الأمر وذلك ليعطى للمستخدم صلاحيات الـ  super user فيمكنك تعديل هذا الملف.

نقوم بإضافة مسار الملف الذى قمنا بإنشائه فى آخر rc.local قبل exit 0 مع كتابة اسم اللغة المستخدمة فى كتابة البرنامج قبل المسار وهى python كالتالى.

4

ثم نقوم بالضغط على Ctrl+O ثم enter ثم Ctrl+X وذلك لحفظ الملف السابق.

كل ما تبقى عليك هو عمل reboot  للراسبرى باى هكذا.

تستطيع الآن الضغط على زر الإغلاق وهو سيقوم بطريقة سليمة وصحيحة بإغلاق الراسبرى باى.