Détails de mise en œuvre de l’automatisme pour aquarium

Cet article est en cours de rédaction.

Il constitue une trame, et contient des coquilles dues à son jeune âge.

Merci de m’en faire part en utilisant les commentaires & en demandant à être prévenus des mises à jours.

 

Préparer un Raspberry

Utiliser un Raspberry Pi 3, disponible sur internet ou dans tout magasin d’électronique ou d’informatique, et préférer une carte SD haut de gamme pour une question de robustesse et de performance, 32 Go suffisent largement.

Il n’est pas nécessaire de prendre un boîtier, il pourra être inséré dans une boîte contenant toute l’installation.

Préparer un Raspberry bootable sous Rasbian, en suivant les tutos disponibles à partir de https://www.raspberrypi.org/, en prenant une image
“Raspbian Stretch Lite”, le bureau n’étant pas nécessaire.

Configurer le Raspberry avec raspi-config. Voici les étapes de configuration que j’ai suivi :

login pi / rqspberry ( a ou q ... suivant clavier azerty ou qwerty ... )
sudo raspi-config
Change password pi -> pi
Internationalisation local FR.UTF8 seulement
Internationalisation TimeZone Europe Paris
Internationalisation Keyboard Generic 102 Intl / Other / French / Layout French / Default / No Compose
Internationalisation Wifi FR
Enable Camera Yes
Advanced Option Hostname ROBOT
Advanced Option SSH Yes
Advanced Option SPI Yes
Advanced Option I2C Yes
Advanced Option GPIO Yes
Resize partition
sudo reboot
login pi / pi
sudo passwd root root
sudo vi /etc/ssh/sshd_config
PermitRootLogin Yes ( A changer plus tard par sécurité )
sudo service ssh restart
apt-get update
apt-get upgrade
echo net.ipv6.conf.all.disable_ipv6=1 > /etc/sysctl.d/disableipv6.conf
reboot

Installer les packages ad’hoc pour disposer du compilateur C et d’apache. Pour le compilateur et les outils de développement, on pourra se référer à https://www.cyberciti.biz/faq/debian-linux-install-gnu-gcc-compiler/.

apt-get install gcc
apt-get install linux-headers
apt-get install apache2

Installer le package WiringPi, disponible sur cet excellent site : http://wiringpi.com/ et qui permet l’accès aux différents ports du RP.

Télécharger le code source C

Le code source est séparé en les modules suivants :

  • Makefile qui contient les règles de compilation de l’ensemble
  • La partie message qui contient les fonctions d’envoi et de réception des messages internes. Le serveur est constitué d’un ensemble de threads, en écoute sur l’arrivée de message de type timer / allumage / extinction … comme décrit de manière à peu près exhaustive dans le fichier “Principe du programme”
  • Code de la partie serveur, fonctionnant sur le RP
  • Code des appels PHP et page Web pour l’accès via un explorateur
  • Code de la partie affichage en mode débug & en mode caractère
  • Code de la partie cliente permettant l’envoi de commandes ( utilisée dans les appels PHP )

Ci dessous l’ensemble des fichiers compressé correspondant, à tous déposer dans le même répertoire de travail sur le RP, à l’exception des fichiers relatifs à la page Web, qui devront se trouver dans l’arborescence apache2.

Partie Téléchargement
Fichiers de configuration PADO V6 - Fichiers de configuration
Partie Affichage PADO V6 - Partie affichage
Partie Cliente PADO V6 - Partie cliente
Partie Message PADO V6 - Partie message
Partie Serveur PADO V6 - Partie serveur
Partie Web PADO V6 - Partie Web
Makefile PADO V6 - Makefile

 

Compiler, vérifier

Pour lancer la compilation, utiliser le fichier makefile fourni dans le téléchargement. Il génèrera l’ensemble des binaires.

Lancer le serveur en tâche de fond. Ses options sont :

 ./server -h
   Syntaxe :
     -trace : Trace de debug dans /PADO/DEV/c/main/server.trace
     -logtemp : Log des temperatures dans /PADO/DEV/c/main/temp.csv
     -help | -? | -h : Ce message

Ultérieurement, le serveur pourra être lancé au boot en ajoutant dans /etc/init.d un fichier pado ( -rwxr-xr-x ) comme suit, et en adaptant à vos répertoires :

Lancement PADO
#! /bin/sh
# /etc/init.d/pado
#

# Some things that run always
touch /var/lock/pado

# Carry out specific functions when asked to by the system
case "$1" in
start)
echo "Starting pado "
/PADO/DEV/c/main/server -logtemp &
;;
stop)
echo "Stopping pado "
/PADO/DEV/c/main/sendmsg MAIN ACTIONEXIT
;;
*)
echo "Usage: /etc/init.d/pado {start|stop}"
exit 1
;;
esac

exit 0

 Lancer l’affichage caractère

Il peut être lancé sous 2 formes :

  • Une forme “présentable” : ./affiche
  • Une forme “débug” avec affichage sélectif. Ses options sont :
# ./affiche -h
Syntaxe :
-categ [Z]: Categories a afficher
all : Toutes les catégories
D : Debug
T : Eclairage, Aeration, O2, CO2, Vider, Remplir
R : Recyclage
N : Niveau
C : Temperature
M : Main
G : Alarme
S : Structure ( affichage de la structure de thread )
Z : Sous forme de tableau
-help | -? | -h : Ce message

Préparer les circuits extérieurs

Le principe est le suivant :

Une carte contient les 8 relais ( dont 1 de libre ). Elle sera ajoutée à ce site dans quelques temps.

Une carte porte les quelques composants nécessaires au bras plongeant dans l’aquarium et portant le capteur de température, le capteur de niveau & le capteur de niveau maximum ( flotteur ).

  • Actionneurs : Documentation à venir

  • Capteurs : Documentation à venir

Relier l’ensemble et tester

Schéma de câblage : Documentation à venir

2 pensées sur “Détails de mise en œuvre de l’automatisme pour aquarium

  • 19 août 2019 à 10 h 09 min
    Permalink

    Bonjour, je suis super intéressé pour le projet dans son ensemble et serais preneur des infos suivantes.
    Je ne suis pas un novice en matière d’électronique, mais je ne suis pas un développeur….

    Avec mes remerciements
    Bien à vous

    Répondre
    • 22 août 2019 à 9 h 52 min
      Permalink

      Bonjour,
      Sur le site, vous trouverez les sources en C.
      La mise en place du Raspberry & de l’environnement de dev. sont des points que l’on peut évoquer en MP.
      Cdlt,

      Répondre

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *