Gestion de serre tropicale Rpi SI 7021 et relais

Vous souhaitez développer un projet mais vous manquez de temps, de compétences ? Présentez votre projet ici pour trouver des participants...

Modérateur : Francois

Répondre
Dap5QFs
Messages : 11
Enregistré le : mar. 19 mai 2020 15:33

Gestion de serre tropicale Rpi SI 7021 et relais

Message par Dap5QFs » ven. 22 mai 2020 23:42

Bonsoir,

Pour commencer j'en appelle à votre indulgence, il s'agit de mon premier vrai "sujet" ici.
Je travaille sur un projet de gestion climatique d'une serre tropicale pour un ficus "bonsaï".
J'ai donc besoin de gérer avec un Pi (2 ou 3 peu importe):
- un humidificateur d'air (à ultrasons) pour maintenir une humidité relative de 80%
- une lampe led 220V 30W pour faire office de soleil

Il me semble donc nécessaire de mesurer (à minima) l'humidité relative.
Ayant déjà subi plusieurs décès de capteurs d'humidité (sans doute lié au fait que le milieu de mesure est vraiment très humide), j'ai abandonné immédiatement l'idée des capteurs types DHT 11 ou 22 pour m'orienter vers un ADA3251 (SI7021) qui sera "tropicalisé" en évitant soigneusement l'entrée du capteur d'humidité

Pour alimenter ou non l'humidificateur d'air, j'ai fait le choix d'un module relais 4 canaux (je ne sais pas si je peux mettre le lien du site e-commerce, dans le doute, je m'abstiens donc ;) )

Jusque là, me direz vous, tout semble aller pour le mieux, et en attendant de recevoir les différents éléments qui me manquent, je me suis penché sur la question de la programmation.
J'ai de vagues souvenirs d'une très lointaine formation à la programmation en C/C++, vu mon projet, il semblerait que le langage Python soit le plus approprié. Ça tombe bien, je ne connais pas du tout ce langage.
Or, en le découvrant au travers de divers tutos ou cours, je dois avouer que je le trouve assez flou, il me semble même parfois potentiellement brouillon.
Bref, avant de me lancer plus avant, je souhaitais connaitre vos éventuels avis et/ou conseils.

Mon premier soucis est de réussir à écrire de façon élégante :
Si l'humidité mesurée est inférieure à l'humidité du seuil de déclenchement (75%), alors déclenche l'humidificateur jusqu'à l'humidité "consigne" (80%) (tout l'enjeu étant que l'humidificateur ne soit pas allumé entre 75 et 80% lorsque l'humidité baisse naturellement entre deux "pluies")

Comme vous pouvez le deviner avec ce premiers soucis, il figure en tête d'une longue liste, et je suis preneur de tout conseil, lien vers des cours Python (avec d'autres contenus que le célèbre Hello World :p) et toute aide sera évidemment la bienvenue !

La gestion de l'allumage et de l'extinction de la lampe me parait moins problématique, même si vos conseils m'intéressent bien entendu !

Bonne soirée et merci d'avance

PS : Voici le brochage du GPIO que j'envisage (si quelqu'un peut au moins me confirmer que côté câblage, je ne me suis pas trop planté, ce serait déjà génial ;)
VCC (module relais) - 3V3 (Rpi)
GND (module relais) - GND (Rpi)
In 1, 2, 3, 4 (Module Relais) - BCM4,17,22,23 (Rpi)
Vin (ADA3251) - 3V3 (Rpi)
GND (ADA3251) - GND (Rpi)
SDA (ADA3251) - BCM2 (Rpi)
SCL (ADA3251) - BCM3 (Rpi)

Bud Spencer
Raspinaute
Messages : 1089
Enregistré le : lun. 15 août 2016 21:38

Re: Gestion de serre tropicale Rpi SI 7021 et relais

Message par Bud Spencer » lun. 25 mai 2020 13:13

Dap5QFs a écrit :
ven. 22 mai 2020 23:42
vu mon projet, il semblerait que le langage Python soit le plus approprié
Qu’est ce qui te fais dire ça ?
Dap5QFs a écrit :
ven. 22 mai 2020 23:42
je dois avouer que je le trouve assez flou, il me semble même parfois potentiellement brouillon
Non, python n’est ni flou ni brouillon et je dirais même qu’il est plutôt bien structuré. C‘est juste que c’est un langage très laxiste qui ne respecte aucune règle de robustesse et cela donne lieu à tout et surtout n’importe quoi. La mode étant au codage ‘pourvu que ça marche’ à moindre cout et souvent pour du court terme, on voit fleurir de plus en plus de ‘néo’ programmeurs qui prennent ce laxisme pour une facilité et qui code n’importe comment (tu trouveras d’ailleurs fréquemment l’expression ‘quick and dirty’ (rapide et sale) associée au langage python). Si on prend la plupart des langages de programmation les plus usuels, plus le développeur est expérimenté et moins il lui faudra de code pour arriver à un résultat. Avec Python, c’est plutôt l’inverse, tout simplement parce que le développeur expérimenté sait qu'il doit faire les efforts nécessaires pour rendre son code au plus safe.

