Vous êtes sur la page 1sur 17

TP PROJET CAPTEURS UE1 FG3- 2023

De la mesure à la donnée numérique SEANCE 1


Transmission de l’info

CAPTEUR ENERGYLAB
SEANCE 1
Objectif de la séance :
Faire remonter sur un cloud, et afficher sous forme d’un dashboard, les données d’un
capteur de température, humidité et pression atmosphérique. La remontée de données se
fera via wifi.

Objectifs d’apprentissages

• Savoir transmettre de l’information via un médium sans fil (Wifi)


• Implémenter une architecture de transmission Client-serveur.

Matériel
• 1 HUZZAH Feather + cable microUSB + batterie LiPo
• 1 capteur BME280
• Fils Arduino
• Plaque labdeck

Sommaire
1. Connection du module WiFi (Huzzah) et intégration du BME

Page 1
2023-2024 // TPs encadrés par Nicolas Camara et Gael Alonzo
TP PROJET CAPTEURS UE1 FG3- 2023
De la mesure à la donnée numérique SEANCE 1
Transmission de l’info

2. Remontée des données sur cloud Dweet


3. Remontée des données sur Adafruit IO et création DashBoard
4. Pour aller plus loin, on peut coder son propre DashBoard.

I. Connection du module WiFi (Huzzah) et intégration


du BME 280

A. Présentation et installation de la Huzzah


1. Présentation de la Huzzah
Nous allons utiliser la carte « Huzzah Feather » qui est une carte électronique programmable (comme les
cartes Arduino) basé sur le processeur ESP8266. Originellement, la puce ESP8266 servait sur les cartes
d’extension WiFi à bas coût pour les cartes Arduino mais la communauté a développé les outils
permettant de le programmer directement avec l’IDE Arduino. Cela a permis l’apparition de carte
programmable avec la fonctionnalité WiFi directement intégrée comme la Huzzah Feather.
On trouve beaucoup d'information (en anglais) sur le site du fabriquant :
https://learn.adafruit.com/adafruit-feather-huzzah-esp8266

Avantages et inconvénients
Avantages L’avantage majeur de la carte Huzzah Feather est d’intégrer directement les fonctionnalité
WiFi et de pouvoir donc communiquer directement avec les ordinateurs/smartphones sans passer par un
modem extérieur. Elle possède la capacité d’héberger un petit serveur web mais aussi d’interfacer des
capteurs et des actionneurs, ce qui en fait un outil très pratique pour s’initier à l’Internet des Objets ou
réaliser des projets mécatroniques intégrant une interface réseau.
La carte possède aussi plusieurs avantages secondaires:
● un programmateur intégré
● un connecteur pour une batterie Lithium Polymère 1S (3.7V),
● un chargeur LiPo intégré permettant de recharger la batterie lorsque la carte est branché en USB.

Inconvénients L’inconvénient majeur de la carte Huzzah Feather est un nombre de GPIO inférieur à
l’Arduino Uno (8 GPIO contre 14 pour l’Arduino Uno), une unique entrée analogique sur 1V (au lieu de 6
sur 5V pour l’Arduino Uno) ce qui limite un peu plus le nombre de capteur / actionneur possible. On peut
noter que la présence d’un bus I2C et et d'un bus SPI permettent éventuellement d’augmenter le nombre
de capteurs/actionneurs via des cartes d’extensions.

Vous retrouverez la liste des différents broches de la carte sur le diagramme suivant :

Page 2
2023-2024 // TPs encadrés par Nicolas Camara et Gael Alonzo
TP PROJET CAPTEURS UE1 FG3- 2023
De la mesure à la donnée numérique SEANCE 1
Transmission de l’info

https://cdn-
learn.adafruit.com/assets/assets/000/046/249/original/adafruit_products_Huzzah_ESP8266_Pinout_v1.
2-1.png?1504885873

Toutes les GPIOs peuvent générer des signaux PWM (contrôle de moteur continu).
La broche 0 est connectée à la LED intégrée à la carte.
La broche ADC encode un signal de 0 à 1 V sur 10bits (0-1023).
Le SPI utilise les pins 12 (MISO), 13 (MOSI), 14 (CLK) et 15 (CS)).
L'I2C utilise les pins 04 (SDA) et 05 (SCL).
La pin 16 est une pin spéciale et ne peut pas servir à tout.

