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
  

précédent sommaire suivant

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

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.

précédent sommaire suivant






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








"Il existe une chose plus puissante que toutes les armées du monde, c'est une idée dont l'heure est venue"   Victor Hugo