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 : 8
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 : 827
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 : 8
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 : 827
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).

Répondre

Retourner vers « Projets »