جدول المحتويات:
- الخطوة 1: الفصل 1: إعداد وتكوين RaspberryPI
- الخطوة 2: 1-1: تنزيل الملفات الضرورية
- الخطوة 3: 1-2: تكوين نظام Raspbian
- الخطوة 4: 1-3: استخدام سطر الأوامر لإعداد إعدادات Rpi
- الخطوة 5: الفصل 2: تركيب وحدة RTC وتكوينها واستخدامها
- الخطوة 6: 2-1: إعداد الوحدة النمطية
- الخطوة 7: 2-2: واجهة I2C
- الخطوة 8: 2-3: اختبار RTC
- الخطوة التاسعة: الفصل الثالث: عمل برنامج إنذار الأذان
- الخطوة 10: 3-1: لنلعب الصوت
- الخطوة 11: 3-2: احصل على مواقيت الصلاة
- الخطوة 12: 3-3: عمل كود إنذار الأذان النهائي
- الخطوة 13: الفصل 4: تنفيذ وجوه الساعة
- الخطوة 14: الفصل الخامس: تنفيذ واجهة المستخدم
- الخطوة 15: (اختياري): إضافة مفتاح مكبر الصوت
فيديو: RaspberryPi Islamic Prayer Watch & Alarm: 15 خطوة (بالصور)
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:35
للمسلمين في جميع أنحاء العالم خمس صلوات كل يوم ، ويجب أن تكون كل صلاة في وقت معين من اليوم. بسبب الطريقة الإهليلجية التي يتحرك بها كوكبنا حول الشمس ، مما يجعل الشمس تشرق وتختلف على مدار العام ، وهذا أيضًا يجعل وقت الصلاة غير ثابت ، ولهذا نحتاج إلى ساعة إسلامية لتذكيرنا المسلمين بأوقات الصلاة لدينا. يوم.
كل مسلم لديه طريقة للوصول إلى طقس أوقات الصلاة اليومية من خلال مواقع الإنترنت الإسلامية والتقويمات الإسلامية المحلية أو حتى عن طريق التلفزيون ، ومعظمنا لديه أجهزة ساعة إسلامية تتميز بميزة إعطائنا أوقات الصلاة ، وكذلك منبهات الصلاة. ولكن ماذا لو صنعنا جهاز مراقبة الصلاة والإنذار الخاص بنا!
قبل بدء العمل في المشروع ، هناك بعض الاعتبارات التي قد تكون مفيدة لك أثناء قراءة هذا 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
اهم الاشياء اولا! نحتاج إلى تحضير Raspberry Pi من أجل العمل معها.
Raspberry Pi ليس سوى جهاز كمبيوتر ، فهو يحتوي على ذاكرة وصول عشوائي وذاكرة قراءة فقط ، ويحتوي على وحدة المعالجة المركزية ، ووحدة معالجة الرسومات ، ومنافذ الإدخال / الإخراج ………. كمبيوتر! تمامًا مثل اللعبة التي نلعب بها ونتصفح الويب بها ، الشيء الرئيسي الوحيد هو أنه صغير جدًا! مما يجعل التوت خيارًا جيدًا جدًا لعمل المشاريع وتنفيذها. نظرًا لأن raspberry pi صغير ، فلديه مواصفات محدودة للغاية بحيث لا يمكنه تشغيل نظام تشغيل كبير مثل windows أو macOS ، وبدلاً من ذلك ، سنستخدم Linux كنظام تشغيل من أجل استخدام الجهاز. هناك الآلاف إن لم يكن عشرات الآلاف من توزيعات Linux التي يمكننا استخدامها ، ولكن تم تحسين توزيعة واحدة مثالية بشكل مثالي خصيصًا لتوزيعة raspberrypi التي سنستخدمها ، والتي تسمى Raspbian.
الخطوة 2: 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
بمجرد الانتهاء من إعادة التشغيل من تحديث النظام ، سيعرض النظام سطح مكتب المستخدم بمجرد الانتهاء من التمهيد. الآن إذا نظرت إلى أعلى يسار الشاشة ، ستجد بعض الأزرار ، زر مع شعار raspberryPi وهو زر قائمة Rpi ، شكل الكرة الأرضية وهو متصفح الإنترنت ، زر المجلدات ….. المجلدات وأخيرًا ، زر به نافذة شاشة سوداء ، وهو أهم زر في أي نظام لينكس ، سطر الأوامر. المضي قدما واضغط على هذا الزر ، سترى نافذة سوداء تنبثق.
سطر الأوامر هو الطريقة التي يتفاعل بها الجميع ويستخدمون نظام لينوكس ، تمامًا مثل نظام windows لديه سطر أوامر خاص به فقط في الأرامل ، لا نحتاج إلى استخدامه كثيرًا. في لينكس ، هذا هو الشيء الأساسي الذي يجب على كل مستخدم لينكس تعلمه وإتقانه. يمكن استخدام سطر الأوامر بواسطة…. COMMANDS! ما تراه في النافذة السوداء هو انتظار موجه الأوامر حتى يكتب المستخدم الأمر وينفذه. في هذا الدليل ، سنقدم لك كل الأوامر التي تحتاجها لتنفيذ هذا المشروع ، لذلك لا تقلق.
أمر Linux الأول الذي سنستخدمه هو أمر تكوين آخر ، لاحظ أنه سيتم وضع جميع الأوامر من الآن فصاعدًا داخل مربع رمز ، حتى تتمكن من تمييزه عن الخطوات العادية. أحضر لوحة المفاتيح واكتب ما يلي واضغط على Enter:
sudo raspi-config
إذا قمت بذلك بشكل صحيح ، فسترى أن الشاشة تحولت إلى اللون الأزرق ، مع وجود مربع رمادي صغير في المنتصف (انظر الصورة). سنستخدم ذلك لعمل التهيئة النهائية قبل أن نبدأ في البرمجة.
الآن ، ستحتاج إلى استخدام مفاتيح الأسهم بلوحة المفاتيح للتنقل في هذه القائمة.
1-انتقل إلى خيارات الواجهة >> I2C >> نعم >> اضغط على إدخال. هذا هو تمكين بروتوكول الاتصال I2c حتى نتمكن من استخدام RTC
2-اذهب إلى خيارات متقدمة >> قم بتوسيع نظام الملفات.
وهذا هو كل التكوين الذي تحتاجه من هذه النافذة. في الصفحة الرئيسية ، اذهب لأسفل واضغط على مفتاح الإدخال في "إنهاء" و "نعم" لإعادة تشغيل النظام.
بمجرد انتهاء النظام من إعادة التشغيل ، ننتهي جميعًا من التكوين! الجهاز جاهز للخطوات الكبيرة! ستكون الخطوة التالية هي تثبيت وحدة RTC واستخدامها مع النظام.
الخطوة 5: الفصل 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: إعداد الوحدة النمطية
قبل البدء ، انتقل إلى سطر الأوامر واكتب:
تاريخ
سيعيد هذا التاريخ والوقت الحاليين على 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
الآن قمنا بتوصيل 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
بمجرد إعادة تشغيل النظام ، يمكننا التحقق مما إذا كان 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: لنلعب الصوت
أولاً ، انتقل إلى سطح المكتب من خلال:
سطح المكتب 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: احصل على مواقيت الصلاة
كما نعلم ، تختلف أوقات الصلاة من مكان على الأرض إلى آخر ، وحتى بالنسبة لموقع معين ، فهي تختلف عبر السنين ، وهذا يعني أننا بحاجة إلى إيجاد طريقة لتحديث مواقيت الصلاة في النظام طوال الوقت ، و لذلك نحتاج إلى وظائف وحسابات محددة ومعقدة للغاية من أجل الحصول عليها بشكل صحيح. لحسن الحظ ، قام شقيقنا حميد زرابي زاده بتحويل جميع الوظائف التي نحتاجها في وظيفة واحدة يمكننا استخدامها بسهولة للحصول على الوقت اعتمادًا على موقعنا والوقت الحالي ، مذهل! يمكنك العثور على المكتبة وملفات المصدر على
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: تنفيذ وجوه الساعة
لجعل المشروع يبدو أفضل ، خطرت لي فكرة إضافة وجوه ساعة إلى شاشة LCD ، لذا يبدو الأمر رائعًا عند النظر إلى المستخدم (حسنًا ، أفضل من سطر الأوامر على الأقل) ، لذا فقد استعانت بمصمم لتصميم وجوه متعددة الساعة ، يجب أن تكون فارغة بدون بيانات ، حيث يجب إضافة البيانات من خلال HTML ، مما يجعل تصميمات الساعة كخلفية ، ويمكن إضافة البيانات الأخرى مثل أوقات الصلاة كعناصر HTML أعلى الخلفية.
لسوء الحظ ، اعتبارًا من وقت كتابة هذا التوجيه ، كانت معرفتي وخبرتي في HTML محدودة للغاية ، لذا لن أناقش الكثير من التفاصيل لأنني أعرف حقيقة أنني سأفعل الأشياء بطريقة خاطئة ، ولا أفعل يريدون إرباك الناس. ولكن إذا كانت لديك خبرة بسيطة في JS و HTML ، فيجب أن تعرف كيفية المتابعة من هذه النقطة. لقد صنعت حتى الآن وجهًا واحدًا (الوجه الأزرق). الخطة هي صنع 14 وجه ساعة! 7 وجوه لكل يوم من الأسبوع ، و 7 وجوه أخرى كموضوع آخر. حيث من المفترض أن يكون الموضوع الأول مع عرض الأذكار ، والموضوع الآخر من المفترض أن يكون به صور-g.webp
الخطوة 14: الفصل الخامس: تنفيذ واجهة المستخدم
في الفصل الأخير من رحلتنا ، سنجري بعض التعديلات الاختيارية لجعل المشروع سهل الاستخدام ، في حال أردنا تنفيذ المشروع في مسجد أو في أي مكان عام. كما قلنا من قبل ، لكل مدينة توقيتها الخاص للصلاة ، ولجعل هذا المشروع يصل إلى نطاق أوسع من الناس ، سنقوم بإنشاء واجهة مستخدم حتى نتمكن من اختيار المدينة المطلوبة والموضوع بمجرد تشغيلنا للمشروع.
للقيام بذلك ، سنستخدم مكتبة 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)
موصى به:
Ultimate Binary Watch: 12 خطوة (بالصور)
Ultimate Binary Watch: لقد تعرفت مؤخرًا على مفهوم الساعات الثنائية وبدأت في إجراء بعض الأبحاث لمعرفة ما إذا كان بإمكاني بناء واحدة لنفسي. ومع ذلك ، لم أتمكن من العثور على تصميم حالي كان عمليًا وأنيقًا في نفس الوقت. لهذا قررت
كاميرا صور RaspberryPI - MagicBox: 13 خطوة (بالصور)
RaspberryPI Photo Camera - MagicBox: منذ فترة ، كانت لدي هذه الفكرة المجنونة لإنشاء آلة تصوير من Raspberry PI. في مدينتي ، كان هناك عرض صغير حيث سيذهب الناس ويعرضون ما كانوا يصنعونه أو صنعوه باستخدام الإلكترونيات وأجهزة الكمبيوتر وما إلى ذلك … كنت مثل رجل فقير
اصنع ثنائي الفينيل متعدد الكلور للهواة باستخدام أدوات CAD الاحترافية عن طريق تعديل & quot؛ قواعد التصميم & quot ؛: 15 خطوة (بالصور)
اجعل Hobbyist PCBs باستخدام أدوات CAD الاحترافية من خلال تعديل & quot؛ قواعد التصميم & quot ؛: من الجيد أن تتوفر بعض أدوات لوحة الدوائر الاحترافية المتاحة للهواة. فيما يلي بعض النصائح لاستخدامها في لوحات تصميم ito التي لا تحتاج إلى صانع محترف لصنعها بالفعل
& acirc؛ & ndash؛ & rsquo؛. :: *، Awesome Design (Microsoft Paint)، * ::. & acirc؛ & ndash؛ & rsquo ؛: 4 خطوات
& acirc؛ & ndash؛ & rsquo؛. :: *، Awesome Design (Microsoft Paint)، * ::. & acirc؛ & ndash؛ & rsquo ؛: سأوضح لك كيفية عمل تصميم رائع باستخدام طلاء Microsoft ، أو مجرد قلم رصاص وورقة! ! ملاحظة. يرجى تقييم والتصويت لمسابقة الكتاب. مليون شكرا
Arduino ProtoShield من & quot؛ منزلي & quot؛ العناصر (العلامة & lt ؛ 5 $): 9 خطوات (بالصور)
Arduino ProtoShield من & quot؛ منزلي & quot؛ العناصر (العلامة & lt ؛ 5 $): أنا أحب Arduino الخاص بي. لقد دفعتني إلى برمجة المتحكم الدقيق وتعلق بها. أنا أيضًا أحب قابلية التوسعة التي توفرها الدروع. يمكن أن يكون My Arduino عبارة عن GPS Locatorone دقيقة واحدة ، وأن يكون متصلاً بالويب في اليوم التالي. هناك أيضًا مجموعة تتيح لك