Programmation sonde
Sommaire du chapitre
Programmation 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 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 :
/*!
* ************************************************************
* 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 :
est représenté par le câble verts (droite)
est représenté par le câble orange (gauche)
est représenté par le câble jaune (D3) (centre)
