WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Station météorologique sur arduino


par Raphaël BOURGEAY
Université d'Aix-Marseille - DUT Réseaux et Télécommunications 2020
  

Disponible en mode multipage

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

Institut Universitaire de Technologie,
Aix-Marseille Université

MEMOIRE

Diplôme Universitaire de Technologie
Spécialité Réseaux et Télécommunications

Etude et réalisation d'une station météorologique

sur Arduino

Raphaël BOURGEAY

2020

Responsable académique : Anouch HOVSEPIAN

DUT R&T - Mémoire 2020 - BOURGEAY Raphaël

Remerciements

Je tiens à remercier toutes les personnes qui ont contribué à la réalisation de mon
mémoire et qui m'ont aidé à la rédaction.

Je voudrais dans un premier temps remercier, mon directeur de mémoire Mme Anouch
HOVSEPIAN, directrice des études de 2ème année et professeure d'électronique,
physique, télécoms et mathématiques à l'IUT Réseaux et Télécommunications de
l'Université d'Aix-Marseille, pour sa patience, sa disponibilité et surtout ses judicieux
conseils, qui ont contribué à alimenter ma réflexion.

Je désire aussi remercier les professeurs de l'université d'Aix-Marseille, qui m'ont
fourni les outils nécessaires à la réussite de mes études universitaires.

À tous ces intervenants, je présente mes remerciements, mon respect et ma gratitude.

DUT R&T - Mémoire 2020 - BOURGEAY Raphaël

Résumé

Notre travail a pour objectif de proposer une solution matérielle et logicielle intégrée, nous adoptons la technologie d'IoT (Internet of Things) pour créer, fusionner du matériel et différents périphériques connectés pour développer une station météorologie entièrement connectée grâce à un microcontrôleur Arduino qui enverra les données captées ainsi qu'un nano-ordinateur Raspberry qui traitera ces données reçues pour les exploiter sous forme graphique.

La partie matérielle consiste à proposer et réaliser un système de capteurs en utilisant un réseau sans fil Wi-Fi (Wireless Fidelity) pour équiper la station. La partie logicielle consiste à implémenter une application IoT, sous une plateforme de gestion d'IoT pour le stockage, l'analyse et la visualisation des données, pour contrôler et recevoir des données à partir du système d'IoT à distance et en temps réel sur une page web (World Wide Web). La solution proposée utilise la plateforme Mosquitto (serveur MQTT Open Source) ainsi que quelques protocoles de communications dédiés aux systèmes d'IoT tels que MQTT (Message Queuing Telemetry Transport) et le Wi-Fi. Nous visons cette catégorie de station météorologique « maison » car le système de cloud mis en place par Arduino nous est complètement impénétrable, c'est-à-dire que l'on ne sait pas si nos données sont utilisées dans un but statistique voire commercial. De plus, les capacités sont limitées comme : 5 capteurs/actionneurs maximum utilisables, le temps de traitement est limité à 200 secondes par jour (environ 10 téléversements du programme). Le but de notre projet est de fournir un système connecté où les lumières peuvent être pilotées et les capteurs consultés à distance. La solution proposée utilise deux types de capteurs, capteur de luminosité (photorésistance) et un potentiomètre et s'appuie sur deux modes d'éclairage LED (Light-Emitting Diode (diode électroluminescente en français)) : allumé ou éteint.

Ce mémoire présente une méthode de création de cloud sur un serveur personnel et devra être réalisable en TP de quelques heures pour les étudiants.

Mots clés : Internet of Things, station météorologique, protocoles de communication, plateformes de gestion d'IoT, Smart Data.

DUT R&T - Mémoire 2020 - BOURGEAY Raphaël

Abstract

Our work aims to provide an integrated hardware and software solution, we implement IoT (Internet of Things) technology to create, merge hardware and various connected peripherals to develop a fully connected weather station using an Arduino microcontroller that will send the data received and a Raspberry nano computer that will process the data received to exploit it in graphical form.

The hardware part consists of proposing and building a system of sensors using a Wi-Fi (Wireless Fidelity) network to equip the station. The software part consists in implementing an IoT application, under an IoT management platform for data storage, analysis, and visualization, to control and receive data from the IoT system remotely and in real time on a web page. The proposed solution uses the Mosquitto platform (Open Source MQTT server) and some communication protocols dedicated to IoT systems such as MQTT (Message Queuing Telemetry Transport) and Wi-Fi. We are targeting this category of "home-made" weather station because the cloud system set up by Arduino is entirely impenetrable to us, i.e. we do not know whether our data is used for statistical or even commercial purposes. Moreover, the capacities are limited such as: 5 sensors/actuators maximum usable, the processing time is limited to 200 seconds per day (about 10 uploads of the program). The goal of our project is to provide a connected system where the lights can be controlled, and the sensors can be remotely consulted. The proposed solution uses two types of sensors, a brightness sensor and a potentiometer and relies on two LED (Light-Emitting Diode) lighting modes: on or off. This thesis presents a method for creating a cloud on a personal server and should be feasible in a few hours of practical work for the students.

Keywords: Internet of Things, weather station, communication protocols, IoT management platforms, Smart Data.

DUT R&T - Mémoire 2020 - BOURGEAY Raphaël

Table des matières

1 Introduction 1

2 Histoire 3

3 Problématique 4

4 Etat de l'art 4

5 Objets connectés 4

5.1 Liaison à un cloud 4

5.1.1 Le cloud privé 5

5.1.2 Le cloud public 5

5.1.3 Le cloud hybride 6

5.2 Fonctionnement de cloud spécial IoT 6

5.3 Domaines d'application 6

6 Arduino 7

6.1 Présentation, caractéristiques, packs, cartes 7

6.2 Application, langage, broches 9

7 Cloud libre avec MQTT 11

7.1 Historique 11

7.2 Accès aux données avec le modèle pub/sub 12

7.2.1 Evolutivité 13

7.2.2 Sécurité 14

7.2.3 Difficultés 14

7.2.4 Applications 14

7.3 Topics MQTT 14

7.4 Qualité de service 15

7.5 Exploitation de données 16

8 Conception de la station météorologique 17

8.1 Choix des éléments matériels 17

8.1.1 Carte Arduino 17

8.1.2 Capteur de lumière 17

8.1.3 Potentiomètre 18

8.2 Arduino IDE 19

8.3 Configuration routeur internet 19

9 Problèmes rencontrés 20

10 Conclusion générale 21

11 Bibliographie / sources 23

12 Tutoriel 24

DUT R&T - Mémoire 2020 - BOURGEAY Raphaël

DUT R&T - Mémoire 2020 - BOURGEAY Raphaël

DUT R&T - Mémoire 2020 - BOURGEAY Raphaël 1

1 Introduction

Aujourd'hui, l'électronique intervient dans le quotidien de tous, les systèmes sont de plus en plus sophistiqués, petits et puissants.

La météorologie est souvent au coeur de nos discussions, pour certains elle nécessaire à la planification de certaines activités, pour d'autres elle est une passion. Les conditions climatiques changeant sans cesse, la météorologie était considérée comme une science incertaine durant des années. Aujourd'hui, la transmission radio d'informations collectées à tous les endroits du monde (stations, navires et satellites météorologiques) peut fournir des prévisions plus fiables.

Le « Cloud computing » traduit de l'anglais « informatique en nuage » n'est pas une nouvelle technologie, mais une nouvelle méthode informatique, qui contient de nombreuses idées difficiles à maîtriser. En février 2011, le groupe IPSOS (société française de sondage et société internationale de marketing d'opinion) s'est associée à Microsoft pour soulever des questions sur ce problème auprès de plusieurs sociétés. Observation : 82% des TPE-PME (Très Petite Entreprise - Petite et Moyenne Entreprise) ne peuvent pas définir avec précision le concept de cloud computing, et 52% d'entre elles ont déjà utilisé des solutions de type cloud.

De manière générale, on peut assimiler le « Cloud Computing » à un regroupement de ressources informatiques exploitées, à distance et à la demande, par de nombreux clients externes, sous forme de services à la consommation. Les traitements informatiques ne sont donc plus réalisés sur le poste utilisateur ou sur un serveur interne mais déportés dans un centre de données virtuelles maintenues par le prestataire de service Cloud. L'objectif étant de réduire la complexité de l'informatique.

Cette technologie existe dans nos vies et nous émerveillera par la qualité et par la rapidité de son évolution. Elle améliore nos vies grâce à la quantité d'informations accessibles à tous, elle informe tout ce qui se passe dans le monde, elle peut guider les décisions et faciliter la mise à jour. La technologie apporte d'énormes avantages à tout le monde. Ces dernières années, la technologie a réagi dans divers domaines et a inévitablement un impact sur la vie quotidienne. Afin de faciliter la vie et d'éliminer les dilemmes qui entourent les êtres humains, il existe toujours plusieurs technologies pour garantir qu'une de ces technologies existe : l'Internet des objets (IoT). L'Internet des objets représente l'expansion d'Internet aux objets et aux lieux du

DUT R&T - Mémoire 2020 - BOURGEAY Raphaël 2

monde physique. Bien qu'Internet ne dépasse généralement pas le monde électronique, l'Internet connecté représente l'échange d'informations et de données d'appareils dans le monde réel vers Internet.

De nos jours, l'Internet des objets devient un sujet intéressant, qui concerne divers domaines tels que l'agriculture, les soins de santé, les villes intelligentes, l'énergie intelligente, etc. Et a ouvert une nouvelle source d'innovation technologique presque inépuisable, qui est également très précieuse pour de nombreuses industries. La technologie de l'Internet des objets facilite la connexion de divers objets au réseau et le développement d'applications pour contrôler et gérer des objets. Toute la complexité de la tâche de connexion est confiée à la plateforme IoT. Par conséquent, la plate-forme de gestion du système Internet des objets fournit d'autres fonctions, telles que l'analyse, la visualisation et le stockage des données. La définition de la plate-forme IoT varie selon l'auteur. Par exemple, la plate-forme IoT peut être définie, de cette façon : les objets peuvent être connectés au système informatique tout en assurant l'authentification et la sécurité des objets connectés, mais aussi gérer les données et les commandes pour envoyer et recevoir, collecter, visualiser et analyser les données et l'intégrer à d'autres services Web.

DUT R&T - Mémoire 2020 - BOURGEAY Raphaël 3

2 Histoire

Les premières mesures de la température à la surface du globe ont démarré en 1856, lorsque la société météorologique britannique a commencé à rassembler des données de 24 stations réparties dans le monde. Afin de comprendre la température avant cette date, les scientifiques ont développé des méthodes de mesure "indirectes" à partir de données collectées dans le milieu naturel (événements historiques, anneaux annuels, coraux, glace, palynologie).

En utilisant ces techniques "indirectes", les températures peuvent être reconstruites pendant des centaines de milliers d'années, et le thermomètre à air ou thermomètre de Santora Santo Rio (1561-1636) a été le premier appareil à mesurer la température. L'appareil n'a que trois échelles : la température de l'air refroidi par la neige, la température de l'air chauffé par la flamme de la bougie et le point médian.

Début du XVIIIe siècle : Daniel Fahrenheit est l'auteur de la plus ancienne échelle de températures encore en usage aujourd'hui. Il fixe la température du mélange d'eau, de glace, de sel marin et de sel d'ammoniaque à 0 °, fixe la température du mélange d'eau et de glace à 32 ° et fixe la température du corps à 100 ° à l'image d'une personne légèrement fiévreuse.

À la fin du XVIIIe siècle : invente le thermomètre bimétallique et le thermomètre enregistreur à tube de Bourdon qui utilisent la déformation thermique du métal, également appelé enregistreur de température. Un imageur thermique est un instrument de mesure composé de stylet qui peut enregistrer mécaniquement les changements de température sur un graphique.

Aujourd'hui, il existe des stations météorologiques numériques qui peuvent mieux mesurer et signaler des informations afin qu'elles soient faciles à voir et à comprendre. Certaines stations météorologiques peuvent même se connecter à des applications de téléphones intelligents ou à des services en ligne afin que des personnes puissent accéder à leurs informations météorologiques de n'importe où. Les observateurs météorologiques modernes peuvent utiliser ces informations pour gérer leurs jardins, surveiller leurs fermes. Les stations météorologiques numériques ont tendance à être plus précises et plus faciles à utiliser.

DUT R&T - Mémoire 2020 - BOURGEAY Raphaël 4

3 Problématique

Aujourd'hui le monde tourne autour des objets connectés, pour répondre au besoin de l'utilisateur qui cherche à obtenir le bon service au bon moment et au bon endroit, on pense qu'il existe plusieurs défis à la mise en oeuvre réussie de l'IoT. En tant qu'étudiant, notre souci est d'arriver à combiner le monde réel et le monde virtuel, autrement dit, de travailler sur la standardisation de ce nouveau système en développant de nouvelles applications et de nouveaux environnements ainsi que de nouveaux protocoles de communication.

Comment construire une station météorologique en déjouant le système Arduino IoT Cloud ?

4 Etat de l'art

L'IoT et la technologie Web sont les outils majeurs de la nouvelle ère de transformation digitale. À travers l'IoT, nous recherchons le potentiel des nouvelles technologies et leurs impacts dans l'amélioration continue du monde réel. Il est important de dresser un état de l'art retranscrivant les divers travaux déjà réalisés par nos prédécesseurs pour apporter ou même lever le voile sur des solutions qui, de prime abord, ne paraitraient pas aussi évidentes quant à notre problématique. Pour cela, nous développerons cette partie qui apportera des réponses à notre problématique.

5 Objets connectés

5.1 Liaison à un cloud

La connexion au cloud permet des calculs et dispose d'un espace de stockage géré à distance. Les utilisateurs peuvent se connecter via des ordinateurs, des téléphones et des tablettes via des connexions Internet et peuvent accéder directement aux données hébergées sur le serveur. Il existe 3 niveaux de cloud :

DUT R&T - Mémoire 2020 - BOURGEAY Raphaël 5

5.1.1 Le cloud privé

a. Privé interne

L'architecture est gérée par l'entreprise. Le cloud privé interne est utilisé par plusieurs consommateurs d'une seule entreprise propriétaire de l'infrastructure. Il peut également être partagé avec des filiales ou entre elles.

b. Privé externe

Le cloud privé externe suit la même logique que le cloud privé interne. La différence est que l'architecture est hébergée par un fournisseur de services. Il est entièrement propre à l'entreprise et accessible via un réseau sécurisé, un réseau privé virtuel, un VPN (Virtual Private Network) En effet, ces VPN sont gérés directement par l'entreprise via ses services informatiques internes. Ils peuvent également être partagés et le fournisseur sera responsable de la plateforme. Ce modèle devrait apporter les avantages de l'informatique en nuage «publique» (par exemple: réduire les coûts associés à la virtualisation des applications dans le cas d'une infrastructure partagée) sans inconvénients: en mettant l'accent sur les données sur la sécurité, la conformité de la gouvernance d'entreprise, et tout Fiabilité du service fourni.

5.1.2 Le cloud public

Le cloud public est basé sur un modèle de cloud computing standard dans lequel les fournisseurs de services fournissent des ressources, telles que des applications ou du stockage, au public via Internet. Le cloud public peut être gratuit, ou il peut être exploité en fonction du paiement du consommateur. L'avantage de cette architecture est qu'elle est facile à installer et le coût est relativement raisonnable. La charge, l'application et la bande passante des matériaux sont à la charge du fournisseur. De cette façon, le modèle peut offrir une flexibilité et une évolutivité améliorées pour répondre rapidement à la demande. Aucune ressource n'est gaspillée car les clients ne paient que ce qu'ils consomment. Malheureusement, les entreprises s'inquiètent toujours de cette solution, et les participants au cloud computing public devront encore utiliser certains arguments pour convaincre les décideurs informatiques.. Les entreprises de toutes tailles considèrent la sécurité, la confidentialité et l'immaturité comme les principales faiblesses des solutions IaaS (Infrastructure as a Service) ouvertes. Nous trouvons tout type de solution SaaS (Software as a Service) (messagerie en ligne, stockage en ligne, etc.) ou PaaS (Platform as a Service) (Microsoft Windows Azure46) dans le cloud public.

DUT R&T - Mémoire 2020 - BOURGEAY Raphaël 6

5.1.3 Le cloud hybride

Comme nous venons de le voir dans le cloud public, certains problèmes liés à la sécurité des informations peuvent survenir. Ensuite, vous pouvez «hybrider» les clouds privés et publics en utilisant une plateforme hybride. Ce terme n'évoque pas réellement le cloud, car c'est le problème de la coexistence et de la communication des clouds privés et publics. En public, nous expulserons les éléments insensibles; en privé, nous conserverons les données relatives aux activités sensibles de l'entreprise.

5.2 Fonctionnement de cloud spécial IoT

L'IoT permet l'interconnexion des différents objets intelligents via l'Internet. Ainsi, pour son fonctionnement, plusieurs systèmes technologiques sont nécessaires. Citons quelques exemples de ces technologies. « L'IoT désigne diverses solutions techniques (TCP/IP (Transmission Control Protocol/Internet Protocol), technologies mobiles, etc.) qui permettent d'identifier des objets, de capter, stocker, traiter, et transférer des données dans les environnements physiques, mais aussi entre des contextes physiques et des univers virtuels».

5.3 Domaines d'application

Nous voyons que le concept de l'Internet des objets explose, et il y a une demande croissante d'objets intelligents qui nous permettent d'atteindre plus facilement nos objectifs dans notre vie quotidienne. Par conséquent, le champ d'application de l'Internet des objets peut être modifié. L'Internet des objets affectera plusieurs domaines d'application. L'Internet des objets existe non seulement dans notre vie quotidienne, mais aussi dans les services publics fournis par le gouvernement. On peut dire que l'Internet peut être connecté à n'importe quel objet. Par conséquent, les domaines d'application de l'Internet des objets sont divers. Par exemple, l'industrie, la santé, l'éducation et la recherche. Cependant, à l'avenir, il est possible que n'importe qui, à tout moment, puisse trouver le concept de l'Internet des objets. La référence Pessemier a souligné : "L'Internet des objets est constitué de données intelligentes (smart data). S'il est utilisé correctement, il contribuera à résoudre les problèmes d'aujourd'hui, en particulier dans les domaines suivants : aérospatial, aviation, automobile, télécommunications, construction, médical, autonomie pour les personnes handicapées, pharmacie, logistique, gestion de la chaîne d'approvisionnement, fabrication de produits et gestion du cycle de vie, sécurité, sûreté, surveillance environnementale, traçabilité alimentaire, agriculture et élevage. »

DUT R&T - Mémoire 2020 - BOURGEAY Raphaël 7

6 Arduino

6.1 Présentation, caractéristiques, packs, cartes

Le projet Arduino a été lancé par un groupe d'enseignants et d'étudiants l'école de Design d'Interaction d'Ivrea en Italie en 2004-2005.

L'équipe de développement composée de Massimo Banzi, David Cuartuelles, Tom Igoe, Gianluca Martino, David Mellis et Nicholas Zambetti a conçu ce projet et mis en oeuvre une petite carte électronique programmable et un logiciel multiplateforme, que tout le monde peut utiliser dans le but de créer facilement des systèmes électroniques.

Les principaux utilisateurs d'Arduino sont :

· des « bidouilleurs » dont beaucoup ont peu de connaissances en électronique

· des artistes qui ont besoin d'animer leurs oeuvres ou de créer des interactions avec elles

· des étudiants, des lycées et des collèges

Il y a trois types de cartes:

· Les « officielles », qui sont fabriquées en Italie par Smart Projects. À ce jour, dix-sept versions de cartes de type Arduino ont été produites et vendues, y compris la version Arduino MKR (que nous utiliserons), qui est une série de cartes au format simplifié pour l'IoT ; la carte propose plusieurs versions, chaque version et possède différentes fonctions de connexion IoT: Sigfox, LoRa, Wi-Fi, etc.

· Les « compatibles », non fabriqués par Smart Projects, mais entièrement compatibles avec les Arduino officielles telles que celles de STMicroelectronics. La carte Nucleo STM32 basée sur le processeur STM32 utilise l'architecture ARM au lieu de l'architecture Harvard d'Atmel AVR.

· Les « autres », produites par d'autres sociétés et vendues sous différents noms (Freeduino, Seeduino, Femtoduino, etc.).

Les cartes Arduino sont compatibles avec nombres de Shields (cartes d'extension) avec des fonctions diverses qui s'enfichent sur la carte Arduino :

· Relais, commande de moteurs, lecteur carte SD, ...

· Ethernet, WIFI, GSM (Global System for Mobile), GPS (Global Positioning System)...

· Afficheurs LCD (Liquid Crystal Display), Écran TFT (Thin-film transistor), ...

DUT R&T - Mémoire 2020 - BOURGEAY Raphaël 8

Figure 1 : diverses cartes Arduino (source : npoulain.fr)

Figure 2 : divers shields Arduino

Avantages :

Un prix accessible de quarante euros pour la carte seule, soixante-dix euros pour le pack avec les différents capteurs et actionneurs que nous utiliserons dans le cours. Cependant, certaines cartes sont à moins de dix euros, et à une vingtaine d'euros le pack complet.

DUT R&T - Mémoire 2020 - BOURGEAY Raphaël 9

La communauté est très développée et de nombreux forums d'entre-aide sont disponibles en cas de besoin de solutions aux programmes et de bibliothèques...

Un site en anglais arduino.cc et un autre en français arduino.cc où nous trouverons tout de la référence Arduino, le matériel, des exemples d'utilisations, de l'aide pour débuter, des explications sur le logiciel et le matériel...

Une liberté quasi absolue. Elle constitue en elle-même deux choses:

· Le logiciel: gratuit et open source, développé en Java, très simple d'utilisation, disponible sur internet et est compatible sous toutes les plateformes : Windows, Linux et Mac OS (Operating System).

· Le matériel: cartes électroniques dont les schémas sont en libre circulation sur internet.

6.2 Application, langage, broches

Connaissances nécessaires :

· Peu si on utilise des cartes et des modules tout faits, sauf en cas de première expérience.

· En électronique, si l'on veut optimiser ou faire du sur-mesure

· La communauté francophone est très active sur le forum. entraide, (tutoriels, exemples de réalisations ...)

Le logiciel utilisé est l'IDE (Environnement de Développement Intégré) Arduino multi OS, il permet :

· l'édition du programme (langage proche du C, possède de très nombreuses librairies logicielles disponibles)

· la compilation du programme

· le transfert du programme dans la carte via le port USB (Universal Serial Bus)

Le programme principal consiste en deux fonctions (ce sera toujours le cas), dont voici les signatures simples :

· void setup() : est appelée une seule fois, au moment de la mise sous tension de la carte

· void loop() : appelée, comme son nom l'indique, en boucle. Elle est lancée après setup(), et tourne à l'infini (tant que la carte est alimentée en tout cas)

Les principales fonctions de la librairie standard :

·

DUT R&T - Mémoire 2020 - BOURGEAY Raphaël 10

#include <LaLibraireDésirée.h> : permet d'inclure une libraire pour les fonctions non implémentées de base

· Serial.print("message) : affiche le message demandé, très utile pour le repérage des erreurs

· pinMode(pinNumber, mode) : définit le mode de fonctionnement d'un pin, soit INPUT, soit OUTPUT ;

· digitalWrite(pinNumber, value) : si le pin est défini en OUTPUT, cette instruction permet d'écrire HIGH et LOW qui sont des constantes prédéfinies, mais 1 ou 0 fonctionnent aussi ;

· delay(ms) : bloque l'exécution de tout le programme pendant une durée donnée en millisecondes.

· client.subscribe pour la souscription aux différents topics

· client.publish pour l'envoi des mesures au brocker

Toutes ces fonctions, une fois assemblées, permettent par la suite de réaliser tout notre programme pour la construction de la station météorologique.

Il existe trois groupes de broches sur une carte Arduino :

-Les broches analogiques (de A0 à A6) : pour les entrées analogiques

-Les broches numériques (de 2 à 14 (0 et 1 servent à la communication série)) peuvent servir

d'entrée numérique ou de sortie numérique.

-Les broches d'alimentation et référence :

AREF (Analog REFerence) tension de référence pour les broches analogiques

RESET (Réinitialisation) permet de réinitialiser l'Arduino et donc de redémarrer le

programme au début. Pour réinitialiser l'Arduino, il suffit de mettre cette broche à une tension de

0V puis de la repasser à 5V, ou 3,3V selon l'Arduino.

3.3V pour alimenter un circuit externe en 3,3V.

5V pour alimenter des circuits externes en 5V. Si on désire construire sa propre

alimentation 5V, on peut également fournir cette tension à l'Arduino via cette broche.

GND : La masse/terre/ground/0V

VIN (Voltage INput) : pour alimenter l'Arduino via cette broche au lieu d'utiliser la prise

d'alimentation.

DUT R&T - Mémoire 2020 - BOURGEAY Raphaël 11

7 Cloud libre avec MQTT 7.1 Historique

MQTT un protocole basé TCP / IP, qui permet à chaque système abonné / publieur d'échanger jusqu'à 256 Mo de données. L'avantage de ce protocole pour notre application est qu'il ne nécessite pas de réseau haut débit pour assurer la communication des données. Dans notre application, Arduino joue le rôle de publisher et le Raspberry joue le rôle de serveur. Tous ces échanges sont possibles car l'agent (serveur MQTT) est déjà installé sur le serveur. MQTT est un protocole de messagerie ISO-ISO (IEC / PRF 20922) basé sur un modèle de publish/subscribe. Il fonctionne comme un protocole de couche application via le protocole TCP / IP. Il est conçu pour se connecter à des emplacements distants qui nécessitent une «empreinte de code réduite» ou des contraintes de bande passante réseau.

Le modèle de messagerie de publish/subscribe requiert un broker de messages basé sur le port 1883.

MQTT a été inventé en 1999 par Andy Stanford-Clark (IBM (International Business Machines)) et Arlen Nipper (Arcom, maintenant Cirrus Link). Leur cas d'usage était de créer un protocole avec une perte de charge électrique et une bande passante minimales. Ils ont spécifié les objectifs du futur protocole :

· Simple à mettre en oeuvre

· Livraison de données avec qualité de service

· Bande passante légère et efficace

· Maintenance des sessions

· Prise en compte de beaucoup de types de messages comme du binaire ou du JSON (JavaScript Object Notation)

MQTT est un protocole de communication 50 fois plus rapide que le protocole HTTP (HyperText Transfer Protocol). Très léger, particulièrement adapté à la domotique et aux objets connectés. Cela facilite la communication entre les objets connectés (M2M (Machine to Machine)) tout en économisant la batterie.

Ces objectifs restent au coeur de MQTT, et l'attention est passée des systèmes intégrés propriétaires aux cas d'utilisation de l'IoT. La signification correcte des abréviations est souvent source de confusion. La réponse longue d'histoires raconte que l'ancien acronyme signifiait "Transport de télémétrie MQ", tandis que MQ fait référence à « MQ Series», qui est un produit développé par IBM qui prend en charge MQTT. L'accord a été nommé lors de son invention en

DUT R&T - Mémoire 2020 - BOURGEAY Raphaël 12

1999. Souvent, MQTT est incorrectement nommé le protocole de file d'attente. Il n'y a pas de file d'attente dans la solution de file d'attente de messages traditionnelle. Cependant, les messages peuvent être mis en file d'attente dans certaines circonstances. Par conséquent, après avoir utilisé MQTT en interne pendant un certain temps, la version 3.1 a été publiée gratuitement en 2010. À partir de ce moment-là, tout le monde a pu l'implémenter et l'utiliser.

Environ trois ans après la première version, le 29 octobre 2014, MQTT a été normalisé en tant que standard OASIS, qui est une organisation ouverte visant à faire progresser la norme. MQTT 3.1.1 est la dernière version de l'accord et la version 5 de la spécification est publiée depuis le 7 mars 2019

Figure 3 : nombre de recherches dans le mot du terme « MQTT » (source : google trends)

7.2 Accès aux données avec le modèle pub/sub

Figure 4 : modèle publisher/subscriber (source : hivemq.com)

Le modèle publish/subscribe (pub/sub) est une alternative au modèle traditionnel "client/serveur", le client communique directement avec un point de terminaison. Le modèle "Pub/Sub" sépare un client qui envoie un message spécifique (appelé publisher) d'un autre client

(ou plusieurs clients) qui reçoit le message (appelé subscriber). Par conséquent, le publisher et le subscriber ne se connaissent. Le troisième composant, appelé le broker, qui est connu à la fois par le publisher et le subscriber, filtre tous les messages entrants et les distribue en conséquence.

L'élément de base du modèle "pub/sub" est la dissociation des clients publisher et subscriber. Ceux-ci peuvent être distingués de plusieurs manières :

Dissociation spatiale : le publisher et le subscriber n'ont pas besoin de se connaître (adresse IP et port par exemple)

Dissociation temporelle : le publisher et le subscriber n'ont pas besoin de s'exécuter en même temps.

Dissociation de synchronisation : Lors de la publication ou de la réception, le fonctionnement de ces deux éléments ne sera pas interrompu. En résumé, le modèle publish/subscribe peut séparer l'éditeur (publisher) et le destinataire (subscriber) du message. En raison du filtrage des messages seuls certains clients sont susceptibles de recevoir certains messages. Par conséquent, le découplage a trois dimensions : l'espace, le temps et la synchronisation.

7.2.1 Evolutivité

Par rapport à l'approche traditionnelle "pub/sub", l'évolutivité est également fonction du modèle "client/serveur". En fait, les opérations sur l'agent peuvent être fortement parallélisées et traitées par le biais d'événements. De même, les messages mis en cache et leur routage intelligent sont souvent essentiels pour améliorer l'évolutivité. Pour prendre en charge des millions de connexions, il peut être nécessaire de répartir la charge entre des clusters de brokers.

DUT R&T - Mémoire 2020 - BOURGEAY Raphaël 13

Figure 5: Mesure de latence des protocoles de messagerie d'application web IoT

DUT R&T - Mémoire 2020 - BOURGEAY Raphaël 14

7.2.2 Sécurité

Il existe de nombreuses possibilités de sécurisation (mot de passe, authentification par certificats client et serveur, chiffrement SSL/TLS (Secure Sockets Layer/ Transport Layer Security) listes de contrôle d'accès...)

Dans un monde où les objets connectés sont d'importants vecteurs d'attaque, c'est une qualité incontournable.

7.2.3 Difficultés

Quels sont les facteurs qui causent des difficultés dans le modèle pub/sub ?

Premièrement, il faut comprendre à l'avance la structure des données. Dans le cas d'un filtrage par sujet, l'éditeur et l'abonné doivent savoir quels sont les sujets adéquats.

Deuxièmement, en ce qui concerne la messagerie, un publisher ne peut pas supposer que quelqu'un écoute ses messages. Par conséquent, il se peut qu'un message ne soit lu par aucun subscriber.

7.2.4 Applications

De nombreux projets utilisent le protocole MQTT :

Facebook Messenger : Facebook a utilisé des aspects de MQTT dans Facebook Messenger, cependant on ne connaît pas exactement ce qui est utilisé de MQTT dans Facebook Messenger ni pourquoi.

La dernière version du système de contrôle de signalisation de IECC (International Energy Conservation Code) Scalable DeltaRail utilise MQTT pour les communications entre les différentes parties du système et les composants du système de signalisation.

7.3 Topics MQTT

Les subscribers MQTT s'enregistrent auprès du broker sur des topics, des sortes de chemins d'accès à une ressource. Ils demandent ainsi à être notifiés lorsque quelqu'un publie sur ces topics.

Cela peut être un topic de température par exemple : /raph/temperature.

On peut souscrire à un ensemble de topics en utilisant des métacaractères # : raph/#

DUT R&T - Mémoire 2020 - BOURGEAY Raphaël 15

Par exemple, si un client publie sur les topics /raph/température et /raph/humidite, un autre client peut écouter ces deux topics à la fois : /raph/#.

7.4 Qualité de service

La qualité de service (QdS) ou Quality of Service (QoS) est la capacité de transmettre sur un type de trafic donné en fonction de la disponibilité, de la vitesse, du délai de transmission, de la gigue, du taux de perte de paquets, etc. dans de bonnes conditions. En d'autres termes, la QoS permet aux périphériques réseau de différencier le trafic et de lui appliquer différents comportements.

Trois niveaux de qualité de service (QoS) sont définis pour la publication des messages :

QoS 0 : Livraison une fois maximum.

Les messages sont envoyés en fonction de la capacité maximale du réseau TCP/IP sous-jacent. Aucune réponse n'est attendue. Aucune sémantique de relance n'est définie dans le protocole. Par conséquent, le message n'atteindra pas du tout l'agent de destination, ni n'arrivera qu'une seule fois. Le niveau QoS 0 est également appelé fire and forget.

Figure 6 : représentation de la QoS 0 (source : hivemq.com)

QoS 1 : Livraison au moins une fois.

L'arrivée d'un message QoS 1 au broker est reconnue. Si un lien identifiable ou une unité d'envoi échoue, ou si aucun message de confirmation n'est reçu dans un certain laps de temps, l'expéditeur envoie à nouveau une copie du message.

Par conséquent, le message arrivera certainement, mais il peut effectuer cette opération plusieurs fois.

DUT R&T - Mémoire 2020 - BOURGEAY Raphaël 16

Figure 7 : représentation de la QoS 1 (source : hivemq.com)

QoS 2 : Livraison exactement une fois.

Pour le niveau QoS 2, d'autres flux de protocoles que QoS 1 seront utilisés afin que le message ne soit pas envoyé de manière répétée à l'application réceptrice. Il s'agit du plus haut niveau de service utilisé lors de la répétition inappropriée de messages. Cela aura un impact sur le trafic réseau, mais étant donné l'importance du contenu du message, cet impact est généralement acceptable. La qualité de service peut être sélectionnée message par message, ce qui permet la libération de messages secondaires avec le niveau de QoS 0 et la distribution de messages importants avec QoS 2.

Ces niveaux sont atteints grâce à d'autres échanges entre l'expéditeur et le destinataire, et plus la qualité demandée est élevée, plus les échanges sont nécessaires pour vérifier la publication comme indiqué. Pour tous les niveaux supérieurs à zéro, l'identifiant est associé au message pour lui permettre d'être suivi, MQTT offre la possibilité d'attendre jusqu'à 65535 messages (l'identifiant de message réserve 16 bits)

Figure 8 : représentation de la QoS 1 (source : hivemq.com)

7.5 Exploitation de données

Node-RED est un langage de programmation graphique pour développer des objets connectés en combinant des blocs fonctionnels. Node-RED est un projet open source gratuit pris en charge par IBM. Node-RED est un programme qui fonctionne en liant des fonctions représentées sous forme de briques. Le flux de données est transmis d'un processus à un autre (d'une fonction à une

DUT R&T - Mémoire 2020 - BOURGEAY Raphaël 17

autre). Les paramètres fournis par certaines fonctions ne doivent être définis qu'à l'aide d'une liste ou d'un champ de sélection. Il existe des centaines de plugins dans tous les domaines permettant d'enregistrer les données dans une base de données (MySQL (My Structured Query Language), MongoDB (Mongo Data Base)...), de contrôler les entrées/sorties Arduino ou Raspberry (ajouter une interface graphique pour tracer des graphiques, afficher des jauges, commander un relai à l'aide d'un bouton...)

8 Conception de la station météorologique 8.1 Choix des éléments matériels

8.1.1 Carte Arduino

Le choix de la carte Arduino MKR1000 a été un choix, car elle possède tout ce dont on a besoin pour réaliser ce que l'on souhaite ici. Le module Wi-Fi intégré est ce qu'il y a de plus important, car une station météorologique est rarement connectée par câble, et que cela prend beaucoup de place.

Figure 9 : carte Arduino MKR1000 (source : reichelt elektronik)

8.1.2 Capteur de lumière

Nous utiliserons un LDR (Light Dependent Resistor) qui est une photorésistance, la résistance du capteur dépend de la quantité de lumière reçue. La variation de la lumière provoque une variation de la résistance.

Nous savons que le capteur de soleil est une résistance variable, donc nous pouvons convertir cette résistance en une tension.

DUT R&T - Mémoire 2020 - BOURGEAY Raphaël 18

Figure 10 : capture d'écran réalisée sur Tinkercad

Caractéristiques techniques :

· Resistance de 50ohm à 2Mohm

· I[lux] = 10000 / (R[kÙ]*10) A (1.2)

· Tension maximale 320V

· Courant maximal 75mA

Figure 11 : photorésistance (source : alibaba)

8.1.3 Potentiomètre

Le potentiomètre sera ici utilisé car il est un capteur, qui peut varier comme on le désire. Il est composé d'une entrée, d'une sortie et d'une masse

Figure 12 : branchement d'un potentiomètre réalisé sur Tinkercad

DUT R&T - Mémoire 2020 - BOURGEAY Raphaël 19

8.2 Arduino IDE

Dans ce projet, nous allons utiliser le logiciel Arduino IDE pour développer le programme qui contrôle le circuit électronique de la station météorologique. Ce programme est exécuté sur le microcontrôleur.

L'IDE Arduino permet :

· d'éditer du code.

· de compiler ce code dans le langage de l'Arduino.

· de communiquer avec la carte Arduino grâce au terminal.

Figure 13 : capture d'écran du logiciel

8.3 Configuration routeur internet

Cette configuration est très importante car elle permet aux périphériques externes (ordinateurs, modules GPRS... ) d'accéder au serveur web et au serveur TCP/IP.

Pour cela, nous allons ouvrir trois ports :

· Un pour le protocole FTP (File Transfert Protocol), pour contrôler le serveur à distance

· Un pour ouvrir la page web du port 1880

· Un pour le broker, qui réceptionne les données sur le port 1883

Pour ouvrir un port, il faut aller dans les paramètres de la Box internet, puis aller dans les paramètres NAT(Network Address Translation) où nous créons des nouvelles règles.

L'image suivante montre les ports ouverts dans le routeur.

DUT R&T - Mémoire 2020 - BOURGEAY Raphaël 20

Figure 14 : capture d'écran de l'ouverture des ports du routeur

Remarque :

Il est préférable de choisir un autre port que celui de base pour le port externe, cela complique l'accès rapide aux ports internes pour les personnes mal intentionnées.

9 Problèmes rencontrés

Durant cette période exceptionnelle, il n'aura pas été très aisé de réaliser ce projet, cela est dû à certains problèmes comme :

· La livraison tardive du pack

· L'IUT ayant été fermé, la communication directe avec les professeurs était restreinte

Dans la réalisation du circuit, il y a aussi eu un problème comme suit :

· Le thermomètre ne fonctionne pas (semble être brûlé)

Pour résoudre ce problème, il a donc fallu utiliser un potentiomètre pour combler ce défaut.

DUT R&T - Mémoire 2020 - BOURGEAY Raphaël 21

10 Conclusion générale

Un travail soutenu donne toujours de bons résultats. Cela nous satisfait car nous avons acquis une richesse de connaissances et de compétences en programmation logicielle et en conception matérielle.

Ce projet nous a permis de toucher plusieurs outils de développement, tels que

· Tinkercad pour la simulation de notre circuit

· Arduino IDE pour la programmation de notre microcontrôleur

Le côté pratique de ce projet nous a aidé à améliorer notre niveau en appliquant nos connaissances théoriques dans sa réalisation.

La plate-forme développée pour ce projet ressemble tous les unités techniques nécessaires pour mettre en place un système autonome, elles peuvent aussi être appliquées sur tout autre projet qui doit être contrôlé à distance comme les exploitations agricoles, les entreprises de pétrole et de gaz....

La technologie Wi-Fi permet d'envoyer et recevoir des données sans fil via un routeur à travers le réseau internet, nous avons bénéficié de cette technologie pour accéder à notre système à partir de n'importe quel endroit au monde et cette technologie peut être facilement intégrée dans le domaine industriel.

En outre, la technologie décrite ci-dessus nous amène à apprendre d'autres technologies comme les serveurs TCP/IP, les serveurs Web qui permettent d'accéder, d'afficher et de contrôler les systèmes à partir de n'importe quel endroit.

La combinaison des informations discutées nous a aidés à développer la plate-forme météorologique, mais nous n'arrêterons pas notre projet à ce point et pour la poursuite des travaux, nous proposons les améliorations suivantes:

· Optimiser la consommation d'énergie dans le circuit.

· Modifier le circuit électronique pour accepter des nouveaux capteurs sans modifier le système.

· Remplacez l'alimentation USB par une alimentation sur pile.

· Remplacez le serveur TCP/IP par des requêtes HTTP Post.

· Améliorer les rapports générés par l'application Web.

· Mise en place d'un système de caméra

DUT R&T - Mémoire 2020 - BOURGEAY Raphaël 22

DUT R&T - Mémoire 2020 - BOURGEAY Raphaël 23

11 Bibliographie / sources

Ouvrage

BENGHOZI, Pierre-Jean et al. L'internet des objets : quels enjeux pour l'Europe ? Les Editions de la MSH, 2009. 170p.

Codes

https://github.com/256dpi/arduino-mqtt

Article

GUILLEMIN, Patrick État de l'art sur l'Internet des Objets en Europe - L'IdO (IoT) en Europe. Innovation | Innovations technologiques. Aout 2018, Réf : TE8001V1. 20p

Document de thèse

GAILLARD, Guillaume. Opérer les réseaux de l'Internet des Objets à l'aide de contrats de qualité de service (Service Level Agreements), Thèse de doctorat : Lyon : INSA : 2016. 161p

Site web

https://www.hivemq.com/ https://www.github.com

Page web

https://hackernoon.com/a-detailed-guide-to-the-world-of-mqtt-bo1d63cay http://www.steves-internet-guide.com/mosquitto_pub-sub-clients/ https://blog.groupe-sii.com/le-protocole-mqtt-dans-liot/

Fichier en ligne

GUBBI, et al. Internet of Things (IoT): A vision, architectural elements, and future directions [en ligne], IoT Group. [Consulté le 22/06/2020] http://www.parkjonghyuk.net/lecture/2014-2nd-lecture/ubiquitous/salahe.pdf

Lily Trible, Internet of Things [consulté le 29/06/2020]

https://www.mindmeister.com/fr/1199107014/internet-of-things?fullscreen=1

Documentation

http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html

DUT R&T - Mémoire 2020 - BOURGEAY Raphaël 24

12 Tutoriel

Ce premier tutoriel utilise le IoT cloud d'Arduino, tout d'abord, il vous faudra vous rendre à ce lien : https://create.arduino.cc/iot/ vous devrez créer un compte et vous n'aurez plus qu'à suivre les étapes pour l'enregistrement de la carte

Figure T1 : Montage sur la Breadboard / Figure T2 : Montage général

Par la suite vous arriverez sur une page comme celle-ci, où il ne restera plus qu'à ajouter les objets, pour les permissions, vous utiliserez RO pour un capteur et R&W pour un actionneur :

Figure T3 : Propriétés

Une fois les propriétés renseignées, une bonne partie du code se génère.

Code.ino

#define LED_PIN A2 #define LED_PIN2 A3

#define POTENTIOMETER_PIN A4

#define THERMOMETRE A5

#define PHOTOR A6

#include "thingProperties.h"

void setup() {

// Initialize serial and wait for port to open:

pinMode (LED_PIN, OUTPUT);

pinMode (LED_PIN2, OUTPUT);

Serial.begin(9600);

delay(1500);

initProperties();

ArduinoCloud.begin(ArduinoIoTPreferredConnection);

setDebugMessageLevel(2);

ArduinoCloud.printDebugInfo();

}

void loop() {

ArduinoCloud.update();

int potence = analogRead(POTENTIOMETER_PIN); potentio = map(potence, 0, 1023, 0, 1000);

int photores = analogRead(PHOTOR); resistancephoto = map(photores, 0, 1023, 0, 1000);

int thermo = analogRead(THERMOMETRE);

float temperature_celcius = thermo * (5.0 / 1023.0 * 100.0); thermometre = map(temperature_celcius, 0, 60, 0, 1); }

void onThingChange() {

digitalWrite(LED_PIN, thing); Serial.print("The thing is ");

if(thing){

Serial.println("ON");

}else {

Serial.println("OFF");

}

}

void onThing2Change() {

digitalWrite(LED_PIN2, thing2);

Serial.print("The thing is ");

if(thing2){

Serial.println("ON");

}

else {

Serial.println("OFF");

}

}

DUT R&T - Mémoire 2020 - BOURGEAY Raphaël 25

thingProperties.h

#include <ArduinoIoTCloud.h>

#include <Arduino_ConnectionHandler.h>

const char THING_ID[] = "52b35df3-e5c1-4e5d-932f-c8f20d9024ce";

const char SSID[] = SECRET_SSID; // Network SSID (name)

const char PASS[] = SECRET_PASS; // Network password (use for WPA, or use as key for WEP)

void onThingChange(); void onThing2Change();

CloudTemperature thermometre;

int potentio;

int resistancephoto;

bool thing;

bool thing2;

void initProperties(){

ArduinoCloud.setThingId(THING_ID);

ArduinoCloud.addProperty(thermometre, READ, ON_CHANGE, NULL); ArduinoCloud.addProperty(potentio, READ, ON_CHANGE, NULL, 10); ArduinoCloud.addProperty(resistancephoto, READ, ON_CHANGE, NULL, 10);

ArduinoCloud.addProperty(thing, READWRITE, ON_CHANGE, onThingChange);

ArduinoCloud.addProperty(thing2, READWRITE, ON_CHANGE, onThing2Change);

}

WiFiConnectionHandler ArduinoIoTPreferredConnection(SSID, PASS);

DUT R&T - Mémoire 2020 - BOURGEAY Raphaël 26

Figure T4 : dashboard illustrant une journée (soleil, lumières éteintes)

Figure T4 : dashboard illustrant la nuit (lune, lumières allumées

DUT R&T - Mémoire 2020 - BOURGEAY Raphaël 27

Il suffit ensuite de créer le dashboard avec les elements à selectionner.

Figure T6 : installation de mosquitto

Figure T7 : installation de mosquitto-clients

Figure T8 : installation de paho-mqtt

Figure T5 : mise à jour des paquets

DUT R&T - Mémoire 2020 - BOURGEAY Raphaël 28

Figure T10 : modification du code pour la sécurisation

Figure T9 : test de l'envoi de données

DUT R&T - Mémoire 2020 - BOURGEAY Raphaël 29

Figure T11 : création d'un mot de passe : ici « raph »

Figure T12 : test de l'envoi de données avec sécurité

Figure T13 : installation de Node-Red

Figure T14 : installation du paquet node-red-admin (pour avoir un mot de passe sur l'interface)

Figure T15 : génération d'un mot de passe crypté pour Node-Red (ici « raph »)

DUT R&T - Mémoire 2020 - BOURGEAY Raphaël 30

Figure T16 : sécurisation de Node-Red

Figure T17 : interface d'entrée à Node-Red accessible via AdresseIp/PortNode-Red

DUT R&T - Mémoire 2020 - BOURGEAY Raphaël 31

Figure T18 : interface de création de l'interface graphique

DUT R&T - Mémoire 2020 - BOURGEAY Raphaël 32

Figure T19 : Menu

Figure T20 : installation de la palette dashboard

DUT R&T - Mémoire 2020 - BOURGEAY Raphaël 33

Figure T21 : apparition de la palette dashboard

Dans la palette network, choisir « mqtt in »

Figure T22 : renseignement du serveur (avec port du broker) et du topic

Et brancher en sortie un noeud « debug », dans la catégorie common

Figure T23 propriétés du noeud debug

DUT R&T - Mémoire 2020 - BOURGEAY Raphaël 34

DUT R&T - Mémoire 2020 - BOURGEAY Raphaël 35

Figure T24 : reception des données

Il ne vous reste qu'à utiliser les différents noeuds disponibles pour votre interface graphique

Figure T25 : mise en forme des données

DUT R&T - Mémoire 2020 - BOURGEAY Raphaël 36

Interface graphique accessible via AdresseIp:PortNode-Red/ui (UI : User Interface)

Figure T26 : interface graphique

Code à utiliser :

// Identifiant de connection au point d'acces Wi-Fi local

#define SSID L "Nom de la box" // Nom du réseau Wi-Fi
_

#define MOT_DE_PASSE_L "Mot de passe" // Mot De Passe du réseau Wi-Fi

// Adresse IP et port du serveur MQTT

#define ADRESSE_IP_SERVEUR_MQTT "adresse x.x.x.x" #define PORT_SERVEUR_MQTT 1883

// Identifiants MQTT

#define mqtt_user "nom d'utilisateur" // Si configuré sur le Broker !
#define mqtt_password "mot de passe" // Si configuré sur le Broker !

// Déclaration des bibliothèques utilisées

#include <WiFi101.h> #include <MQTT.h>

#include <PubSubClient.h>

// Définition des constantes globales

int led_Bleu = 7;

#define PORT_LED_INTERNE 6 // Numéro de port auquel est

branchée la LED interne.

// Déclaration globales

WiFiClient ClientWiFi; // Déclaration de notre Client Ethernet pour la connexion au serveur MySQL

MQTTClient ClientMqtt; // Déclaration de notre Client pour la
connexion au serveur Myqtt

PubSubClient client(ClientWiFi);

long lastMsg = 0;

int value = 0;

char message_buff[100];

// Fonction appelée lors de la réception d'un topic + traitement du payload: void callback(char* topic, byte* payload, unsigned int length)

{

int i = 0;

Serial.print("Message reçu [");

Serial.print(topic);

String topic2 = String(topic);

Serial.println("] ");

// Traitement du payload, on le transforme en String.

for (i = 0; i<length; i++)

{

message_buff[i] = payload[i];

}

message_buff[i] = '\0';

String msgString = String(message_buff);

Serial.println("Payload: " + msgString);

if (topic2 == "raph/switchBleu") // LED bleue, il faudra rajouter

{ // cette condition pour chaque LED
if (msgString == "ON") {

digitalWrite(led_Bleu, HIGH);

}

else {

digitalWrite(led_Bleu, LOW); }

}

}

//Connexion to WiFi: void setup_wifi() { delay(10);

Serial.println();

Serial.print("Connexion à "); Serial.println(SSID_L);

WiFi.begin(SSID_L, MOT_DE_PASSE_L);

while (WiFi.status() != WL_CONNECTED) { delay(500);

Serial.print(".");

}

Serial.println("");

Serial.println("Connexion WiFi établie "); Serial.print("=> Adresse IP : "); Serial.println(WiFi.localIP());

}

void reconnect() {

// Boucle de reconnxion tant que l'on est pas connecté

while (!client.connected()) {

Serial.print("En attente de la connexion au serveur MQTT...");

// On attend la connection, mqtt_user et mqtt_password si configuré sur le

Broker !

if (client.connect("raph", mqtt_user, mqtt_password)){ //

DUT R&T - Mémoire 2020 - BOURGEAY Raphaël 37

DUT R&T - Mémoire 2020 - BOURGEAY Raphaël 38

Serial.println("connected");

// Une fois connectée, on souscrit aux différents topics: client.subscribe("raph/switchBleu"); //à répéter pour chaque switch

}

else {

Serial.print("erreur, rc=");

Serial.print(client.state());

Serial.println(" nouvel essai dans 5 secondes");

// On attend 5 secondes pour essayer de se reconnecter au Broker

delay(5000);

}

}

}

void setup()

{

Serial.begin(115200);

setup_wifi(); //Connexion au wifi

client.setServer(ADRESSE_IP_SERVEUR_MQTT, 1883); //Connexion au serveur MQTT, port à changer selon votre cas

client.setCallback(callback);

delay(5000);

pinMode(LED_BUILTIN, OUTPUT); digitalWrite(LED_BUILTIN, LOW);

// Configuration des pins Arduino en sortie: pinMode(led_Bleu, OUTPUT); //pour chacun

}

void loop()

{

if (!client.connected()) {

reconnect();

}

client.loop();

long now = millis();

if (now - lastMsg > 5000) // toute les 5 secondes on envoie les mesures au Broker

{

char t[10];

lastMsg = now;

++value;

// On envoie les mesures au Broker:

float potence;

int potentio = analogRead(A1);

float pontence = potentio;

client.publish("raph/potence", String(potence).c_str());

int photo = analogRead(A6);

float photor = photo;

client.publish("raph/photor", String(photor).c_str());

Serial.println("Publication des messages des capteurs");

}

}






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"Nous voulons explorer la bonté contrée énorme où tout se tait"   Appolinaire