Monitorer la température et le PH d’un bassin avec une connexion Lora

Monitorer la température et le PH d’un bassin avec une connexion Lora

15 June 2020 0 By Jérôme Ferrari

Bonjour à tous,

Aujourd’hui, on va apprendre comment monitorer l’état d’un bassin pour monitorer la température de l’eau ainsi que son PH afin de savoir si tout va bien pour ses habitants. Ce tutoriel change un peu de l’ordinaire car le matériel utilisé est plus cher que ce que j’utilise d’habitude.

Partie 0: Le matériel choisi

  • Une Raspberry pi + son alimentation + une carte SD
Raspberry Pi® 4 B 4 Go 4 x 1.5 GHz Raspberry Pi® | Conrad.fr
  • Un shield Dragino
  • Une sonde de température Atlas scientific PT-1000
  • Un circuit de mesure de température EZO RTD
  • Une sonde de PH Atlas scientific
  • Un circuit de mesure de EZO PH
  • 2 Cartes de support EZO vers USB
  • 2 câbles mini USB -> USB
  • Optionnellement, une imprimante 3D

Partie 1: Préparation du matériel

Comme pour chaque projet que je fais avec un raspberry pi, vous devez commencer par créer une carte SD (voir les parties de 1 à 4 de mon ancine poste http://miniprojets.net/index.php/2019/05/13/jeedom-ou-comment-domotiser-sa-maison-en-quelques-clics/)

Maintenant nous pouvons préparer le matériel physique.

Dans un premier temps, nous devons faire une légère modification sur le shield Dragino car certaines versions ont un défaut et il faut souder en elles les pins 22 et 24. (Pour plus d’information, je vous invite à aller vous le wiki https://wiki.dragino.com/index.php?title=Lora_Shield)

Maintenant je vous propose d’imprimer en 3D le boitier pour la raspberry et le shield Dragino mais cela n’est pas nécessaire pour la suite du projet, c’est juste que je vais l’installer dans mon garage et j’aimerai une installation propre.

https://www.thingiverse.com/thing:3352448

Ainsi que le support pour maintenir en place les cartes de support EZO vers USB.

https://www.thingiverse.com/thing:1561906

Une fois cela fait, nous pouvons les monter de la façon suivante:

On commence par mettre la raspberry dans le support bas du boitier

Puis on monte la pièce intermédiaire et le chapeau.

Ensuite on fixe les 2 cartes supports

On assemble le tout sur le boitier et on branche les 2 câbles USB

On peux enfin mettre en place le système.

Avant de plonger la sonde de PH, il faudra faire sa calibration. Pour cela, je modifierai mon article un peu plus tard car je n’ai pas le matériel sous la main à cause de la situation actuelle….

Partie 2: Identification des sondes

Pour cette partie, je me base sur la documentation fournie par AtlasScientific (comme d’habitude je vous mets la copie ci-dessous).

Dans un premier temps, il faut rentrer en SSH sur la raspberry pi puis télécharger depuis le git le code nécessaire avec la commande suivante:

Il faut maintenant installer et paramétrer les modules nécessaire avec les commandes suivantes:

Copier en remplaçant le contenu du fichier 99-libftdi.rules par la ligne suivante:

Faites un Ctrl+X, puis y pour sauvegarder.

Redemarrez le service udev avec la commande suivante:

Vérifiez que dans le fichier /usr/local/lib/python3.7/dist-packages/pylibftdi/driver.py pour la ligne qui contient USB_PID_LIST vous avez exactement cela USB_PID_LIST = [0x6001, 0x6010, 0x6011, 0x6014, 0x6015] grâce à la commande suivante:

puis faite un Ctrl+W et tapez USB_PID_LIST, puis entrée.

Si jamais il manque 0x6015, rajoutez le en faite un Ctrl+X, puis Y.

Maintenant tapez la commande suivante:

Normalement vous devriez avec une réponse de ce genre:

Ce qui correspond à nos 2 capteurs.

Maintenant tapez les commandes suivantes:

Nous allons modifier le fichier ftdi car avec python3 la fonction decode n’est plus nécessaire. Pour cela on tape la commande:

Puis on recherche decode avec le Ctrl+w

On tombe sur la ligne suivante:

il suffit de supprimer le “.decode(‘latin1’)” ce qui donne

Faites un Ctrl+x, puis Y

Maintenant, tapez la commande suivante:

Vous aurez le choix suivant:

Tapez par exemple 0 ou 1 au choix (ici je tape 1), vous vous retrouvez avec l’annonce suivante:

Tapez la commande R (Read (lecture)) puis taper sur Entrée. Après quelques secondes, vous aurez le résultat suivant:

Comme je sais que l’eau est à environ 23°C (mesure fait via un thermomètre simple) cela me renseigne que le capteur DO009MWF (ayant pour index 1) est mon capteur de PH et donc que le capteur DO009J4O (ayant pour index 0) est mon capteur de température.

Je mets ici les 2 pdfs correspondant aux 2 capteurs afin de permettre de s’amuser avec les différentes commandes possibles (étalonnage, mesure continue,….)

Voila nous avons identifié les 2 capteurs et nous pouvons passer à la suite afin de permettre la lecture des 2 capteurs toutes les 15 minutes, la sauvegarde de la valeur puis leur envoie via Lora.

Partie 3: Lecture et enregistrement des valeurs des sondes

Maintenant, nous allons créer un script qui va permettre de lire les valeurs des capteurs puis de sauvegarder leur valeur dans 3 fichiers distincts (1 pour l’historisation, 1 pour la valeur actuelle de la température mais retravaillé pour la transmission et 1 pour la valeur actuelle du PH).

Pour cela, il faut créer un fichier avec la commande suivante:

Puis collez le code suivant:

Vérifiez que les index sont corrects pour vos capteurs (ici)

et modifiez en cas où

Ce code un fois lancé va lire la valeur du capteur de température ainsi que celui du capteur de PH puis les enregistrer dans les fichiers et attendre 60 secondes avant de recommencer.

Faites un Ctrl+X, puis Y.

Maintenant, on va créer un service qui se lancera ce script au démarrage de la raspberry pi.

Pour cela, il faut faire les commandes suivantes:

Maintenant, il faut coller le code suivant:

Faites un Ctrl+X, puis Y.

Maintenant on met en route le service via les commandes suivantes:

Maintenant, nous allons vérifier que l’enregistrement fonctionne bien avec la commande suivante:

On se retrouve avec l’affichage suivant:

Ce qui correspond pour la première colonne au timestamp, la seconde à la température et la troisième au PH.

on vérifie aussi pour les valeurs actuelles avec les commandes:

Qui nous donne 61.463 (car on a rajouté 40° afin de n’avoir que des chiffres positifs pour l’envoi)

et la commande

qui nous donne 8.048

Voila maintenant que les données sont formatées et enregistrées, nous pouvons passer à leur envoi via le réseau Lora

Partie 4: Préparation de l’environnement LORA sur thethingsnetwork

Partie 5: Code

EN COURS D’ECRITURE