Académique Documents
Professionnel Documents
Culture Documents
28 avril 2022
1
Table des matières
1 Première partie : capteur de température et d’humidité 4
1.1 La STM32L476 Nucleo-64 : carte de développement . . . . . . . . . . . . . . 4
1.2 Le DHT22 : capteur de température et d’humidité . . . . . . . . . . . . . . 6
3 Le concentrateur et la Raspberry Pi 12
3.1 Connecter la Gateway . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2 Configurer la Gateway . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
5 Annexe 15
5.1 Première partie : capteur de température et d’humidité . . . . . . . . . . . . 15
5.2 Le concentrateur et la Raspberry Pi . . . . . . . . . . . . . . . . . . . . . . 17
2
Introduction
L’internet des objets (IoT) décrit l’interconnexion entre des objets et internet. Il permet
notamment de pouvoir récolter des données en temps réel à distance via différents réseaux
de communication comme le réseau mobile, le Wifi ou les réseaux basse consommation. Le
"LoRaWAN" (pour "Long Range Wide-Area Network") fait partie de ces protocoles de
communication longue distance à faible consommation d’énergie. Il utilise le LoRa qui est
une technique de modulation à spectre étalé en "Chirp", ce qui lui permet de débiter sur
une bande passante de 125kHz. Le "LoRaWAN" peut être déployé partout dans le monde
grâce à son indépendance des réseaux externes. Il se compose de 4 éléments principaux :
les appareils LoRa, les Gateways, le Network Server et l’Application Server.
Dans ce TP, l’objectif principal est de transférer, via une communication LoRaWAN, des
données provenant d’un capteur de température. Deux cartes de développement seront
utilisées : une "STM32L476 Nucleo-64" pour le capteur et l’émetteur LoRa, et une "Rasp-
berry Pi 3" couplée à un concentrateur "IC880A" pour la Gateway, le Network Server et
l’Application Server.
3
1 Première partie : capteur de température et d’humidité
1.1 La STM32L476 Nucleo-64 : carte de développement
Durant ce TP, la carte de développement que vous allez utiliser est la "STM32L476
Nucleo-64". Cette carte offre aux utilisateurs un moyen flexible d’essayer de nouvelles idées
et de construire des prototypes. Livrée avec la bibliothèque complète STM32 et divers
exemples de programmes, cette dernière intégre le débogueur "ST-LINK". Pour pouvoir la
programmer, nous allons utiliser le logiciel de développement "STM32CubeIDE". Voici les
étapes à réaliser lorsque vous démarrez un nouveau projet :
— Une seconde fenêtre apparaît : renseignez le nom de votre projet et son emplacement.
Vous n’avez pas besoin de modifier les options. Cliquez sur "Finish".
— On vous demande en option si vous souhaitez initialiser par défaut les périphériques
de la carte, cliquez sur "Yes".
— Une fois les bibliothèques téléchargées, il faut configurer les pins du microcontôleur.
Dans ce TP, nous allons utiliser un capteur qui communique en "Single Wire",
cliquez sur "System Core" puis sélectionnez "GPIO" pour "General Purpose Input
Output". De plus, pour vérifier les données du capteur, nous avons besoin d’un écran
LCD. Ce dernier communique via un bus I2C, cette fonctionnalité se trouve dans
l’onglet "Connectivity". Vous pouvez modifier l’emplacement des broches "GPIO"
et "I2C" en fonction de votre câblage.
4
Figure 3 – Configuration des broches du microprocesseur
5
1.2 Le DHT22 : capteur de température et d’humidité
Le DHT22 est un capteur permettant de mesurer une température ainsi que le taux
d’humidité dans l’air. Nécessitant une alimentation typique de 5 V, il peut capturer des
températures comprises entre -40 °C et 80 °C. Il possède une précision de ±2% pour
l’humidité et de ±0.5C pour la température. Avec une consommation de 1.5 mA lorsqu’il
est actif, le DHT22 peut être livré "nu" ou alors directement soudé sur un PCB. Dans
notre cas, nous avons le modèle monté sur circuit imprimé et qui a donc un fort avantage
car il est déjà équipé de composants additionnels indispensables pour assurer une parfaite
communication avec le capteur, notamment la résistance de pull-up sur la ligne de données,
et une capacité de filtrage sur l’alimentation.
Le DHT22 possède 4 broches : deux pour l’alimentation (VCC & GND), une pour la donnée
et la quatrième n’est pas utilisée. Les informations sont donc transmises entre le micro-
contrôleur et le capteur via un seul fil, cela signifie qu’il faudra, lors de la programmation,
configurer la broche en mode "lecture" ou en mode "écriture" (ou "entrée" / "sortie").
Pour le moment, nous souhaitons seulement afficher la température et le taux d’humidité
sur un écran LCD qui communique via un bus I2C avec le microcontrôleur. Afin de faciliter
le câblage, nous utilisons une carte "shield" que nous enmboîtons sur la Nucleo-64 et qui
permet d’étendre les capacités de cette dernière en ajoutant notamment des connectiques
analogiques, digitales, UART et I2C. Voici ci-dessous notre schéma de câblage pour le
DHT22 :
6
Lorsqu’une température et un taux d’humidité sont collectés par le capteur, ce dernier
envoie ces informations via une trame de 40 bits :
Si toutefois le capteur détecte une température inférieure à 0°C, alors le bit de poids
fort de la partie "Température" est à 1. Lorsque le microcontrôleur envoie un signal de
démarrage, le DHT22 passe alors de l’état d’attente à l’état de fonctionnement. Quand
le microcontrôleur finit d’envoyer le signal de démarrage, le DHT22 enverra un signal de
réponse de 40 bits de données. Sans signal de démarrage de la part du microcontrôleur, le
DHT22 ne donnera pas de signal de réponse. Le DHT22 passe en mode veille lorsque la
collecte des données est terminée.
7
— Les fonctions pour utiliser l’écran LCD sont les suivantes :
Si tout fonctionne correctement, alors l’écran LCD doit afficher la température et le taux
d’humidité capturés par le DHT22. Il y a un rafraichissement toute les 10 secondes à peu
près. Nous savons maintenant que le capteur est fonctionnel, et que nous stockons ces
valeurs qui vont être ensuite envoyées vers un serveur via une communication LoRa.
8
2 La carte d’extension : STM32 Nucleo LoRaWan
Nous allons maintenant associé à notre carte Nucleo STM32 L476RG une carte d’exten-
sion (Shield) I-NUCLEO-LRWAN, afin de constituer notre End Node. En effet cette carte
d’extension permet de connecter une antenne afin de transmettre des données en LoRa.
De plus, on peut retrouver sur cette carte différents capteurs (que nous n’utiliserons pas
dans ce TP) tel qu’un capteur de pression, un capteur d’humidité et de température ainsi
qu’un accéléromètre/magnétomètre.
Figure 12 – I-NUCLEO-LRWAN1
Cependant ceci est loin d’être suffisant pour pouvoir transmettre les données de l’End
Node à la Gateway.
En effet vous devez maintenant télécharger le software package contenant toutes les library
nécessaire au bon fonctionnement du End Node sur le site de STMicroelectronics. Vous le
trouverez en entrant ce lien dans votre barre de recherche :" https ://www.st.com/content/
st_com/en/products/embedded-software/mcu-mpu-embedded-software/stm32-
embedded-software/stm32cube-expansion-packages/i-cube-lrwan.html#overview".
Ou vous pourrez sûrement trouver en recherchant sur internet "software package i-cube-
lrwan".
Après avoir téléchargé et ouvert ce dossier vous allez devoir configurer certains fichiers.
Mais avant cela, il faudra télécharger le logiciel "Tera Term" permettant d’établir une
communication avec la carte LoRaWAN. Il faut sélectionner "Serial" et normalement le
logiciel détecte le port USB sur lequel est branché votre carte STM32. Concernant la
configuration, il faut simplement modifier le "Baud Rate" à 115 200 et cliquer sur "New
Settings" pour mettre à jour. Un terminal doit alors s’ouvrir et transmettre des messages
provenant de la carte LoRaWAN.
9
Figure 13 – Tera Term
Grâce à "Tera Term", on reçoit donc des informations concernant la carte LoRaWaN,
notamment son adresse MAC qu’il faudra ensuite renseigner dans le code. Dans le code que
nous propose STMicroelectronics, il y a plusieurs fichiers qu’il faut modifier. Notamment
le fichier "se-identity.h" où il faut renseigner l’adresse MAC de la carte LoRaWAN utilsiée.
De plus, il faut aussi renseigner la bonne région où l’on se situe (EU433) et la classe de
LoRa que l’on souhaite utiliser. Cela se fait dans le fichier "lora_app.h".
10
Figure 16 – Configuration de la région et de la classe du LoRA
Une fois que le configuration est terminée et complète, nous pouvons commencer à com-
muniquer avec notre carte LoRaWAN. Cela se fait via des commandes "AT" qui sont
transmisent en UART. Il faut donc configurer une broche UART avec l’outils de configu-
ration de CubeIDE, puis se renseigner sur quelles commandes AT il faut utiliser avec le
tableau suivant :
11
3 Le concentrateur et la Raspberry Pi
3.1 Connecter la Gateway
Le concentrateur IC880A ainsi que la Raspberry Pi 3 constitue notre Gateway. La
Gateway permet de récupérer les données envoyé par le End Node, dans notre cas la
température et l’humidité du capteur de température envoyées par la carte STM32, et de
les envoyer au serveur. Le concentrateur et le Raspberry communique grâce au protocole
SPI.
IC880A Raspberry Pi 3
21 (VDD) 2 (+5V)
22 (GND) 6 (GND)
14 (SPI_CLOCK) 23 (SPI0_CLOCK)
15 (SPI_MISO) 21 (SPI0_MISO)
16 (SPI_MOSI) 19 (SPI0_MOSI)
13 (Reset) 11 (GPIO_17))
17 (SPI_NSS) 24 (SPI0_CE0)
Il ne faut également pas oublier de brancher l’antenne à votre concentrateur. Vous trou-
verez en annexe des images représentant les Pinout (brochages) du concentrateur et du
Raspberry.
Si vous utilisez Linux, il suffit d’entrer dans le terminal la commande : ssh pi@192.168.1.X
Si vous utilisez Windows, il faut exécuter putty.exe. Une fenêtre s’ouvrira alors, dans
laquelle il faudra mettre le type de connection en SSH et entrer l’adresse IP du Raspberry
dans la case "Host Name".
12
Il est maintenant temps d’entrer votre nom d’utilisateur et votre mot de passe. Par défaut
l’ID est pi et le mot de passe raspberry.
La connexion est donc établi entre votre Raspberry et votre PC, et vous pouvez donc
utiliser votre terminal dédié pour controler la Gateway.
Déplacez vous ensuite vers le dossier _spi_stress puis entrez la commande : sudo ./util_spi_stress.
Si ce n’est pas le cas, le problème doit sûrement de la communication SPI. Vous devez
donc revérifier que vous avez bien réalisé les étapes précédentes ou bien remplacer le pin
de reset par un autre pin de GPIO (ne pas oublier de modifier le numéro de pin lors de la
réinitialisation du concentrateur).
Vous pouvez arrêter le défilement des lignes sur le terminal, lorsque la communication
est établie.
La Gateway est maintenant à l’écoute. Laissez le dernier programme lancé s’exécuter pour
la suite du TP.
13
4 Configurer l’Application Server
Notre Application Server est ,dans ce TP, le serveur en ligne Chirp Stack.
Nous allons donc lui envoyer les données de notre capteur de température.
Une fenêtre de connexion devrait alors s’ouvrir. L’ID et le mot de passe sont : admin.
Une nouvelle fenêtre va alors s’ouvrir. Vous devez y indiqué ID précédemment relevée de
votre Gateway, lui donner un nom ainsi qu’une description. Il faut également cocher "net-
work server", "service profile" et "gateway profile" mais ne pas sélectionner pas "gateway
discovery enabled". Après avoir efffectuer cela vous pouvez appuyer sur "Create Gateway".
Vous pouvez vérifier que la Gateway est connectée en visitant l’onglet Gateway puis Last
seen.
Vous devez voir écrit “en activité” ou “en activité il y a quelques minutes”.
14
5 Annexe
5.1 Première partie : capteur de température et d’humidité
15
Figure 23 – Réception des données
16
5.2 Le concentrateur et la Raspberry Pi
17
Figure 26 – Pinout du concentrateur IC880A
18