جدول المحتويات:

RaspberryPi Islamic Prayer Watch & Alarm: 15 خطوة (بالصور)
RaspberryPi Islamic Prayer Watch & Alarm: 15 خطوة (بالصور)

فيديو: RaspberryPi Islamic Prayer Watch & Alarm: 15 خطوة (بالصور)

فيديو: RaspberryPi Islamic Prayer Watch & Alarm: 15 خطوة (بالصور)
فيديو: Prayer times with adzan alarm on a Raspberry Pi 4 2024, يونيو
Anonim
RaspberryPi الإسلامية صلاة ووتش & إنذار
RaspberryPi الإسلامية صلاة ووتش & إنذار
RaspberryPi الإسلامية صلاة ووتش & إنذار
RaspberryPi الإسلامية صلاة ووتش & إنذار

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

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

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

إلى مشروعنا! سينقسم هذا المشروع إلى X خطوات رئيسية ، والتي بحلول نهاية الخطوة X سنكون مشروعنا جميلًا وجاهزًا! ستكون الخطوات على النحو التالي:

1-تكوين وإعداد RaspberryPi

2-تثبيت وحدة RTC

3- عمل برنامج منبه الأذان

4-تنفيذ واجهات الساعة

5-عمل واجهة المستخدم و

مثل كل مشروع ، نحتاج إلى تجهيز الأجزاء التي نحتاجها أولاً. الأجزاء التي نحتاجها لهذا المشروع هي:

1-RaspberryPi Computer Kit Amazon US || أمازون السعودية

يمكنك استخدام أي إصدار Rpi ، فقط تأكد من أنه يحتوي على Wifi. لقد استخدمت Rpi3B +

وحدة الساعة في الوقت الحقيقي 2-RTC Amazon US || أمازون السعودية

يمكنك استخدام أي نموذج وحدة RTC ، فقط تأكد من أنه يحتوي على I2C

3-شاشة LCD

أي LCD ستفعل

4-الماوس ولوحة المفاتيح

وهذا كل شيء!! هذا كل ما تحتاجه لصنع ساعة الأذان الخاصة بك ومنبه

الخطوة 1: الفصل 1: إعداد وتكوين RaspberryPI

الفصل 1: إعداد وتكوين RaspberryPI
الفصل 1: إعداد وتكوين RaspberryPI

اهم الاشياء اولا! نحتاج إلى تحضير Raspberry Pi من أجل العمل معها.

Raspberry Pi ليس سوى جهاز كمبيوتر ، فهو يحتوي على ذاكرة وصول عشوائي وذاكرة قراءة فقط ، ويحتوي على وحدة المعالجة المركزية ، ووحدة معالجة الرسومات ، ومنافذ الإدخال / الإخراج ………. كمبيوتر! تمامًا مثل اللعبة التي نلعب بها ونتصفح الويب بها ، الشيء الرئيسي الوحيد هو أنه صغير جدًا! مما يجعل التوت خيارًا جيدًا جدًا لعمل المشاريع وتنفيذها. نظرًا لأن raspberry pi صغير ، فلديه مواصفات محدودة للغاية بحيث لا يمكنه تشغيل نظام تشغيل كبير مثل windows أو macOS ، وبدلاً من ذلك ، سنستخدم Linux كنظام تشغيل من أجل استخدام الجهاز. هناك الآلاف إن لم يكن عشرات الآلاف من توزيعات Linux التي يمكننا استخدامها ، ولكن تم تحسين توزيعة واحدة مثالية بشكل مثالي خصيصًا لتوزيعة raspberrypi التي سنستخدمها ، والتي تسمى Raspbian.

الخطوة 2: 1-1: تنزيل الملفات الضرورية

1-1: قم بتنزيل ملفات Neccessary
1-1: قم بتنزيل ملفات Neccessary
1-1: قم بتنزيل ملفات Neccessary
1-1: قم بتنزيل ملفات Neccessary
1-1: تنزيل الملفات الضرورية
1-1: تنزيل الملفات الضرورية

-انتقل إلى صفحة تنزيل Rasbian الرسمية على https://www.raspberrypi.org/software/operating-sy… وقم بتنزيل نظام Raspberry Pi OS مع ملف سطح المكتب

- أثناء التنزيل ، انتقل إلى https://win32diskimager.org/ وقم بتنزيل وتثبيت win32DiskImager ، يمكنك استخدام أي برنامج لنسخ الصور يعجبك

بمجرد الانتهاء من التنزيل ، سيكون لديك ملف.img يحتوي على نظام التشغيل RaspberryPi OS. بعد ذلك ، قم بتوصيل بطاقة ذاكرة SD الخاصة بك بالكمبيوتر (عادةً باستخدام قارئ بطاقة USB) وابدأ تشغيل برنامج win32diskimager. خطوات نسخ الصورة في ذاكرة SD بسيطة للغاية ، ما عليك سوى 1- تحديد حرف الذاكرة الخاص بك 2- تحديد ملفات نظام التشغيل التي قمت بتنزيلها ثم انقر فوق الكتابة 3! تأكد من أنك حددت حرف الجهاز الصحيح من القائمة وأن ذاكرتك فارغة ، بالضغط على "كتابة" ، ستتم ترقيتك بتحذير يخبرك أنه سيتم مسح أي شيء على الجهاز! اضغط على نعم لتأكيد الكتابة وانتظر حتى تنتهي. قد يستغرق هذا ما يصل إلى 20 دقيقة.

بمجرد الانتهاء من ذلك ، سيكون لديك نظام التشغيل Rapbian OS الكامل على الذاكرة ، ويمكنك المضي قدمًا ووضعه في Rapberry Pi ، وتوصيل Raspberry Pi بالشاشة من خلال HDMI ، وتوصيل الماوس ولوحة المفاتيح من خلال USB وأخيراً ، قم بتوصيل قوة.

الخطوة 3: 1-2: تكوين نظام Raspbian

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

1-اضغط على التالي في نافذة "الترحيب" الأولى

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

3-بعد ذلك ، سيُطلب منك إدخال كلمة مرور لـ Raspberry الخاص بك ، وهذا أمر مهم للأمان ولكننا سنتركه دون تغيير لهذا المشروع. لاحظ أن اسم المستخدم وكلمة المرور الافتراضيين هما:

اسم المستخدم: بي

كلمة المرور: التوت

4-النافذة التالية سوف تقوم بتوصيل raspberryPi بشبكة WiFi الخاصة بك. حدد اسم wifi الخاص بك وأدخل كلمة مرور wifi الخاصة بك

5-بعد ذلك ، سيُطلب منك تحديث مكتبات raspberry pi وملفات النظام. ستستغرق هذه الخطوة وقتًا طويلاً (ربما خلال ساعات) ولكنها خطوة مهمة جدًا في كل مرة يتم فيها إعداد raspberry pi.

6-بمجرد الانتهاء من التحديث ، سيُطلب منك إعادة تشغيل النظام. افعل ذلك الآن.

عمل عظيم! الآن لدينا نظام محدث ، ما زلنا بحاجة إلى القيام ببعض الأشياء الأخرى لتهيئة النظام للعمل ، ولكن الآن ، سنبدأ في استخدام LinuxCommand Line.

الخطوة 4: 1-3: استخدام سطر الأوامر لإعداد إعدادات Rpi

1-3: استخدام سطر الأوامر لإعداد إعدادات Rpi
1-3: استخدام سطر الأوامر لإعداد إعدادات Rpi
1-3: استخدام سطر الأوامر لإعداد إعدادات Rpi
1-3: استخدام سطر الأوامر لإعداد إعدادات Rpi
1-3: استخدام سطر الأوامر لإعداد إعدادات Rpi
1-3: استخدام سطر الأوامر لإعداد إعدادات Rpi

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

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

أمر Linux الأول الذي سنستخدمه هو أمر تكوين آخر ، لاحظ أنه سيتم وضع جميع الأوامر من الآن فصاعدًا داخل مربع رمز ، حتى تتمكن من تمييزه عن الخطوات العادية. أحضر لوحة المفاتيح واكتب ما يلي واضغط على Enter:

sudo raspi-config

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

الآن ، ستحتاج إلى استخدام مفاتيح الأسهم بلوحة المفاتيح للتنقل في هذه القائمة.

1-انتقل إلى خيارات الواجهة >> I2C >> نعم >> اضغط على إدخال. هذا هو تمكين بروتوكول الاتصال I2c حتى نتمكن من استخدام RTC

2-اذهب إلى خيارات متقدمة >> قم بتوسيع نظام الملفات.

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

بمجرد انتهاء النظام من إعادة التشغيل ، ننتهي جميعًا من التكوين! الجهاز جاهز للخطوات الكبيرة! ستكون الخطوة التالية هي تثبيت وحدة RTC واستخدامها مع النظام.

الخطوة 5: الفصل 2: تركيب وحدة RTC وتكوينها واستخدامها

الفصل 2: تركيب وتكوين واستخدام وحدة RTC
الفصل 2: تركيب وتكوين واستخدام وحدة RTC
الفصل 2: تركيب وتكوين واستخدام وحدة RTC
الفصل 2: تركيب وتكوين واستخدام وحدة RTC
الفصل 2: تركيب وتكوين واستخدام وحدة RTC
الفصل 2: تركيب وتكوين واستخدام وحدة RTC
الفصل 2: تركيب وتكوين واستخدام وحدة RTC
الفصل 2: تركيب وتكوين واستخدام وحدة RTC

وحدة RTC (أو ساعة الوقت الحقيقي) عبارة عن جهاز صغير به بطارية صغيرة ، وهي تقوم بما يشير إليه الاسم ، تسجيل الوقت! لذلك عند فصله عن الطاقة ، تستمر الساعة في العمل ولا تتوقف. لماذا نحتاج هذا؟ حسنًا ، ليس لدى raspberry pi حقًا طريقة لتخزين بيانات الساعة بمجرد إيقاف تشغيلها ، فهي تعتمد على الاتصال بالإنترنت عند التشغيل لتحديث التاريخ والوقت ، ولكن المشكلة هي أنه ليس لدينا دائمًا إمكانية الوصول إلى الإنترنت ، وهذا هو سبب حاجتنا إلى وحدة RTC. سيعمل RTC كساعة لـ raspberry pi ، لذا بمجرد تشغيل Rpi ، سيأخذ التاريخ والوقت من RTC ، مما سيحافظ على تحديث وقت RaspberryPi طوال الوقت.

