Projet Raspquarium
Modérateur : Francois
Projet Raspquarium
Bonjour,
Il est temps de présenter le projet qui accapare un peu de mon temps dernièrement.
Je vais essayer de structurer mon post au cas où ça puisse aider quelqu'un.
Bonne lecture !!!
Il est temps de présenter le projet qui accapare un peu de mon temps dernièrement.
Je vais essayer de structurer mon post au cas où ça puisse aider quelqu'un.
Bonne lecture !!!
Re: Projet Raspquarium
RaspQarium - Kesako ???
Le RaspQuarium est un petit module de gestion d’Aquarium basé sur un Raspberry Pi. Ce module est censé gérer toutes les fonctionnalités que je jugerai utile.
L’aquarium en question est un petit BiOrb 15L. Ce système assez malin possède la particularité d’utiliser l’effet venturi généré par le flux de bulles pour aspirer les impuretés via son filtre. Ceci en fait un Aquarium tout équipé sans aucun élément sous tension immergé.
Les fonctionnalités souhaitées :
- Gestion des périodes d’allumage et d’extinction de l’aquarium
- Gestion de la température de l’aquarium (partiellement mis en place)
- Distributeur de nourriture (en cours d’étude...)
Les contraintes :
- Alimentation en 12V, je ne souhaite qu’une alimentation pour le bulleur, le chauffage et le Raspberry. Celle d’origine fait 12V AC et 20VA (1,7A). Les LEDs consomment 220mA et le bulleur 55mA, le Raspberry nécessite en théorie 5V et 1A max. Ca devrait passer.
- Aucun élément sous tension ne devra être immergé, pas même le chauffage.
Le RaspQuarium est un petit module de gestion d’Aquarium basé sur un Raspberry Pi. Ce module est censé gérer toutes les fonctionnalités que je jugerai utile.
L’aquarium en question est un petit BiOrb 15L. Ce système assez malin possède la particularité d’utiliser l’effet venturi généré par le flux de bulles pour aspirer les impuretés via son filtre. Ceci en fait un Aquarium tout équipé sans aucun élément sous tension immergé.
Les fonctionnalités souhaitées :
- Gestion des périodes d’allumage et d’extinction de l’aquarium
- Gestion de la température de l’aquarium (partiellement mis en place)
- Distributeur de nourriture (en cours d’étude...)
Les contraintes :
- Alimentation en 12V, je ne souhaite qu’une alimentation pour le bulleur, le chauffage et le Raspberry. Celle d’origine fait 12V AC et 20VA (1,7A). Les LEDs consomment 220mA et le bulleur 55mA, le Raspberry nécessite en théorie 5V et 1A max. Ca devrait passer.
- Aucun élément sous tension ne devra être immergé, pas même le chauffage.
Modifié en dernier par HiPPiaS le lun. 31 juil. 2017 18:40, modifié 3 fois.
Re: Projet Raspquarium
Choix du Raspberry
Pas cher, peu encombrant, peu de consommation, bluetooth et wifi intégré, le Raspberry Pi Zero possède tous les atouts que je souhaite.
Dans sa version W, le Wifi natif me permettra de le piloter via SSH à partir de mon PC portable. Si problème ou au démarrage, je pourrai toujours mettre un clavier Bluetooth/USB et un écran HDMI/DVI.
Mon choix s'est porté sur un kit Rasbpberry Pi zero W avec carte 4 Go + convertisseurs mini HDMI/HDMI et Micro-USB/USB.
Pas cher, peu encombrant, peu de consommation, bluetooth et wifi intégré, le Raspberry Pi Zero possède tous les atouts que je souhaite.
Dans sa version W, le Wifi natif me permettra de le piloter via SSH à partir de mon PC portable. Si problème ou au démarrage, je pourrai toujours mettre un clavier Bluetooth/USB et un écran HDMI/DVI.
Mon choix s'est porté sur un kit Rasbpberry Pi zero W avec carte 4 Go + convertisseurs mini HDMI/HDMI et Micro-USB/USB.
Re: Projet Raspquarium
L’alimentation
Le Raspberry est alimenté en 5V cc et nous disposons d’une alimentation 12V ac.
Il nous faut d’abord redresser le courant alternatif en courant continu à l’aide d’un montage pont de diode et capa. A vide ce montage délivre 18,4V ac et en charge 16,35V ac (sans le Raspberry).
Un régulateur TSR 1-2450 est utilisé pour passer du 12V continu au 5V continu. Il dispose d’une bonne stabilité et d’un bon rendement. De plus, on peut rentrer entre 6,5 et 36V, ce que notre tension redressée devrait toujours nous fournir.
L’alimentation se fait via le port micro-USB comme recommandé.
Schéma de montage :
Il nous faut donc :
1 pont de diode
1 capa 1000 µF
1 TSR1-2450
1 connecteur micro USB.
Le Raspberry est alimenté en 5V cc et nous disposons d’une alimentation 12V ac.
Il nous faut d’abord redresser le courant alternatif en courant continu à l’aide d’un montage pont de diode et capa. A vide ce montage délivre 18,4V ac et en charge 16,35V ac (sans le Raspberry).
Un régulateur TSR 1-2450 est utilisé pour passer du 12V continu au 5V continu. Il dispose d’une bonne stabilité et d’un bon rendement. De plus, on peut rentrer entre 6,5 et 36V, ce que notre tension redressée devrait toujours nous fournir.
L’alimentation se fait via le port micro-USB comme recommandé.
Schéma de montage :
Il nous faut donc :
1 pont de diode
1 capa 1000 µF
1 TSR1-2450
1 connecteur micro USB.
Re: Projet Raspquarium
Gestion de la lumière - Le montage choisi
Je pensais au départ utiliser un Mosfet pour commander du 12V et entrer en continue sur mon ruban de LEDs. Cette tentative fut un échec (voir le topic sur Framboise314). ^^
On va donc commander l’allumage de la lumière à l’aide d’un relais 12V que nous commanderons avec un transistor. C’est moins tordu, sachant que nos LEDs sont initialement alimentées en alternatif.
Voici le montage retenu :
Il nous faut donc :
- 1 transistor NPN 2N2222
- 1 résistance de 4,7k
- 1 résistance de 10k
- 1 relais 12V
Je pensais au départ utiliser un Mosfet pour commander du 12V et entrer en continue sur mon ruban de LEDs. Cette tentative fut un échec (voir le topic sur Framboise314). ^^
On va donc commander l’allumage de la lumière à l’aide d’un relais 12V que nous commanderons avec un transistor. C’est moins tordu, sachant que nos LEDs sont initialement alimentées en alternatif.
Voici le montage retenu :
Il nous faut donc :
- 1 transistor NPN 2N2222
- 1 résistance de 4,7k
- 1 résistance de 10k
- 1 relais 12V
Re: Projet Raspquarium
Gestion de la lumière - Le script
J'ai pas mal commenté le code, je ne vais donc pas trop m'étendre dessus.
Après, on lance tout ça via Crontab (après l'avoir rendu exécutable avec "chmod +x raspquarium_light.py") :
Et enfin, pour que tout se lance normalement dés le démarrage du Pi, on modifie le fichier /etc/rc.local en superutilisateur (sudo nano).
J'ai pas mal commenté le code, je ne vais donc pas trop m'étendre dessus.
Code : Tout sélectionner
#!/usr/bin/python
import RPi.GPIO as gpio #importation du module de gestion des gpio
import datetime # Permet de recuperer la date et l'heure
import sys # Permet de recuperer les arguments
#---------------------------- La config ---------------------------
gpio_port=21
#---------------------------------------------------------------------
maintenant=datetime.datetime.now()
heure=maintenant.hour
try:
action=sys.argv[1] #recupere l'argument on, off ou onboot
except IndexError:
action="onboot"
gpio.setwarnings(False) # Retire l'avertissement quand le port est
# deja configure
gpio.setmode(gpio.BCM) # pour travailler avec le numero du GPIO
gpio.setup(gpio_port, gpio.OUT)
gpio.setwarnings(True) # reactive les avertissements pour debug
#-----------------------Les fonctions -----------------------------
def gpio_on():
print "Activation de la lumiere via le port ",gpio_port
gpio.output(gpio_port, gpio.HIGH)
def gpio_off():
print "Desactivation de la lumiere via le port ",gpio_port
gpio.output(gpio_port, gpio.LOW)
def gpio_onboot():
if heure >=9 and heure<20:
gpio_on()
else:
gpio_off()
#---------------------------------------------------------------------
#----------------------- Script Principal -------------------------
if action=="on":
gpio_on()
elif action=="off":
gpio_off()
elif action=="onboot":
gpio_onboot()
else:
print "Argument non valide"
#-----------------------------------------------------------------
Code : Tout sélectionner
# Execution du script d'allumage des LEDs tous le jours a 9h00
0 9 * * * /home/pi/bin/raspquarium_light.py on
# Execution du script d'extinction des LEDs tous le jours a 20h00
0 20 * * * /home/pi/bin/raspquarium_light.py off
Code : Tout sélectionner
#!/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.
# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
printf "My IP address is %s\n" "$_IP"
fi
# lancement des scripts nécessaires au démarrage du raspquarium
python /home/pi/bin/raspquarium_light.py onboot # Allumage de la lumière en fonction de l'heure.
exit 0
Modifié en dernier par HiPPiaS le mar. 1 août 2017 14:44, modifié 1 fois.
Re: Projet Raspquarium
hello
petit script sympa ! et petite question :
Pourquoi n'as tu pas chois la solution suivante (qui évite les modification de scripts d'init)
->un script lancé toutes les minutes par la crontab ? ce qui simplifierai ton script avec juste ta fonction onboot
crontab :
*/1 * * * * /home/pi/bin/raspquarium_light.py
script avec uniquement ta partie onboot sans gestion de paramètre
je voudrai juste faire avancé le schmilblick
cordialement.
PS : tu éteint à 9h dans ton exemple de crontab
petit script sympa ! et petite question :
Pourquoi n'as tu pas chois la solution suivante (qui évite les modification de scripts d'init)
->un script lancé toutes les minutes par la crontab ? ce qui simplifierai ton script avec juste ta fonction onboot
crontab :
*/1 * * * * /home/pi/bin/raspquarium_light.py
script avec uniquement ta partie onboot sans gestion de paramètre
je voudrai juste faire avancé le schmilblick
cordialement.
PS : tu éteint à 9h dans ton exemple de crontab
Re: Projet Raspquarium
Salut,
Merci pour la correction, c'est édité.
Sinon, je voulais surtout éviter au maximum les scripts récurrents. Toutefois, cela risque de changer avec la gestion de la température où je vais avoir besoin de mesures régulières. On verra la vélocité de mon chauffage, mais je vais au minimum avoir un script par minute voir plus fréquemment si j'ai besoin d'ajuster ma puissance de chauffe trop souvent. Pour le moment, si la mesure de température est en quasi finie (reste plus qu'à positionner le capteur intelligemment sur l'aquarium), le système de chauffage est au stade de la réflexion.
Merci pour la correction, c'est édité.
Sinon, je voulais surtout éviter au maximum les scripts récurrents. Toutefois, cela risque de changer avec la gestion de la température où je vais avoir besoin de mesures régulières. On verra la vélocité de mon chauffage, mais je vais au minimum avoir un script par minute voir plus fréquemment si j'ai besoin d'ajuster ma puissance de chauffe trop souvent. Pour le moment, si la mesure de température est en quasi finie (reste plus qu'à positionner le capteur intelligemment sur l'aquarium), le système de chauffage est au stade de la réflexion.