Il y a d’autres langages beaucoup plus robuste et beaucoup plus puissant que python pour exploiter au mieux les ressources du PI. Le choix dépend de ce que tu es prêt à apprendre mais aussi des perspectives que tu veux avoir sur ton projet. Aujourd’hui, juste une sonde pour contrôler un humidificateur et une ampoule, mais demain ? peut être de la supervision à distance, des alertes (sms, mail, photo …), des contrôles automatisés de gestion d’énergie (c’est à la mode aussi ça …) ect ect … Dis-toi jusque qu’avec un langage comme python qui est tout sauf scalable, tu peux très vite arriver au résultat initial (en oubliant le coté écriture ‘élégante’), mais plus tu vas vouloir faire évoluer ton projet et plus tu te retrouveras embarrassé

Alors il n’y a (malheureusement) pas beaucoup d‘exemple de programmation sur ce site, mais j’en ais quand même écrit quelques-uns.
Le plus populaire est celui qui utilise JavaScript avec NodeJS : https://forums.framboise314.fr/viewtopi ... =44&t=3033
Sinon un peu de méthodologie pour python : https://forums.framboise314.fr/viewtopi ... =38&t=5397
Ou alors C# avec la dernière génération .Net Core : https://forums.framboise314.fr/viewtopi ... =42&t=5449
Dap5QFs a écrit :
ven. 22 mai 2020 23:42
Si l'humidité mesurée est inférieure à l'humidité du seuil de déclenchement (75%), alors déclenche l'humidificateur jusqu'à l'humidité "consigne" (80%) (tout l'enjeu étant que l'humidificateur ne soit pas allumé entre 75 et 80% lorsque l'humidité baisse naturellement entre deux "pluies")
Pour la logique de fonctionnement, le mieux est de te la représenter sous forme d’organigramme en incluant tous les cas. A partir du moment où l’ensemble du raisonnement est cohérant et couché sur papier, cela devient beaucoup plus facile de coder puisque que l’on a un ‘visuel’ qui permet de replacer chaque ligne ou block de code à un endroit précis du plan et ainsi de prendre toutes les possibilités en considération
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).

Dap5QFs
Messages : 11
Enregistré le : mar. 19 mai 2020 15:33

Re: Gestion de serre tropicale Rpi SI 7021 et relais

Message par Dap5QFs » mar. 26 mai 2020 11:07

Hello,

Je vais essayer de te répondre dans l'ordre et aussi complètement que possible. En tout cas, un grand merci pour cette réponse !
Qu’est ce qui te fais dire ça ?
Le fait que la plupart des datasheets des composants proposent des bibliothèques python, et que la plupart des projets similaires sont programmés en Python, mais sans doute pour les raisons que tu évoques ensuite.
Non, python n’est ni flou ni brouillon et je dirais même qu’il est plutôt bien structuré. C‘est juste que c’est un langage très laxiste qui ne respecte aucune règle de robustesse et cela donne lieu à tout et surtout n’importe quoi. La mode étant au codage ‘pourvu que ça marche’ à moindre cout et souvent pour du court terme, on voit fleurir de plus en plus de ‘néo’ programmeurs qui prennent ce laxisme pour une facilité et qui code n’importe comment (tu trouveras d’ailleurs fréquemment l’expression ‘quick and dirty’ (rapide et sale) associée au langage python). Si on prend la plupart des langages de programmation les plus usuels, plus le développeur est expérimenté et moins il lui faudra de code pour arriver à un résultat. Avec Python, c’est plutôt l’inverse, tout simplement parce que le développeur expérimenté sait qu'il doit faire les efforts nécessaires pour rendre son code au plus safe.

Il y a d’autres langages beaucoup plus robuste et beaucoup plus puissant que python pour exploiter au mieux les ressources du PI. Le choix dépend de ce que tu es prêt à apprendre mais aussi des perspectives que tu veux avoir sur ton projet. Aujourd’hui, juste une sonde pour contrôler un humidificateur et une ampoule, mais demain ? peut être de la supervision à distance, des alertes (sms, mail, photo …), des contrôles automatisés de gestion d’énergie (c’est à la mode aussi ça …) ect ect … Dis-toi jusque qu’avec un langage comme python qui est tout sauf scalable, tu peux très vite arriver au résultat initial (en oubliant le coté écriture ‘élégante’), mais plus tu vas vouloir faire évoluer ton projet et plus tu te retrouveras embarrassé
En effet, c'est à l'aspect "quick and dirty" et au manque d'élégance que je faisais allusion. j'ai pu voir des exemples ici et ailleurs de codes particulièrement longs et poussifs avec des possibilités d'erreurs, sans parler des difficultés de maintenance et d'évolution par la suite... (J'ai même pu lire une de tes explications sur ce forum, qui expliquait en substance, que plus le code était court et bati "solidement" plus la maintenance en serait facilitée)
Alors il n’y a (malheureusement) pas beaucoup d‘exemple de programmation sur ce site, mais j’en ais quand même écrit quelques-uns.
Le plus populaire est celui qui utilise JavaScript avec NodeJS : https://forums.framboise314.fr/viewtopi ... =44&t=3033
Sinon un peu de méthodologie pour python : https://forums.framboise314.fr/viewtopi ... =38&t=5397
Ou alors C# avec la dernière génération .Net Core : https://forums.framboise314.fr/viewtopi ... =42&t=5449
Je vais aller lire cela de près, j'avais déjà repéré le premier sujet que tu évoques, je vais juste prendre le temps de le lire complètement, car en effet, même si mon projet est pour l'instant assez léger, des évolutions sont déjà pensées, même si pas encore à l'ordre du jour :
- journal des mesures
- journal du fonctionnement de l'humidificateur
- journaux consultables sur une page web
- Gestion du niveau d'eau dans le réservoir de l'humidificateur
- gestion température et ventilation

Bref, plein de pistes, mais pour l'instant je me concentre sur la gestion de l'hygormétrie, avec allumage de la lmape 10h/jour.

Donc côté perspectives et évolutions, il y en a pas mal, côté apprentissage, je suis prêt à apprendre ce qu'il faudra (j'adore ça), je suis déjà un cours sur sololearn pour le Python, mais s'il s'avère que C# ou NodeJS/Javascript sont plus pratiques, je n'ai pas d'à priori et serai ravi de m'y mettre.

Tout cela pour vous dire un grand merci une nouvelle fois à tous les deux, et vous dire que je suis preneur de tout conseil, toute aide sera la bienvenue, et vous vaudra évidemment ma reconnaissance éternelle ;)

Portez vous bien

Peace

Bud Spencer
Raspinaute
Messages : 1089
Enregistré le : lun. 15 août 2016 21:38

Re: Gestion de serre tropicale Rpi SI 7021 et relais

Message par Bud Spencer » jeu. 28 mai 2020 09:00

Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).

Dap5QFs
Messages : 11
Enregistré le : mar. 19 mai 2020 15:33

Re: Gestion de serre tropicale Rpi SI 7021 et relais

Message par Dap5QFs » dim. 14 juin 2020 14:20

Bonjour !

Un peu de nouveau dans ce projet qui se précise (mais où il reste encore un travail colossal ;) )
Suite aux conseils d'Artemus24, j'ai commandé un SEN0227 et son adaptateur "gravity FIT0511". Je ne sais pas si je peux mettre des liens "commerciaux", je m'abstiens donc.

Avant toute chose, et si vous ne l'aviez pas constaté dans mon premier "post", je débute, donc je sais qu'il y a des erreurs, des approximations dans ce que j'écris par la suite. N'hésitez pas à me corriger/conseiller, c'est exactement pour cela que je suis ici. En revanche, les conseils de type "tu ferais mieux d'utiliser un ESPXXX ou je ne sais quel autre micro controleur" ne sont pas forcément très utiles, dans le sens, ou même s'ils seraient moins cher ou plus adaptés, je ne les ai pas, et je compte me contenter de ce que j'ai sous la main (Rpi 2/3, arduino Uno Rev3)

Concernant la "machine" globale, la réflexion aidant, la structure est à peu près définie :
  • Arduino Uno Rev 3 :
    - Module Carte 4 Relais ( Relai 1 : Pilotage de la lampe / Relai 2 : Pilotage de l'humidificateur / Relai 3 : Développement futur (Gestion ventilateur pour renouvellement de l'air?) / Relai 4 : Développement futur)
    - Capteur SEN0227 : Mesure Humidité relative et Température (le capteur miracle "waterproof")
    - transmission des données (mesures climatiques, temps d'allumage lampe, déclenchements humidificateur) au Rpi via liaison série
    - Réception date/heure du Rpi (via liaison série, source web? Horloge RTC?)
  • Raspberry pi 2 ou 3 :
    - écran 4D systems 2.8 pouces (tactile résistif)
    • Affichage :
      - état du programme (RAS + Jour/Nuit + Humidité Relative + température + Pluie/Soleil)
      - "Boutons" : "navigation entre humidificateur et durée du jour", "+" et "-"
    - Réception données Arduino (liaison série via USB)
    - Envoi données vers Arduino (date/heure via liaison série)
    - Enregistrement données dans une BdD MySQL
    - Bouton poussoir pour Reset "total"
  • Liste des variables :
    - Date (source Web? Horloge RTC?) [Au démarrage?]
    - Heure (idem)
    - Température (Source SEN0227 via Arduino) [Mesure "appelée" par le programme]
    - Humidité relative (idem) [idem]
    - Consigne Humidité relative "default" (=0.80) [au démarrage]
    - Seuil Déclenchement humidificateur (=Consigne Humidité Relative - 0.05)
    - Consigne Humidité relative (source "user") [Via écran tactile]
    - Lever de soleil "default" (=08:00AM) [au démarrage]
    - Lever de soleil (source user) [via écran tactile]
    - Durée du jour "default" (=10:00) [au démarrage]
    - Coucher de soleil (=Lever de soleil + durée du jour)
Je sais que je vais m'éloigner pas mal du sujet de ce forum avec ce découpage, car les parties mesure et pilotage seront sur l'arduino, je l'aborde rapidement ici, si cela dérange dite le moi, je retirerai le passage.
  • Concernant le programme "côté arduino" voici la structure générale :
    • un programme principal nommé Climat, qui fonctionne 24/24 7/7 (démarré par le Rpi) et qui appelle principalement 3 sous programmes :
      - Soleil : gestion du relai de la lampe en fonction de l'heure et de la durée du jour
      - Pluie : gestion du relai de l'humidificateur en fonction de l'humidité relative mesurée et de la consigne
      - un programme "communication framboise" qui a pour fonctions de récupérer la date et l'heure et de renvoyer les mesures et les "événements" au Rpi via la liaison série sur USB
L'idée de passer par des "sous programmes" est de permettre une maintenance et une évolutivité plus "souple" à l'avenir.
  • concernant le RPi :
    - Connexion "internet" via Wifi
    - Gestion de la BdD MySQL
    - Gestion de la date et de l'heure
    - gestion du démarrage de l'arduino et du lancement du programme "Climat"
    - Liaison avec l'arduino via liaison série
    • intégration de l'écran
      - Avec création de l'interface graphique via les logiciels 4D Systems (en espérant que cela soit aussi simple à intégrer qu'ils le disent sur les fiches techniques ;) )
Côté langage de programmation, je vais tenter d'en faire un maximum en python (au moins la partie arduino), car le projet est déjà très (trop?) ambitieux pour me lancer dans l'apprentissage de plusieurs langages.
Concernant le Pi, je ne sais pas encore trop, mais je suis encore au stade où je collecte les différents tutos (Base de donnée MySQL, écran tactile, liaison série avec arduino) donc si vous avez des idées ou des suggestions, n'hésitez pas.


Merci d'avance pour vos futurs conseils !

dyox
Raspinaute
Messages : 969
Enregistré le : dim. 28 déc. 2014 15:28
Localisation : Le long de la côte, au dessus du pays des bigoudennes, aïe

Re: Gestion de serre tropicale Rpi SI 7021 et relais

Message par dyox » dim. 14 juin 2020 15:16

Bonjour,

Est-ce que les capteurs Xiaomi Thermomètres et Hygromètres Mijia Bluetooth avec Home Assistant ne vous conviendrait-il pas ? Pour plus de facilité.
https://www.home-assistant.io/integrations/mitemp_bt/
https://www.minimachines.net/bons-plans ... 2020-90261 (promo avec Minimachines)

Dap5QFs
Messages : 11
Enregistré le : mar. 19 mai 2020 15:33

Re: Gestion de serre tropicale Rpi SI 7021 et relais

Message par Dap5QFs » dim. 14 juin 2020 15:32

dyox a écrit :
dim. 14 juin 2020 15:16
Bonjour,

Est-ce que les capteurs Xiaomi Thermomètres et Hygromètres Mijia Bluetooth avec Home Assistant ne vous conviendrait-il pas ? Pour plus de facilité.
https://www.home-assistant.io/integrations/mitemp_bt/
https://www.minimachines.net/bons-plans ... 2020-90261 (promo avec Minimachines)
Bonjour,

Merci pour cette réponse.

Concernant la facilité, aucun doute, cela simplifierait grandement les choses.
En revanche, ces capteurs/afficheurs, me posent deux (trois) soucis :
  • La possibilité de faille et de collectes de données par Xiami ou des tiers (ayant un smartphone de chez eux désormais sous LineageOS, je n'ai que très moyennement confiance)
  • Je ne pense pas qu'ils survivent 24h dans une atmosphère humide à 80%
  • Ils me retireraient complètement le plaisir de la bidouille :p

Répondre

Retourner vers « Projets »