هناك نماذج متعددة وتبحث عن RTC ، هناك DS1307 و DS3231. يمكنك استخدام أي وحدة RTC تجدها طالما أن لديها اتصال بروتوكول I2C (يمكنك الإشارة إلى أنه يمكنك العثور على دبابيس SDA و SCL على دبابيس الوحدة.

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

بمجرد أن تصبح وحدة RTC جاهزة (قم بتوصيل دبابيس الرأس وتشغيل البطارية) ، يمكنك توصيلها بدبابيس RapberryPi على النحو التالي:

RTC PIN ---------------- Rpi Pin

GND ===========> رقم التعريف الشخصي 6 (GND)

Vcc ============> رقم التعريف الشخصي 1 (3.3 فولت)

SDA ===========> PIN 3 (SDA)

SCL ===========> رقم التعريف الشخصي 5 (SCL)

أو اعتمادًا على وحدة RTC التي حصلت عليها ، يمكنك تثبيتها مباشرة على RaspberryPi (تأكد من صحة المسامير !!! لأنك قد تتلف Rpi / RTC إذا لم يكن كذلك)

بمجرد توصيل RTC ، فلنقم بتكوين Raspberry.

الخطوة 6: 2-1: إعداد الوحدة النمطية

2-1: إعداد الوحدة النمطية
2-1: إعداد الوحدة النمطية
2-1: إعداد الوحدة النمطية
2-1: إعداد الوحدة النمطية

قبل البدء ، انتقل إلى سطر الأوامر واكتب:

تاريخ

سيعيد هذا التاريخ والوقت الحاليين على Raspberry ، ويلاحظ هذا الأمر المفيد للغاية ، ويلاحظ التاريخ والوقت الحاليين حتى نتمكن من التحقق من عمل الوحدة أم لا.

الآن ، لنبدأ الإعداد ، اكتب ما يلي لتحديث مكتبات Rpi ، سطرًا واحدًا في كل مرة:

sudo apt-get update

sudo apt-get -y Upgrade. ترقية sudo apt-get -y

بمجرد الانتهاء من ذلك ، نحتاج إلى تعديل ملفات النظام لتمكين وحدة i2c وإضافة RTC ، لتعديل نظام الملفات سنستخدم برنامجًا يسمى Nano. nano هو برنامج مدمج خفيف وهو في الأساس محرر نصوص ، تمامًا مثل البرنامج الموجود في الأرامل. لذا فإن أي أمر يبدأ بـ nano متبوعًا باسم الملف ، سيفتح هذا الملف في محرر نصوص nano. لقد لاحظت أننا استخدمنا أيضًا شيئًا يسمى Sudo ، باختصار ، يعمل sudo كضمان لنظام Linux يخبر النظام أن المستخدم الذي قام بهذا الأمر هو مالك الجهاز ، وليس شخصًا آخر ، ويمنح امتيازات مثل التحرير / حذف للمستخدم. على سبيل المثال ، إذا فتحنا ملف nano بدون sudo ، فسنكون قادرين على عرض هذا الملف ، لكن لا يمكننا تحريره أو حذفه.

الآن ، نحتاج إلى تعديل ملف الوحدات ، يمكننا القيام بذلك عن طريق كتابة:

sudo نانو / الخ / وحدات

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

snd-bcm2835

i2c-bcm2835 i2c-dev rtc-ds1307

اضغط على CTRL + S للحفظ ، و CTRL + X للخروج

الخطوة 7: 2-2: واجهة I2C

2-2: واجهة I2C
2-2: واجهة I2C

الآن قمنا بتوصيل RTC وتمكين i2c ، دعنا نربط كل شيء معًا.

اكتب ما يلي في موجه الأوامر:

i2cdetect -y 1

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

الآن ، نحتاج إلى تعديل ملف rc.local حتى نتمكن من تمكين وحدة RTC عند التمهيد والسماح لها بحفظ التاريخ والوقت على النظام. أولاً ، افتح ملف rc.local:

sudo nano /etc/rc.local

قبل سطر exit0 ، أضف ما يلي:

صدى ds1307 0x68> / sys / class / i2c-adaptor / i2c-1 / new_device

hwclock-s

حيث 0x68 هو عنوان i2c الخاص بجهازك. بمجرد الانتهاء ، اضغط على CTRL + S CTRL + X ، ثم أعد تشغيل نظامك عن طريق:

sudo إعادة التشغيل

الخطوة 8: 2-3: اختبار RTC

2-3: اختبار RTC
2-3: اختبار RTC

بمجرد إعادة تشغيل النظام ، يمكننا التحقق مما إذا كان RTC يعمل أم لا. الجولة الأولى:

sudo hwclock -r

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

الآن ، لتعديل الوقت والتاريخ في RTC ، نحتاج إلى تعديل التاريخ والوقت على النظام أولاً ، ثم كتابة التعديلات على RTC. للقيام بذلك ، قم بتشغيل:

تاريخ sudo - "29 أغسطس 1997 13:00:00"

وبالطبع ، قم بتغيير التاريخ والوقت وفقًا للتوقيت والتاريخ المحليين ، قبل أن تضغط على مفتاح الإدخال. بمجرد حصولك على الوقت على Rpi الصحيح ، قم بتشغيل ما يلي لحفظ التاريخ والوقت على RTC:

sudo hwclock -w

aaaa وهذا كل شيء! يمكنك التحقق مما إذا كان يعمل عن طريق hwclock -r ومعرفة ما إذا كان التاريخ الموجود على RTC صحيحًا أم لا ، ثم افصل rpi من الإنترنت ثم قم بإيقاف تشغيله لبعض الوقت ثم قم بتشغيله مرة أخرى ومعرفة ما إذا كان صحيحًا الوقت و التاريخ. انت انتهيت!

يمكن العثور على الدليل الكامل حول كيفية إعداد وحدة RTC هنا

www.raspberrypi-spy.co.uk/2015/05/adding-a-ds3231-real-time-clock-to-the-raspberry-pi/

الخطوة التاسعة: الفصل الثالث: عمل برنامج إنذار الأذان

الفصل الثالث: عمل برنامج إنذار الأذان
الفصل الثالث: عمل برنامج إنذار الأذان

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

بالنسبة لبرمجتنا ، سنستخدم Python كلغة برمجة مفضلة لدينا حيث أن Python تتناسب تمامًا مع RaspberryPi. لإنشاء ملف كود في بايثون ، نقوم بنفس طريقة فتح ملف نصي ، لكننا الآن نحفظه كملف.py. لتشغيل البرنامج ، نحتاج إلى بيئة python مثبتة من raspbery ، ولحسن الحظ ، يأتي Raspbian مع python و python3 مثبتين مسبقًا! لذلك كل ما علينا فعله هو البرمجة. في هذا الدليل ، لن نتحدث عن اللغة ونعلم كيفية عملها ووظائفها ، لكنني سأعطيك الرموز اللازمة حتى تتمكن من إنشاء المشروع.

للبدء ، نحتاج إلى ملف صوتي لصوت الأذان المفضل لدينا (بتنسيق WAV) ، نحتاج إلى ملفين ، أحدهما لأذان الفجر والآخر للأذان العادي. بمجرد الحصول على ذلك ضعه على محرك أقراص محمول وقم بنسخه على سطح مكتب raspberrypi.

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

stackoverflow.com/questions/20021457/playi…

لقد اختبرت هذه الطريقة ونجحت! لنرى كيف يمكننا تنفيذ هذه الطريقة في مشروعنا …

الخطوة 10: 3-1: لنلعب الصوت

3-1: لنلعب صوتًا!
3-1: لنلعب صوتًا!

أولاً ، انتقل إلى سطح المكتب من خلال:

سطح المكتب cd

ثم قم بإنشاء ملف كود جديد للبيثون عن طريق:

سودو نانو AzanPlay.py

سيؤدي هذا إلى إنشاء ملف جديد يسمى AzanPlay مع الامتداد على ملف python.py ، سيكون لدينا شاشة سوداء فارغة للسماح لنا بكتابة الكود الخاص بنا. ما عليك سوى كتابة هذه الأسطر (احرص على عدم تغيير أي مسافة بادئة أو مسافات ، لأن هذا مهم للغاية في لغة بيثون):

من خلاط استيراد pygame

mixer.init () mixer.music.load ('/ home / pi / Desktop / Adhan-Makkah.wav') mixer.music.play () while mixer.music.get_busy () == صحيح: تابع

حيث / Desktop / هو المكان الذي تضع فيه ملفاتك الصوتية ، و "Adhan-Makkah.wav" هو ملفي الصوتي ، وهو تسجيل صوت الأذان في مكة المكرمة.

الآن لاختبار الكود الخاص بنا ، نقوم بتشغيله باستخدام Python عن طريق كتابة:

بيثون AzanPlay.py

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

الخطوة 11: 3-2: احصل على مواقيت الصلاة

3-2: احصل على مواقيت الصلاة
3-2: احصل على مواقيت الصلاة

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

praytimes.org/

لذلك ، سنستخدم هذه الملفات الرائعة للحصول على أوقات الصلاة وتنفيذها في النظام. أولاً ، قم بتنزيل الأكواد من موقع الويب وضعها داخل مجلد / adhan / (نحتاج إلى كل من كود JS و Python).

الآن ، دعنا نتوجه إلى هذا المجلد ونختبر المكتبة ، وما يمكنها فعله:

أذان القرص المضغوط

هناك ، نحتاج إلى إنشاء ملف اختبار جديد في Python حتى نتمكن من اختبار الوظيفة:

sudo nano test

في الداخل ، اكتب هذا الرمز:

استيراد أوقات الصلاة

من تاريخ استيراد التاريخ والوقت tmm = أوقات الصلاة. PrayTimes (). getTimes (date.today ()، [LONGTITUDE، LATITUDE]، GMT) print (tmm)

قبل حفظ الملف ، تحتاج إلى تغيير LATITUDE مع موقعك Latitude ، كما هو الحال مع LONGTITUDE ، وتغيير GMT إلى منطقتك الزمنية. في حالتي سيكون:

tmm = أوقات الصلاة. PrayTimes (). getTimes (date.today ()، [21.3236، 39.1022]، 3)

طباعة (تم)

أخيرًا ، CTRL-S و CTRL-X ثم قم بتشغيل الكود:

اختبار بيثون

أخيرًا ، ستتم إعادة مواقيت الصلاة لهذا اليوم لموقعك.

{'isha': '18: 58 '،' asr ': '15: 22'، 'sunset': '17: 43 '،' الظهر ': '12: 17'، 'maghrib': '17: 43 ' ، 'imsak': '05: 23 '،' midnight ': '00: 17'، 'sunrise': '06: 52 '،' fajr ': '05: 33'}

رائعة! الآن بعد أن أصبح لدينا وقت الصلاة وأصبحنا نعرف الآن كيفية تشغيل الأصوات ، دعنا ندمج هذين الرمزين معًا في كود رئيسي واحد.

الخطوة 12: 3-3: عمل كود إنذار الأذان النهائي

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

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

وقت الاستيراد

من استيراد سلسلة استيراد خلاط pygame ، أوقات الصلاة من تاريخ استيراد التاريخ والوقت بينما (1): tmm = Prayertimes. PrayTimes (). getTimes (date.today ()، [21.3236، 39.1022]، 3) FAJR = tmm ['fajr'] DHUHR = tmm ['dhuhr'] ASR = tmm ['asr'] MAGHRIB = tmm ['maghrib'] ISHA = tmm ['isha'] tempT = time.strftime (str ('٪ H')) CurrTime = tempT tempT = الوقت. wav ') mixer.music.play () while mixer.music.get_busy () == صحيح: تابع إذا currTime == DHUHR: mixer.init () mixer.music.load (' / home / pi / Desktop / Adhan- Makkah.wav ') mixer.music.play () while mixer.music.get_busy () == صحيح: تابع إذا currTime == ASR: mixer.init () mixer.music.load (' / home / pi / Desktop / Adhan-Makkah.wav ') mixer.music.play () while mixer.music.get_busy () == صحيح: تابع إذا currTime == MAGHRIB: mixer.init () mixer.music.load (' / home / pi / Desktop / Adhan-Makkah.wav ') mixer.music.play () while mixer.music.get_busy () == صحيح: تابع إذا currTime == ISHA: mixer.init () mixer.music.load ('/ home / pi / Desktop / Adhan-Makkah.wav') mixer.music.play () while mixer.music.get_busy () == صحيح: تابع

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

الخطوة 13: الفصل 4: تنفيذ وجوه الساعة

الفصل 4: تنفيذ وجوه الساعة
الفصل 4: تنفيذ وجوه الساعة
الفصل 4: تنفيذ وجوه الساعة
الفصل 4: تنفيذ وجوه الساعة
الفصل 4: تنفيذ وجوه الساعة
الفصل 4: تنفيذ وجوه الساعة
الفصل 4: تنفيذ وجوه الساعة
الفصل 4: تنفيذ وجوه الساعة

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

لسوء الحظ ، اعتبارًا من وقت كتابة هذا التوجيه ، كانت معرفتي وخبرتي في HTML محدودة للغاية ، لذا لن أناقش الكثير من التفاصيل لأنني أعرف حقيقة أنني سأفعل الأشياء بطريقة خاطئة ، ولا أفعل يريدون إرباك الناس. ولكن إذا كانت لديك خبرة بسيطة في JS و HTML ، فيجب أن تعرف كيفية المتابعة من هذه النقطة. لقد صنعت حتى الآن وجهًا واحدًا (الوجه الأزرق). الخطة هي صنع 14 وجه ساعة! 7 وجوه لكل يوم من الأسبوع ، و 7 وجوه أخرى كموضوع آخر. حيث من المفترض أن يكون الموضوع الأول مع عرض الأذكار ، والموضوع الآخر من المفترض أن يكون به صور-g.webp

الخطوة 14: الفصل الخامس: تنفيذ واجهة المستخدم

Chapter5: تنفيذ واجهة المستخدم
Chapter5: تنفيذ واجهة المستخدم

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

للقيام بذلك ، سنستخدم مكتبة Python GUI تسمى "TKinter".

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

استيراد tkinter كما tk

من tkinter import * من tkinter import ttk import codecs import os class karl (Frame): def _init _ (self): tk. Frame._ init _ (self) self.pack () self.master.title ("Azan Time") self. button1 = زر (ذاتي ، نص = "جدة" ، الارتفاع = 5 ، العرض = 80 ، الأمر = self.open_jeddah1) self.button2 = زر (ذاتي ، نص = "مكة" ، الارتفاع = 5 ، العرض = 80 ، الأمر = self.open_makkah1) self.button3 = زر (self ، text = "Riyadh" ، الارتفاع = 5 ، العرض = 80 ، الأمر = self.open_riyadh1) self.button4 = زر (self ، text = "Madina" ، الارتفاع = 5 ، العرض = 80 ، الأمر = self.open_madina1) self.button5 = الزر (ذاتي ، نص = "قاسم" ، الارتفاع = 5 ، العرض = 80 ، الأمر = self.open_qasaim1) self.button1.grid (الصف = 0 ، العمود = 1 ، عمود الأعمدة = 2 ، لاصق = W + E + N + S) self.button2.grid (صف = 1 ، عمود = 1 ، عمود عمود = 2 ، مثبت = W + E + N + S) self.button3.grid (الصف = 2 ، العمود = 1 ، عمود الأعمدة = 2 ، لاصق = W + E + N + S) self.button4.grid (الصف = 3 ، العمود = 1 ، عمود الأعمدة = 2 ، لزج = W + E + N + S) self.button5.grid (الصف = 4 ، العمود = 1 ، عمود الأعمدة = 2 ، sticky = W + E + N + S) def open_jeddah1 (self): order = "sudo chromium-browser /home/pi/Desktop/Cities/jeddah/Sunday1.html --start-fullscreen --no-sandbox" os.system (order) def open_makkah1 (self): order = "sudo chromium-browser /home/pi/Desktop/Cities/makkah/Sunday1.html --start-fullscreen --no-sandbox -test-type" os.system (ترتيب) def open_riyadh1 (self): order = "sudo chromium-browser /home/pi/Desktop/Cities/riyadh/Sunday1.html --start-fullscreen - no-sandbox -test-type" os.system (ترتيب) def open_madina1 (self): order = "sudo chromium-browser /home/pi/Desktop/Cities/madina/Sunday1.html --start-fullscreen - no-sandbox -test-type" os.system (الترتيب) def open_qasaim1 (self): order = "sudo chromium-browser /home/pi/Desktop/Cities/qasaim/Sunday1.html --start-fullscreen - no-sandbox -test-type" os.system (order) def main (): karl (). mainloop () if _name_ == '_main_': main ()

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

الخطوة 15: (اختياري): إضافة مفتاح مكبر الصوت

(اختياري): إضافة مفتاح تبديل مكبر الصوت
(اختياري): إضافة مفتاح تبديل مكبر الصوت
(اختياري): إضافة مفتاح تبديل مكبر الصوت
(اختياري): إضافة مفتاح تبديل مكبر الصوت

كما رأينا ، عندما يأتي وقت الصلاة لتشغيل صوت الأذان ، ويخرج الصوت من إخراج الصوت الافتراضي (مخرج HDMI أو AV) وبما أننا نضعه على مخرج HDMI ، سيأتي الصوت من شاشة LCD. ولكن ، ماذا لو لم يكن صوت LCD لدينا كافياً؟ على سبيل المثال ، ماذا لو أردنا تنفيذ ذلك داخل مسجد حقيقي؟ مع مكبرات صوت خارجية واسعة؟ ثم يمكننا إضافة خطوة أخرى سهلة للغاية لتحقيق ذلك. بالنسبة لنظام صوت مكبر صوت تم بناؤه بالفعل ، نحتاج فقط إلى تشغيله وإيقاف تشغيله ، وأخذ الميكروفون الموجود بالفعل ووضعه بجوار مكبرات صوت LCD.

القيام بذلك سهل. سنستخدم ميكروفون المسجد الموجود مسبقًا والمتصل بمكبر الصوت العالي ، وسنحتاج فقط إلى raspberryPi للتحكم في الطاقة التي تقوم بتشغيل وإيقاف تشغيل نظام الصوت بالكامل. للقيام بذلك ، سنحتاج إلى استخدام SSR: SOLID STATE RELAY. يمكن أن تعمل هذه الأنواع من المرحلات كمفتاح ، مثلها مثل متوسط الترحيل الأزرق ، والفرق هو أن SSRs يمكنها تحمل كمية كبيرة من التيار المتردد من خلالها ، وهو أمر غير قابل للتطبيق في تلك الزرقاء (عادةً بحد أقصى 10 أمبير) ، وتحتاج SSRs سلكان فقط بدلاً من 3: DC + و DC- وهذا كل شيء! في الطرف الآخر من SSR يمكننا توصيل كابل طاقة نظام السماعات ، وبهذه الطريقة ، عندما نعطي جهدًا لـ SSR ، فإنه سيغلق دائرة التيار المتردد لنظام السماعات ، أو نقوم بإغلاق الجهد لعمل دائرة مفتوحة ، إطفاء السماعات.

هناك مشكلة واحدة ، مخرجات دبابيس RaspberryPi 3.3 فولت ، وليس 5 فولت التي نحتاجها للتحكم في SSR. لذلك نحن بحاجة إلى ترانزستور لأخذ الإشارة من دبوس RPi ، و 5 فولت من دبوس RPi 5v. للقيام بذلك نحتاج:

1-Solid State Relay (أي شيء فوق 25A جيد)

2-2n2222 الترانزستور npn

3-220 أوم المقاوم

اتبع دائرة فريتز للتوصيل.

الآن في الكود ، سنضيف بعض الأشياء التي تجعل هذا يعمل. أولاً ، قبل حلقة while ، سنضيف بعض الأسطر لتهيئة دبابيس GPIO:

في قسم الاستيراد ، أضف:

استيراد RPi. GPIO كـ GPIO

قبل حلقة while ، أضف:

GPIO.setmode (GPIO. BOARD) GPIO.setwarnings (False) relay = 40 GPIO.setup (ledPin، GPIO. OUT)

الآن ، في حلقة while ، لكل أمر تشغيل Azan ، نحتاج إلى تشغيل التتابع ، والانتظار لمدة 10 ثوانٍ ، وإنهاء عزف الأذان ، ثم إيقاف تشغيل التتابع. نحتاج فقط إلى إضافة سطرين ، الأول هو:

GPIO.output (ledPin ، GPIO. HIGH)

time.sleep (10) الوقت.

يجب إضافة هذا بعد كل عبارة if (التعريف مهم!) ، السطر الآخر هو:

GPIO.output (ledPin ، GPIO. LOW)

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

إذا كان الوقت الحالي == الفجر:

GPIO.output (ledPin، GPIO. HIGH) time.sleep (10) mixer.init () mixer.music.load ('/ home / pi / Desktop / Adhan-fajr.wav') mixer.music.play () أثناء mixer.music.get_busy () == صحيح: تابع GPIO.output (ledPin ، GPIO. LOW)

موصى به: