Étape 4: Arduino code l’aide (bouclier ATMEL)
Installer l’IDE Arduino :
Vous devez installer l’IDE Arduino : https://www.arduino.cc/en/Main/Software
Choisir votre système d’exploitation, téléchargez-le et installez-le.
Obtenir le code source :
Vous pouvez télécharger le code source sur Github : https://github.com/luisomoreau/sigfox_talking_plant_atmel
Compréhension de base de la programmation de l’Arduino :
Avant de commencer chaque programme, nous commençons avec deux fonctions « de base »: void setup() et void loop().
- void setup() est exécuté en premier. Il est utilisé pour initialiser la carte.
- void loop() est exécuté infiniment (aussi longtemps que l’alimentation est assurée)
En savoir plus sur arduino.cc
Notre programme :
Ouvrez le fichier sigfox_talking_plant_atmel.ino en IDE Arduino. Vous verrez qu’il existe des fonctions tant setup() et loop(). Deux autres fonctions sont également présents, sensorActivity() et sendValues().
Maintenant, nous devons définir l’entrée, les variables et la durée de sommeil :
Au début du programme, vous verrez :
- #define TIMEINTERVALL 3600000 ; Il s’agit de l’intervalle de temps entre chaque lecture des valeurs de capteur. 3600000 correspond à une heure en millisecondes (60 min x 60 secondes x 1000)
- #define photores A0 ; Nous définissons la broche A0 à la broche d’entrée pour lire les valeurs de la cellule photoélectrique.
- #define humidité A1 ; Nous définissons la broche A1 à la broche d’entrée pour lire les valeurs de la sonde d’humidité.
- unsigned long minuterie ;
- unsigned int lum ;
- unsigned int humide ;
Nous allons avoir un regard plus profond dans les fonctions :
- Setup() :
Dans cette fonction, la carte est initialisée, nous vérifions que le bouclier est présent, nous activer, et nous obtenons l’ID et le nombre de PAC du bouclier. Puis nous Réglez-le en mode sommeil et initialiser le timer.
- Loop() :
Il existe deux options activer la fonction sensorActivity. Vous pouvez appuyer sur la touche ou attendre le délai défini avec la valeur TIMEINTERVALL.
- sensorActivity() :
Cette fonction va être utilisée pour lire les valeurs des capteurs, puis appelez la fonction sendValues. Pour la luminosité et les capteurs d’humidité, ils ne sont pas intégrés à la bibliothèque de bouclier. Ainsi, nous avons besoin d’utiliser la fonction analogRead pour obtenir la valeur d’entrée.
J’ai utilisé une fonction de la carte de le convertir en pourcentage et pour calibrer l’entrée.
Pour la température, nous ue la librairie, par conséquent, il faut activer le bouclier à l’aide de SIGsh.SIGFOXon() et SIGsh.readTemp() pour obtenir la température.
Enfin, nous appelons la fonction sendValues() avec l’humidité, la luminosité et la température en tant que paramètres.
Dans le code fourni, la puissance est également incluse
- sendValues() :
Dans un premier temps, nous créons un tampon pour ajouter les valeurs obtenues.
Sigfox utilisent les données de très petite taille, nous avons besoin de l’optimiser. C’est pourquoi nous prenons seulement l’octet inférieur des valeurs entières.
Explication : poids de l’int unsigned est 16 bits (2 octets) sur les cartes mères basées sur l’Atmega. Sigfox peut envoyer jusqu'à 12 octets. Comme les valeurs que nous seront situera entre 0 et 100, 1 octet est suffisant pour les stocker.
Voir plus d’infos sur poids entiers ici.
Puis nous envoyer le tampon et la longueur à l’aide de la bibliothèque fournie (SIGsh.sendMessage)
Exécutez le code :
Essayez maintenant de compiler le code en utilisant le bouton check sur le coin supérieur gauche et le télécharger à l’aide de la touche juste ensuite. (N’oubliez pas d’ajouter le port série est-ce pas automatiquement détecté : outils > Serial Port > votre port arduino).
Ouvrez le moniteur série et appuyez sur le bouton. Si tout fonctionne bien. Vous obtiendrez le statut « OK » sur votre console.
Étape suivante consiste à activer votre carte.