Table des matières:

Relais d'alarme de congélateur : 5 étapes
Relais d'alarme de congélateur : 5 étapes

Vidéo: Relais d'alarme de congélateur : 5 étapes

Vidéo: Relais d'alarme de congélateur : 5 étapes
Vidéo: Guide vidéo sur la réparation d'un réfrigérateur: voilà comment remplacer un relais 2024, Juillet
Anonim
Relais d'alarme de congélateur
Relais d'alarme de congélateur

Notre congélateur se trouve dans une buanderie qui est isolée de notre espace de vie. Parfois, la porte du congélateur ne se ferme pas correctement et l'alarme se déclenche. Le problème est que nous ne pouvons pas l'entendre si nous sommes dans notre espace de vie. Comment obtenons-nous un message indiquant que la porte du congélateur est ouverte ? C'est un problème courant, nous avons des appareils dans nos maisons qui nous parlent, mais que se passe-t-il si nous ne pouvons pas les entendre pour une raison quelconque. J'ai commencé cela pour m'amuser un peu, mais cela peut être utile dans une application plus sérieuse.

Il y a 2 parties à ce problème, nous avons besoin d'une méthode pour détecter que l'alarme s'est déclenchée et d'une méthode pour relayer ce fait dans notre espace de vie. La conception sur laquelle j'ai choisi était d'utiliser un Raspberry Pi pour écouter l'alarme du congélateur, puis d'envoyer un message d'alarme sonore à ma radio domestique qui est compatible uPNP. Universal Plug and Play (UpnP) est une norme pour découvrir et interagir avec les services offerts par divers appareils sur un réseau, y compris les serveurs multimédias et les lecteurs, bien que je ne pense pas que les congélateurs aient été envisagés lorsque la norme a été développée. Le message d'avertissement a été rendu fort et irritant et se répète indéfiniment jusqu'à ce que la radio soit éteinte.

J'ai choisi de détecter l'alarme avec un Raspberry Pi Zero W et un Seeed ReSpeaker 2-Mics Pi HAT Le Raspberry PI Zero est une version low-cost du Raspberry Pi et l'option W a le WiFi intégré, tandis que le Seeed Pi HAT coûte moins 10 $, a des LED intégrées et un bouton utilisateur. Les Pi HAT sont des cartes d'extension qui se branchent directement sur le Raspberry Pi pour une procédure d'assemblage très simple. N'importe quelle version Pi serait plus que capable pour le travail, et le microphone choisi peut être remplacé, bien que j'aie utilisé les LED intégrées dans cette version.

Il est facile de vérifier si une radio ou une télévision fonctionnerait pour vous. Il sera plus probablement décrit comme « compatible DLNA » ou similaire. Cela utilise uPNP pour communiquer. Sur un PC Windows, sélectionnez un fichier mp3 et "Cast to Device". Si votre appareil apparaît et que vous pouvez lire le fichier, alors vous êtes prêt à partir.

J'ai divisé le logiciel en 2 scripts python, checkFreezer.py pour vérifier si une alerte de congélation a été déclenchée et raiseAlarm.py pour déclencher l'alarme. Ces scripts peuvent être développés et testés séparément et peuvent facilement être adaptés ou remplacés par différentes méthodes de déclenchement d'alarme par microphone.

Fournitures

  • Logiciel -https://github.com/wapringle/freezer-alarm
  • Framboise PI Zero W
  • CHAPEAU Seeed ReSpeaker 2-Mics Pi
  • Radio compatible uPNP

Étape 1: Conception du détecteur

Lorsque la porte du congélateur est laissée ouverte et que la température augmente, le congélateur émet une alarme sonore "bip bip bip". Comme la plupart des bips électroniques, il s'agit d'une fréquence unique. L'idée est d'échantillonner l'entrée audio, d'effectuer une transformée de Fourier rapide (FFT) qui transforme un signal basé sur le temps en un signal basé sur la fréquence, en d'autres termes, il décompose un signal pour afficher les différentes fréquences du signal. Voir l'analyseur de spectre Raspberry Pi instructable avec bande LED RVB Nous pouvons rechercher un pic à la fréquence du buzzer et déclencher l'alarme lorsque le buzzer est actif depuis un certain temps.

Ce détecteur a 2 exigences

  • Il doit détecter le buzzer, même en présence de bruit ambiant (éliminer les faux négatifs)
  • Il ne doit pas être déclenché par le bruit ambiant (éliminer les faux positifs)

J'ai décidé que faire fonctionner un aspirateur dans la buanderie serait un bon test. Cela ne devrait pas déclencher l'alarme, et l'alarme devrait être déclenchée lorsque le buzzer du congélateur se déclenche et que l'aspirateur fonctionne.

Étape 2: Configuration du détecteur

Configuration du détecteur
Configuration du détecteur
Configuration du détecteur
Configuration du détecteur
Configuration du détecteur
Configuration du détecteur

Avec mon téléphone, j'ai pris des échantillons audio sous forme de fichiers WAV du buzzer du congélateur seul, avec un fond bruyant et avec le Hoover en marche. J'ai adapté le code pour effectuer la FFT à partir du post Reading Audio Stream for FFT (En cas de doute, plagarise) et utilisé le script fourierTest.py pour tracer des échantillons bruts et transformés de Fourier du buzzer dans des arrière-plans calmes, bruyants et très bruyants. Le pic de niveau à la fréquence 645 est prononcé dans le premier tracé et reste significatif avec un fond très bruité.

Étape 3: Construction du détecteur

Assemblage du détecteur

Très simple. Le Pi W est livré avec le Wifi intégré et le HAT est directement branché sur les broches GPIO du Pi. La configuration du logiciel nécessite les étapes

  • Installez la distribution raspbian sur Raspberry Pi. Il y a des tas de guides à ce sujet qui peuvent l'expliquer beaucoup mieux que moi.
  • Configurer le Wifi (idem ci-dessus)
  • Il faut que le paquet alsa soit installé

$ sudo apt-get install libasound-dev

$ pip installer pyalsaaudio

  • Connectez le HAT au Raspberry PI
  • Suivez les instructions sur le site Web de Seed pour installer les pilotes pour le HAT.
  • Exécutez les diagnostics de départ pour vérifier que le HAT fonctionne et est correctement configuré.

Le programme du détecteur lit un bloc de données en tant qu'échantillon à partir du microphone, effectue la FFT et décide s'il a détecté ou non le buzzer dans l'échantillon. J'ai essayé de rendre le bloc aussi long que possible en diminuant le taux d'échantillonnage audio à 16 kHz et en utilisant le plus grand tampon que le lecteur accepterait. Je craignais que le calcul FFT ne provoque la suppression d'images, mais cela ne s'est pas produit.

Avoir des échantillons préenregistrés sur mon téléphone a rendu la construction du détecteur beaucoup plus facile car je pouvais faire la construction complète sur le banc avant de tester in situ par le congélateur.

Formation du détecteur

Le détecteur a été formé en balayant chaque échantillon lorsque l'enregistrement WAV du buzzer a été joué au détecteur. Le programme affiche la position dans le spectre FFT avec le niveau de puissance le plus élevé (la fréquence de crête), ainsi que le niveau de cette fréquence de crête. Il était simple de trouver la fréquence du buzzer et le niveau de puissance qu'il émettait.

Il y a 2 façons de détecter si un bip s'est produit:-

  1. La fréquence du buzzer était-elle la fréquence de crête dans l'échantillon ?
  2. ou le niveau de puissance à la fréquence du buzzer était-il supérieur à un seuil ?

L'une ou l'autre méthode fonctionnait dans un échantillon silencieux, mais la seconde était meilleure avec un échantillon bruyant, alors je l'ai utilisée.

Parfois, un échantillon couvrait un bip, parfois c'était entre les bips, et après tous les 3 bips, il y avait une longue pause avant les bips suivants. Pour détecter de manière fiable qu'un ensemble de bips s'était produit, chaque échantillon avait un vote positif si un bip était détecté et un vote négatif sinon. Ces votes ont été pondérés pour établir un décompte qui augmenterait avec un échantillon de bip et diminuerait lentement entre les temps. Une fois que le nombre atteint un seuil, l'alarme peut être déclenchée. Si un bruit aléatoire était détecté en tant qu'échantillon de bip, le compte reviendrait à zéro.

Nous avons alors besoin des poids pour le vote positif et négatif ainsi que le seuil. C'est ce que j'ai fait par essais et erreurs sur un certain nombre d'échantillons. Je n'ai pas eu besoin de déterminer la fréquence réelle du buzzer, j'ai juste recherché la fréquence exceptionnelle dans le spectre fft.

Étape 4: Envoi d'un message à la radio

Sonner l'alarme a été fait avec un script séparé. Son travail consiste à allumer la radio si nécessaire, à s'introduire dans tout ce que la radio joue et à répéter le message d'alarme jusqu'à ce que la radio soit à nouveau éteinte. J'ai dû faire de l'ingénierie inverse sur le protocole UPnP utilisé car j'avais beaucoup de mal à obtenir des informations ou des exemples fiables. Quelques références que j'ai trouvées utiles étaient

  • www.electricmonk.nl/log/2016/07/05/exploring-upnp-with-python/ Ceci a un bon aperçu de la façon dont tout s'emboîte
  • developer.sony.com/develop/audio-control-api/get-started/browse-dlna-file.
  • stackoverflow.com/questions/28422609/how-to-send-setavtransporturi-using-upnp-c/35819973

J'ai utilisé Wireshark fonctionnant sur un PC Windows pour désélectionner la séquence de messages lors de la lecture d'un exemple de fichier de mon PC sur ma radio, et après un peu de bricolage, j'ai obtenu une séquence de commandes qui a fonctionné. C'est

  • Lancez un serveur Web contextuel pour envoyer le message d'avertissement lorsque la radio le demande
  • Réglez le niveau de volume sur LOUD (le message d'avertissement devrait attirer l'attention de tous)
  • Passer l'uri du message d'avertissement à la radio
  • Sondez la radio jusqu'à ce que l'état actuel soit « ARRÊTÉ »
  • Obtenez la radio pour "JOUER" l'uri
  • Répétez les 2 dernières étapes jusqu'à ce que l'état actuel soit "PAS DE MEDIA PRESENT", ce qui signifie que l'alarme a été acquittée en éteignant la radio
  • Fermez enfin le serveur Web et quittez.

C'est le script raiseAlarm.py

Étape 5: faites-le vous-même

Le faire vous-même
Le faire vous-même

Le modèle « détecteur » et « lever l'alarme » n'est pas uniquement destiné aux congélateurs, il pourrait être utile partout où une alarme automatisée doit être relayée par un autre moyen. Si cela peut vous intéresser, n'hésitez pas.

Configuration du PI Zero W, y compris le microphone

  • Assemblez le matériel comme à l'étape 3
  • Téléchargez les scripts d'alarme de congélation à partir de ce Instructable ou du référentiel git qui comprend quelques pistes bonus

$ git clone

Vous devez également installer le logiciel pour utiliser les LED APA102 intégrées. J'ai inclus une copie de apa102.py dans le répertoire de travail git

Formation de votre détecteur

J'ai ajouté une option de formation au script checkFreezer.py. Cela l'exécute de manière autonome et imprime un diagnostic sur la ligne de commande, mais vous devez d'abord enregistrer quelques échantillons de l'alarme dans un environnement calme sous forme de fichiers WAV, et faire de même dans un environnement bruyant. Pour terminer l'entraînement, vous devez d'abord trouver la fréquence FFT avec le niveau le plus élevé (la "fréquence de crête"), puis un niveau seuil pour cette fréquence afin de définir un déclencheur. Pour cela, lancez le script checkFreezer en mode entraînement, avec l'option '-t' et lancez l'enregistrement de l'alarme.

$ python checkFreezer.py -t

Cela exécute le script en mode d'entraînement. Il imprime "prêt" lorsque le Seed HAT a été initialisé et que la LED passe au vert, puis une ligne pour chaque bruit non négligeable qu'il entend, par exemple

$ python checkFreezer.py -t

Prêt fréquence de crête 55 niveau de déclenchement 1 déclenché ? Fausse fréquence de crête 645 niveau de déclenchement 484 déclenché ? Fausse fréquence de crête 645 niveau de déclenchement 380 déclenché ? Faux

La fréquence de crête est, dans ce cas, 645 et cela devient la fréquence de déclenchement. Maintenant, pour obtenir le niveau de déclenchement, réexécutez checkFreezer, en définissant le déclencheur

$ python checkFreezer.py -t --trigger=645

Prêt fréquence de crête 645 niveau de déclenchement 1273 déclenché ? Fausse fréquence de crête 645 niveau de déclenchement 653 déclenché ? Fausse fréquence de crête 645 niveau de déclenchement 641 déclenché ? Fausse fréquence de crête 645 niveau de déclenchement 616 déclenché ? Faux

Enfin, nous avons besoin d'un seuil de déclenchement qui se déclenche lorsqu'un bip est détecté, mais ignore le bruit, par exemple

$ python checkFreezer.py -t --trigger=645 --threshold=500

Prêt fréquence de crête 645 niveau de déclenchement 581 déclenché ? Vrai pic de fréquence 645 niveau de déclenchement 798 déclenché ? Véritable fréquence de crête 645 niveau de déclenchement 521 déclenché ? Vrai

Testez ceci contre quelques échantillons bruyants et vous devriez être en mesure d'établir une valeur seuil qui fait la distinction entre le son du bip et le bruit ambiant. Vous devriez également voir la LED s'allumer en rouge lorsque la réorganisation du bip est jouée pendant quelques secondes. Si c'est trop rapide/lent à venir, modifiez les paramètres dans le script

Connexion à la radio

Pour configurer les scripts pour votre propre configuration, vous devez trouver l'adresse IP et le numéro de port que votre appareil utilise pour les services UPnP. La configuration radio doit les fournir. Le numéro de port par défaut est 8080 et il serait surprenant qu'il soit différent.

J'ai fourni un message d'alarme par défaut, congélateur.mp3. N'hésitez pas à remplacer par votre propre message.

Modifiez le script avec les adresses IP appropriées et exécutez le script.

$ python raiseAlarm.py

Si tout va bien, le message d'alarme fort et irritant retentira de votre radio jusqu'à ce que la radio soit éteinte, annulant l'alarme.

Pendant que le script s'exécute, il exécute un mini serveur Web pour diffuser le mp3 d'alarme à la radio, peut-être un problème de sécurité, mais il n'est actif que pendant la lecture du message d'alarme.

Passer en direct

Supprimez l'indicateur d'entraînement « -t » et exécutez checkFreezer avec vos propres valeurs, par exemple

$ python checkFreezer.py --trigger=645 --threshold=200

Pour le faire démarrer au redémarrage, ajoutez au fichier /etc/rc.local, cd /home/pi/freezer-alarm

(python checkFreezer.py --trigger=645 --threshold=200 > /tmp/freezer 2> /tmp/freezererror &) & quitter 0

La LED verte s'allumera et vous êtes prêt pour l'action. Jouez l'enregistrement de votre bip d'alarme et après quelques secondes la LED deviendra rouge et le message d'alarme jouera sur votre radio.

finalement

Placez le PI à proximité du congélateur, à l'écart et à proximité d'une alimentation électrique. Mettez sous tension et la LED verte devrait s'allumer. Testez le déclenchement de l'alarme en laissant la porte ouverte. Le voyant doit devenir rouge et le message d'alarme est diffusé à la radio.

Succès !! Vous l'avez fait. Offrez-vous un long drink avec des glaçons du congélateur, mais n'oubliez pas de fermer la porte du congélateur !

Conseillé: