Оглавление:

RaspberryPi Islamic Prayers Watch & Alarm: 15 шагов (с изображениями)
RaspberryPi Islamic Prayers Watch & Alarm: 15 шагов (с изображениями)

Видео: RaspberryPi Islamic Prayers Watch & Alarm: 15 шагов (с изображениями)

Видео: RaspberryPi Islamic Prayers Watch & Alarm: 15 шагов (с изображениями)
Видео: Prayer Times Display Alarm Using RaspberryPi with 50 Inch LED Display 2024, Июнь
Anonim
RaspberryPi Исламские молитвенные часы и будильник
RaspberryPi Исламские молитвенные часы и будильник
Исламские молитвенные часы и будильник RaspberryPi
Исламские молитвенные часы и будильник RaspberryPi

Мусульмане во всем мире совершают пять молитв каждый день, и каждая молитва должна совершаться в определенное время дня. из-за эллиптического пути, по которому наша планета движется вокруг Солнца, из-за чего время восхода и захода Солнца различается в течение года, что также делает время молитвы непостоянным, поэтому нам нужны исламские часы, чтобы напоминать нам, мусульманам, о времени, когда мы молимся каждый раз. день.

У каждого мусульманина есть способ узнать время молитвы о погоде через исламские веб-сайты в Интернете, местные исламские календари или даже по телевидению, и у большинства из нас есть исламские часовые устройства, которые могут сообщать нам время молитвы, а также молитвенные будильники.. Но что, если бы мы сделали наши собственные часы для молитв и будильник!

Прежде чем начать работу над проектом, есть несколько соображений, которые могут быть вам полезны при чтении этого руководства. Я живу в Саудовской Аравии, поэтому некоторые из моих шагов и ценностей будут отличаться от ваших, и я обязательно укажу на них во время работы. Есть шаги и изображения, которые могут включать арабские слова, поскольку я сделал интерфейс на арабском, но я также укажу, как сделать это на английском языке, поэтому не позволяйте арабским словам на рисунках вас вообще беспокоить, этот проект может быть сделано на любом языке (это круто!: D) Также прошу прощения за мои опечатки, так как английский не мой родной язык.

За наш проект! Этот проект будет разделен на X основных шагов, и к концу X шага наш проект будет готов! Шаги будут следующими:

1-Настройка и подготовка RaspberryPi

2-Установка модуля RTC

3-Создание программы Azan Alarm

4-Реализация циферблатов

5-Создание пользовательского интерфейса и

Как и в любом проекте, нам сначала нужно подготовить нужные детали. части, которые нам нужны для этого проекта:

Компьютерный комплект 1-RaspberryPi Amazon US || Amazon KSA

Вы можете использовать любую версию Rpi, просто убедитесь, что в ней есть Wi-Fi. Я использовал Rpi3B +

2-RTC Модуль часов реального времени Amazon US || Amazon KSA

Вы можете использовать любую модель модуля RTC, только убедитесь, что в ней есть I2C

3-ЖК-монитор

Подойдет любой ЖК-дисплей

4-Мышь и клавиатура

вот и все!! Это все, что вам нужно, чтобы сделать свои собственные часы Азан и будильник

Шаг 1: Глава 1: Установка и настройка RaspberryPI

Глава 1: Установка и настройка RaspberryPI
Глава 1: Установка и настройка RaspberryPI

Перво-наперво! Нам нужно подготовить Raspberry pi для работы с ним.

Raspberry Pi - это не что иное, как компьютер, у него есть RAM и ROM, у него есть CPU, GPU, I / O ……. Компьютер! точно так же, как тот, в котором мы играем в игры и просматриваем веб-страницы, но главное, что он очень маленький! что делает малину очень хорошим выбором для создания и реализации проектов. Поскольку raspberry pi маленький, у него очень ограниченные характеристики, так как он не может работать с большими требовательными ОС, такими как Windows или MacOS, вместо этого мы собираемся использовать Linux в качестве операционной системы, чтобы использовать устройство. есть тысячи, если не десятки тысяч дистрибутивов Linux, которые мы могли бы использовать, но один идеальный дистрибутив идеально оптимизирован специально для raspberrypi, который мы собираемся использовать, он называется Raspbian.

Шаг 2: 1-1: Загрузите необходимые файлы

1-1: Загрузите необходимые файлы
1-1: Загрузите необходимые файлы
1-1: Загрузите необходимые файлы
1-1: Загрузите необходимые файлы
1-1: Загрузите необходимые файлы
1-1: Загрузите необходимые файлы

-Перейдите на официальную страницу загрузки Rasbian по адресу https://www.raspberrypi.org/software/operating-sy… и загрузите ОС Raspberry Pi с файлом рабочего стола

-Пока он загружается, перейдите на https://win32diskimager.org/, загрузите и установите win32DiskImager, вы можете использовать любое программное обеспечение для записи изображений, которое вам нравится.

как только загрузка будет завершена, у вас будет файл.img, содержащий ОС RaspberryPi. Затем вставьте карту памяти SD в компьютер (обычно с устройством чтения карт USB) и запустите программу win32diskimager. Шаги по записи изображения в SD-память очень просты, вам просто нужно 1- Выбрать букву памяти 2-выбрать файлы ОС, которые вы загрузили, и 3-Click написать! Убедитесь, что вы выбрали правильную букву устройства из списка, и ваша память пуста, так как при нажатии на запись вы получите предупреждение о том, что все на устройстве будет удалено! Нажмите да, чтобы подтвердить запись, и дождитесь ее завершения. это может занять до 20 минут.

Как только это будет сделано, у вас будет полная операционная система Rapbian в памяти, вы можете продолжить и вставить ее в Rapberry Pi, подключить Raspberry Pi к монитору через HDMI, подключить мышь и клавиатуру через USB и, наконец, подключить власть.

Шаг 3: 1-2: Настройка системы Raspbian

После подключения кабелей и питания вы увидите, что ОС включилась, она автоматически перезагрузится, а затем отобразит пользовательский интерфейс Raspbian (похожий на окна). Первое, что вы увидите, - это приветственное окно, в котором вы пройдете через этапы настройки RaspberryPi в первый раз. окна и ступеньки будут такими:

1. Нажмите "Далее" в первом окне "Добро пожаловать".

2-Следующее окно будет для настройки вашего местоположения. выберите страну, язык и часовой пояс. после этого настоятельно рекомендуется установить флажок «Использовать английский язык», так как это будет язык интерфейса операционной системы. ВЫ ДОЛЖНЫ ПРОВЕРИТЬ «ОКНО АНГЛИЙСКОЙ КЛАВИАТУРЫ НА АНГЛИЙСКОМ ЯЗЫКЕ». ДЛЯ РАБОТЫ НАМ НУЖНА АНГЛИЙСКАЯ КЛАВИАТУРА!

3-Далее вам будет предложено ввести пароль для вашей малины, это важно для безопасности, но мы оставим его без изменений для этого проекта. обратите внимание, что имя пользователя и пароль по умолчанию:

имя пользователя: пи

пароль: малина

4-Следующее окно будет подключать raspberryPi к вашей сети Wi-Fi. выберите свое имя Wi-Fi и введите пароль Wi-Fi

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, форму глобуса, которая представляет собой интернет-браузер, кнопку папок, которая … … папки и, наконец, кнопка с окном черного экрана, которая является самой важной кнопкой в любой системе Linux, Командная строка. продолжайте и нажмите эту кнопку, вы увидите всплывающее черное окно.

Командная строка - это то, как все взаимодействуют и используют систему Linux, точно так же, как Windows имеет свою собственную командную строку только в вдовах, нам не нужно использовать ее очень часто. в Linux это основная вещь, которую каждый пользователь Linux должен изучить и освоить. командную строку можно использовать…. COMMANDS! то, что вы видите в черном окне, - это командная строка, ожидающая написания и выполнения команды пользователем. в этом руководстве мы дадим все команды, необходимые для выполнения этого проекта, так что не беспокойтесь.

