My Sensors_1_20/03/2021
Vous trouverez ici toutes les informations concernant notre projet MySensors :
- La documentation du projet : Documentation_MySensors_V4
- La bibliothèque MySensors : Bibliothèque_MySensors
- La bibliothèque DHT : Bilbiothèque_DHT
- La bibliothèque Adafruit_Sensor : Bibliothèque_Adafruit_Sensor
- Les codes Arduino de la passerelle et de la sonde : Codes_passerelle_sonde
Introduction
Présentation
Ce document a pour but d’expliquer la mise en place d’une passerelle et d’une sonde MySensors.
Organigramme
Principe
Les capteurs vont être analysés par la sonde MySensors.
Cette dernière enverra à distance les informations vers la passerelle qui se chargera d’envoyer les informations au serveur Domoticz via une liaison USB.
Une sonde représente un endroit physique, un lieu de mesure.
Si vous souhaitez par la suite faire d’autres relevés dans un endroit différent, il suffira d’ajouter une sonde et de garder la passerelle.
Chaque sonde est caractérisée par un identifiant de noeud (NODE\_ID) et chaque capteur possède un identifiant enfant sur la sonde qui lui est rattachée (CHILD\_ID)
Structure du projet
Nous vous invitons à garder la structure suivante pour le projet :
Dans un dossier Domoticz\_Crepp, placez deux dossiers appelés
Sonde\_MySensors et
Passerelle\_MySensors
Ces deux derniers dossiers contiendront respectivement le programme de la sonde et de la passerelle.
Occupons nous maintenant des bibliothèques Arduino.
Installation des bibliothèques
Lors de la première compilation d’un programme, il se peut que des bibliothèques soient manquantes.
C’est ce que nous allons voir. Pour cela, ouvrez le programme de la sonde (Sonde\_MySensors.ino) sans brancher de carte Arduino.
Ensuite, cliquez sur le bouton Vérifier (bouton de gauche) et patientez quelques secondes.
Si la bibliothèque MySensors est manquante, vous obtiendrez l’erreur suivante:
Pour installer la bibliothèque, il suffit d’aller dans Croquis > Inclure une bibliothèque >Ajouter la bibliothèque .ZIP
Il ne reste qu’à trouver le fichier Bibliothèque\_MySensors.zip et à faire OK
Un message de confirmation d’ajout est affichée en bas de la page du logiciel Arduino.
On clique à nouveau sur le bouton Vérifier pour afficher les éventuelles erreurs.
Important
Dans certains cas, la bibliothèque Adafruit\_sensor est manquante, il faut installer le fichier Bibliothèque\_Adafruit\_sensor.zip disponible en annexe.
On refait ensuite le bouton Vérifier et si la bibliothèque DHT n’est pas installé, on obtient de nouveau :
On procède de la même façon, on va importer le fichier Bibliothèque\_DHT.zip dans Croquis > Inclure une bibliothèque >Ajouter la bibliothèque .ZIP
Une fois toutes les bibliothèques installées, le message suivant apparaît:
On va ensuite s’occuper de la vérification de la communication entre les cartes Arduino et l’ordinateur.
Programmer une carte Arduino pro-mini avec une carte Arduino évite d’acheter un module FTDI.
De plus, la carte Arduino Uno pourra être réutilisée pour d’autres projets.
L’objectif est de programmer la carte Pro-mini sur la sonde MySensors.
Liste du matériel
- 5 câbles Dupont mâles-femelles[note]
- Une carte Arduino Pro-Mini
- Une carte Arduino Uno
Important
Il faut retirer le microcontrôleur de la carte Arduino Uno pour pouvoir programmer la carte Pro-Mini. Pour le retirer, on prend un petit tournevis et on soulève délicatement la puce. On prendra le soin de repérer l’orientation de la puce sur la carte (méplat vers l’extérieur de la carte)
Branchements
Attention
La carte Arduino Pro-Mini doit être alimentée en 3.3V et non en 5V ! La carte Arduino Pro-Mini ne doit pas être placée sur son support de sonde lorsque elle est en train d’être programmée
Voici les connexions à faire pour programmer la Pro-Mini:
Le mot XXXX\_UNO représente une broche de la carte Arduino UNO et
XXXX\_PRO-MINI représente une broche de la carte Arduino Pro-Mini.
XXXX est l’indication du nom de la broche.
- RESET\_UNO vers RST\_PRO-MINI
- +3.3V\_UNO vers VCC\_PRO-MINI
- GND\_UNO vers GND\_PRO-MINI
- RX\_UNO vers RX\_PRO-MINI
- TX\_UNO vers TX\_PRO-MINI
Remarque
Ici, la liaison série (RX et TX) n’est pas croisée, le RX de la carte Uno va sur le RX de la Pro-Mini, idem pour le TX
Vous pouvez ouvrir le programme Arduino que vous désirez charger[note] sur la carte Arduino Pro-Mini.
Voici un programme minimal pour faire clignoter la LED du pro-mini.
Ce programme est disponible en allant, dans le logiciel Arduino, dans la section Fichiers > Exemples > basics > Blink
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
Une fois le programme ouvert, voici les étapes pour compiler le programme.
Téléversement
- 1) Sélectionner la carte Arduino Pro-mini dans Outils > Types de carte
- 2) Sélectionne le processeur ATmega328P, 3.3V, 8Mhz dans Outils > Processeur
Avertissement
N’oubliez pas de sélectionner le port de communication de l’Arduino
Il ne vous reste plus qu’à cliquer sur le bouton de téléversement du programme.
La LED de la carte Pro-Mini devrait clignoter.
Information
Ici, nous avons chargé un programme de test, par la suite, il conviendra de charger le programme \bold{Sonde\_MySensors.ino
Programmation de la Nano
La carte Nano étant reliée à l’ordinateur par un câble USb, sa programmation sera plus aisée.
On alimente la carte via l’ordinateur, on sélectionne le type de carte (Type de carte > Arduino Nano),
le type de processeur (Outils > Processeur > Old bootloader), le port puis on téléverse le programme désiré.
%PB :
%Canal différent pour chaque personne
Rappels
La passerelle reçoit sur sa barrette connecteurs femelles un Arduino Nano et est reliée par une nappe à 8 conducteurs à un module transmetteur NRF24.
L’Arduino Nano est relié au Raspberry Pi de votre plateforme Domoticz par un câble USB (transmission d’infos et alimentation 5v) et alimentera la passerelle en 5v.
Le module transmetteur NRF24 assure la liaison radio avec les sondes.
Liste du matériel de la passerelle
- 3 Led
- 3 résistances de \(270~\Omega\)
- 2 condensateurs électrolytiques ( \(100~\mu F, 16~V\) – cylindriques noirs)
- 2 condensateurs céramiques monolithiques ( \(100nF, 50~V\) – couleur jaune foncé )
- 1 régulateur 3.3v HT7533-1
- 1 module transmetteur NRF24
- 1 bouton poussoir
- 1 circuit imprimé
- 1 barrette connecteurs femelle (déjà montée sur le circuit imprimé)
- 1 nappe 8 conducteurs (dont l’un porte un liseré rouge ),
- 2 jumpers
Placement des composants
Vue de dessus du circuit
Étapes
- Souder la barrette déjà en place
- Souder les 8 brins de la nappe en respectant les consignes suivantes :
- Séparer les 8 conducteurs sur 2 cm environ.
- Chaque conducteur étant multibrins, s’assurer qu’ils sont bien torsadés puis étamer.
- Respecter l’ordre de soudage -> Fil au liseré rouge en 1 puis conducteurs suivants en 2,3 etc.
Remarque
Il faudra faire très attention au placement de la carte Arduino nano par la suite : La broche D13 de la Nano doit être impérativement dans le trou le plus avancé (coté nappe de fils).Un décalage de 1 trou lors du placement de la carte Nano dans sa barrette pourra endommager la carte Nano et le module RF24 !
Remarque
Ne pas se tromper sur la soudure de la nappe. En gardant la vue de la Figure 3.1, le câble rouge de la nappe est en bas à gauche, le n°2 est en bas à droite, etc…
Puis dans l’ordre que vous souhaitez :
- Led rouge en D1 – Led jaune en D2 – Led verte en D3 (sont polarisées, patte longue au + , patte courte, méplat sur la led au – ),
- Les 3 résistances sont à souder en R1, R2 et R3
- Les 2 condensateurs électrolytiques sont à souder en C1 et C2 (sont polarisées, le corps du condo est noir avec une bande grisée, la patte de ce côté est le – ),
- Les 2 condensateurs céramiques sont à souder en C3 et C4
- Le bouton poussoir en SW1
- Le jumper D13 (Arduino Nano) en J12
- Le jumper 5v (Arduino Nano) en J10
- Le régulateur 3.3v HT7533 est à souder suivant les conseils de la section suivante
Mise en place du régulateur de tension
Comme vous l’avez sûrement remarqué, l’implantation précédente correspond à un régulateur LE33 et non à un HT7533
Si vous voulez utiliser un HT7533, il faut adapter le brochage du HT7533 au circuit.
- Vin : Entrée 5v
- GND : la masse
- Vout : sortie 3.3V
Adaptation des broches du HT7533 au schéma de la passerelle
Il faut que les broches GND, Vin et Vout rentrent dans les mêmes broches que celle du schéma de la passerelle. Même si les broches ne sont pas dans le même ordre, c’est assez simple à faire en tordant les broches du HT7533 avec une petite pince plate.
Sur le HT7533, sans que les broches se touchent, on tord Vin vers l’avant, Vout vers l’arrière et on ramène GND au milieu.
Rendus
Montage de la sonde
Rappels
La sonde reçoit sur sa barrette connecteurs femelles un Arduino Pro-Mini et est reliée par une nappe à 8 conducteurs à un module transmetteur NRF24.
Le module transmetteur NRF24 assure la liaison radio avec la passerelle.
Liste du matériel de la sonde
- 1 pcb
- 2 barrettes mâle-femelle 12 plots
- 1 barrette mâle-femelle 3 plots
- 1 barrette mâle-femelle 2 plots
- 3 barrettes mâle-mâle 5 plots
- 1 barrette mâle-mâle 4 plots
- 1 barrette mâle-mâle 3 plots
- 3 barrettes mâle-mâle 2 plots
- 1 barrette mâle-mâle 1 plot
- 2 condensateurs céramiques 100 nF
- 2 condensateurs chimiques 10 µF
- 1 résistance 1/4 w 330 K\(\Omega\)
- 1 résistance 1/4 w 1M\(\Omega\)
- 1 régulateur HT7533
- 1 longueur de fil d’acier pour shunts
- 1 longueur de fil isolé pour shunt
- 1 carte Pro mini
- 1 émetteur NRF24
- 1 nappe 8 conducteurs
Placement des composants
Vue de dessus du circuit
Étapes
- Souder les shunts. Voir schéma général et la photo platine sonde shunts
- Souder les 8 conducteurs de la nappe en suivant les mêmes instructions que pour le montage de la passerelle
Puis dans l’ordre que vous souhaitez :
- Les 2 condensateurs électrolytiques sont à souder en C1 et C2 (sont polarisées, le corps du condensateur est noir avec une bande grisée, la patte de ce côté est le – ),
- Les 2 condensateurs céramiques sont à souder en C3 et C4
- Le régulateur 3.3v HT7533
- Les 2 condensateurs céramiques de 100 nF
- Les 2 résistances de 330 k\(\(\Omega\)\) et de 1 M\(\(\Omega\)\) (Elles ont le même aspect extérieur vérifier à l’ohmmètre avant la pose)
- les 2 condensateurs chimiques de 10 µF (Le moins est du côté grisé sur le corps du condensateur)
- Souder les connecteurs mâle-mâle sur la carte Pro mini, ils sont livrés dans la pochette. Attention à ne pas trop chauffer les points de soudure.
- Faire de même avec la carte Arduino Nano nécessaire à la passerelle.
A la différence de son implantation sur la passerelle MySensor, ici il ne faut pas croiser les pattes, implantez le module tel quel en respectant son positionnement sur le pcb grâce au méplat
Rendus
Les court-circuit
Le multimètre
Le meilleur allié contre les courts circuit est le multimètre.
Sur les rangées de barrettes, nous allons regarder la résistance entre deux broches voisines.
Si la résistance est infinie (Un 1 affiché sur l’écran), il n’y a pas de court-circuit et si elle tend vers 0, il y a un risque.
Réglage
On règle le multimètre en mode Ohmmètre, c’est à dire avec le fil noir sur COM, le rouge sur \(\Omega\) et le curseur réglé sur la résistance la plus élevée de l’appareil.
\imgr{\rootImages/multi.jpg}{un multimètre bien réglé}{0.05}{-90}
On regarde la résistance entre les broches 1 et 2 par exemple pour commencer puis ensuite entre la broche 2 et 3, etc…
L’alimentation
Le problème le plus grave peut survenir si un court circuit a lieu entre la broche +VCC[note] et la masse.
Il convient donc de trouver ces deux broches (VCC et GND) et de regarder la valeur de la résistance entre ces deux broches. Cette valeur doit être infinie (1 sur l’afficheur)
Les sondes NRF24
Les sondes NRF24 viennent s’insérer dans la nappe de fils (8 brins). Il ne faut pas se tromper de sens sous peine de détruire le module NRF24 lors de sa mise sous tension.
Pour cela, il faut que le coté avec les broches 1 et deux du NRF24 (repéré avec le carré blanc sur la broche 1) soit du même coté que le fils rouge de la nappe.
\imgr{\rootImages/nrf24.jpg}{Insertion du NRF24 dans son connecteur}{0.05}{-90}
Une fois que la connexion électrique est exacte, on peut alimenter le montage et vérifier la tension au bornes de la sonde NRF24.
Si une tension inférieure à \(3.2V\) ou supérieure à \(3.4V\) apparaît, coupez l’alimentation et reprenez les vérifications.
Puis procédez de la même manière pour la sonde.
Nous allons configurer le programme de la sonde (Sonde\_MySensors.ino)pour l’envoi des données des capteurs.
Paramétrage du NRF24
Pour éviter les interférences entre les modules NRF24 dans une même salle, nous allons sélectionner un canal de communication pour chaque personne.
Un canal correspond à une fréquence précise d’émission et de réception pour le module NRF24.
Voici le tableaux des canaux attribué aux personnes :
\begin{figure}[!h]
\centering
\begin{tabular}{|l|r|}
\hline
Prénom & CANAL\_NRF24
\hline
André P. & 84
\hline
Florian M. & 85
\hline
Guy D. & 86
\hline
Marcel R. & 87
\hline
Michel T. & 88
\hline
Nicolas L.G. & 89
\hline
Patrice G. & 90
\hline
Patrick P. & 91
\hline
Patrick Z. & 92
\hline
Philippe C. & 93
\hline
Pierre G. & 94
\hline
Yvon & 95
\hline
\end{tabular}
\caption{Répartition des canaux pour les utilisateurs}
\end{figure}
Voici un extrait du code Sonde\_MySensors.ino :
/*!
* ************************************************************
* PARAMETRES NRF24 (exemple canal 86)
* Légende : (*) = A changer pour chaque personne
* ************************************************************
*/
//Mode debug activé
#define MY_DEBUG
// Enable and select radio type attached
#define MY_RADIO_RF24
#ifndef MY_RF24_PA_LEVEL
#define MY_RF24_PA_LEVEL RF24_PA_MAX
#endif
#ifndef MY_RF24_CHANNEL
#define MY_RF24_CHANNEL 86 //(*) A CHANGER
#endif
#ifndef MY_RF24_DATARATE
#define MY_RF24_DATARATE RF24_250KBPS
#endif
Paramétrage de Domoticz
Comme vue dans le chapitre de présentation, chaque sonde possède un identifiant et chaque capteur rattaché à la sonde possède lui aussi un identifiant.
Pour éviter toute confusion, nous allons également attribuer un identifiant à notre sonde et à nos capteurs, ces identifiants sont définis pour chaque personne dans le tableau suivant :
\begin{figure}[!h]
\centering
\begin{tabular}{|l|r|r|r|r|}
\hline
Prénom & MY\_NODE\_ID & ID batterie & ID température & ID Humidité
\hline
André P. & 10 & 11 & 12 & 13
\hline
Florian M. & 20 & 21 & 22 & 23
\hline
Guy D. & 30 & 31 & 32 & 33
\hline
Marcel R. & 40 & 41 & 42 & 43
\hline
Michel T. & 50 & 51 & 52 & 53
\hline
Nicolas L.G. & 60 & 61 & 62 & 63
\hline
Patrice G. & 70 & 71 & 72 & 73
\hline
Patrick P. & 80 & 81 & 82 & 83
\hline
Patrick Z. & 90 & 91 & 92 & 93
\hline
Philippe C. & 100 & 101 & 102 & 103
\hline
Pierre G. & 110 & 111 & 112 & 113
\hline
Yvon G. & 120 & 121 & 122 & 123
\hline
\end{tabular}
\caption{Répartition des identifiants pour les utilisateurs}
\end{figure}
/*!
* ************************************************************
* PARAMETRES DOMOTICZ (Exemple avec l'ID 30)
* ************************************************************
* Légende : (*) = A changer pour chaque personne
*/
#define MY_NODE_ID 30 //Noeud dans Domoticz (*)
//Voir le tableau
#define CHILD_ID_BATT 31 //(*) Identifiant Domoticz pour le niveau de batterie
#define CHILD_ID_TEMP 32 //(*) Identifiant Domoticz pour la température
#define CHILD_ID_HUM 33 //(*) Identifiant Domoticz pour l'humidité
ici, il nous reste à définir le temps entre deux envois de données par la sonde.
//Temps entre deux envois de données
static const uint64_t UPDATE_INTERVAL = 10000;
Ensuite, on peut éventuellement changer le nombre de mesure au bout duquel la sonde envoie les données même si elles n’ont pas changés
//Nombre au bout duquel la sonde envoie les données même si elles n'ont pas changés
static const uint8_t FORCE_UPDATE_N_READS = 10;
Paramétrage du DHT
Il faut préciser si le capteur est un DHT11 ou DHT22 et indiquer la broche du capteur
/*!
* ************************************************************
* DHT22/DHT11
* ************************************************************
*/
//Broche de données du DHT22 (ou DHT11)
#define DHT_DATA_PIN 3
#define DHT_TYPE DHT22 //use DHT11 or DHT22
//définir une valeur si le capteur à un offset permanent par rapport à la température réelle
#define SENSOR_TEMP_OFFSET 0
float lastTemp; //Dernière valeur de température lue
float lastHum; //dernière valeur d'humidité lue
Paramétrage de la mesure de la batterie
Il suffit de renseigner les valeurs des résistances (en \(\Omega\)) formant le pont diviseur de tension.
Dans mon cas, les résistances ont une valeur de 330 \(k\Omega\) et \(1 M\Omega\)
Le calcul pour afficher la tension réel de la batterie est détaillé en annexe.
/*!
* ************************************************************
* BATTERIE
* ************************************************************
*/
//Partie pour mesure Batterie
int BATTERY_SENSE_PIN = A0; //ne pas toucher
float oldBatteryV = 0;//Sauvegarde du niveau de batterie
const float r1_value = 1000000.0; //Valeur de la résistance la plus proche de l'alimentation de la batterie
const float r2_value = 330000.0; //Valeur de la résistance la plus proche de la masse
Branchements du DHT
Voici les connexions pour brancher le DHT :
- GND\_DHT est représenté par le câble verts (droite)
- VCC\_DHT est représenté par le câble orange (gauche)
- OUT\_FHT est représenté par le câble jaune (D3) (centre)
Nous allons configurer le programme de la passerelle(Passerelle\_MySensors.ino)pour la réception des données.
Paramétrage du NRF24
Il faut mettre le même canal de communication que pour la sonde.
Un module recevant sur le canal 84 ne pourra pas recevoir des données en provenance d’un canal 83 ou 85.
Pour rappel, voici le tableau des canaux:
\begin{figure}[!h]
\centering
\begin{tabular}{|l|r|}
\hline
Prénom & CANAL\_NRF24
\hline
André P. & 84
\hline
Florian M. & 85
\hline
Guy D. & 86
\hline
Marcel R. & 87
\hline
Michel T. & 88
\hline
Nicolas L.G. & 89
\hline
Patrice G. & 90
\hline
Patrick P. & 91
\hline
Patrick Z. & 92
\hline
Philippe C. & 93
\hline
Pierre G. & 94
\hline
Yvon & 95
\hline
\end{tabular}
\caption{Répartition des canaux pour les utilisateurs}
\end{figure}
Voici un extrait du code Passerelle\_MySensors.ino :
/*!
* ************************************************************
* PARAMETRES NRF24 (exemple canal 86)
* Légende: (*) = A changer pour chaque personne
* ************************************************************
*/
#ifndef MY_RF24_CHANNEL
#define MY_RF24_CHANNEL 86 //Le canal doit être le même que celui de la sonde
#endif
Envoi des programmes
Une fois les deux programmes modifiés avec les bonnes valeurs, il ne vous reste plus qu’à envoyer le programme de la sonde sur la carte Pro-Mini et celui de la passerelle sur la carte Nano.
Toutes les informations pour programmer les deux cartes sont disponibles au chapitre 2 (Programmation).
Lorsque les deux cartes sont programmées, occupons nous maintenant de Domoticz.
Une fois que la passerelle est fonctionnelle, nous allons configurer Domoticz pour que la plateforme reçoive
les données en provenance de la passerelle.
Ajout de la passerelle
Tout d’abord, allez dans la section Configuration > Matériel
Ensuite, saisissez les informations suivantes :
Le port série sélectionné sera celui où est raccordé la passerelle en liaison USB.
Il ne faut pas prendre les noms simplifiés des ports USB (COM\_XXX) mais le nom le plus complet.
Pour plus de simplicité, veuillez déconnectez tous les autres périphériques du Raspberry-Pi.
Recherche des capteurs
Visualisons les données en provenance de la sonde en allant dans
Configuration > Matériel.
L’ensemble de vos dispositif apparaît. En cas de liste trop longue, saisissez Gateway dans la barre de recherche.
Remarque
Si le dispositif n’apparaît pas immédiatement, patientez quelques instants.
Nous allons ensuite vérifier que les capteurs de la sonde envoient bien les données. Pour cela, cliquez sur Configuration.
La page suivante apparaît :
Pour visualisez les valeurs des capteurs, il faut sélectionner la passerelle avec l’ID de la sonde (ici, 30).
En cliquant dessus, on voit que la partie Enfants est mise à jour et contient les 3 capteurs avec les ID définis dans le programme de la sonde (31,32 et 33 en ce qui me concerne)
Visualisation des données
Maintenant que nous savons que la sonde envoi les bonnes données, nous allons ajouter les capteurs dans les dispositifs.
Pour cela, allez dans Configuration > Dispositifs, les 3 capteurs de la sonde (Tension batterie, humidité et température) apparaissent dans la liste.
Si vous ne les trouvez pas, vous pouver nettoyer la page des capteurs en sélectionnant les capteurs non-utilisés et en le mettant à la poubelle.
Les capteurs apparaissent sous les 3 noms suivants :
Pour ajouter un dispositif, il suffit de cliquer sur la flèche verte et de choisir le nom du dispositif.
Il suffit de cliquer dans le menu Mesures
Et apparaît la tension de la batterie.
On procède de même pour l’humidité et la température, les dispositifs seront mis dans l’onglet Température.
Pour visualiser les données, il suffit de cliquer sur le bouton logs
Schéma sonde
Questions
Pourquoi ma passerelle n’est pas détectée sur Domoticz ?
Une erreur fréquente est de sélectionner le mauvais port lors de la configuration de la passerelle dans Domoticz.
Pourquoi la passerelle allume sa LED rouge ?
La LED rouge veut dire que des erreurs de communication sont survenues entre la passerelle et la sonde. Vérifier les branchements de la sonde.