DeltaLab est une association ‘loi 1901’ d’intérêt général, dont l’objectif est la création d’un espace dédié à l’innovation, à la production numérique au prototypage et à l’«expression artistique».
Le principe fondateur de l’association est d’apprendre à faire soi-même, pour passer de l’idée à l’objet.
Deltalab se spécialise en Objets Connectés, et est en train de créer un vaste «écosystème numérique» entre Drôme et Vaucluse, pour répondre à des besoins non couverts, mettre à disposition ressources et équipements pour usage professionnels et instaurer des partenariats avec les autres structures et initiatives numériques existantes.
Deltalab est aussi un FabLab (Fabrication Laboratory / Laboratoire de Fabrication ), un tiers-lieu de type makerspace où se trouve un atelier qui dispose de machines de fabrication comme des Imprimantes 3D ou des découpeuses Laser.
Deltalab se veut ouvert à tous publics : étudiants, professionnels, associations, inventeurs, designers, artistes, etc.
Ce projet présente l'utilisation de sonde électro-conductivité ( à quel point un liquide est conductible ) d'un liquide.
A DeltaLab, un projet d'Aquaponie est en projet, et ces capteurs seront évidemment utilisés dès le début.
Ce projet a pour but de présenter l'utilisation de sonde de pH et électro-conductivité, dans le but de les intégrer dans un projet plus grand.
Le projet est composé de deux parties distinctes: la sonde et le microcontrôleur Wemos associée, et le serveur Node-RED.
Les fonctionnalités sont les suivantes :
Récupération des données des capteurs avec le logiciel Arduino
Affichage dans Node-RED
Possible stockage dans une base de données
Arduino IDE : téléchargeable à www.arduino.cc/en/main/software
Node-RED : on assume que vous en avez un, sinon installez-le en allant sur la page Node-RED.
Wemos D1 mini (vous pouvez l'achetez ici)
Câble USB-micro USB type B (vous pouvez en acheter ici)
3 jumper wires (vous pouvez en acheter ici)
Sonde électro-conductivité K1
circuit board
Vous pouvez achetez les deux derniers en un sur ce site.
Vous recevrez un kit comme celui-ci si vous commander sur le site ci-dessus.
Il vous suffit de brancher la sonde à la carte en utilisant le connecteur BNC, celui qui s'enroule.
Ensuite vous devez branchez la carte à la Wemos.
A --> A0
+ --> 3.3V
- --> G
Pour installer Arduino IDE, alors Google... Merci d'avoir suivi ce tuto.
Une fois installé, allez dans Fichier > Préférences et ajoutez ce lien dans URL de gestionnaire de cartes supplémentaires en cliquant sur le bouton à droite.
https://arduino.esp8266.com/stable/package_esp8266com_index.json
Ce fichier vous permettra de coder toutes les cartes équipées d'ESP8266.
Ensuite, allez dans Outils > type de carte > Gestionnaire de carte.
Et tapez esp8266 dans la barre de recherche, puis installez cette carte à la dernière version.
Toujours dans Outils, sélectionnez la carte Lolin(WEMOS) D1 R2 & mini en allant dans Type de carte > ESP8266 Boards.
Une fois fait, vous devriez voir cela dans Outils. Veuillez donc mettre les paramètres comme indiqués sur l'image.
Branchez la Wemos au PC avec votre câble USB.
Remarque: pour que la Wemos puisse tourner en boucle il faut qu'elle soit constamment branchée sur le courant.
Si seulement on pouvait juste laisser la sonde dans le liquide et ne rien faire… Préparez-vous.
Pour commencer, nous avons de la chance que la sonde soit livrée avec des solutions tampons pour la calibrer.
La calibration va se passer sur plusieurs jours, veillez à garder la même température lors du processus de calibration.
Je rappelle pour ce début de calibration, il vous faut:
vos solutions tampons entre 20 et 25 °C
de l'eau distillée ( l'eau déminéralisée fait l'affaire )
du papier absorbant
la sonde
votre PC et Arduino
Ici l'eau distillée sert à nettoyer la sonde après chaque mesure. Trempez-la dans de l'eau distillée juste avant de faire vos mesures de conductivité. Laissez tremper quelques instants, au moins 2 min.
Une fois votre sonde nettoyée, séchez-la avec du papier absorbant, et plongez-la dans la solution à 1413 us/cm. Faites en sorte que la sonde soit suffisamment immergée pour que toutes les électrodes de la sonde soit en contact avec la solution.
Il me semble que votre Wemos est branchée à votre PC. Donc maintenant nous allons faire notre première mesure de conductivité. Dans un fichier arduino, copiez-collez ce code ci dessous:
#include <Arduino.h>
const int adcPin = A0;
void setup() {
Serial.begin(115200);
}
void loop() {
float value = analogRead(adcPin);
float voltage = value * 5.0 / 1024;
Serial.println(value);
Serial.print("Voltage = "); Serial.println(voltage, 3);
delay(1000);
}
Allumez le moniteur série en cliquant sur la loupe en haut à droite. Réglez le baud du moniteur; en bas à droite, à gauche de Effacer la sortie; à 115200.Téléversez votre code en cliquant sur la flèche en haut à gauche de Arduino.
Des valeurs s'affichent sur le moniteur série ? Laissez la sonde stabilisée.
Ce n'est pas fini, regardez la valeur de voltage, et notez-la en correspondance de la valeur de conductivité.
Séchez la sonde avec du papier absorbant, et trempez-la dans l'eau distillée. Puis répétez la même opération pour la solution à 12,88ms/cm (pour la première solution vu que l'on a pas la même unité convertissez-la en 1,413ms/cm).
Rappel de la procédure à suivre :
Notez la température à laquelle vous allez faire vos mesures
Avec le même code ci-dessus, prenez des mesures de voltage des deux solutions, n'oubliez pas de laisser tremper la sonde avant chaque mesure dans de l'eau distillée et de la séchée avec du papier avant et après
Notez ces mesures de voltage avec leur conductivité correspondante.
Construisez un graphique avec ces mesures. Axe x : voltage, axe y : ms/cm
Tracez une courbe avec les points et déduisez une équation
Nettoyez la sonde à l'eau distillée
Répétez cela sur plusieurs jours jusqu'à avoir une courbe satisfaisante, c'est-à-dire presque linéaire
Une fois que vous avez votre courbe, prenez son équation, ou faites une moyenne des valeurs dans les équations.
Et enfin, après tant d'attente, nous allons passer au code Arduino.
ESP8266WiFi (intégré lors du téléchargement des cartes esp8266)
PubSubClient by Nick O'Leary (librairie à installer avec le gestionnaire de bibliothèque)
WiFiClient (intégré lors du téléchargement des cartes esp8266)
Copiez-collez le code ci-dessous dans un fichier arduino:
//Bibliothèques pour la communication en WiFi
#include <SPI.h>
#include <Wire.h>
#include "PubSubClient.h"
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
//Constantes pour la prise de données
#define EC_Pin A0 //pin de récupération de la donnée
//Variables pour la communication en WiFi
WiFiClient cli;
PubSubClient mqttClient(cli);
const char* ssid = le votre; // le nom de votre point wifi
const char* password = le votre; // Mot de passe du point Wifi
const char* mqttServer = le votre; // l'adresse IP serveur MQTT
const int mqttPort = 1883;
/*Constantes de temps*/
static const uint32_t DELAI_1_S = 1000;
static const uint32_t DELAI_1_M = 60 * DELAI_1_S;
static const uint32_t DELAI_1_H = 60 * DELAI_1_M;
//Initialisation du programme
void setup(void)
{
Serial.begin(115200); //démarrage du moniteur série
WiFi.hostname("EC_METER_MQTT");
WiFi.begin(ssid,password);//Démarrage de la connection WiFi
while(WiFi.status() != WL_CONNECTED){ //Délai d'attente si la connexion n'est pas bonne
delay(500);
}
mqttClient.setServer(mqttServer,mqttPort);
}
//Boucle automatique
void loop(void)
{
float value = 0.0;
value = analogRead(EC_PIN);
voltage = value/1024.0*5; // calcul du voltage en sortie de la sonde
ecValue = //votre équation de courbe;
Serial.println(voltage, 4);
Serial.print("^C EC:");
Serial.print(ecValue,2);
Serial.println("µs/cm");
//Donneés pour MQTT
String contenu = "";
contenu += ecValue;
contenu += "-";
contenu += voltage;
char payload[11];
unsigned int len = contenu.length()+1;
contenu.toCharArray(payload,len);
//Envoi sur MQTT
if(mqttClient.connect("EC_METER_MQTT")){
Serial.println(payload);
mqttClient.publish("EC",payload);
mqttClient.loop();
}
delay(5 * DELAI_1_S);
}
Après que le Wemos ait reçu les données de la sonde, on cherche à les mettre sous forme de graphique.
Le Wemos envoie donc les données en WiFi vers un broker MQTT.
On utilise Node-RED pour récupérer les données envoyées au broker et ainsi nous pouvons jouer avec les données de la sonde.
Les données sont récupérées par les nodes de dashboard qui permettent de les afficher : des jauges pour l'électro conductivité et le voltage en sortie de la sonde, ainsi qu'un graphe pour l'évolution de ces deux dernières.
On peut y associer une node 'file' pour enregistrer les données dans un fichier sur le serveur, ou une node de base de données pour y enregistrer les données choisies.
Chaque fois que vous finissez de configurer un node, cliquez sur Done.
ATTENTION : pour enregistrer vos modifications, cliquez sur Deploy.
MQTT in
MQTT in
Serveur local : add new mqtt-broker, puis cliquez sur le crayon à droite
Server : localhost
QoS : 2
Topic : EC
Function
Copiez-collez ceci dans la fonction:
var id = [];
id = msg.payload.split('-')
return{
payload:{
ec:parseFloat(id[0]),
voltage:parseFloat(id[1])
}
}
Gauge
Pour les jauges, prenez deux de ce node et connectez-les au mqtt-in et configurez-les de cette manière :
Group: créez un nouveau groupe
ui_tab : créez une nouvelle table
width(largeur) : à votre guise
name : celui que vous voulez
Type: gauge
Label: ec, voltage
Value format:
ec: {{msg.payload.ec.toFixed(2)}}
voltage: {{msg.payload.voltage.toFixed(2)}}
Echelle:
pH: 0 à 14, unité : pH
voltage: 0 à 10, unité : V
Change
Pour le ec, cliquez sur add en bas à gauche de Rules.
Mettez la première règle sur Set. Entrez topic, puis ecen-dessous.
Ajoutez une deuxième règle et mettez-la sur Move, entrez payload.ec dans le premier champ et payload dans le deuxième.
Faites un autre node change pour voltage et faites comme ci-dessus en mettant voltage à la place de ph.
Group: le même que celui des gauges
Type: line chart
axe Y: min = 0 , max = 15000
Cochez la case enlarge points
Réglez le nombre de points max ou la durée représentée comme vous le souhaitez
L'intérêt de tout ceci est pour la visualisation des données. Node-RED permet ceci avec une interface utilisateur.
Pour y accéder, avec le moteur de recherche que vous voulez, tapez l'ip du serveur Node-RED, puis deux points, puis le numéro port puis /ui (XXX.XXX.XXX.XXX:YYYY/ui).
Pour mettre en forme l'interface utilisateur, retournez dans Node-RED
Cliquez sur les trois barres en haut à droite, allez dans View puis cliquez sur Dashboard.
En mettant le curseur sur le nom du groupe des jauges et du graphe, cliquez sur layout.
Sur la droite réglez la largeur de l'interface sur Width. Ensuite cliquez sur Done, puis sur Deploy et revenez dans le layout pour faire la mise en forme.