Passer au contenu principal

Le projet

C'est un projet de mon blog écrit il y a plusieurs années que je capitalise ici. La plupart des informations restent tout à fait valables mais il se peux que depuis quelques bouts de code ait évolués ... N'hésitez pas à commenter ou à venir en parler sur le chat !

Bonjour à tous !

Aujourd’hui je vous propose de faire un arroseur automatique avec un système de mesure un peu spéciale, puisqu’il ne coûte rien (il fait partie du circuit en lui-même !) et est normalement inusable.

Idée globale

Le projet est somme toute assez banal : faire un système permettant d’arroser une plante en toute autonomie (ou presque). On doit donc :

– mesurer l’humidité dans la terre.

– suivre le niveau d’eau dans le réservoir.

– commander une petite pompe.

– Avoir une batterie

– Le tout en consommant le moins possible.

Choix techniques

Evidemment, chez moi, qui dit basse conso dit MSP430 🙂 je suis donc parti sur un MSP430G2452, celui fourni avec le launchpadG2 en plus du G2553. La principale différence entre les deux c’est qu’il n’a pas de port série hardware (mais il y a un soft pour débuguer et on a pas besoin de plus ici). Mais ce qui a en plus assurer ce choix, c’est les facultés pour faire des mesures capacitives. En effet de base sur cette gamme sont intégrées des fonctions permettant de faire des boutons type « touch ». Ce type de mesure consiste tout simplement à mesurer une variation de capacité. Je vais détailler le principe dans le paragraphe suivant, en attendant voici le lien vers le topic sur le forum 43oh où est fournie une librairie pour Energia (et oui évidemment je vais coder sous cette IDE 😉 ).

Librairie CapTouch

Mesure capacitive

Pour commencer il faut savoir ce qu’est un condensateur : c’est en fait en quelque sorte un mini réservoir de stockage électrique, comme une pile quoi, mais capable d’absorber et de fournir cette énergie stockée de manière très rapide. Alors il existe beaucoup de technologie de condensateur, mais beaucoup reposent sur un principe de superposition de plaques conductrices entrelacées. Il y a deux « jeux de plaques », chacune pour une borne du condensateur : une à la masse, l’autre pour le courant « condensé » (j’avoue que c’est en écrivant cette phrase que je me rend compte que je ne sais pas comment on appelle les bornes d’un condensateur !).

Plus la surface est grande, et plus l’écart entre les plaques est réduite, plus la capacité est importante. Autre facteur important (et c’est celui qui nous intéresse en fait ici) la capacité à isoler de l’isolant qui sépare les plaques. Un matériaux est caractérisé par une constante diélectrique, qui indique grosso modo sa capacité à conduire plus ou moins l’électricité. Et ici on jouer avec ça : en faisant varier l’humidité dans la terre on va changer sa constante diélectrique et donc notre mesure de capacité qui va augmenter.

Il nous faut donc deux électrodes (nos plaques du condensateur) et entre les deux, la terre du pot (ou l’eau du réservoir car on va tant qu’à faire utiliser la même technique !). Dans l’idée on veut faire ça :

Ici en fait je n’ai pas placer face à face mes électrodes, c’est pas grave ça marche aussi, et ça ressemble d’ailleurs dans le principe à un bouton touch  :

Quelques liens en vrac qui font seront peut-être plus parlant :

https://www.youtube.com/watch?v=0du-QU1Q0T4

http://www.analog.com/library/analogdialogue/archives/49-04/capacitive_sensing.html

http://www.positron-libre.com/cours/electrotechnique/notion-electricite/condensateur-capacite.php

Pourquoi ce type de mesure ?

La principale raison est que normalement c’est inusable, surtout en comparaison est des mesures résistives. En effet, la technique « classique » très simple à faire consiste à planter deux dans la terre, à ajouter une autre résistance pour former un pont et hop on alimente le tout et on regarde la tension au point milieu du pont. Plus d’infos :

http://www.electroschematics.com/6519/simple-soil-moisture-sensor-arduino-project/

Problème de cette méthode : imaginer la tronche des électrodes qui auront passé l’année en terre … Elles vont s’oxyder, la mesure dériver … Et en plus, si vous ne pilotez l’alimentation du pont, vous aller faire une électrolyse et la en quelques jours ça va commencer à dériver.

Avec une mesure capacitive, étant donné qu’il n’y a aucun contact électrique avec l’environnement, point de risque d’électrolyse ou d’attaque des métaux 🙂 ça veut également dire qu’on peut facilement s’adapter pour mesurer n’importe quel liquide. Ça veut également dire qu’on peut par exemple mesurer un niveau d’essence sans risque d’explosion (bon je suis pas responsable de ce que vous foutrez avec ce tuto, donc je suis responsable de rien ! Si vous ne savez pas ce que vous faites jouez pas avec les liquides inflammables 😉 ).

Niveau d’eau

Y’a quelques années j’avais fait un montage un peu similaire, et j’avais relevé un détails technique d’importance : vous vous êtes peut-être dit que vous pouviez vous passer du niveau d’eau du réservoir, en fait non. Sur mon premier proto, je n’en avais pas. Est arrivé le jour où il s’est vidé sans que je m’en rende compte. Et ça m’a vidé la batterie très rapidement puisque la pompe ne pompant plus rien, l’humidité ne remontait pas donc mon microcontroleur s’est acharné …

Moralité : il faut suivre le niveau d’eau.

Le circuit

arroseur eagle

 

A gauche la partie qu’on plante en terre, à droite la mesure de niveau d’eau. Alors ça se voit pas bien, mais sur la partie mesure d’eau, il y a deux zones sur la colonne de droite : un petit carré en bas qui sert de référence, et la grande pour mesurer le niveau à proprement parler. En fait je considère que l’eau arrive au moins au niveau au-dessus du petit carré. Connaissant sa hauteur, on peut ensuite en déduire un rapport capacité = f(niveau).

Les fichier CAD pour Eagle sont dispos sur mon Github. Comme je le disais l’avantage c’est que c’est directement intégré dans le circuit. On fait son circuit, on peint et vernis les électrodes (je rappelle qu’un condensateur ne conduit pas le courant, si on trempe dans l’eau comme ça ça va faire un court-circuit !). A noter que j’avais prévu des résistances pour tuner la mesure. En fait mes essais ont montré qu’il valait mieux mettre un condensateur de faible valeur (j’avais des 22pF dans mes archives et ça marche très bien). Donc sur le schéma électrique, au lieu des résistance de pull-down, je vous conseille de mettre des condensateur de quelques dizaine de pF, ça stabilise la mesure et ça fait beaucoup moins du n’importe quoi.

Une fois tout en place :

 

IMG_20150726_140000 IMG_20150726_135949 IMG_20150726_135934 IMG_20150726_140022

Le code

Le code ici est vraiment enfantin : d’une part Energia simplifie énormément les choses, et ensuite la librairie CapTouch intègre la mise en sommeil. Donc en fait on peut faire des mesures en permanence, même si on a l’impression que le microcontroleur turbine tout le temps, en fait il n’en est rien, ce n’est qu’une vision macroscopique (temporellement parlant). Si on dilatait le temps, on verrait que le microcontroleur passe la très large majorité de son temps en sommeil.

Pour l’algo il n’y a finalement pas grand chose à dire : comme il faut un certain temps à l’eau pour se diffuser dans la terre, je préfère y allait par « petite touche ». On arrose donc un peu, on attend, on mesure, si c’est pas assez on arrose encore …

J’ai optimisé un peu le code en créant une fonction utilisant un pointeur vers l’objet Captouch. Ca évite de réécrire trois fois la même routine …

Tout est dispo sur mon github.

Bon sinon il est pas vraiment optimiser du tout. J’ai pas tester mon système d’étalonnage, pas introduit de système de calibration … Comme je l’ai dit plus haut, je voulais déjà vérifier si dans le principe j’étais bon. Donc pas la peine de me lancer des cailloux parce que c’est pas top top, je le sais. Et n’empêche que ça fait le job 🙂

Version 2

Je ne sais pas si je la ferai mais j’ai déjà un paquet d’idées pour une V2 🙂 (pas la fusée hein) :

– Réduire la taille du circuit (->passage en CMS).

– Rajouter des boutons (pour la calibration ou forcer l’arrosage).

– Commande lumière artificielle.

– Mesure constantes environnementale (température, pression, ensoleillement).

– Connectivité internet (wifi surement) pour suivi/commande.

– Autonome énergétiquement (panneau solaire ?).

– Autonome en eau.

– Utilisation de l’acran Sharp qu’on trouve sur le boosterpack de TI : www.ti.com/tool/430BOOST-SHARP96

Il a la particularité de consommer très peu (quelques µA avec un rafraichissement de 1 Hz ce qui plus que suffisant dans notre cas…)