Un Raspberry Pi3 ; un amplificateur ; 2 Hauts-Parleurs de récupération ; une boite en carton et voilà mon « Alarme Box ».
(Arg, au secours, il se met à causer comme les abrutis qui collent des pseudo-mots anglais partout ; retenez-moi j’vais lui péter un doigt)
Ou « Comment je me suis fait une alarme en boite en ce dimanche après-midi ».
Et, évidemment, « pour presque aucune dépense » 🙂
Toutes les étapes en images en fin d’article.
Édit du 08/01/2019 = ajout d’un bouton pour éteindre le système sans passer par SSH (voir en fin de page)
Depuis l’acquisition récente d’un Raspberry Pi3B+ (sur Kubii), je peux laisser mon Raspberry Pi3 au seul usage du système d’alarme (système que j’ai réalisé et détaillé dans l’article VidéoSurveillance avec MotionEye sur Raspbian Stretch et plusieurs Caméras).
D’ailleurs, il faudrait que je refasse un article puisque, depuis, je suis passé à MotionEye sur Raspbian Lite pour alléger le système.
Il y a quelques jours, j’ai commandé un amplificateur pour mon Raspberry. Le but initial était de refaire un Bartop d’ici peu. J’ai pris un Lepy LP-808.
Pour le tester, j’ai farfouillé dans mon « bazar » et mon choix s’est porté sur 2 Hauts-Parleurs que je pense avoir récupérés dans une ancienne TV qui avait rendu l’âme.
Et puis … Ben, on croit être le maître, mais les objets nous obligent à leur obéir !
Si, si, je vous assure ; Nous (lui et moi), on est comme ça ; on maîtrise tout mais on ne contrôle rien ; c’est un peu comme les voix dans nos têtes.
Bon, ben, bref ; m’énervez pas !
Donc, il m’est venu l’envie irrépressible de m’amuser un coup.
Bing ; éclair de génie (avec un « e » à génie, hein !).
Je vais utiliser une boite en carton de récupération pour ranger le Raspberry, l’ampli et les 2 HP (Hauts-Parleurs).
Avec un peu de chance, la boite fera une sorte de caisse de résonance pour améliorer le son.
Je commence par positionner les éléments pour voir si ça passe (parfois, je me sers de mon intelligence).
Ensuite, je positionne les HP sur les côtés pour les insérer dans le carton.
A cet endroit, il existe une triple épaisseur donc je déplie tout et trace l’emplacement sur la zone intérieure (non visible) de la partie « carton externe ».
La zone est découpée au cutter et au scalpel (un « couteau de précision » acheté à moins de 2 euros chez Action).
Ensuite, en repliant, il suffit de se servir de cette zone évidée pour faire la découpe totale.
Pour voir ce que ça donne en images, rendez-vous en bas de page.
Les pieds sont réalisés de la manière la plus simple : de bêtes bouchons de bouteilles d’eau fixés avec un pistolet à colle.
J’ai opté pour 5 pieds avec 1 pied par coin + 1 au centre en renfort.
Cela permet à l’air de passer afin d’aérer la boite via les trous d’aération réalisés.
J’ai choisi d’en faire plusieurs (de trous) pour que l’air circule bien ; notamment sous le Raspberry et sous l’amplificateur.
Pour forcer le flux d’air, j’ai branché un ventilateur (récupéré sur un PC) sur les ports GPIO « +5V » et « Masse ».
Pour le fun, j’ai ajouté un circuit imprimé (de récup’ oui, oui) sur lequel j’ai tout débranché sauf une LED qui indique que le système est branché au courant.
En effet, même quand le Raspberry Pi est éteint, la Led reste allumée (et le ventilo tourne).
Ce rappel visuel permet de ne pas oublier de débrancher le tout une fois le sudo shutdown
lancé (inutile de laisser des transfo bouffer bêtement du courant).
Au final, nous avons donc :
Un Raspberry Pi avec Raspbian Lite installé avec MotionEye sur une clef USB de 16 Go (pas de carte SD)
Une alimentation Micro-USB maison de 5 Volts fabriquée avec un transfo à embout rond et un bout de câble micro-USB
Un mini amplificateur Lepy LP-808 et son transfo 9 Volt (le lot pour 18 euros sur Amazon)
Un câble audio jack-jack de base (acheté 69 centimes chez Action il y a quelques semaines pour des tests)
Deux HP de récupération
Une boîte en carton (récupération)
Des pieds en plastiques (Heu … oui, des bouchons, mais c’est pareil au final)
Un ventilateur et une LED de fonctionnement de récup’ branchés sur GPIO.
Il me suffit de prendre la boite, de connecter le câble RJ45 et de brancher les 2 transfo pour que le système d’alarme se mette en service.
- Ce système basé sur MotionEye récupère le flux de 4 caméras* et active 5 fonctions en cas de détection de mouvement :
- Prise de photos
- Envoie d’un courriel (avec photos)
- Envoie d’un SMS d’alarme (disant quelle est la zone concernée)
- Exécution d’une alarme sonore (son de sirène)
- Exécution d’une alerte sonore (le Raspberry Pi parle pour dire que l’alerte est donnée)
* : 2 Caméras IP (de base, de marque Heden ; dont une m’a été donnée) + le flux d’une caméra IP construite avec un Raspberry Pi B + le flux d’une caméra miniature à vision nocturne construite avec un Raspberry Pi Zero (à 5 euros)
Pour améliorer le système et le rendre plus simple à éteindre, j’ai utilisé une possibilité aisée de l’usage des port GPIO puisque j’avais un bouton poussoir de libre.
Voici la marche à suivre, en détails
Mise à jour des listes avec sudo apt-get update
et application des mises à jour si besoin avec sudo apt-get upgrade
Puis, installation de python.gpio avec sudo apt-get install --yes python-rpi.gpio python3-rpi.gpio
Ensuite, création du script bouton-extinction.py en faisant sudo nano /home/pi/bouton-extinction.py
et en collant ce code :
#!/usr/bin/python3 #on importe les modules nécessaires import time import os import RPi.GPIO as GPIO #on met RPi.GPIO en mode notation BCM (numéro des pins ; ne vous trompez pas ; voir https://fr.pinout.xyz) GPIO.setmode(GPIO.BCM) #on initialise le GPIO 12 en écoute (broche physique 32 mais BCM pin 12) GPIO.setup(12, GPIO.IN, pull_up_down=GPIO.PUD_UP) #on définit la fonction appelée par la pression du bouton def extinction(channel): #on affiche un message de confirmation (visible si écran connecté) print("Appui détecté sur le GPIO 12 = extinction demandée") #on reinitialise les GPIO GPIO.cleanup() #on lance la commande d'extinction os.system('sudo halt') #on met le bouton en écoute GPIO.add_event_detect(12, GPIO.FALLING, callback=extinction) #on lance une boucle infinie, pour garder le script actif while 1: #Avec une légère pause entre chaque boucle dans le but de réduire la charge CPU time.sleep(0.02) #on réinitialise les ports GPIO en sortie de script GPIO.cleanup()
A ce stade, on teste le script en faisant simplement : sudo python3 bouton-extinction.py
puis on appuie sur le bouton.
Votre Raspberry Pi vient de s’éteindre ?
Cool ; on passe à la suite.
Après avec redémarré (oui, c’est utile voire indispensable 🙂 pour taper du code), on va automatiser la chose en chargeant le script au démarrage.
Il suffit de faire sudo nano /etc/rc.local
pour ajouter sudo python3 bouton-extinction.py&
juste avant « # Print the IP address ».
Ça va donner ceci :
#!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. sudo python3 /home/pi/bouton-extinction.py& # Print the IP address _IP=$(hostname -I) || true if [ "$_IP" ]; then printf "My IP address is %s\n" "$_IP" fi exit 0
On enregistre en faisant « Ctrl »+ »x » puis « o » (ou « y » selon la langue) puis « Entrée »
Par principe on se fait un petit sudo chmod +x /home/pi/bouton-extinction.py
On redémarre (sudo reboot
) pour vérifier le bon chargement du service au démarrage.
Au redémarrage, l’extinction est normalement activée.
Bon … j’ai tout de même essayé … à cause du mot « normalement » qui énerve souvent en informatique.
J’ai mis le système en mode « alarme » grâce à une des caméras et, pendant la phase sonore de la sirène, j’ai appuyé 1 fois sur le bouton … et … le système d’alarme s’est coupé immédiatement et le Raspbérry Pi s’est bien éteint.
Nous sommes donc en présence (enfin, moi) d’un système d’alarme désormais désactivable aisément et rapidement 🙂
Bonjour,
J’ai mis à jour l’article ce 08/01/2019 suite à l’ajout d’un bouton pour éteindre le Raspberry sans clavier ni écran et sans passer par SSH.
Cette partie complémentaire est visible en fin de page, juste avant les images.