2. Installation de la Huzzah

• Installation de l’IDE
Remarque : si votre carte Huzzah Feather n'est pas reconnue (il n'y a pas de port COM qui
apparaît), installez les drivers suivants :
http://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-
drivers

Suivez les instructions ci-dessous pour installer la bibliothèque pour l’ESP8266 (WROOM-02)
• Ouvrez le menu Fichier > Préférences

Page 3
2023-2024 // TPs encadrés par Nicolas Camara et Gael Alonzo
TP PROJET CAPTEURS UE1 FG3- 2023
De la mesure à la donnée numérique SEANCE 1
Transmission de l’info

• Ajoutez la ligne suivante à la ligne URL de gestionnaire de cartes supplémentaires :


http://arduino.esp8266.com/stable/package_esp8266com_index.json

• Ouvrez le menu Outils > Type de carte > Gestionnaire de carte puis cliquez sur « esp8266 by
ESP8266 Community » pour l’installer.

• Choisissez la carte « Adafruit Feather HUZZAH ESP8266 » dans le menu Outils > Type de carte.

Page 4
2023-2024 // TPs encadrés par Nicolas Camara et Gael Alonzo
TP PROJET CAPTEURS UE1 FG3- 2023
De la mesure à la donnée numérique SEANCE 1
Transmission de l’info

B. Premier Code sur Huzzah : Blink


Suivez les instructions suivantes pour uploader le programme Fichier > Exemples > 01. Basics > Blink sur
la carte « Huzzah Feather ».
• Ouvrez le code exemple Fichier > Exemples > 01. Basics > Blink
• Branchez la carte à l’ordinateur via le cable micro-USB
• Vérifiez que vous avez bien le bon port COM.
• Vérifiez que vous avez bien le bon type de carte (« Adafruit Feather HUZZAH ESP8266 »).
• Téléversez.

La LED rouge blinke ?


Bravo, vous avez réalisé votre premier programme sur la Huzzah Feather !

Appelez fièrement l’enseignant pour la VALIDATION 1

C. Le BME 280 capteur de température, pression, et hygrométrie


1. Installation des bibliothèques pour le capteur
Installez les bibliothèques Adafruit BME280 Library by Adafruit et Adafruit Unified Sensor by Adafruit
Cliquez sur “croquis/inclure une bibliothèque/Gérer les bibliothèques”, puis cherchez et installer les
bibliothèques suivantes: Adafruit BME280 Library et Adafruit Unified Sensor.

Page 5
2023-2024 // TPs encadrés par Nicolas Camara et Gael Alonzo
TP PROJET CAPTEURS UE1 FG3- 2023
De la mesure à la donnée numérique SEANCE 1
Transmission de l’info

2. Affichage des données du capteur sur Moniteur Serie


• Réaliser le montage pour connecter en I2C le capteur BME280 et la carte Huzzah
• Ouvrez le code d'exemple bme280 test. Il ne marche pas ? modifiez le en vous inspirant
(recopiant) du blog : https://passionelectronique.fr/tutorial-bme280/
• Téléversez-le et ouvrez le moniteur série. Vous devriez avoir :

Ça marche ? Bravo

SAUVEGARDEZ CE PROGRAMME sous BME_GroupeX.ino (en remplaçant bien sur x par le


numéro de votre groupe).

Appelez fièrement l’enseignant pour la VALIDATION 2


+ répondre aux questions suivantes :
• Quelle est la principale différence entre une connexion UART et la connexion I2C ?
• En I2C, quelles sont les adresses possibles du BME280 ?
• Combien de capteurs BME280 peut-on installer simultanément ?

II. Remontées de données sur cloud


Dans une relation Client/Serveur, c'est toujours le client qui initie la communication vers le serveur.

Page 6
2023-2024 // TPs encadrés par Nicolas Camara et Gael Alonzo
TP PROJET CAPTEURS UE1 FG3- 2023
De la mesure à la donnée numérique SEANCE 1
Transmission de l’info

Nous aimerions que ce soit notre capteur qui puisse envoyer les données au fur et à mesure des
acquisitions (sans mémoire de la part du capteur). Pour ce faire, nous allons transformer notre capteur en
Client Http.
C’est le rôle de la classe HttpClient qui permet d’initier une requête Http et
d’attendre la réponse du serveur.

Mais avant cela nous allons nous poser la question de : "À qui envoyer les données ?" car si notre capteur
est le client, qui jouera le rôle du serveur ?

Il n'y a pas de réponse unique et nous allons explorer deux voies :


• un service ouvert, dédié et gratuit : Dweet.IO
• un service dédié et gratuit nécessitant l'ouverture d'un compte : io.adafruit.com

A. Remontées des données sur Dweet.io (OPTIONNEL)

1. Remontée des données ‘à la main’ dans l’URL


Dweet est un service gratuit qui permet de faire communiquer des objets intelligents entre eux en
réceptionnant et stockant leurs messages.
Le principe est très très simple :
• Une url pour envoyer les messages :

https://dweet.io/dweet/for/epf_capteur?message=bonjour&valeur=10
• Une url pour afficher les messages reçus :

https://dweet.io/get/dweets/for/epf_capteur
• Une url pour afficher une joli synthèse des données reçues :

https://dweet.io/follow/epf_capteur

Pensez à changer le nom "epf_capteur" par un nom unique correspondant à


votre groupe.

Faîtes des essais en changeant les valeurs du champ "valeur".


Vous pouvez rajouter autant de paramètre que vous voulez, séparés par des
esperluettes (&).
Ex : https://dweet.io/dweet/for/epf_capteur?message=bonjour&valeur=10&temp=37
Vous devriez avoir :
Envoi du message : (Notez le champ "this" : "succeeded")

Page 7
2023-2024 // TPs encadrés par Nicolas Camara et Gael Alonzo
TP PROJET CAPTEURS UE1 FG3- 2023
De la mesure à la donnée numérique SEANCE 1
Transmission de l’info

Réception du message : (Notez le champ "with" suivi de la liste des messages reçus)

Dweet affiche les données au format JSON (format d'échange comme le XML et le
CSV) qui a l'avantage d'être modulaire (comme le XML) et compact (comme le CSV).

Pour le convertir dans un format CSV et l'afficher plus facilement dans Excel vous
pouvez utiliser des convertisseurs en ligne. Par ex :
• https://konklone.io/json/
• http://www.convertcsv.com/json-to-csv.htm

Synthèse : Et si vous continuez à envoyer des valeurs avec cette page ouverte, celle-ci affiche les derniers
messages reçus (et une courbe pour les valeurs numériques).

Page 8
2023-2024 // TPs encadrés par Nicolas Camara et Gael Alonzo
TP PROJET CAPTEURS UE1 FG3- 2023
De la mesure à la donnée numérique SEANCE 1
Transmission de l’info

Attention, la version gratuite de Dweet.io a certaines limitation :


• la requête /get/dweets/for ne récupère que les 5 derniers messages.
• la requête d'affichage /follow/ stocke les informations sur votre ordinateur (en
mémoire) mais perd toutes les informations dès que vous fermez/rafraîchissez la
fenêtre.

Page 9
2023-2024 // TPs encadrés par Nicolas Camara et Gael Alonzo
TP PROJET CAPTEURS UE1 FG3- 2023
De la mesure à la donnée numérique SEANCE 1
Transmission de l’info

Nous savons désormais envoyer des informations sur le serveur via l'utilisation des URLs de votre
navigateur web. Mais comment demander à Arduino d'envoyer directement ces requêtes HTTP ?

2. Remontées des données du BME sur Dweet.io

Nous savons désormais envoyer des informations sur le serveur via l'utilisation des URLs de votre
navigateur web. Mais comment demander à Arduino d'envoyer directement ces requêtes HTTP ?

a) Utilisation de la bibliothèque HttpClient


• Ouvrir l’exemple que vous trouverez dans : Fichier > Exemples > ESP8266HTTPClient >
BasicHttpsClient (La bibliothèque HttpClient est incluse dans le package de base
Arduino/ESP8266). Ou encore mieux, le code exemple de vos chers professeurs sur Moodle ici

• Modifier le fingerprint (certificat) de dweet.io


o Avant le setup() Remplacer
const uint8_t fingerprint[20] = {0x76, 0x99, 0x2e, 0x6f, 0x04, 0xf4, 0xad, 0x19, 0xba, 0x54, 0xf5, 0x92,
0x50, 0x51, 0x56, 0x2b, 0x86, 0x8b, 0x5a, 0x92} par la valeur de fingerprint reactualisée.

Pour connaître ce certificat Dweet réactualisé, il vous faut aller la chercher dans votre navigateur.
• Cliquez sur l'icône de cadenas à gauche de l'url.
• Puis cliquez sur Certificat

• La signature que vous cherchez se nomme SHA-1.

Page 10
2023-2024 // TPs encadrés par Nicolas Camara et Gael Alonzo
TP PROJET CAPTEURS UE1 FG3- 2023
De la mesure à la donnée numérique SEANCE 1
Transmission de l’info

• Copiez-collez là dans votre fichier Arduino avant d’avoir demander à chatgpt de bien vouloir
faire la conversion en hexadecimal. La ligne que vous venez de modifier permet d’utiliser
une connexion sécurisée (c’est le s de Https). .

o Dans la boucle loop()


Ajoutez, en dessous de la ligne if ((WiFiMulti.run() == WL_CONNECTED)) {
les lignes
String url = "https://dweet.io/dweet/for/epf_capteur"; //Pensez à modifier epf_capteur
url += "?message=bonjour"; //Pensez à modifier epf_capteur
url += "&valeur="; // les suivants par &
url += millis(); // Concaténation avec des variables ou des fonctions.
Vous venez de constituer l’URL sur laquelle vous vous ferez la requête http pour remonter les données
vers Dweet.

Trouver la ligne : if (https.begin(*client," https://www.howsmyssl.com/a/check")){


Et remplacer par :if (https.begin(*client, url)) { // HTTPS
Vous commencez les requêtes sur l’URL précédemment constituée.

Créer un point d’accès Wifi grâce à un de vos téléphones pour que la carte HUZZAH puisse s’y connecter
et agir comme Client. Trouver alors dans le code où rentrer la configuration de ce point d’accès (SSID et
password).

Page 11
2023-2024 // TPs encadrés par Nicolas Camara et Gael Alonzo
TP PROJET CAPTEURS UE1 FG3- 2023
De la mesure à la donnée numérique SEANCE 1
Transmission de l’info

Après avoir téléversé votre programme sur la carte HUZZAH, vous devriez commencer à envoyer les
données vers le Cloud Dweet.

Ca ne marche pas ?
Tant pis, on va travailler sans cryptage en allant dans loop à cet endroit :
client->setFingerprint(fingerprint);
// Or, if you happy to ignore the SSL certificate, then use the following line instead:
// client->setInsecure();

et en mettant en commentaire le SSL certificate et en se mettant en mode non securisé :


// client->setFingerprint(fingerprint);
// Or, if you happy to ignore the SSL certificate, then use the following line instead:
client->setInsecure();

b) Remontée des données du BME sur Dweet

Rajoutez le code de votre programme du BME 280 ( BME_GroupeX.ino)dans ce nouveau


programme de remontée de données sur Dweet. Attention, penser à ramener les header, les lignes
d’initialisation dans le setup() et les remontées dans loop(). Regardez ce qui se passe sur dweet :
https://dweet.io/follow/epf_capteur

Vous arrivez à voir vos données qui remontent sur le cloud, Bravo :

Sauvegardez votre code sous Dweet_CapteurBME_GroupeX.ino

Appelez l’enseignant pour la VALIDATION 3 (OPTIONNEL)

B. Remontées des données du BME sur Adafruit IO


La limite principale de la version gratuite Dweet.io est le nombre réduit de valeurs enregistrées
accessibles (5 maximum avec /get/dweets/for .)
Pour pallier à cela, vous pouvez :
• Opter pour un service payant de Dweet
• Opter pour l'une des multiples alternatives d’’IoT platforms’ souvent gratuites :
o Adafruit IO

Page 12
2023-2024 // TPs encadrés par Nicolas Camara et Gael Alonzo
TP PROJET CAPTEURS UE1 FG3- 2023
De la mesure à la donnée numérique SEANCE 1
Transmission de l’info

o Thingspeak
o Corlysis
o Kaa
o Google Cloud IoT
o Amazon Web Service AWS IoT
• Chercher à mettre en place votre propre serveur : "à la main" avec PHP/MariaDB (c’est le cas du
nouveau serveur installé à l’EPF que l’on pourra utilisant en fin de projet si l’on a le temps) , ou
en utilisant des outils existant : gweet , kuzzle , etc.

Le service gratuit (contre une inscription sur le site) d’Adafruit IO vous permet de pouvoir gérer jusqu’à
10 remontées d'information de manière centralisée et de construire des interfaces et tableaux de bords
associés. C’est ce que l’on va apprendre à faire dans la suite de ce TP.

1. Créez-vous un compte sur https://io.adafruit.com

Adafruit IO fonctionne sur le principe de flux de


données (feeds) qui peuvent être regroupées
(groups) puis affichés dans des tableaux de bords
(dashboards).

Notez les contraintes liées au nombre de


remontées de données par minute, au temps de
stockage des données, au nombre de dashborard,

Pour vous authentifier auprès du serveur (et savoir que c'est VOUS qui envoyez des données), vous allez
devoir utiliser une clé d'authentification.
Dans le menu à gauche, cliquez sur View AIO Key.

Page 13
2023-2024 // TPs encadrés par Nicolas Camara et Gael Alonzo
TP PROJET CAPTEURS UE1 FG3- 2023
De la mesure à la donnée numérique SEANCE 1
Transmission de l’info

2. Installation de la bibliothèque Adafruit IO Arduino et premières remontées de données

• Rendez-vous dans le gestionnaire de bibliothèques et installer le nécessaire.

• Ouvrez le fichier « adafruitio_00_publish.ino »

Page 14
2023-2024 // TPs encadrés par Nicolas Camara et Gael Alonzo
TP PROJET CAPTEURS UE1 FG3- 2023
De la mesure à la donnée numérique SEANCE 1
Transmission de l’info

• Modifier le programme de manière à envoyer des données


Afin d’envoyer des données vers les serveurs de Adafruit, vous allez devoir ajuster certains paramètres et
modifier certaines parties du code.
Vous avez certainement remarqué que notre programme est composé de deux fichiers config.h et
adafruitio_00_publish.ino.

o config.h
Modification de IO_USERNAME et IO_KEY
▪ #define IO_USERNAME "your_username" en indiquant votre nom d’utilisateur
(celui correspondant à votre compte Adafruit).
▪ #define IO_KEY "your_key" en indiquant votre clé d'authentification pour vous
authentifier auprès du serveur (et savoir que c'est VOUS qui envoyez des
données). Cette clé se trouve en cliquant sur le bouton jaune « API Key »
dans votre compte utilisateur.

Page 15
2023-2024 // TPs encadrés par Nicolas Camara et Gael Alonzo
TP PROJET CAPTEURS UE1 FG3- 2023
De la mesure à la donnée numérique SEANCE 1
Transmission de l’info

Modification de WIFI_SSID et WIFI_PASS


▪ #define WIFI_SSID "your_ssid" en indiquant le nom du réseau que vous
avez créé (votre point d’accès)
▪ #define WIFI_PASS "your_pass" en indiquant le mot de passe de votre
réseau.

o adafruitio_00_publish.ino
▪ Si vous ne modifiez rien à ce stade et que vous téléversez, vous devriez
voir des choses changer sur votre page perso de cloud AdafruitIO.
(Regarder les feeds).
▪ Modifier le code Example pour remonter les feeds correspondants aux
données du BME sur votre cloud Adafruit IO. Remontées de données du
BME680 sur Adafruit IO.

• Modifier le nom de votre nouveau programme qui remonte toutes vos données sur votre cloud.
Vous l’appelez AdafruitIO_BME_GroupeX.ino
• Sur votre cloud AdafruitIO, créer un dashboard faisant apparait l’évolution de la température,
de l’humidité et de la pression.

• Rendez public votre Dashboard ainsi que les feeds associés puis envoyez l’URL à votre
encadrant. Il doit pouvoir voir vos données depuis son téléphone ou son ordinateur.

Page 16
2023-2024 // TPs encadrés par Nicolas Camara et Gael Alonzo
TP PROJET CAPTEURS UE1 FG3- 2023
De la mesure à la donnée numérique SEANCE 1
Transmission de l’info

Appelez l’enseignant pour la VALIDATION 4

III. ANNEXES
A. ANNEXE 1

Page 17
2023-2024 // TPs encadrés par Nicolas Camara et Gael Alonzo

Vous aimerez peut-être aussi