Tabla de contenido:

Relé de alarma del congelador: 5 pasos
Relé de alarma del congelador: 5 pasos

Video: Relé de alarma del congelador: 5 pasos

Video: Relé de alarma del congelador: 5 pasos
Video: Como Reparar un Refrigerador Reparación Rápida y de emergencia muy fácil reparar nevera Recalibrando 2024, Mes de julio
Anonim
Relé de alarma del congelador
Relé de alarma del congelador

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

Configurar el detector
Configurar el detector
Configurar el detector
Configurar el detector
Configurar el detector
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: -

  1. ¿Fue la frecuencia del zumbador la frecuencia pico en la muestra?
  2. ¿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

Hágalo usted mismo
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: