Tabla de contenido:

Campana escolar para estudiantes a distancia: 6 pasos
Campana escolar para estudiantes a distancia: 6 pasos

Video: Campana escolar para estudiantes a distancia: 6 pasos

Video: Campana escolar para estudiantes a distancia: 6 pasos
Video: la escolta de la secundaria 2024, Noviembre
Anonim
Campana de la escuela para estudiantes a distancia
Campana de la escuela para estudiantes a distancia

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

Configura tu Raspberry Pi
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

Haga que su sistema de sonido funcione
Haga que su sistema de sonido funcione

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

Pruebe la reproducción de sonidos de campana y / o cree nuevos sonidos
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

Instale el código y establezca su horario
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

Automatiza la carrera con Crond
Automatiza la carrera 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.

Imagen
Imagen
Imagen
Imagen

Finalista en el concurso familiar "No puedo tocar esto"

Recomendado: