Tabla de contenido:
- Suministros
- Paso 1: configura tu Raspberry Pi
- Paso 2: Ponga en funcionamiento su sistema de sonido
- Paso 3: Pruebe la reproducción de sonidos de campana y / o cree nuevos sonidos
- Paso 4: instale el código y establezca su horario
- Paso 5: Automatiza la ejecución con Crond
- Paso 6: personaliza y disfruta
Video: Campana escolar para estudiantes a distancia: 6 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:40
Con la pandemia de COVID-19, muchas escuelas para niños han optado por la entrega a distancia. Esta campana de la escuela en casa es una forma divertida de cumplir con el horario que utiliza una Raspberry Pi y un altavoz USB. Puede hacerlo con su hijo y ellos pueden aprender sobre programación y pueden "tocar el timbre". Construí esto para mi hija que va al séptimo grado (actualmente a través de entrega a distancia), y está funcionando bien para mantenernos a tiempo.
Suministros
Para este proyecto, necesitará:
- Una computadora Raspberry Pi: funciona mejor si tienes WiFi, usé un RPi 3B de un kit Kano
- Un altavoz: utilicé un altavoz USB
El código podría ejecutarse fácilmente en la computadora Linux de su estudiante o incluso en un microcontrolador que ejecute micropython, siempre que el microcontrolador tenga algún mecanismo para obtener la fecha / hora actual. También se podría usar cualquier altavoz amplificado, o incluso un timbre de relé / analógico más frío.
Paso 1: configura tu Raspberry Pi
Hay una gran cantidad de recursos para configurar una computadora Raspberry Pi, así que te recomiendo uno que encuentre Google. Lo importante es que su computadora tenga una forma de obtener la fecha y hora correctas. La mayoría de las computadoras Raspberry Pi modernas con WiFi usan el protocolo NTP para configurar la hora desde Internet, que es la forma en que obtuve la hora correcta. Configuré mi RPi para que sea "sin cabeza", lo que significa que no tiene teclado ni monitor, pero es accesible mediante un shell seguro (SSH) a través de Internet. Si eres bueno con RPi, puedes hacer esta configuración sin un teclado / video / mouse, pero es más fácil configurar el pi con esos accesorios.
Tenga en cuenta que no necesitaba utilizar la interfaz gráfica, por lo que acabo de descargar "Raspberry Pi OS (32 bits) Lite", que es más pequeño y más rápido de descargar y arranca más rápido.
Configurar la red y las opciones de interfaz de la Raspberry Pi
$ sudo raspi-config
En la configuración, haga lo siguiente:
- Cambie la contraseña: haga esto primero, ¡con suerte antes de conectarse!
-
En "Opciones de red",
- Cambie el nombre de host. Usé el nombre de host: "schoolbell".
- Conéctese a su LAN inalámbrica (si no lo ha hecho en la configuración)
- En "Opciones de interfaz", active el acceso SSH
- Siempre es bueno ejecutar la opción "Actualizar"
Una vez que haya hecho esto y reiniciado, debería poder conectarse a la Raspberry Pi desde otra computadora en la misma red local utilizando un cliente SSH. Conéctese a él utilizando las siguientes credenciales:
nombre de host: schoolbell.local
usuario: pi contraseña: whateveryousetitas
Desde una caja de Linux, esto es tan simple como escribir esta línea de comando en el indicador $:
$ ssh [email protected]
… ingrese la contraseña cuando se le solicite
Eso te iniciará la sesión y podrás comprobar que la hora en la Raspberry Pi es correcta. En la línea de comando, escriba el comando de fecha y verifique la respuesta:
pi @ schoolbell: ~ $ fecha
Jue 3 Sep 20:44:34 AKDT 2020
Ojalá este sea el momento actual. Si no es correcto, busque en Google sobre la configuración de NTP en la Raspberry Pi.
Paso 2: Ponga en funcionamiento su sistema de sonido
Vamos a reproducir archivos MP3 para las campanas, por lo que necesitamos descargar un software para decodificar estos archivos de audio. Obtuve el paquete mpg321 escribiendo este comando:
pi @ schoolbell: ~ $ sudo apt-get install mpg321
Siga las instrucciones para instalar este software.
Utilicé un altavoz USB antiguo, que tenía un controlador extraño y no se configuraba automáticamente como la tarjeta de sonido predeterminada, por lo que descubrí que podía "piratear" el altavoz para que funcionara utilizando su dirección de hardware. Después de conectar el altavoz, utilicé el comando 'aplay -l' para enumerar los dispositivos de audio:
pi @ schoolbell: ~ $ aplay -l
**** Lista de dispositivos de hardware de REPRODUCCIÓN **** tarjeta 0: Auriculares [bcm2835 Auriculares], dispositivo 0: bcm2835 Auriculares [bcm2835 Auriculares] Subdispositivos: Subdispositivo # 0: subdispositivo # 0 Subdispositivo # 1: subdispositivo # 1 Subdispositivo # 2: subdispositivo n. ° 2 Subdispositivo n. ° 3: subdispositivo n. ° 3 Subdispositivo n. ° 4: subdispositivo n. ° 4 Subdispositivo n. ° 5: subdispositivo n. ° 5 Subdispositivo n. ° 6: subdispositivo n. ° 6 Subdispositivo n. ° 7: subdispositivo n. ° 7 tarjeta 1: CODEC [USB Audio CODEC], dispositivo 0: Audio USB [Audio USB] Subdispositivos: Subdispositivo # 0: subdispositivo # 0
El dispositivo que quiero es el inferior, tarjeta 1, dispositivo 0.
Probé el altavoz con "speaker-test", usando el dispositivo "hw: 1, 0", es decir, tarjeta de hardware 1, dispositivo 0
pi @ schoolbell: ~ $ prueba de altavoz -D hw: 1, 0
Este programa apaga el ruido de los altavoces. Disfrute del ruido y luego escriba control-C cuando se sienta molesto. Si no oye ningún ruido, intente con Google.
¡Ahora tienes sonido!
Paso 3: Pruebe la reproducción de sonidos de campana y / o cree nuevos sonidos
Para mi timbre, descargué el sonido "bing-bong" de "freesound.org". Gracias a Benboncan por hacer que este sonido esté disponible:
freesound.org/people/Benboncan/sounds/93646/
Puede reproducir el sonido directamente. Podría descargar directamente una versión mp3 de este archivo escribiendo este comando en la computadora Raspberry Pi (suponiendo que esté en WiFi):
pi @ schoolbell: ~ $ wget
Luego renombré este archivo:
pi @ schoolbell: ~ $ mv 93646_634166-hq.mp3 bing-bong-chime-hq.mp3
Luego probé que podía hacer sonar el timbre con este comando (que muestra la salida):
pi @ schoolbell: ~ $ mpg321 -a hw: 1, 0 bing-bong-chime-hq.mp3
Reproductor de audio MPEG 1.0 / 2.0 / 2.5 de alto rendimiento para capas 1, 2 y 3. Versión 0.3.2-1 (2012/03/25). Escrito y con derechos de autor por Joe Drew, ahora mantenido por Nanakos Chrysostomos y otros. Utiliza código de varias personas. ¡Vea 'README' para más información! ¡ESTE SOFTWARE VIENE SIN GARANTÍA ABSOLUTAMENTE! ¡ÚSELO BAJO SU PROPIO RIESGO! Reproducción de flujo MPEG de bing-bong-chime-hq.mp3… MPEG 1.0 capa III, 128 kbit / s, 44100 Hz mono [0:02] La decodificación de bing-bong-chime-hq.mp3 finalizó.
¡Felicitaciones! Tienes audio.
Usando el código de edición de sonido "audacity" en mi computadora portátil, dividí el archivo en "bing" y "bong" para divertirme más. Puede usar cualquier mp3 o tal vez otro formato (no he probado otros) archivos de sonido.
Paso 4: instale el código y establezca su horario
El código es una secuencia de comandos de Python que obtiene la fecha / hora actual y si la fecha es un día de la semana y no un día festivo, verifica si la hora coincide con la hora de la campana, repicando si debería hacerlo.
Primero lo hará funcionar, luego lo automatizará para que se ejecute cada minuto.
Descarga el código de Github:
gist.github.com/BillSimpson/d7a1a531995c8b63492bb47ef8872618
Me resulta fácil hacer esto al guardar el archivo en una computadora local y luego usar una copia segura (scp) para colocarlo en la Raspberry pi.
En su máquina local, copie el código de su navegador, luego péguelo en un archivo de texto y guárdelo con el nombre de archivo "schoolbell.py". Luego scp el archivo sobre:
máquina-local: ~ $ scp schoolbell.py [email protected]: ~ /
Se le pedirá que ingrese la contraseña del usuario pi en schoolbell.local; ingrese la contraseña y el archivo se copiará de forma segura. Este comando debe ejecutarse en el mismo directorio donde se guardó el script de Python y copiarlo en el directorio de inicio del usuario pi. Puede pasar a schoolbell.local y el código debería estar allí:
máquina-local: ~ $ ssh [email protected]
Luego, en schoolbell.local, enumere los archivos (puede ver más archivos):
pi @ schoolbell: ~ $ ls
bing-bong-chime-hq.mp3 schoolbell.py
Ahora edite el código para que tenga su horario de campana usando un editor como pico:
pi @ schoolbell: ~ $ pico schoolbell.py
El código tiene tres "diccionarios" que definen los tonos de campana a tocar, los tiempos para tocarlos y los días festivos que se deben evitar. Las campanas de los fines de semana se omiten automáticamente.
Por ejemplo, el diccionario de timbres es:
timbres = {
'advertir': 'bing-bong-chime-hq.mp3', 'start': 'bing-bong-chime-hq.mp3', 'end': 'bing-bong-chime-hq.mp3'}
Esto define tres tipos de campanas, una campana de advertencia, un comienzo de clase y un final. Como solo tenemos un tono de campana, todos apuntan al mismo archivo, pero si haces diferentes tonos, puedes cambiarlos. Incluso puede agregar otros tipos de tonos de campanas. También jugué con el uso de un sintetizador de voz para hablar las campanas, pero eso no fue visto favorablemente por otros en la casa.
El diccionario bellschedule es similar, pero la "clave" es ahora el momento de la campana. debe utilizar el formato HH: MM con ceros a la izquierda y hora de 24 horas (hora militar).
bellschedule = {
'09: 00 ':' start ', #' Bus 'bell to be ready '09: 28': 'warn',….. '13: 58 ':' warn ', # for period 4 '14: 00 ':' inicio ', '15: 00': 'final'}
El valor en este par clave: valor es el tipo de tono de timbre que se debe usar y debe coincidir con uno de los tonos de timbre definidos anteriormente.
Por último, el diccionario de vacaciones enumera las fechas de las vacaciones. El formato es AAAA-mm-dd, con ceros a la izquierda como se muestra.
vacaciones = {
'2020-09-07', …. '2021-03-11', '2021-03-12' }
Una vez que haya terminado de editar, guarde el archivo saliendo de su editor, escribiendo ctrl-X si está usando pico.
Haga que el código de Python sea ejecutable de la siguiente manera:
pi @ schoolbell: ~ $ chmod a + x schoolbell.py
Esto permite que todos los usuarios ejecuten el código, "a" para todos, "+" para agregar permiso y "x" para ejecutar.
Ahora pruebe, ejecute el código y observe el resultado. Tenga en cuenta que puede ejecutar el archivo escribiendo el nombre del archivo, pero debe especificar que está en el directorio actual escribiendo un "./" antes del nombre del archivo:
pi @ schoolbell: ~ $./schoolbell.py
Es un día escolar, revisando la hora 21:35
El código le dirá si es un día escolar (por ejemplo, no un día festivo o un fin de semana) y verá si la hora coincide con la hora de la campana. En este caso, no era la hora de la campana, por lo que simplemente salió limpiamente. Si hubiera sido la hora de la campana, habría sonado.
Para probar que su código puede reproducir campanas, use la opción de línea de comando de un archivo para reproducir. Usaremos nuestro archivo bing-bong:
pi @ schoolbell: ~ / schoolbell $./schoolbell.py bing-bong-chime-hq.mp3
Es un día escolar, hora de verificación 21:38 Reproductor de audio MPEG 1.0 / 2.0 / 2.5 de alto rendimiento para la capa 1, 2 y 3. Versión 0.3.2-1 (2012/03/25). Escrito y con derechos de autor por Joe Drew, ahora mantenido por Nanakos Chrysostomos y otros. …. más salida….
Deberías haber escuchado la campana.
Ahora pruebe el código usando una hora como argumento. Recuerde ingresar la hora con ceros a la izquierda. Por ejemplo, para probar la campana de mi "autobús escolar" a las 9 a. M., Escribo:
pi @ schoolbell: ~ $./schoolbell.py 09:00
¡Esto debería hacer sonar tu campana! También puede comprobar que no suena cuando no suena el timbre.
Paso 5: Automatiza la ejecución con Crond
El "demonio" cron es un programador que ejecuta tareas repetitivas en un sistema Linux. Comprueba si la fecha / hora coincide con un patrón en la tabla cron (crontab) y luego ejecuta el código si lo hace. Puedes editarlo usando el comando "crontab -e":
pi @ schoolbell: ~ $ crontab -e
Esto abrirá un editor de archivos y, en la parte inferior de este archivo, agregará la siguiente línea:
* * * * * python3 /home/pi/schoolbell.py
Este comando le dice a cron que ejecute python3 ejecutando su script en el directorio de inicio normal (/ home / pi). Los cinco * dicen que debe ejecutarse cada minuto (primero *), cada hora (siguiente *…), todos los días del mes, todos los meses y todos los días de la semana.
Ahora, cada minuto se ejecutará el script schoolbell.py. Durante la mayoría de los minutos, el código se ejecutará y descubrirá que debería cerrarse sin sonar, pero si resulta que suena un timbre, sonará.
Tenga en cuenta que debido a que cron solo se ejecuta cada minuto, no podría hacer que las campanas sean más granulares que al minuto. Creo que es teóricamente posible que si su sistema se atasca, cron podría no ejecutarse durante unos segundos después de la parte superior del minuto, lo que hace que la campana se retrase. Si de alguna manera cron no se ejecutaba durante todo el minuto, se perdería la campana.
Sugerencia: para las vacaciones prolongadas (por ejemplo, verano), puede agregar un hashtag (#) al primer carácter de esta línea, lo que lo convierte en un comentario y, por lo tanto, ignora su ejecución. Cuando la escuela vuelva a estar en sesión, simplemente elimine el # y comenzará a funcionar nuevamente.
Paso 6: personaliza y disfruta
Ahora, debe tener un sistema de timbre escolar en casa que funcione y su estudiante nunca debe llegar tarde a clase.
Puede personalizar este proyecto cambiando los tonos de la campana.
- Podrías hacer que suene el Big Ben, con campanadas de un cuarto de hora y repicando las horas.
- Podrías probar el estilo libre de tu rapero favorito.
- Podrías hacer mensajes subliminales para concentrarte en estudiar.
Manténgase a salvo en este momento de COVID.
Finalista en el concurso familiar "No puedo tocar esto"
Recomendado:
Mapa de estacionamiento para estudiantes del campus universitario: 7 pasos (con imágenes)
Mapa de estacionamiento para estudiantes del campus universitario: muchos estudiantes se preguntan dónde pueden estacionar en un campus universitario. Para abordar este problema, creé un mapa de estacionamiento iluminado del área principal del campus de la Universidad Estatal de Utah. El mapa es para que los estudiantes echen un vistazo rápido a las opciones de estacionamiento
Reparador de gatos tristes, juguete para gatos Catch-Me - Proyecto escolar: 3 pasos
Sad Cat Fixer, Catch-Me Cat Toy - Proyecto escolar: Aquí está nuestro producto, es un ratón de juguete interactivo: Catch-Me Cat Toy. Aquí hay una lista de problemas que enfrentan muchos gatos en nuestra sociedad: Los gatos en estos días se están volviendo inactivos y deprimidos sin nada que hacer La mayoría de los dueños están ocupados con el trabajo o la escuela y tu ca
Caja de LED para el simposio escolar de Delta: 7 pasos
Caja de LED para el simposio escolar de Delta:
Introducción a la robótica para estudiantes de escuela primaria con controladores Hummingbird: 18 pasos
Introducción a la robótica para estudiantes de escuela primaria con controladores Hummingbird: la mayoría de las herramientas robóticas del mercado actual requieren que el usuario descargue un software específico en su disco duro. La belleza del controlador robótico Hummingbird es que se puede ejecutar con una computadora basada en la web, como una Chromebook. También ha sido
Trabajar con varias computadoras (para estudiantes): 6 pasos
Trabajar con varios equipos (para estudiantes): Trabajar con varios equipos puede resultar muy difícil. Nunca se sabe qué archivos hay en qué computadora, es posible que tenga problemas con varias versiones del mismo archivo y, como resultado, podría perder todos sus archivos o al menos tener su