FSDNOEL : Mon Sapin de Noel à base de framboise

image principale FSDNOEL : Mon Sapin de Noel à base de framboise

Difficulté:

Comment faire clignoter les guirlandes de Noël avec une raspberry


Comme chaque années, début décembre, on sort du grenier le Sapin de Noël et ses guirlandes.
Cette année un petit plus : ajout d’une Framboise sous le sapin qui détecte votre présence et allume les guirlandes si nécessaire.


Bon ok, ça n’a rien d’exceptionnel : juste une occasion d’écrire quelques lignes de python et d’utiliser ma bibliothèques FGPIO.
Et j’aurais pu faire ça aussi simplement avec un arduino et surement moins cher et plus bas en consommation, mais en fait, j’aime bien le python (depuis que je suis tombé dedans, j’ai de plus en plus de mal à revenir au C/C++!)


Les bibliothèques utilisées :


  • FGPIO pour gérer toutes le matériel avec les GPIO du RPI
  • FUTIL mes utilitaires.
  • FSDNOEL pour le code spécifique au projet de sapin de Noël

Matériel :

Budget : Non défini

  • j’ai utilisé :
  • un Sapin de Noël (le mien est synthétique)
  • une guirlande qui clignote toute seule
  • une guirlande qu’il va falloir faire clignotter
  • un raspberry pi (n’importe quelle version) (30€)
  • un capteur de mouvement Infra Rouge (HC SR501 par exemple) (acheté 7€ les 5 sur Ebay)
  • un emetteur RF 433 Mhz (4€ les 5 sur Ebay)
  • une prise commandée par RF 433 Mhz (Home confort YC-4000B à 18€ les 4 sur amazon)
  • <li>un relais 10A pour la guirlande à faire clignoter (1€ sur Ebay)</li>
  • un relais 10A pour la guirlande à faire clignoter (1€ sur Ebay)

Etape 1 : Le Sapin

Aller dans le grenier, retrouver la sapin, le sortir, le monter, chercher les guirlandes, pester contre le con qui a tout mis en vrac l’année dernière….

Etape 2 : Le capteur de mouvement Infra Roue


Il existe plusieurs types de détecteur de mouvements Infra rouge.
Je vous conseille l’article de François Mocq : http://www.framboise314.fr/raspberry-pi-et-detecteur-de-presence-infra-rouge/
Pour ce projet, j’ai utilisé un modèle économique : le HC SR501. Il en existe plusieurs clones sur Ebay pour environ 1€. Celui que j’ai eu fonctionne bien.
(par contre j’avais acheté il y a quelques temps un SEN0018 qui m’a fait perdre pas mal de temps avant de comprendre qu’il ne fonctionne pas).

Utilisation du HC SR501 :

  • branchement de 0V et Vcc = 5V
  • output sur une GPIO du raspberry (j’ai utilisé le GPIO 21)
  • réglage de deux potentiomètres pour sensibilité et durée de détection (voir datasheet pour savoir lequel est qui)

Avec la bibliothèque python FGPIO ça donne :

detecteur_ir = hcsr501_io(pc.bcm_pin(21))
def action_sensor_change():
	if capteur.th_readed():
		print "Detection."
	else:
		print "fin de detection."
detecteur_ir .add_thread(action_sensor_change)
Etape 3 : Un relais pour la guirlande qui ne clignotte pas toute seule

Etape 4 : Les prises radio commandées

Pour éviter les fils électriques, rien de tel que de la radio.
Le plus simple pour piloter une prise électrique sans risques : une prise du marché (Home confort YC-4000B à 18€ les 4 sur amazon) que l’on va commander avec un emeteur 433 Mhz.
Ces prises se commandent en envoyant une trame contenant dans l’ordre

  • l’identification du groupe de prise ( 5 bits) ex ‘00010’
  • l’identification de la prise (5 bits) ex ‘100000’ pour la prise A
  • ’10’ pour allumer, ’01’ pour éteindre

le 1 est envoyé sous la forme :
1 unité de temps à HIGH
3 unités de temps à LOW
1 unité de temps à HIGH
3 unités de temps à LOW

le 0 est transmis sous la forme :
1 unité de temps à HIGH
3 unités de temps à LOW
3 unité de temps à HIGH
1 unités de temps à LOW

la fin de transmission est :
1 unité de temps à HIGH
31 unités de temps à LOW

où une unité de temps est comprise entre 100 et 420 ms (j’ai mis 260 ms).

Pour plus de détail voir le code python sur FGPIO/rcSwitch_io.py

Pour “coder” la prise : voir petite trappe au dos avec quelques dips.

Avec la bibliothèque python FGPIO ça donne :

rcSwitch = rcSwitch_io(*pc.logical_pins(2))
A = prise(rcSwitch,'00010', '10000')
B = prise(rcSwitch,'00010', '01000')
C = prise(rcSwitch,'00010', '00100')
D = prise(rcSwitch,'00010', '00010')
A.setON()
B.setON()
C.setON()
D.setON()
time.sleep(2)
A.setOFF()
B.setOFF()
C.setOFF()
D.setOFF()
Etape 5 : On rassemble le tout sur la framboise

Le branchement est simple :

J’utilise pour plus de facilité une nappe avec platine d’extentions, et une petite breadboard, le tout posé sur le raspberry pi.

Etape 6 : Du python

"https://pypi.python.org/pypi/FGPIO" onclick="__gaTracker('send', 'event', 'outbound-article', 'https://pypi.python.org/pypi/FGPIO', 'https://pypi.python.org/pypi/FGPIO');" rel="nofollow external" class="ext-link" target="_blank">https://pypi.python.org/pypi/FGPIO
– FUTIL pour quelques utilitaires : https://pypi.python.org/pypi/FUTIL

sudo pip install FGPIO
sudo pip install FUTIL


Puis pour ce projet :
– FSDNOEL : https://pypi.python.org/pypi/FSDNOEL

sudo pip install FSDNOEL

La bibliothèque (c’est un grand mot!) FSDNOEL s’installe avec les lib python.
Le script monbosapin.py s’installe en /opt/FSDNOEL (on y trouve aussi un log)

Attention, le script d’installation créer un service monsapin qui va s’executer automatiquement au boot.
Pour le désactiver :

     sudo sysv-rc-conf 	(si pas installé :  apt-get install sysv-rc-conf)

Je vous laisse regarder le code … qui parle par lui même.
Rien de compliqué. Juste l’utilisation de thread pour faire clignoter, de l’héritage multiple…

Etape 7 : Conclusion

Sources :

http://gladysproject.com/fr/article/gerer-les-appareils-electrique, http://www.framboise314.fr/raspberry-pi-et-detecteur-de-presence-infra-rouge/


Ces tutoriels devraient vous plaire

vignette Arduino Uno - Capteur d'humidité au sol.
Arduino Uno - Capteur d'humidité au sol.
vignette Comment fabriquer son filament pour imprimante 3D
Comment fabriquer son filament pour imprimante 3D
vignette fabrication de circuits imprimés facile
fabrication de circuits imprimés facile

Découvrez tous les tutoriels partagés sur Oui Are Makers

Powered by Oui Are Makers