Vous êtes sur la page 1sur 10

Introduction

Internet connait aujourd’hui une extension inédite avec le développement des objets
connectés. Jusqu’alors, internet se concevait comme la capacité des personnes de
communiquer à tout moment et en tout lieu ; avec les objets connectés, le monde physique
peut désormais communiquer, que ce soit pour des relations de personnes à personnes, de
personnes à objets ou d’objets à objets. Partant, les importantes potentialités offertes par ce
qu’il a été convenu d’appeler « l’internet des objets » (IoT, Internet of Things) sont encore,
pour la plupart, à explorer. Il semble que nous sommes à l’aube d’une nouvelle révolution
technologique, ou la seule limite est celle de notre capacité d’imagination.
Les objets connectés peuvent être des capteurs qui communiquent les données récoltées vers
une application métier. Cela peut également être des actionneurs qui obéissent à un ordre
envoyé depuis cette même application métier. Pour la transmission des données, on peut
utiliser des réseaux spécialement conçus pour l’IoT (LoRa, Sigfox, etc.) ou bien les réseaux
classiques (cellulaire, filaire, etc.). L’IoT représente ainsi un moyen de faciliter l’accès aux
données.
L’innovation dans l’IoT se trouve à chacun des niveaux de l’architecture d’une solution de
remontée des données. Elle va du capteur jusqu’au moyen de visualisation utilisé en passant
par les réseaux de transmission et les bases de données dédiées à ce type de services
Présentation du projet
Dans ce projet, nous avons comme mission de mettre en place un objet qui capte un certain
nombre d’informations et les envoie vers une Gateway. Cette Gateway doit être connectée à
un module radio inAIR9(SX1276) pour permettre l’envoi des données vers le Cloud . Ces
informations ou données devraient également pouvoir être récupérées et afficher au niveau
des applications.
Le Matériels utilisés :
L’Arduino Nano :
L’arduino est un environnement de développement intégré fonctionnant sur divers systèmes
d’exploitation (Windows, Mac OS, Gnu/Linux) qui permet d'éditer le programme sur un
ordinateur et de le transférer via le port USB.
L'Arduino Nano est un petit, complet et convivial tableau basé sur l’ATmega328
(Arduino Nano 3.x). Il a plus ou moins les mêmes fonctionnalités que l'Arduino
Duemilanove, mais dans un package différent. Il ne manque que la prise
d'alimentation CC et fonctionne avec un câble USB Mini-B au lieu d'un câble
standard.
La Nano 3.0 peut se programmer avec le logiciel Arduino. Le contrôleur ATMega328
contient un bootloader qui permet de modifier le programme sans passer par un
programmateur. Le logiciel est téléchargeable gratuitement.

Caractéristiques Techniques :

- alimentation:
via port USB ou
5 Vcc régulée sur broche 27 ou
6 à 20 V non régulée sur broche 30
- microprocesseur: ATMega328
- mémoire flash: 32 kB
- mémoire SRAM: 2 kB
- mémoire EEPROM: 1 kB
- 14 broches d'E/S dont 6 PWM
- 8 entrées analogiques 10 bits
- intensité par E/S: 40 mA
- cadencement: 16 MHz
- bus série, I2C et SPI
- gestion des interruptions
- fiche USB: mini-USB B
- boîtier DIL30
- dimensions: 45 x 18 x 18 mm
Version d'origine fabriquée en Italie.

câblage:

Capteur de fumée (MQ-2) :


Présentation :

Le capteur de gaz MQ2 est utilisé pour la détection des fuites de gaz pour les équipements
des marches de grandes consommations et industriel. Ce capteur est conçu pour détecter le
LPG , butane, propane , méthane, alcool, hydrogène et la fumee.il a une très grande
sensibilités peut d’ailleurs être ajustée par potentiomètre..

Caractéristiques Techniques

Dimensions du produit: 32 x 20 x 15 (L x P x H)
puce: LM393, zymq-2 capteurs de gaz
Tension de fonctionnement: 5V DC
la détection de gaz: gaz combustibles, vapeurs
concentration détectable: 300-10000ppm (gaz inflammable)

câblage:

1, VCC: alimentation positive (5v)


2, GND: alimentation est négatif
3 AO: sortie de signal analogique

Capteur d’alcool (MQ-3)

Présentation
Ce module intègre un capteur MQ303A (permettant de détecter la concentration
d'alcool) qu'il vous sera possible de raccorder à une platine Arduino, Raspberry, BeagleBone
Black, mbed, PHPoC ou CB210 au travers d’une platine "Shield" intermédiaire.
Ce capteur permet de mesurer la concentration présente dans l'air. Il est souvent utilisé pour
réaliser des ethymolètre.Simple à utiliser, il ne nécessite qu'une résistance de charge de 200
kohm pour être utilisé avec une carte Arduino.
Caractéristique Technique
Circuit de 5 V en CC ou en CA
Nécessite une tension de chauffage
Température de fonctionnement : -10 à 70 °C
Consommation du chauffage : inférieure à 750 mW
Cablage

Capteur de niveau d’eau (Water Sensor)

Présentation

Ce module didactique délivre une tension analogique en fonction du niveau d'eau grâce à ses
pistes imprimées. Le capteur délivre ''700'' lorsque le niveau est au maximum et ''450'' lorsque
le niveau est au plus bas.
Applications: capteur de pluie, détecteur de fuites, capteur de niveau.

Caractéristiques Techniques

Alimentation: 5 Vcc
Sorties: Signal, Vcc, Gnd
Dimensions: 60 x 21 x 7 mm

Cablage

Logiciels utilisés
Grafana
Node-red

Architecture

Mise en place de la Gateway

Il existe de nombreuses passerelles LoRa avancées et bien intégrées capables de recevoir


simultanément sur plusieurs canaux et mettant en œuvre la spécification LoRa WAN. Ces
passerelles sont basées sur le concentrateur de bande de base SX1301. Notre passerelle LoRa
peut être qualifiée de "canal unique" car elle utilise le inAIR9 (SX1276), à la manière d'un
terminal.
Pour la mise en place du Single Channel Gateway, nous avons utilisé le code ESP32 LoRa 1-
CH Gateway créé par Things4U qui est, à ce jour, la meilleure solution. Il est facile à
installer, offre de nombreuses options de configuration et fournit même une interface Web
pour gérer la passerelle et voir les paquets de données qu’elle reçoit.
Il faut premièrement Télécharger ou copier le référentiel, puis placer le contenu du dossier
ESP-sc-gway dans le dossier src et le contenu du dossier libraries dans le dossier lib.
Pour commencer, il faut:

1.
Décompresser le code source :

On décompresse le code source, y compris les bibliothèques, dans un dossier séparé.

2. Connecter la Gateway :

On connecte la Gateway à un port série de notre ordinateur et configure ce port dans


l'EDI. On allume le moniteur série pour la passerelle. Comme la puce Wemos ne
contient aucun code, on peut ne rien voir sur le moniteur série.

3. Modifier le fichier _loraModem.h :

On modifie la zone "struct pins" et le configure pour une carte de circuit imprimé
classique (= Comresult) ou le configure pour une carte de circuit imprimé Hallard
dans laquelle les broches dio0, dio1 et dio2 sont partagées. Vous devez vérifier cette
section.

4. Editer le fichier ESP-sc-gway.h :

On édite le fichier ESP-sc-gway.h et on l’adapte la structure "wpas". On s’assure que


la première ligne de cette structure reste vide et met le SSID et le mot de passe de
notre routeur sur la deuxième ligne du tableau.

5. Compiler le code:

On compile le code et charge l'exécutable via USB sur la passerelle. Si tout est
correct, on devra voir la passerelle démarrer sur le moniteur série.

6. Récupérer l’adresse IP :

On note l'adresse IP que le périphérique reçoit de votre routeur. Utilisez cette adresse
IP dans un navigateur de votre ordinateur pour vous connecter à la passerelle à l'aide
du navigateur.

A ce stade notre Gateway devrait être en cours d'exécution. On utilise la page Web
pour définir "debug" sur 1 et on devrait pouvoir voir les paquets arriver sur le
moniteur série.

Configuration de la Gateway:

Il existe deux façons de modifier la configuration de la Single Channel Gateway:

1. Changer le fichier ESP-sc-gway.h à la compilation


2. Exécutez l’interface Web http: // pour modifier les paramètres au moment voulu.
On va utiliser la première.

Modification du fichier ESP-sc-gway.h

Le fichier ESP-sc-gway.h contient tous les paramètres configurables par l'utilisateur. Tous
ont leurs définitions définies dans des instructions #define. En général, définir un #define à 1
activera la fonction et un réglage à 0 le désactivera.

Déboguer

L'utilisateur peut définir la valeur initiale du paramètre DEBUG. La définition de ce


paramètre déterminera également certains paramètres du serveur Web.

#define DEBUG 1

RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR

RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR

Réglage du facteur de propagation

Définissez le facteur _SPREADING sur la valeur souhaitée de SF7, SF8 - SF12. Veuillez
noter que cette valeur est étroitement liée à la valeur utilisée pour _CAD. Si _CAD est activé,
la passerelle n'utilise pas la valeur _SPREADING car tous les facteurs de lecture sont activés.

Détection d'activité de canal

La détection d'activité de canal (CAD) est une fonction de la puce LoRa RFM95 permettant
de détecter les messages entrants (activité). Ces messages entrants peuvent arriver sur l'un des
facteurs de propagation bien connus SF7-SF12. En activant la CAO, la passerelle peut
recevoir des messages de n’importe quel facteur de propagation.

En réalité, il est utilisé en fonctionnement normal pour indiquer au récepteur qu'un autre
signal utilise déjà le canal.

#define _CAD 1

Mises à jour par liaison radio (OTA)

À partir de la version 4.0.6, la passerelle permet la mise à jour sans fil si le paramètre
A_OTA est activé. Le logiciel hertzien nécessite le réglage unique de la version 4.0.6 via
USB sur la passerelle, après quoi le logiciel est (par défaut) activé pour utilisation.

La première version ne prend en charge que la fonction OTA utilisant l'EDI, ce qui signifie
en pratique que l'EDI doit se trouver sur le même segment de réseau que la

#define A_OTA 1
Activer le serveur Web

Ce paramètre active le serveur Web. Bien que le serveur Web lui-même utilise beaucoup de
mémoire, il facilite grandement la configuration de la passerelle au moment de l’exécution et
examine son comportement. Il fournit également des statistiques sur les derniers messages
reçus. Le paramètre A_REFRESH définit si le serveur Web doit être renouvelé toutes les X
secondes.

#define A_SERVER 1 // Définit


le serveur Web local uniquement si cette définition est définie #define A_REFRESH 0 // Le
serveur Web sera-t-il actualisé ou non?
#define A_SERVERPORT 80 // port du serveur Web local
#define A_MAXBUFSIZE 192 // Doit être supérieur à 128, mais suffisamment petit pour
fonctionner

Le paramètre A_REFRESH détermine la fréquence d'actualisation du serveur Web.

Comportement strict de LoRa

Pour que la passerelle envoie des messages sur la liaison descendante sur le facteur
d'étalement prédéfini et sur la fréquence par défaut, vous devez définir le paramètre
_STRICT_1Ch sur 1. Notez que s'il n'est pas défini sur 1, la passerelle répond aux demandes
de liaison descendante avec la fréquence et le facteur de propagation définis par le serveur
principal. Et pour le moment, TTN répond aux messages de liaison descendante pour SF9-
SF12 dans l'intervalle de temps RX2 et avec une fréquence de 869,525 MHz et sur SF12
(selon le standard LoRa lors de l'envoi dans l'intervalle de temps RX2).

#define _STRICT_1CH 0

Il est conseillé de ne pas modifier le réglage par défaut de ce paramètre.

Activer le panneau OLED

En configurant OLED, vous configurez le système pour qu’il fonctionne avec les panneaux
OLED sur I2C. Certains panneaux fonctionnent à la fois par SPI et I2C, où I2c est le
solwer. Cependant, étant donné que SPI est utilisé pour la communication émetteur-récepteur
RFM95, vous ne pouvez pas vous en servir en utilisant l’un d’eux, car ils ne fonctionneront
pas avec ce logiciel. Choisissez plutôt une solution OLED qui fonctionne sur I2C.

#define OLED 1

Configuration du serveur TTN

La passerelle permet de se connecter à 2 serveurs en même temps (comme la plupart des


passerelles LoRa le font par BTW). Vous devez vous connecter à au moins un routeur LoRa
standard, au cas où vous utiliseriez le réseau (Things Network), assurez-vous de définir:
Utilisation de la passerelle en tant que nœud de capteur

Il est possible d'utiliser la passerelle en tant que nœud. De cette façon, les valeurs du capteur
local / interne sont rapportées. Il s’agit d’une fonction gourmande en ressources processeur et
mémoire car la création d’un message de capteur implique des fonctions EAS et CMAC.

Se connecter au WiFi avec WiFiManager

Le moyen le plus simple de configurer la passerelle sur le WiFi consiste à utiliser la fonction
WiFimanager. Cette fonction fonctionne hors de la boîte. WiFiManager mettra la passerelle
en mode point d'accès afin que vous puissiez vous y connecter en tant que point d'accès WiFi.

Serveur Web

Le serveur Web intégré peut être utilisé pour afficher des informations sur l'état et le
débogage. De plus, le serveur Web permet à l'utilisateur de modifier certains paramètres au
moment de l'exécution, tels que le niveau de débogage ou d'activer et de désactiver la
fonction de CAO. Vous pouvez y accéder à l’URL suivante: http: //: 80 où est l’IP donnée par
le routeur à l’ESP8266 au démarrage. Il s’agit probablement de 192.168.1.XX. Le serveur
Web affiche divers paramètres de configuration et fournit des fonctions permettant de définir
des paramètres.

Les paramètres suivants peuvent être définis à l'aide du serveur Web.

• Niveau de débogage (0-4)


• Mode CAD activé ou désactivé (mode STD)
• Activer et désactiver le saut de fréquence (régler sur OFF)
• Lorsque la fréquence est désactivée: sélectionnez la fréquence avec laquelle la
passerelle fonctionnera. REMARQUE: le saut de fréquence est expérimental et ne
fonctionne pas correctement.
• Lorsque le mode CAD est désactivé: sélectionnez le facteur d’épandage (SF) avec
lequel la passerelle fonctionnera

Le résultat
Conclusion

Ce projet d’Arduino a été pour nous une occasion de développer intégralement une solution
IoT. Nous avons mis la main dans la patte en manipulant toutes les composantes du réseau
des objets, de la collecte des données par les capteurs à leur visualisation au niveau des
applications, en passant par la Gateway et le Cloud.
Notre premier obstacle a été la définition et la configuration de la Gateway. Cela nous a pris
beaucoup de temps. Après l’avoir franchi nous nous sommes confrontés au problème de
récupération des données au niveau des applications. Mais finalement nous y sommes
parvenus en modifiant notre code.

Vous aimerez peut-être aussi