Tabla de contenido:
- Suministros
- Paso 1: diseño del detector
- Paso 2: configurar el detector
- Paso 3: construcción del detector
- Paso 4: enviar un mensaje a la radio
- Paso 5: Hágalo usted mismo
Video: Relé de alarma del congelador: 5 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:41
Nuestro congelador está en un cuarto de servicio que está aislado de nuestro espacio vital. Ocasionalmente, la puerta del congelador no se cierra correctamente y la alarma suena. El problema es que no podemos escucharlo si estamos en nuestro espacio vital. ¿Cómo recibimos un mensaje de que la puerta del congelador está abierta? Este es un problema común, tenemos dispositivos en nuestros hogares que nos hablan, pero qué sucede si no podemos escucharlos por cualquier motivo. Comencé esto como un poco divertido, pero puede ser útil en una aplicación más seria.
Este problema tiene 2 partes, necesitamos un método para detectar que la alarma se ha disparado y un método para transmitir este hecho a nuestro espacio vital. El diseño que decidí fue usar una Raspberry Pi para escuchar la alarma del congelador y luego enviar un mensaje de alarma audible a mi radio doméstica que está habilitada para uPNP. Universal Plug and Play (UpnP) es un estándar para descubrir e interactuar con los servicios ofrecidos por varios dispositivos en una red, incluidos los servidores y reproductores de medios, aunque no creo que se hayan previsto los congeladores cuando se desarrolló el estándar. El mensaje de advertencia se hizo fuerte e irritante y se repite sin cesar hasta que se apaga la radio.
Elegí detectar la alarma con un Raspberry Pi Zero W y Seeed ReSpeaker 2-Mics Pi HAT El Raspberry PI Zero es una versión de bajo costo del Raspberry Pi y la opción W tiene WiFi incorporado, mientras que el Seeed Pi HAT se vende por menos de $ 10, tiene LED incorporados y un botón de usuario. Pi HAT son tarjetas de extensión que se conectan directamente a la Raspberry Pi haciendo un procedimiento de ensamblaje muy simple. Cualquier versión de Pi sería más que capaz para el trabajo, y el micrófono elegido se puede sustituir, aunque hice uso de los LED incorporados en esta compilación.
Es fácil comprobar si una radio o un televisor funcionarían para usted. Es más probable que se describa como "habilitado para DLNA" o similar. Esto usa uPNP para comunicarse. En una PC con Windows, seleccione un archivo mp3 y "Transmitir a dispositivo". Si su dispositivo aparece y puede reproducir el archivo, entonces está listo para comenzar.
Divido el software en 2 scripts de Python, reviso Freezer.py para verificar si se ha activado una alerta de congelador y raiseAlarm.py para dar la alarma. Estos scripts se pueden desarrollar y probar por separado y se pueden adaptar o sustituir fácilmente por diferentes métodos de activación de alarmas de micrófonos.
Suministros
- Software -https://github.com/wapringle/freezer-alarm
- Frambuesa PI Zero W
- SOMBRERO Seeed ReSpeaker 2-Mics Pi
- radio habilitado para uPNP
Paso 1: diseño del detector
Cuando la puerta del congelador se deja abierta y la temperatura aumenta, el congelador emite una alarma audible "bip bip bip". Al igual que la mayoría de los pitidos electrónicos, se trata de una sola frecuencia. La idea es muestrear la entrada de audio, realizar una Transformada Rápida de Fourier (FFT) que transforma una señal basada en el tiempo en una basada en la frecuencia, en otras palabras, descompone una señal para mostrar las diferentes frecuencias en la señal. Vea el analizador de espectro Raspberry Pi instructable con tira de LED RGB Podemos buscar un pico en la frecuencia del zumbador y activar la alarma cuando el zumbador ha estado activo durante algún tiempo.
Este detector tiene 2 requisitos
- Debe detectar el zumbador, incluso en presencia de ruido ambiental (eliminar falso negativo)
- No debe ser provocado por ruido ambiental (eliminar falso positivo)
Decidí que hacer funcionar una aspiradora en el lavadero sería una buena prueba. No debería activar la alarma, y la alarma debería activarse cuando suene el zumbador del congelador y la aspiradora esté funcionando.
Paso 2: configurar el detector
Con mi teléfono, tomé muestras de audio como archivos WAV del timbre del congelador solo, con un fondo ruidoso y con la aspiradora en funcionamiento. Adapté el código para realizar la FFT de la publicación Reading Audio Stream para FFT (En caso de duda, plagarise) y usé el script fourierTest.py para trazar muestras sin procesar y transformadas de Fourier del zumbador en fondos silenciosos, ruidosos y muy ruidosos. El pico de nivel en la frecuencia 645 es pronunciado en el primer gráfico y sigue siendo significativo con un fondo muy ruidoso.
Paso 3: construcción del detector
Montaje del detector
Muy simple. El Pi W viene con Wifi incorporado y el HAT está conectado directamente a los pines GPIO del Pi. La configuración del software requiere los pasos
- Instale la distribución raspbian en Raspberry Pi. Hay muchas guías sobre esto que pueden explicarlo mucho mejor que yo.
- Configure el Wifi (ídem anterior)
- Necesita el paquete alsa instalado
$ sudo apt-get install libasound-dev
$ pip instalar pyalsaaudio
- Conecte el HAT al Raspberry PI
- Siga las instrucciones en el sitio web de seeed para instalar los controladores para el HAT.
- Ejecute los diagnósticos de seeed para comprobar que el HAT funciona y está configurado correctamente.
El programa detector lee un bloque de datos como una muestra del micrófono, realiza la FFT y decide si ha detectado o no el zumbador en la muestra. Traté de hacer el bloque lo más largo posible disminuyendo la frecuencia de muestreo de audio a 16 kHz y usando el búfer más grande que el lector aceptaría. Me preocupaba que el cálculo de FFT pudiera hacer que se descartaran fotogramas, pero eso no sucedió.
Tener muestras pregrabadas en mi teléfono hizo que la construcción del detector fuera mucho más fácil, ya que pude hacer la construcción completa en el banco antes de probar in situ en el congelador.
Entrenando al detector
El detector se entrenó escaneando cada muestra cuando se reprodujo la grabación WAV del zumbador en el detector. El programa genera la posición en el espectro FFT con el nivel de potencia más alto (la frecuencia pico), junto con el nivel de esa frecuencia pico. Fue sencillo encontrar la frecuencia del zumbador y el nivel de potencia que emitía.
Hay 2 formas de detectar si se ha producido un pitido: -
- ¿Fue la frecuencia del zumbador la frecuencia pico en la muestra?
- ¿O el nivel de potencia en la frecuencia del zumbador estaba por encima de un umbral?
Cualquiera de los métodos funcionó en una muestra silenciosa, pero el segundo fue mejor con una muestra ruidosa, así que lo usé.
A veces, una muestra cubría un pitido, a veces era entre pitidos y después de cada 3 pitidos había una pausa larga antes de los siguientes pitidos. Para detectar de manera confiable que se había producido una serie de pitidos, cada muestra tenía un voto a favor si se detectaba un pitido y un voto en contra si no. Estos votos se ponderaron para establecer un recuento que aumentaría con una muestra de pitido y decaería lentamente entre los tiempos. Una vez que el recuento alcanzó un umbral, la alarma podría activarse. Si se detectara ruido aleatorio como una muestra de pitido, el recuento volvería a cero.
Entonces necesitamos las ponderaciones para el voto a favor y en contra junto con el umbral. Esto lo hice con prueba y error en varias muestras. No necesité determinar la frecuencia real del zumbador, solo busqué la frecuencia sobresaliente en el espectro fft.
Paso 4: enviar un mensaje a la radio
Dar la alarma se hizo con un guión separado. Su trabajo es encender la radio si es necesario, interrumpir lo que esté sonando y repetir el mensaje de alarma hasta que la radio se apague nuevamente. Tuve que aplicar ingeniería inversa al protocolo uPnP utilizado, ya que tuve grandes problemas para obtener información o ejemplos confiables. Un par de referencias que encontré útiles fueron
- www.electricmonk.nl/log/2016/07/05/exploring-upnp-with-python/ Esto tiene una buena descripción general de cómo encaja todo
- developer.sony.com/develop/audio-control-api/get-started/browse-dlna-file.
- stackoverflow.com/questions/28422609/how-to-send-setavtransporturi-using-upnp-c/35819973
Usé Wireshark ejecutándose en una PC con Windows para anular la secuencia de mensajes cuando reproducía un archivo de muestra de mi PC en mi radio, y después de un poco de manipulación obtuve una secuencia de comandos que funcionó. Este es
- Inicie un servidor web emergente para enviar el mensaje de advertencia cuando la radio lo solicite
- Establezca el nivel de volumen en LOUD (el mensaje de advertencia debe atraer la atención de todos)
- Pase el uri del mensaje de advertencia a la radio
- Sondear la radio hasta que el estado actual sea "DETENIDO"
- Haz que la radio "REPRODUZCA" el uri
- Repita los últimos 2 pasos hasta que el estado actual sea "NO HAY MEDIO PRESENTE", lo que significa que la alarma ha sido reconocida al apagar la radio.
- Finalmente cierre el servidor web y salga.
Este es el script raiseAlarm.py
Paso 5: Hágalo usted mismo
El modelo de "detector" y "alarma" no es solo para congeladores, podría ser útil en cualquier lugar donde una alarma automatizada necesite ser transmitida a través de otro medio. Si esto fuera de su interés, no dude en intentarlo.
Configuración del PI Zero W, incluido el micrófono
- Ensamble el hardware como en el paso 3
- Descargue los scripts de alarma del congelador de este Instructable, o del repositorio de git que incluye algunas pistas extra
$ git clon
También debe instalar el software para utilizar los LED APA102 integrados. He incluido una copia de apa102.py en el directorio de trabajo de git
Entrenando su detector
He agregado una opción de entrenamiento al script checkFreezer.py. Esto lo ejecuta de forma independiente e imprime un diagnóstico en la línea de comandos, pero primero debe registrar algunas muestras de la alarma en un entorno silencioso como archivos WAV y hacer lo mismo en uno ruidoso. Para completar el entrenamiento, primero debe encontrar la frecuencia FFT con el nivel más alto (la "frecuencia pico") y luego un nivel de umbral para que esa frecuencia establezca un disparador. Para ello, ejecute el script checkFreezer en modo de entrenamiento, con la opción "-t" y reproduzca la grabación de la alarma.
$ python checkFreezer.py -t
Esto ejecuta el script en modo de entrenamiento. Se imprime "listo" cuando el HAT se ha inicializado y el LED se vuelve verde, luego una línea por cada ruido no trivial que escuche, p. Ej.
$ python checkFreezer.py -t
¿Se activó el nivel de activación 1 de la frecuencia pico 55 lista? ¿Falso pico de frecuencia 645 disparado nivel 484? ¿Falso pico de frecuencia 645 disparado el nivel 380? Falso
La frecuencia pico es, en este caso 645 y se convierte en la frecuencia de activación. Ahora para obtener el nivel de activación, vuelva a ejecutar checkFreezer, estableciendo el gatillo
$ python checkFreezer.py -t --trigger = 645
¿Listo el nivel de activación 1273 de la frecuencia máxima 645 activado? ¿Falso pico de frecuencia 645 disparado el nivel 653? ¿Falso pico de frecuencia 645 disparado el nivel 641? ¿Falso pico de frecuencia 645 disparado el nivel 616? Falso
Finalmente, necesitamos un umbral de activación que se active cuando se detecte un pitido, pero ignore el ruido, p. Ej.
$ python checkFreezer.py -t --trigger = 645 --threshold = 500
¿Listo frecuencia pico 645 disparado nivel 581? ¿Se activó el nivel de activación 798 de la frecuencia máxima verdadera 645? ¿Se activó el nivel de disparo 521 de la frecuencia máxima verdadera 645? Cierto
Pruebe esto con un par de muestras ruidosas y debería poder establecer un valor de umbral que discrimine entre el sonido del bleeper y el ruido ambiental. También debería ver que el LED se vuelve rojo cuando se reproduce la grabación del pitido durante unos segundos. Si es demasiado rápido / lento, edite la configuración en el script
Conexión a la radio
Para configurar los scripts para su propia configuración, necesita encontrar la dirección IP y el número de puerto que su dispositivo está usando para los servicios UPnP. La configuración de la radio debería proporcionarlos. El número de puerto predeterminado es 8080 y sería una sorpresa si fuera diferente.
He proporcionado un mensaje de alarma predeterminado, freezer.mp3. Siéntase libre de reemplazarlo con su propio mensaje.
Edite el script con las direcciones IP adecuadas y ejecútelo.
$ python raiseAlarm.py
Si todo está bien, el mensaje de alarma fuerte e irritante saldrá disparado de su radio hasta que la radio se apague, cancelando la alarma.
Mientras se ejecuta el script, ejecuta un mini servidor web para enviar el mp3 de alarma a la radio, posiblemente un problema de seguridad, pero solo está activo mientras se reproduce el mensaje de alarma.
Va en directo
Quite la bandera de entrenamiento "-t" y ejecute checkFreezer con sus propios valores, p. Ej.
$ python checkFreezer.py --trigger = 645 --threshold = 200
Para que se inicie al reiniciar, agregue a /etc/rc.local, cd / home / pi / freezer-alarma
(Python checkFreezer.py --trigger = 645 --threshold = 200> / tmp / freezer 2> / tmp / freezererror &) y salir 0
El LED verde se iluminará y estará listo para la acción. Reproduzca la grabación del pitido de su alarma y, después de unos segundos, el LED se volverá rojo y el mensaje de alarma se reproducirá en su radio.
Finalmente
Coloque el PI en un lugar cercano al congelador, fuera del camino y cerca de una fuente de alimentación. Encienda y el LED verde debería encenderse. Pruebe la activación de la alarma dejando la puerta abierta. La luz debe volverse roja y el mensaje de alarma debe reproducirse en la radio.
Éxito !! Lo has hecho. Disfrute de un trago largo con hielo del congelador, ¡pero no olvide cerrar la puerta del congelador!
Recomendado:
Reparación y actualización de frigorífico / congelador (Bosch KSV29630): 5 pasos
Reparación y actualización de refrigerador / congelador (Bosch KSV29630): Reparación y amp; Actualizar en lugar de Reemplazar & Síntomas: cuando el frigorífico intenta encender el compresor, a veces funciona, a veces falla con la luz verde de temperatura parpadeando. Puede que tenga éxito en arrancar el compresor pero después
Congelador de linterna: 11 pasos
Congelador con linterna: un pequeño congelador portátil hecho con linternas viejas que mantendrá cosas congeladas, como cubitos de hielo y pequeños bocadillos para uso portátil, ¡también se puede usar como una bolsa de hielo
Refrigerador casero con funcionalidad de control inteligente (congelador profundo): 11 pasos (con imágenes)
Refrigerador hecho en casa con función de control inteligente (congelador profundo): Hola amigos, esta es la Parte 2 del refrigerador de bricolaje basado en el módulo Peltier, en esta parte utilizamos 2 módulos Peltier en lugar de 1, también usamos un controlador térmico para configurar la temperatura deseada para ahorrar un poco de energía
Alarma de falla de energía para el congelador: 6 pasos (con imágenes)
Alarma de falla de energía para el congelador: Con un congelador en el sótano y el riesgo de carne podrida debido a un fusible fundido mientras estamos fuera, diseñé este circuito de alarma simple para que nuestros vecinos sean alertados para que arreglen el fusible. Como se puede ver en la foto, el timbre de la puerta suena desde
Control de temperatura para congelador o refrigerador: 7 pasos
Control de temperatura para congelador o refrigerador: este instructivo cubre la integración de un control de temperatura Johnson Controls en un cable de extensión con interruptor y toma de corriente para controlar un congelador. Para fermentar cerveza, un arcón congelador es una plataforma fantástica, pero la fábrica cont