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)
Gestion de serre tropicale Rpi SI 7021 et relais
Modérateur : Francois
-
- Raspinaute
- Messages : 1089
- Enregistré le : lun. 15 août 2016 21:38
Re: Gestion de serre tropicale Rpi SI 7021 et relais
Qu’est ce qui te fais dire ça ?
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
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érationDap5QFs a écrit : ↑ven. 22 mai 2020 23:42Si 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")
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).
Re: Gestion de serre tropicale Rpi SI 7021 et relais
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 !
- 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
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 !
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.Qu’est ce qui te fais dire ça ?
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)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é
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 :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
- 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
-
- Raspinaute
- Messages : 1089
- Enregistré le : lun. 15 août 2016 21:38
Re: Gestion de serre tropicale Rpi SI 7021 et relais
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).
Re: Gestion de serre tropicale Rpi SI 7021 et relais
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 :
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 !
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 "-"
- Envoi données vers Arduino (date/heure via liaison série)
- Enregistrement données dans une BdD MySQL
- Bouton poussoir pour Reset "total" - Affichage :
- 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)
- 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
- un programme principal nommé Climat, qui fonctionne 24/24 7/7 (démarré par le Rpi) et qui appelle principalement 3 sous programmes :
- 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 )
- intégration de l'écran
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 !
-
- Raspinaute
- Messages : 970
- 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
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)
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)
[Pour bien commencer] Pour les nouveaux acquéreurs de Raspberry Pi (index de liens utiles)
Awesome Raspberry Pi
Awesome Raspberry Pi
Re: Gestion de serre tropicale Rpi SI 7021 et relais
Bonjour,dyox a écrit : ↑dim. 14 juin 2020 15:16Bonjour,
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)
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