Самая первая команда Linux, которую мы собираемся использовать, - это еще одна команда конфигурации, обратите внимание, что с этого момента все команды будут помещены в поле кода, поэтому вы можете отличить ее от обычных шагов. Возьмите клавиатуру, введите следующее и нажмите Enter:

sudo raspi-config

Если вы все сделаете правильно, вы увидите, что экран стал синим с серым прямоугольником посередине (см. Рисунок). мы будем использовать это, чтобы сделать нашу окончательную конфигурацию, прежде чем мы начнем кодировать.

Теперь вам нужно будет использовать клавиши со стрелками на клавиатуре для навигации по этому меню.

1-Перейдите в Параметры интерфейса >> I2C >> ДА >> нажмите Enter. это включает протокол связи I2c, поэтому мы можем использовать RTC

2-Перейти к дополнительным параметрам >> Развернуть файловую систему.

и это все, что вам нужно в этом окне. на главной странице спуститесь вниз и нажмите Enter для завершения и YES, чтобы перезагрузить систему.

Как только система перезагрузится, мы закончим настройку! аппарат готов к большим шагам! Следующим шагом будет установка модуля RTC и его использование в системе.

Шаг 5: Глава 2: Установка, настройка и использование модуля RTC

Глава 2: Установка, настройка и использование модуля RTC
Глава 2: Установка, настройка и использование модуля RTC
Глава 2: Установка, настройка и использование модуля RTC
Глава 2: Установка, настройка и использование модуля RTC
Глава 2: Установка, настройка и использование модуля RTC
Глава 2: Установка, настройка и использование модуля RTC
Глава 2: Установка, настройка и использование модуля RTC
Глава 2: Установка, настройка и использование модуля RTC

Модуль RTC (или часы реального времени) - это небольшое устройство с небольшой батареей, оно выполняет то, что подразумевает название, Clocking! поэтому, когда вы отключаете его, часы продолжают работать и не останавливаются. Зачем нам это нужно? ну, у Raspberry Pi действительно нет метода хранения данных часов после выключения, он полагается на подключение к Интернету при загрузке, чтобы обновить дату и время, но проблема в том, что у нас не всегда есть доступ в Интернет, и это вот почему нам нужен модуль RTC. RTC будет действовать как часы для Raspberry Pi, поэтому после загрузки Rpi он будет принимать дату и время из RTC, что будет постоянно обновлять время RaspberryPi.

есть несколько моделей и ищет RTC, есть DS1307 и DS3231. вы можете использовать любой модуль RTC, который вы найдете, если он имеет связь по протоколу I2C (вы можете указать, что вы можете найти контакты SDA и SCL на контактах модуля.

как и все в этом руководстве, я использовал другие руководства для достижения своей цели в проекте, это руководство поможет вам и точно скажет, что делать, чтобы сделать этот проект, но если вам нужно изменить или вам нужно больше углубиться в любой из шагов, я свяжу более полезные руководства в конце каждого шага.

После того, как вы подготовили модуль RTC (припаяйте контакты заголовка и вставьте аккумулятор), вы можете подключить его к контактам RapberryPi следующим образом:

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

GND ===========> PIN 6 (GND)

Vcc ============> PIN 1 (3,3 В)

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

SCL ===========> PIN 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 обновление

как только это будет сделано, нам нужно изменить системные файлы, чтобы включить модуль i2c и добавить RTC, чтобы изменить файловую систему, мы собираемся использовать программное обеспечение под названием Nano. nano - это легкое встроенное программное обеспечение, которое по сути представляет собой текстовый редактор, такой же, как и в widows. поэтому любая команда, которая начинается с nano, за которым следует имя файла, откроет этот файл в текстовом редакторе nano. вы заметили, что мы также использовали что-то под названием Sudo, короче говоря, sudo действует как гарантия для системы Linux, которая сообщает системе, что пользователь, выполнивший эту команду, является владельцем устройства, а не кем-то еще, и дает такие привилегии, как редактирование / удаление пользователю. например, если мы откроем нано-файл без 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 добавьте следующее:

echo ds1307 0x68> / системный / класс / i2c-адаптер / i2c-1 / новое_устройство

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 date -s "29 августа 1997 г., 13:00:00"

и, конечно же, измените дату и время в соответствии с вашим местным временем и датой, прежде чем нажать Enter. как только вы установите время в RTC правильно, запустите следующее, чтобы сохранить дату и время в RTC:

sudo hwclock -w

аааа вот и все! вы можете проверить, работает ли он с помощью hwclock -r и посмотреть, верна ли дата на RTC или нет, затем отключите rpi от Интернета, а затем выключите его на некоторое время, а затем снова включите и посмотрите, правильно ли он Время и дата. готово!

Полное руководство по настройке модуля RTC можно найти здесь

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

Шаг 9: Глава 3: Создание программы сигналов тревоги Azan

Глава 3: Создание программы сигналов тревоги Azan
Глава 3: Создание программы сигналов тревоги Azan

Изготовить часы - это одно, конечно, мы можем посмотреть на часы и время молитв и увидеть, когда придет время, но не было бы даже НАМНОГО лучше, если бы мы могли добавить звуковой сигнал, чтобы уведомлять нас о времени молитв? ЕЩЕ ЛУЧШЕ, мы поднимаем эту тревогу, как звук АЗАНА! посмотрим, как мы можем этого добиться.

для нашего программирования мы собираемся использовать python в качестве предпочтительного языка программирования, поскольку python идеально сочетается с RaspberryPi. чтобы создать файл кода на Python, мы делаем то же самое, что и при открытии текстового файла, но теперь сохраняем его как.py. для запуска программы нам нужна среда python, установленная из raspbery, к счастью, Raspbian поставляется с предустановленными python и python3! так что все, что нам нужно делать, это программировать. в этом руководстве мы не будем говорить о языке и рассказывать, как он работает, и о функциях, но я дам вам необходимые коды, чтобы вы могли создать проект.

Для начала нам нужен звуковой файл с нашим предпочтительным звуком азана (в формате. WAV), нам нужны два файла: один для аль-фаджр азан, а другой - для обычного азана. как только вы получите это, поместите его на флешку и скопируйте на рабочий стол raspberrypi.

теперь у нас есть файлы, я искал способ воспроизводить звуковые аудио на raspberryPi и, к моему удивлению, у нас не было много способов сделать это, но я нашел этот ответ в stackoverflow, который дал мне то, что мне нужно

stackoverflow.com/questions/20021457/playi…

Я протестировал этот метод, и он сработал! Итак, давайте посмотрим, как мы можем реализовать этот метод в нашем проекте…

Шаг 10: 3-1: Давайте воспроизведем звук

3-1: Давайте сыграем в звук!
3-1: Давайте сыграем в звук!

сначала перейдите на рабочий стол:

cd Desktop

затем создайте новый файл кода Python:

sudo nano AzanPlay.py

это создаст новый файл под названием AzanPlay с расширением файла python.py, у нас будет пустой черный экран, чтобы мы могли писать наш код. просто запишите эти строки (будьте осторожны, чтобы не изменить отступы или пробелы, так как это ЧРЕЗВЫЧАЙНО важно в python):

из микшера импорта pygame

Mixer.init () Mixer.music.load ('/ home / pi / Desktop / Adhan-Makkah.wav') Mixer.music.play (), а mixer.music.get_busy () == True: продолжить

Где / Desktop / - это место, куда вы помещаете свои звуковые файлы, а «Adhan-Makkah.wav» - это мой аудиофайл, который представляет собой звукозапись азана в макках.

Теперь, чтобы протестировать наш код, мы запускаем его с помощью Python, набрав:

Python AzanPlay.py

и у вас будет звук, играющий на ЖК-дисплее HDMI или через порт AUX на Raspberrypi. если вы не слышите его из динамиков ЖК-дисплея, подключите наушники к AUX и проверьте.

Шаг 11: 3-2: Определите время молитв

3-2: Найдите время для молитв
3-2: Найдите время для молитв

Как мы знаем, время молитв различается от одного места на земле к другому, и даже для конкретного места оно меняется с годами, это означает, что нам нужно найти способ постоянно обновлять время наших молитв в системе, и для этого нам нужны конкретные и очень сложные функции и расчеты, чтобы все было правильно. К счастью, наш брат Хамид Зарраби-Заде объединил все функции, которые нам нужны, в одну функцию, которую мы можем легко использовать, чтобы узнать время в зависимости от нашего местоположения и текущего времени, УДИВИТЕЛЬНО! вы можете найти библиотеку и исходные файлы по адресу

praytimes.org/

Итак, мы собираемся использовать эти замечательные файлы, чтобы узнать время молитв и внедрить их в систему. сначала загрузите коды с веб-сайта и поместите их в папку / adhan / (нам нужны коды JS и Python).

Теперь давайте перейдем в эту папку и протестируем библиотеку и то, что она умеет:

cd adhan

там нам нужно создать новый тестовый файл на Python, чтобы мы могли протестировать функцию:

sudo nano testAd.py

внутри запишите этот код:

импорт времени молитвы

from datetime дата импорта tmm = молитвенное время. PrayTimes (). getTimes (date.today (), [LONGTITUDE, LATITUDE], GMT) print (tmm)

Перед сохранением файла вам необходимо изменить LATITUDE на широту вашего местоположения, то же самое с LONGTITUDE, и изменить GMT на ваш часовой пояс. в моем случае это будет:

tmm = молитвенное время. PrayTimes (). getTimes (date.today (), [21.3236, 39.1022], 3)

печать (тмм)

Наконец, CTRL-S и CTRL-X, а затем запустите код:

python testAd.py

наконец, вам вернут ваши молитвенные часы на сегодня для вашего местоположения.

{'isha': '18: 58 ',' asr ': '15: 22', 'sunset': '17: 43 ',' dhuhr ': '12: 17', 'maghrib': '17: 43 ', 'imsak': '05: 23 ',' midnight ': '00: 17', 'sunrise': '06: 52 ',' fajr ': '05: 33'}

Большой! Теперь, когда у нас есть время для молитв и мы знаем, как воспроизводить звуки, давайте объединим эти два кода в один основной код.

Шаг 12: 3-3: Создание окончательного кода тревоги Azan

завершив предыдущие два кода, мы узнали, как получить точное время молитвы в зависимости от нашего местоположения и как воспроизвести звук азана. Теперь мы собираемся объединить эти два кода в один код, который мы собираемся использовать в качестве нашего окончательного проекта, и этот код будет работать в фоновом режиме, так как когда придет время Азана, он будет воспроизводить звук Азана.

Я написал весь код, вы можете скопировать его и вставить, а также внести свои изменения по своему усмотрению. Код такой:

время импорта

из микшера импорта pygame импортировать строку импорта времени молитвы из даты импорта даты и времени while (1): tmm = моли. = tmm ['dhuhr'] ASR = tmm ['asr'] MAGHRIB = tmm ['maghrib'] ISHA = tmm ['isha'] tempT = time.strftime (str ('% H')) currTime = tempT tempT = time.strftime (str ('% M')) currTime = currTime + ':' + tempT if currTime == FAJR: Mixer.init () Mixer.music.load ('/ home / pi / Desktop / Adhan-fajr. wav ') Mixer.music.play () в то время как Mixer.music.get_busy () == True: продолжить, если currTime == DHUHR: Mixer.init () Mixer.music.load (' / home / pi / Desktop / Adhan- Makkah.wav ') Mixer.music.play () в то время как Mixer.music.get_busy () == True: продолжить, если currTime == ASR: Mixer.init () Mixer.music.load (' / home / pi / Desktop / Adhan-Makkah.wav ') Mixer.music.play () в то время как Mixer.music.get_busy () == True: продолжить, если currTime == MAGHRIB: Mixer.init () Mixer.music.load (' / home / pi / Desktop / Adhan-Makkah.wav ') Mixer.music.play () в то время как Mixer.music.get_busy () == True: продолжить, если currTime == ISHA: Mixer.init () Mixer.music.load ('/ home / pi / Desktop / Adhan-Makkah.wav') Mixer.music.play (), а mixer.music.get_busy () == True: продолжить

Если вы посмотрите на код и сравните его с тем, что мы сделали ранее, вы увидите, что мы не сделали ничего особенного. Сначала мы включили необходимые библиотеки, а затем открыли бесконечный цикл. в цикле мы постоянно вычисляем время молитв с нашим местоположением и часовым поясом и сохраняем весь результат в переменной tmm. затем мы сохраняем время каждой молитвы от tmm до независимой переменной. это позволит нам сравнивать время. Затем мы берем системное время и сохраняем его в независимой переменной. наконец, мы продолжаем сравнивать системное время с временем молитвы, если системное время совпадает с любым из времени молитвы, будет воспроизводиться звук азана.

Шаг 13: Глава 4: Реализация циферблатов

Глава 4: Реализация циферблатов
Глава 4: Реализация циферблатов
Глава 4: Реализация циферблатов
Глава 4: Реализация циферблатов
Глава 4: Реализация циферблатов
Глава 4: Реализация циферблатов
Глава 4: Реализация циферблатов
Глава 4: Реализация циферблатов

Чтобы проект выглядел лучше, у меня возникла идея добавить циферблаты на ЖК-дисплей, чтобы он выглядел красиво для пользователя (ну, по крайней мере, лучше, чем в командной строке), поэтому я нанял дизайнера, чтобы он разработал несколько лиц для часы, они должны быть пустыми и не содержать данных, так как данные должны быть добавлены через HTML, делая дизайн часов фоновым, а другие данные, такие как время молитв, могут быть добавлены как элементы HTML поверх фона.

К сожалению, на момент написания этого руководства мои знания и опыт в HTML очень ограничены, поэтому я не буду обсуждать много деталей, потому что я точно знаю, что буду поступать неправильно, и я не хочу запутать людей. но если у вас есть хотя бы небольшой опыт работы с JS и HTML, вы должны знать, как продолжить с этого момента. пока что сделал одно лицо (синее). в планах сделать 14 циферблатов! 7 лиц на каждый день недели и еще 7 в качестве другой темы. так как первая тема должна быть связана с катанием Азкара, а другая тема должна иметь исламские гифки вместо Азкара. Тем не менее, я включу все дизайны в это руководство, чтобы вы могли его скачать.

Шаг 14: Глава 5: Реализация пользовательского интерфейса

Глава 5: Реализация пользовательского интерфейса
Глава 5: Реализация пользовательского интерфейса

В последней главе нашего путешествия мы внесем некоторые необязательные изменения, чтобы сделать проект даже удобным для пользователя, на случай, если мы захотим реализовать проект в мечети или любом общественном месте. Как мы уже говорили, в каждом городе свое время для молитв, и чтобы сделать этот проект доступным для более широкого круга людей, мы создадим пользовательский интерфейс, чтобы мы могли выбрать желаемый город и тему, как только мы включим проект.

Для этого мы собираемся использовать библиотеку графического интерфейса Python под названием «TKinter».

Это код, который я реализовал, чтобы дать мне возможность выбирать между пятью городами Саудовской Аравии, включая Мекку:

импортировать tkinter как tk

from tkinter import * from 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 = Кнопка (self, text = "Jeddah", height = 5, width = 80, command = self.open_jeddah1) self.button2 = Button (self, text = "Makkah", height = 5, width = 80, command = self.open_makkah1) self.button3 = Кнопка (self, text = "Riyadh", height = 5, width = 80, command = self.open_riyadh1) self.button4 = Button (self, text = "Madina", height = 5, width = 80, command = self.open_madina1) self.button5 = Button (self, text = "Qasim", height = 5, width = 80, command = self.open_qasaim1) self.button1.grid (row = 0, column = 1, размах столбцов = 2, прилипание = W + E + N + S) self.button2.grid (row = 1, column = 1, columnspan = 2, sticky = W + E + N + S) self.button3.grid (row = 2, column = 1, columnspan = 2, sticky = W + E + N + S) self.button4.grid (row = 3, column = 1, columnspan = 2, sticky = 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 (order) def open_madina1 (self): order = "sudo chromium-browser /home/pi/Desktop/Cities/madina/Sunday1.html --start-fullscreen --no-sandbox -test-type" os.system (order) 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 () если _name_ == '_main_': main ()

Код может показаться большим, но редактировать его очень легко. По сути, мы создали новое окно, поместили пять имен кнопок и определили пять функций, которые будут вызываться при каждом нажатии кнопки. как только вы нажмете кнопку, программа откроет соответствующий HTML-файл в папке Cities, в котором каждый HTML-код города имеет координаты города, когда он получает время из молитвенного времени (). как только вы нажмете кнопку, код python запустит код linux, в котором он откроет файл HTML с помощью браузера Chrome, и у вас будет готовый к отображению циферблат с включенным полноэкранным режимом.

Шаг 15: (Необязательно): добавление переключателя динамика

(Необязательно): Добавление переключателя динамика
(Необязательно): Добавление переключателя динамика
(Необязательно): Добавление переключателя динамика
(Необязательно): Добавление переключателя динамика

Как мы видели, когда наступает время молитвы, воспроизводится звук Азана, и звук выходит из звукового выхода по умолчанию (выход HDMI или AV), и, поскольку мы помещаем его на выход HDMI, звук будет поступать с ЖК-дисплея. но что, если звука нашего ЖК-дисплея недостаточно? например, что, если мы хотим реализовать это в настоящей мечети? с широкими внешними динамиками? тогда мы можем добавить еще один ОЧЕНЬ простой шаг для этого. для уже построенной акустической системы нам нужно только включить и выключить ее, взять уже существующий микрофон и поставить его рядом с динамиками с ЖК-дисплеем.

Сделать это очень просто. мы будем использовать уже существующий микрофон мечети, который подключен к громкоговорителю, нам просто понадобится raspberryPi для управления мощностью, которая включает и выключает всю звуковую систему. для этого нам понадобится SSR: SOLID STATE RELAY. эти типы реле могут действовать как переключатель, во многом как обычное синее реле, разница в том, что SSR могут выдерживать большое количество переменного тока через него, что неприменимо в синих реле (обычно максимум 10A), и SSR требует всего два провода вместо 3: DC + и DC- и все! на другом конце SSR мы можем подключить кабель питания акустической системы, таким образом, когда мы подадим напряжение на SSR, он замкнет цепь переменного тока акустической системы, или мы отключим напряжение, чтобы сделать разрыв цепи, выключение динамиков.

Есть одна загвоздка: контакты RaspberryPi выдают 3,3 В, а не 5 В, которые нам нужны для управления SSR. поэтому нам нужен транзистор для приема сигнала с вывода RPi и 5 В с вывода RPi 5v. для этого нам понадобятся:

1-твердотельное реле (все, что выше 25А, хорошо)

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 для каждой команды play Azan нам нужно включить реле, подождать 10 секунд, завершить воспроизведение Azan и затем выключить реле. нам нужно добавить только две строки, первая из которых:

GPIO.output (ledPin, GPIO. HIGH)

время сна (10)

это должно быть добавлено после каждого оператора if (ИДЕНТАЦИЯ ВАЖНО!), другая строка:

GPIO.output (ledPin, GPIO. LOW)

Его следует добавить после строки «продолжить». он должен выглядеть так для каждого времени Азана:

если currTime == FAJR:

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 () == True: продолжить GPIO.output (ledPin, GPIO. LOW)

Рекомендуемые: