Tabla de contenido:

Reloj y alarma de oración islámica RaspberryPi: 15 pasos (con imágenes)
Reloj y alarma de oración islámica RaspberryPi: 15 pasos (con imágenes)

Video: Reloj y alarma de oración islámica RaspberryPi: 15 pasos (con imágenes)

Video: Reloj y alarma de oración islámica RaspberryPi: 15 pasos (con imágenes)
Video: Automatic muslim prayer azan clock from China supplier 2024, Noviembre
Anonim
Reloj y alarma RaspberryPi Islamic Prayers
Reloj y alarma RaspberryPi Islamic Prayers
Reloj y alarma RaspberryPi Islamic Prayers
Reloj y alarma RaspberryPi Islamic Prayers

Los musulmanes de todo el mundo tienen cinco oraciones todos los días, y cada oración debe ser en un momento determinado del día. Debido a la forma elíptica en que nuestro planeta se mueve alrededor del sol, lo que hace que los horarios de salida y caída del sol difieran durante todo el año, eso también hace que el tiempo de oración sea inconstante, por lo que necesitamos un reloj islámico para recordarnos a los musulmanes nuestros horarios de oración cada uno. día.

Cada musulmán tiene una forma de acceder a los horarios de oración diarios a través de los sitios web islámicos de Internet, los calendarios islámicos locales o incluso por televisión, y la mayoría de nosotros tenemos dispositivos de reloj islámicos que tienen las características de darnos los horarios de oración, así como alarmas de oración.. Pero, ¿qué pasaría si hiciéramos nuestro propio dispositivo Prayers Watch and Alarm?

Antes de comenzar a trabajar en el proyecto, hay algunas consideraciones que podrían resultarle útiles al leer este Instructable. Vivo en Arabia Saudita, por lo que algunos de mis pasos y valores serán diferentes a los suyos, y los señalaré explícitamente durante el trabajo. Hay pasos e imágenes que pueden incluir palabras en árabe desde que hice la interfaz en árabe, pero también señalaré cómo hacerlo en inglés, así que no dejes que las palabras en árabe en las imágenes te preocupen en absoluto, este proyecto puede ser hecho en cualquier idioma (¡lo cual es increíble!: D) También disculpe mis errores tipográficos, ya que el inglés no es mi primer idioma.

¡A nuestro proyecto! Este proyecto se dividirá en X pasos principales, que al final del X paso tendremos nuestro proyecto listo y listo. Los pasos serán los siguientes:

1-Configurar y preparar la RaspberryPi

2-Instalación del módulo RTC

3-Realización del programa de alarma Azan

4-Implementación de las esferas del reloj

5-Realización de la interfaz de usuario y

Como todo proyecto, primero debemos preparar las piezas que necesitamos. las partes que necesitamos para este proyecto son:

1-Kit de computadora RaspberryPi Amazon US || Amazon KSA

Puedes usar cualquier versión de Rpi, solo asegúrate de que tenga Wifi. Usé Rpi3B +

Módulo de reloj en tiempo real 2-RTC Amazon US || Amazon KSA

Puede usar cualquier modelo de módulo RTC, solo asegúrese de que tenga I2C

Monitor de 3 LCD

Cualquier LCD servirá

4-Mouse y teclado

¡¡y eso es!! Eso es todo lo que necesitas para hacer tu propio reloj y alarma Azan.

Paso 1: Capítulo 1: Instalación y configuración de RaspberryPI

Capítulo 1: Instalación y configuración de RaspberryPI
Capítulo 1: Instalación y configuración de RaspberryPI

¡Lo primero es lo primero! Necesitamos preparar la Raspberry pi para poder trabajar con ella.

Raspberry pi no es más que una computadora, tiene RAM y ROM, tiene una CPU, GPU, E / S …….¡Una computadora! al igual que en el que jugamos y navegamos por la web, ¡lo único importante es que es muy pequeño! lo que hace que la frambuesa sea una muy buena opción para realizar e implementar proyectos. Debido a que la raspberry pi es pequeña, tiene especificaciones muy limitadas de que no puede operar un sistema operativo grande y exigente como Windows o macOS, en su lugar, usaremos Linux como sistema operativo para usar el dispositivo. hay miles, si no decenas de miles de distribuciones de Linux que podríamos usar, pero una distribución perfecta está perfectamente optimizada específicamente para la raspberrypi que vamos a usar, llamada Raspbian.

Paso 2: 1-1: Descargue los archivos necesarios

1-1: Descargue los archivos necesarios
1-1: Descargue los archivos necesarios
1-1: Descargue los archivos necesarios
1-1: Descargue los archivos necesarios
1-1: Descargue los archivos necesarios
1-1: Descargue los archivos necesarios

-Vaya a la página oficial de descargas de Rasbian en https://www.raspberrypi.org/software/operating-sy … y descargue el sistema operativo Raspberry Pi con el archivo de escritorio

-Mientras se descarga, vaya a https://win32diskimager.org/ y descargue e instale win32DiskImager, puede usar cualquier software de grabación de imágenes que desee

Una vez que se haya realizado la descarga, tendrás un archivo.img que contiene el sistema operativo RaspberryPi. a continuación, conecte su tarjeta de memoria SD en la computadora (generalmente con un lector de tarjetas USB) e inicie el software win32diskimager. Los pasos para grabar la imagen en la memoria SD son muy simples, solo necesita 1- Seleccionar la letra de su memoria 2-seleccionar los archivos de su sistema operativo que descargó y escribir con 3-Click! Asegúrese de haber seleccionado la letra de dispositivo correcta de la lista y de que su memoria esté vacía, ya que al presionar escribir, se lo promocionará con una advertencia que le indica que se borrará todo lo que haya en el dispositivo. Presione sí para confirmar la escritura y espere a que termine. esto puede tardar hasta 20 minutos.

Una vez hecho esto, tendrá el sistema operativo Rapbian completo en la memoria, puede seguir adelante y ponerlo en el Rapberry Pi, conectar el Raspberry Pi al monitor a través de HDMI, conectar el mouse y el teclado a través de USB y, por último, conectar el poder.

Paso 3: 1-2: Configuración del sistema Raspbian

Después de conectar los cables y la alimentación, verá que el sistema operativo se ha encendido, se reiniciará automáticamente y luego mostrará la interfaz de usuario de Raspbian (que se parece a Windows). Lo primero que verá es una ventana de bienvenida, que lo guiará a través de los pasos para configurar su RaspberryPi por primera vez. las ventanas y los pasos serán los siguientes:

1-Presione siguiente en la primera ventana de "Bienvenida"

2-La siguiente ventana será para configurar su ubicación. seleccione su país, idioma y zona horaria. después de eso, se recomienda encarecidamente marcar "Usar idioma inglés", ya que será el idioma de la interfaz del sistema operativo. DEBE MARCAR LA "CAJA DE DISEÑO DEL TECLADO EN INGLÉS DE EE. UU." ¡NECESITAMOS TECLADO EN INGLÉS PARA FUNCIONAR!

3-A continuación, se le pedirá que ingrese una contraseña para su frambuesa, esto es importante para la seguridad, pero la dejaremos sin cambios para este proyecto. tenga en cuenta que el nombre de usuario y la contraseña predeterminados son:

nombre de usuario: pi

contraseña: frambuesa

4-La siguiente ventana conectará el raspberryPi a su red WiFi. seleccione su nombre de wifi e ingrese su contraseña de wifi

5-a continuación, se le pedirá que actualice las bibliotecas raspberry pi y los archivos del sistema. Este paso tomará una gran cantidad de tiempo (tal vez en horas) pero es un paso muy importante cada vez que se configura una nueva Raspberry Pi.

6-una vez que se realiza la actualización, se le pedirá que reinicie el sistema. haz eso ahora.

¡Buen trabajo! Ahora que tenemos un sistema actualizado, todavía tenemos que hacer algunas cosas más para configurar el sistema para que funcione, pero ahora, comenzaremos a usar la línea de comandos de Linux.

Paso 4: 1-3: uso de la línea de comandos para configurar los ajustes de Rpi

1-3: Uso de la línea de comandos para configurar la configuración de Rpi
1-3: Uso de la línea de comandos para configurar la configuración de Rpi
1-3: Uso de la línea de comandos para configurar los ajustes de Rpi
1-3: Uso de la línea de comandos para configurar los ajustes de Rpi
1-3: Uso de la línea de comandos para configurar la configuración de Rpi
1-3: Uso de la línea de comandos para configurar la configuración de Rpi

Una vez que termine de reiniciar desde la actualización del sistema, el sistema mostrará el escritorio del usuario una vez que haya terminado de arrancar. ahora, si miras en la parte superior izquierda de la pantalla, encontrarás algunos botones, un botón con el logotipo de raspberryPi que es el botón del menú Rpi, una forma de globo que es el navegador de Internet, un botón de carpetas que es … carpetas y finalmente, un botón con una ventana de pantalla negra, que es el botón más importante en cualquier sistema Linux, La línea de comandos. continúe y presione ese botón, verá aparecer una ventana negra.

La línea de comandos es la forma en que todos interactúan y usan el sistema Linux, al igual que Windows tiene su propia línea de comandos solo en las viudas, no es necesario que la usemos con mucha frecuencia. en Linux, es lo básico que todo usuario de Linux debe aprender y dominar. la línea de comando puede ser utilizada por…. COMMANDS! lo que ve en la ventana negra es el símbolo del sistema esperando que el usuario escriba el comando y lo ejecute. en esta guía daremos todos los comandos que necesitas para realizar este proyecto, así que no te preocupes.

El primer comando de Linux que vamos a usar es otro comando de configuración, tenga en cuenta que todos los comandos de ahora en adelante se colocarán dentro de un cuadro de código, para que pueda diferenciarlo de los pasos normales. Traiga su teclado y escriba lo siguiente y presione enter:

sudo raspi-config

Si lo hace correctamente, verá que la pantalla se volvió azul, con un pequeño recuadro gris en el medio (ver imagen). lo usaremos para hacer nuestra configuración final antes de comenzar a codificar.

ahora, deberá usar las teclas de flecha del teclado para navegar por este menú.

1-Vaya a Opciones de interfaz >> I2C >> SÍ >> presione enter. esto es habilitar el protocolo de comunicación I2c para que podamos usar el RTC

2-Vaya a Opciones avanzadas >> Expandir sistema de archivos.

y esa es toda la configuración que necesita desde esta ventana. en la página principal, baje y presione enter en "finalizar" y "YES" para reiniciar el sistema.

Una vez que el sistema termine de reiniciarse, ¡terminamos de configurar! ¡el dispositivo está listo para los grandes pasos! El siguiente paso será instalar el módulo RTC y usarlo con el sistema.

Paso 5: Capítulo 2: Montaje, configuración y uso del módulo RTC

Capítulo 2: Montaje, configuración y uso del módulo RTC
Capítulo 2: Montaje, configuración y uso del módulo RTC
Capítulo 2: Montaje, configuración y uso del módulo RTC
Capítulo 2: Montaje, configuración y uso del módulo RTC
Capítulo 2: Montaje, configuración y uso del módulo RTC
Capítulo 2: Montaje, configuración y uso del módulo RTC
Capítulo 2: Montaje, configuración y uso del módulo RTC
Capítulo 2: Montaje, configuración y uso del módulo RTC

El módulo RTC (o reloj en tiempo real) es un dispositivo pequeño que tiene un poco de batería, hace lo que su nombre indica: ¡Reloj! por lo que cuando lo desconecta para encender el reloj sigue funcionando y no se detiene. ¿Porqué necesitamos esto? bueno, la raspberry pi realmente no tiene un método para almacenar datos del reloj una vez que se apaga, se basa en conectarse a Internet al arrancar para actualizar su fecha y hora, pero el problema es que no siempre tenemos acceso a Internet, y esto es por eso que necesitamos el módulo RTC. el RTC actuará como un reloj para la frambuesa pi, por lo que una vez que se inicie el Rpi, tomará la fecha y la hora del RTC, lo que mantendrá la hora de la RaspberryPi actualizada todo el tiempo.

hay varios modelos y busca el RTC, existen los DS1307 y DS3231. Puede usar cualquier módulo RTC que encuentre siempre que tenga comunicación de protocolo I2C (puede indicar que puede encontrar pines SDA y SCL en los pines del módulo.

como todo en esta guía, utilicé otras guías para lograr mi objetivo en el proyecto, este instructivo lo guiará y le dirá exactamente qué hacer para realizar este proyecto, pero si necesita modificar o necesita más profundidad en alguno de los pasos, vincularé la guía más fructífera al final de cada paso.

Una vez que tenga listo su módulo RTC (suelde los pines del cabezal y coloque la batería), puede conectarlo a los pines RapberryPi de la siguiente manera:

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

TIERRA ===========> PIN 6 (TIERRA)

Vcc ============> PIN 1 (3.3V)

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

SCL ===========> PIN 5 (SCL)

o dependiendo del módulo RTC que tengas, puedes montarlo directamente en el RaspberryPi (¡Asegúrate de que los pines sean correctos! ya que podrías dañar el Rpi / RTC si no lo es)

Una vez que haya conectado el RTC, configuremos la Raspberry.

Paso 6: 2-1: Configuración del módulo

2-1: Configuración del módulo
2-1: Configuración del módulo
2-1: Configuración del módulo
2-1: Configuración del módulo

Antes de comenzar, vaya a la línea de comando y escriba:

fecha

Esto devolverá la fecha y hora actuales en la Raspberry, tomará nota de ese comando muy útil y anotará la fecha y hora actuales para que podamos verificar cuándo el módulo está funcionando o no.

ahora, comencemos la configuración, escriba lo siguiente para actualizar las bibliotecas Rpi, una línea a la vez:

sudo apt-get update

sudo apt-get -y actualización

Una vez hecho esto, necesitamos modificar los archivos del sistema para habilitar el módulo i2c y agregar RTC. Para modificar un sistema de archivos, usaremos un software llamado Nano. nano es un software integrado ligero que es básicamente un editor de texto, como el de Widows. por lo que cualquier comando que comience con nano seguido del nombre del archivo, abrirá ese archivo en el editor de texto nano. ha notado que también usamos algo llamado Sudo, en resumen, sudo actúa como una garantía para el sistema Linux que le dice al sistema que el usuario que hizo ese comando es el propietario del dispositivo, no otra persona, y otorga privilegios como editar / eliminar al usuario. por ejemplo, si abrimos un archivo nano sin sudo, podríamos ver ese archivo, pero no podemos editarlo ni eliminarlo.

ahora, necesitamos modificar el archivo de módulos, podemos hacerlo escribiendo:

sudo nano / etc / modules

una vez que hagas eso, encontrarás el contenido de ese archivo (ver foto). use las teclas de flecha para colocar el cursor al final del texto y agregue lo siguiente:

snd-bcm2835

i2c-bcm2835 i2c-dev rtc-ds1307

presione CTRL + S para guardar y CTRL + X para salir

Paso 7: 2-2: Interfaz I2C

2-2: Interfaz I2C
2-2: Interfaz I2C

Ahora que hemos conectado el RTC y habilitado i2c, conectemos todo junto.

escriba lo siguiente en el símbolo del sistema:

i2cdetect -y 1

se le dará una serie de espacios en blanco, pero notará que hay un número en alguna parte, ese número es la dirección de su módulo RTC. en mi caso es 68. Fíjate en ese número. si no ve ese número de dos dígitos, eso significa que probablemente esté conectado incorrectamente al RTC.

ahora, necesitamos modificar el archivo rc.local para que podamos habilitar el módulo RTC en el arranque y dejar que guarde la fecha y la hora en el sistema. primero, abra el archivo rc.local:

sudo nano /etc/rc.local

Antes de la línea exit0, agregue lo siguiente:

echo ds1307 0x68> / sys / class / i2c-adapter / i2c-1 / new_device

hwclock -s

donde 0x68 es la dirección i2c de su dispositivo. una vez que haya terminado, presione CTRL + S CTRL + X, luego reinicie su sistema de la siguiente manera:

sudo reiniciar

Paso 8: 2-3: Prueba del RTC

2-3: Prueba del RTC
2-3: Prueba del RTC

Una vez que se reinicia el sistema, podemos verificar si el RTC está funcionando o no. primer intento:

sudo hwclock -r

se le devolverá la fecha y la hora en el módulo RTC. si le dan algo más, asegúrese de haber realizado los pasos correctamente.

ahora, para modificar la hora y la fecha en el RTC, primero necesitamos modificar la fecha y la hora en el sistema, LUEGO con las modificaciones al RTC. para hacerlo, ejecute:

sudo date -s "29 AUG 1997 13:00:00"

y, por supuesto, cambie la fecha y la hora de acuerdo con su hora y fecha locales, antes de presionar Enter. Una vez que obtenga la hora correcta en el Rpi, ejecute lo siguiente para guardar la fecha y la hora en el RTC:

sudo hwclock -w

aaaa y eso es todo! puede verificar si está funcionando mediante hwclock -r y ver si la fecha en el RTC es correcta o no, luego desconecte el rpi de Internet y luego apáguelo por un tiempo y luego enciéndalo nuevamente y vea si tiene el valor correcto hora y fecha. ya terminaste!

La guía completa sobre cómo configurar el módulo RTC se puede encontrar aquí

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

Paso 9: Capítulo 3: Creación del programa de alarma Azan

Capítulo 3: Creación del programa de alarma Azan
Capítulo 3: Creación del programa de alarma Azan

hacer un reloj es una cosa, claro, podemos mirar el reloj y los tiempos de oración y ver cuándo llega el momento, pero ¿no sería ni MÁS MEJOR si pudiéramos agregar una alarma sonora para notificarnos sobre los tiempos de oración? ¡AÚN MEJOR, hacemos esa alarma como el sonido de AZAN! veamos cómo podemos lograr esto.

para nuestra programación, usaremos Python como nuestro lenguaje de programación preferido, ya que Python va perfecto con RaspberryPi. para hacer un archivo de código en Python, hacemos lo mismo que abrir un archivo de texto, pero ahora lo guardamos como.py. para ejecutar el programa, necesitamos el entorno python instalado del raspbery, afortunadamente, Raspbian viene con python y python3 preinstalados. así que todo lo que tenemos que hacer es programar. En esta guía no hablaremos del idioma y enseñaremos cómo funciona y las funciones, pero te daré los códigos necesarios para que puedas realizar el proyecto.

Para empezar, necesitamos un archivo de sonido de nuestro sonido azan preferido (en. WAV), necesitamos dos archivos, uno para al-fajr azan y otro para azan normal. una vez que lo tenga, póngalo en una unidad de disco y cópielo en el escritorio de la raspberrypi.

ahora tenemos los archivos, estaba buscando una forma de reproducir audios de sonido en el raspberryPi y, para mi sorpresa, no había muchas formas en que pudiera hacer esto, pero encontré esta respuesta en stackoverflow que me dio lo que necesitaba

stackoverflow.com/questions/20021457/playi…

¡Probé ese método y funcionó! así que veamos cómo podemos implementar este método en nuestro proyecto …

Paso 10: 3-1: ¡Reproduzcamos un sonido

3-1: ¡Toquemos un sonido!
3-1: ¡Toquemos un sonido!

primero, navegue al escritorio por:

cd de escritorio

luego crea un nuevo archivo de código Python de la siguiente manera:

sudo nano AzanPlay.py

esto creará un nuevo archivo llamado AzanPlay con la extensión en un archivo python.py, tendremos una pantalla negra vacía que nos permitirá escribir nuestro código. simplemente escriba estas líneas (tenga cuidado de no cambiar ninguna sangría o espacios, ya que esto es EXTREMADAMENTE importante en Python):

desde el mezclador de importación de pygame

mezclador.init () mezclador.music.load ('/ home / pi / Desktop / Adhan-Makkah.wav') mezclador.music.play () mientras mezclador.music.get_busy () == Verdadero: continuar

Donde / Escritorio / es donde colocas tus archivos de sonido, y 'Adhan-Makkah.wav' es mi archivo de audio, que es la grabación de sonido de Azan en makkah.

ahora para probar nuestro código, lo ejecutamos con python escribiendo:

python AzanPlay.py

y el sonido se reproducirá desde la pantalla LCD HDMI o el puerto AUX de la Raspberrypi. Si no lo oye por los parlantes LCD, conecte un auricular al AUX y verifique.

Paso 11: 3-2: Obtenga tiempos de oración

3-2: Obtenga tiempos de oración
3-2: Obtenga tiempos de oración

Como sabemos, los tiempos de oración difieren de un lugar a otro en la tierra, e incluso para un lugar específico, difiere a través de los años, eso significa que debemos encontrar una manera de mantener nuestros tiempos de oración en el sistema actualizados todo el tiempo, y para eso necesitamos funciones y cálculos específicos y muy complejos para hacerlo bien. Afortunadamente, nuestro hermano Hamid Zarrabi-Zadeh ha convertido todas las funciones que necesitamos en una función que podemos usar fácilmente para obtener la hora dependiendo de nuestra ubicación y hora actual, ¡INCREÍBLE! puede encontrar la biblioteca y los archivos fuente en

praytimes.org/

Entonces, usaremos estos asombrosos archivos para obtener nuestros tiempos de oración e implementarlos en el sistema. Primero, descargue los códigos del sitio web y colóquelos dentro de una carpeta / adhan / (necesitamos los códigos JS y Python).

ahora, vayamos a esa carpeta y probemos la biblioteca, y lo que puede hacer:

cd adhan

allí, necesitamos crear un nuevo archivo de prueba en Python para que podamos probar la función:

sudo nano testAd.py

adentro, escriba este código:

importar tiempos de oración

desde fecha y hora fecha de importación tmm = rezar veces. PrayTimes (). getTimes (date.today (), [LONGTITUDE, LATITUDE], GMT) print (tmm)

Antes de guardar el archivo, debe cambiar LATITUDE con su ubicación Latitude, lo mismo con LONGTITUDE, y cambiar GMT a su zona horaria. en mi caso será:

tmm = oraciones. PrayTimes (). getTimes (date.today (), [21.3236, 39.1022], 3)

imprimir (tmm)

Finalmente, presione CTRL-S y CTRL-X y luego ejecute el código:

python testAd.py

finalmente, se le devolverán sus tiempos de oración de hoy, para su ubicación.

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

¡Excelente! ahora que tenemos nuestro tiempo de oración y sabemos cómo reproducir sonidos, fusionemos estos dos códigos en un código principal.

Paso 12: 3-3: Creación del código de alarma Azan final

Al terminar los dos códigos anteriores, aprendimos cómo obtener los tiempos de oración precisos de acuerdo con nuestra ubicación y cómo reproducir el sonido Azan. ahora, vamos a fusionar estos dos códigos en un código que usaremos como nuestro proyecto final, y este código funcionará en segundo plano, ya que cuando llegue el momento de Azan, reproducirá el sonido de Azan.

Escribí el código completo, puedes copiarlo y pegarlo, y hacer tus propios cambios como mejor te parezca. El código es:

tiempo de importación

desde pygame importar mezclador importar cadena importar tiempos de oración desde fecha y hora importar fecha while (1): tmm = tiempo de oración. 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 = time.strftime (str ('% M')) currTime = currTime + ':' + tempT if currTime == FAJR: mixer.init () mixer.music.load ('/ home / pi / Desktop / Adhan-fajr. wav ') mezclador.music.play () mientras mezclador.music.get_busy () == Verdadero: continuar si currTime == DHUHR: mezclador.init () mezclador.music.load (' / home / pi / Desktop / Adhan- Makkah.wav ') mezclador.music.play () mientras mezclador.music.get_busy () == Verdadero: continuar si currTime == ASR: mezclador.init () mezclador.music.load (' / home / pi / Desktop / Adhan-Makkah.wav ') mixer.music.play () mientras que mixer.music.get_busy () == True: continuar si currTime == MAGHRIB: mixer.init () mixer.music.load (' / home / pi / Desktop / Adhan-Makkah.wav ') mixer.music.play () mientras que mixer.music.get_busy () == Verdadero: continuar si currTime == ISHA: mixer.init () mixer.music.load ('/ home / pi / Desktop / Adhan-Makkah.wav') mixer.music.play () mientras que mixer.music.get_busy () == Verdadero: continuar

Si miras el código y lo comparas con lo que hicimos anteriormente, verás que no hicimos nada nuevo, al principio, incluimos nuestras bibliotecas necesarias y luego abrimos un ciclo infinito. en el ciclo, calculamos constantemente el tiempo de las oraciones con nuestra ubicación y zona horaria, y almacenamos todo el resultado en tmm variable. luego, almacenamos cada tiempo de oración de tmm a una variable independiente. que nos permitirá comparar tiempos. a continuación, tomamos la hora del sistema y la almacenamos en una variable independiente. por último, seguimos comparando el tiempo del sistema con los tiempos de oración, si el tiempo del sistema coincide con alguno de los tiempos de oración, reproducirá el sonido Azan.

Paso 13: Capítulo 4: Implementación de las esferas del reloj

Capítulo 4: Implementación de las esferas del reloj
Capítulo 4: Implementación de las esferas del reloj
Capítulo 4: Implementación de las esferas del reloj
Capítulo 4: Implementación de las esferas del reloj
Capítulo 4: Implementación de las esferas del reloj
Capítulo 4: Implementación de las esferas del reloj
Capítulo 4: Implementación de las esferas del reloj
Capítulo 4: Implementación de las esferas del reloj

Para que el proyecto se vea mejor, tuve la idea de agregar caras de reloj a la pantalla LCD, por lo que se ve bien para el usuario (bueno, al menos mejor que la línea de comando), así que contraté a un diseñador para diseñar múltiples caras para el reloj, debe estar vacío sin datos, ya que los datos deben agregarse a través de HTML, haciendo que los diseños del reloj sean el fondo, y los otros datos, como los tiempos de oración, se podrían agregar como elementos HTML en la parte superior del fondo.

Desafortunadamente, en el momento de escribir este instructivo, mi conocimiento y experiencia en HTML es muy limitado, por lo que no discutiré muchos detalles porque sé con certeza que haré las cosas de manera incorrecta, y no lo hago. quiero confundir a la gente. pero si tiene una experiencia mínima en JS y HTML, debe saber cómo continuar desde este punto. hasta ahora he hecho una sola cara (la azul). ¡el plan es hacer 14 caras de reloj! 7 caras para todos los días de la semana y otras 7 como tema más. ya que se supone que el primer tema es con Azkar rodando, y se supone que el otro tema tiene GIFS islámicos en lugar de Azkar. Independientemente, incluiré todos los diseños en este instructivo para que puedas descargarlo.

Paso 14: Capítulo 5: Implementación de una interfaz de usuario

Capítulo 5: Implementación de una interfaz de usuario
Capítulo 5: Implementación de una interfaz de usuario

En el último capítulo de nuestro viaje, haremos algunas modificaciones opcionales para que el proyecto sea incluso fácil de usar, en caso de que queramos implementar el proyecto en una mezquita o en cualquier lugar público. como dijimos antes, cada ciudad tiene su propio tiempo para las oraciones, y para que este proyecto tenga acceso a una gran variedad de personas, crearemos una interfaz de usuario para que podamos seleccionar nuestra ciudad y tema deseados una vez que encienda el proyecto.

Para hacer esto, usaremos una biblioteca GUI de Python llamada "TKinter".

Este es el código que he implementado para que pueda elegir entre cinco ciudades de Arabia Saudita, incluida La Meca:

importar tkinter como 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 = Button (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 = Botón (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 (fila = 0, columna = 1, columnpan = 2, sticky = W + E + N + S) self.button2.grid (fila = 1, columna = 1, columnpan = 2, sticky = W + E + N + S) self.button3.grid (fila = 2, columna = 1, espacio de columnas = 2, pegajoso = W + E + N + S) self.button4.grid (fila = 3, columna = 1, espacio de columnas = 2, pegajoso = W + E + N + S) self.button5.grid (fila = 4, columna = 1, columnaspan = 2, pegajoso = 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 (orden) def open_riyadh1 (self): order = "sudo chromium-browser /home/pi/Desktop/Cities/riyadh/Sunday1.html --start-fullscreen --no-sandbox -test-type" os.system (orden) 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 () if _name_ == '_main_': main ()

El código puede parecer grande, pero editarlo es muy fácil. Básicamente hicimos una nueva ventana, pusimos cinco botones de nombres y definimos cinco funciones que se llamarán cada vez que presione un botón. una vez que presione el botón, el programa abrirá el archivo HTML correspondiente en la carpeta Ciudades, donde cada ciudad HTML tiene las coordenadas de la ciudad cuando obtiene la hora de las horas de oración (). Una vez que presione el botón, el código Python ejecutará un código Linux en el que abrirá el archivo HTML usando el navegador Chrome, y tendrá la esfera del reloj lista para mostrarse, con la opción de pantalla completa activada.

Paso 15: (Opcional): Agregar un interruptor de altavoz

(Opcional): Agregar un interruptor de altavoz
(Opcional): Agregar un interruptor de altavoz
(Opcional): Agregar un interruptor de altavoz
(Opcional): Agregar un interruptor de altavoz

Como vimos, cuando llega la hora de la oración, suena el sonido de Azan, y el sonido sale por la salida de sonido predeterminada (salida HDMI o AV) y como lo estamos poniendo en la salida HDMI, el sonido vendrá desde la pantalla LCD. pero, ¿y si el sonido de nuestra pantalla LCD no es suficiente? por ejemplo, ¿qué pasa si queremos implementar esto dentro de una mezquita real? con parlantes exteriores anchos? luego podemos agregar un paso MUY fácil más para lograrlo. para un sistema de sonido de altavoces ya construido, solo necesitamos encenderlo y apagarlo, y tomar el micrófono ya existente y colocarlo junto a los altavoces LCD.

Hacerlo es fácil. Usaremos el micrófono de mezquita preexistente que está conectado al altavoz, solo necesitaremos el raspberryPi para controlar la energía que enciende y apaga todo el sistema de sonido. para hacerlo, necesitaremos usar un SSR: RELÉ DE ESTADO SÓLIDO. Estos tipos de relés pueden actuar como un interruptor, al igual que el relé azul promedio, la diferencia es que los SSR podrían soportar una gran cantidad de amperaje de CA a través de él, que no es aplicable en los azules (generalmente un máximo de 10 A), y los SSR necesitan solo dos cables en lugar de 3: DC + y DC- ¡y eso es todo! en el otro extremo del SSR podemos conectar el cable de alimentación del sistema de altavoces, de esa manera, cuando le damos voltaje al SSR, cerrará el circuito de CA del sistema de altavoces, o apagaremos el voltaje para hacer un circuito abierto, apagar los altavoces.

Aunque hay un problema, los pines de RaspberryPi producen 3.3v, no 5v que necesitamos para controlar el SSR. por lo que necesitamos un transistor para tomar la señal del pin RPi y 5V del pin RPi 5v. para hacerlo necesitamos:

1-Relé de estado sólido (cualquier valor superior a 25 A es bueno)

Transistor npn 2-2n2222

Resistencia de 3-220ohm

siga el circuito fritzing para la conexión.

ahora en el código, agregaremos algunas cosas que hacen que esto funcione. Primero, antes del ciclo while, agregaremos algunas líneas para inicializar los pines GPIO:

En la sección de importación, agregue:

importar RPi. GPIO como GPIO

Antes del ciclo while, agregue:

GPIO.setmode (GPIO. BOARD) GPIO.setwarnings (Falso) relé = 40 GPIO.setup (ledPin, GPIO. OUT)

Ahora, en el ciclo while, para cada comando de reproducción de Azan, debemos encender el relé, esperar 10 segundos, terminar la reproducción de Azan y luego apagar el relé. solo necesitamos agregar dos líneas, la primera es:

Salida GPIO (ledPin, GPIO. HIGH)

hora de dormir (10)

este debe agregarse después de cada declaración if (¡LA IDENTACIÓN ES IMPORTANTE!), la otra línea es:

Salida GPIO (ledPin, GPIO. LOW)

Este debe agregarse después de la línea "continuar". debería verse así para cada vez que Azan:

si currTime == FAJR:

GPIO.output (ledPin, GPIO. HIGH) time.sleep (10) mixer.init () mixer.music.load ('/ home / pi / Desktop / Adhan-fajr.wav') mixer.music.play () mientras mixer.music.get_busy () == Verdadero: continuar GPIO.output (ledPin, GPIO. LOW)

Recomendado: