Simples architectures IoT basées sur Arduino Nano

Documents pareils
ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Durée estimée :1 journée Date de la réalisation : Description Fournisseur Référence Nombre PU HT LM35CZ, LM35AZ LM35DZ

Bien commencer avec un LaunchPad MSP430G et un Breadboard

Une carte pour vos projets

AMICUS 18 (2ème partie) 4) Présentation du logiciel Amicus IDE

3615 SELFIE. HOW-TO / GUIDE D'UTILISATION

Version beta. Station Météo 12/11/2012. Réalisation d un Station Météo avec Webserver composée de capteurs Grove et d un module Wifi Flyport.

Carte ARDUINO UNO Microcontrôleur ATMega328

Logitech Tablet Keyboard for Windows 8, Windows RT and Android 3.0+ Setup Guide Guide d installation

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Les liaisons SPI et I2C

Bonjour, Le document qui suit est le support de la formation ''Arduino applications distantes''.

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server

Introduction au langage C

TABLE DES MATIÈRES. Avant-propos... 1 Communications série Entrées simples analogiques et numériques... 61

Fiche technique CPU 314SC/DPM (314-6CG13)

Cours 7 : Programmation d une chaîne d acquisition

1) Où est le problème? Chère lectrice, cher lecteur, On est entre nous, alors on va se tutoyer.

Projet M1 Année scolaire 2013/2014

NTP (Network Time Protocol)

Mini_guide_Isis.pdf le 23/09/2001 Page 1/14

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

1 Démarrer L écran Isis La boite à outils Mode principal Mode gadget Mode graphique...

Software and Hardware Datasheet / Fiche technique du logiciel et du matériel

Education Delivery Intelligent Tool

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server 3, 3.5

Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS Sommaire

Configuration de TCPIPconfig.h

INFO-F-404 : Techniques avancées de systèmes d exploitation

Activité initiation Arduino

Instructions pour mettre à jour un HFFv2 v1.x.yy v2.0.00

Raspberry pi : Développer une petite application web sur Raspberry

Mini_guide_Isis_v6.doc le 10/02/2005 Page 1/15

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Fiche technique CPU 315SN/PN (315-4PN33)

Surveillance de Scripts LUA et de réception d EVENT. avec LoriotPro Extended & Broadcast Edition

IUT GEII MARSEILLE Patrick GUMUCHIAN. Lycée Alphonse Benoit L'Isle sur la Sorgue Marc SILANUS

RÉALISATION D UN BANC D ÉQUILIBRAGE

Garage Door Monitor Model 829LM

Le multiplexage. Sommaire

1. PRESENTATION DU PROJET

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi module

FICHE TECHNIQUE. Linux Tutoriel. Installer une imprimante multifonction HP PSC 1315 sous Linux. TUTORIEL Starinux Imprimante multifonction HP PSC 1315

PROGRAMMATION D'UN MICROCONTRÔLEUR

Data Station Plus. La solution complète de gestion de données. > Convertisseur de multiples

TP LINUX : MISE EN PLACE DU SERVEUR DE MESSAGERIE QMAIL

Séverine Marien Maxime Ringard. 2 ème année GEII. Régulateur de charge pour station de recharge photovoltaïque

Machine virtuelle W4M- Galaxy : Guide d'installation

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

NOTICE INSTALLATION. ARCHANGE Simplex Office N&B/Couleur KONICA MINOLTA BUSINESS SOLUTIONS FRANCE

TABLE DES MATIÈRES 1. DÉMARRER ISIS 2 2. SAISIE D UN SCHÉMA 3 & ' " ( ) '*+ ", ##) # " -. /0 " 1 2 " 3. SIMULATION 7 " - 4.

Ordinateurs, Structure et Applications

Comment obtenir des ebooks sur le Reader

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Guide d'installation rapide TFM-560X YO.13

Ocs Inventory et GLPI s appuie sur un serveur LAMP. Je vais donc commencer par installer les paquets nécessaires.

Comme chaque ligne de cache a 1024 bits. Le nombre de lignes de cache contenu dans chaque ensemble est:

Bases de programmation. Cours 5. Structurer les données

Le bus USB. I) Introduction : II) Architecture du bus USB :

École Polytechnique de Montréal. Département de Génie Informatique et Génie Logiciel. Cours INF2610. Contrôle périodique.

Plan du cours. Historique du langage Nouveautés de Java 7

Table of contents 2 / 31


03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

NON URGENTE TEMPORAIRE DEFINITIVE OBJET : RÉCUPÉRATION DES DONNÉES CLIENT SUR DISQUE DUR DÉFECTUEUX OU INVALIDÉ

Bus de communication

Description du logiciel Modbus RTU

Déploiement OOo en environnement Windows Terminal Server

MANUEL D INSTRUCTION

Logitech Speaker System Z553 Setup Guide Guide d installation

Fiche produit ifinance v4

Conférence sur les microcontroleurs.

Paxton. ins Net2 desktop reader USB

Monitor LRD. Table des matières

PL7 Micro/Junior/Pro Métiers communication Tome 1. TLXDSCOMPL7xxfre

Note d Application. Bascule d ALOHA via injection de route en BGP

PROJET 1 : BASE DE DONNÉES REPARTIES

Manipulations du laboratoire

Le langage C. Séance n 4

COMMANDER la puissance par MODULATION COMMUNIQUER

Atelier Arduino. Initiation à la mise en oeuvre matérielle et logicielle de l Arduino. novembre 2006

Guide pour l Installation des Disques Durs SATA et la Configuration RAID

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

Piano Stairs. descriptif de la conception et des programmes associés. Copyright (C) 2013 taprik

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

BAMOSONIC IT. - Mesure de niveau -

Réalisation de SMSMail

Documentation. Présentation (simplifiée) de. Monitor PRO

Compléments de documentation Scilab : affichage de texte et formatage de nombres

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Manuel d installation du clavier S5

Transmissions série et parallèle

Fabricant. 2 terminals

NovoSIP manuel de mise en service

Guide du test de Conformité USB 2.0

Dossier technique. Présentation du bus DMX et Utilisation des options EL13 / EL14 ERM AUTOMATISMES INDUSTRIELS 1 LE PROTOCOLE DMX 2

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

Internet Group Management Protocol (IGMP) Multicast Listener Discovery ( MLD ) RFC 2710 (MLD version 1) RFC 3810 (MLD version 2)

as Architecture des Systèmes d Information

Direction des Systèmes d'information

Transcription:

Lab 1 Simples architectures IoT basées sur Arduino Nano Avant de commencer le travail sur les exercices et le projet, nous devons préparer et comprendre notre environnement de travail basé sur l'arduino IDE et Linux OS. D'abord, nous devons télécharger la version la plus récente d'arduino IDE et l'installer sur notre système (Linux). Notez que la récente version d'arduino IDE s'exécute sur les deux plates-formes architecturales: Intel x86 et ARM. Le logiciel requis peut être trouvé sur cette page: https://www.arduino.cc/fr/main/software. Après le téléchargement, nous devons décompresser et installer l'ide Arduino. Vous trouverez un répertoire principal Arduino et les sous-répertoires des bibliothèques et des croquis. L'installation initiale est suffisante pour commencer les premières conceptions avec des cartes compatibles Arduino: Uno, Nano, Mega. L'utilisation de cartes (processeurs) plus avancés tels que ESP8266 nécessite l'installation de ces dispositifs via les outils Preferences puis Board Manager. Dans la première architecture avec Arduino IDE, nous allons utiliser une carte Arduino Nano avec un capteur - DTH11/22 comme entrée et une LED RVB comme sortie. La deuxième architecture avec Arduino IDE, utilise la carte Arduino Nano avec des capteurs température/humidité/lumière et la carte d extension Ethernet pour envoyer les données via l Internet vers un serveur ThingSpeak. 1.1 Arduino Nano avec capteur analogique de l intensité de la lumière et un indicateur LED tricolore Figure 1.1. Schéma symbolique de l'architecture et les composants : capteur de luminosité Nano LED RGB Connexions des composants : Capteur Nano VCC 5V SIG A0 ( convertisseur ADC résolution 10 bits ) LED-RGB B G R Nano D6 D7 D8

Le code Arduino sans la diode RGB : int photocellpin = 0; int photocellreading; // the cell and 10K pulldown are connected to A0 // the analog reading from the sensor divider void setup(void) Serial.begin(9600); pinmode(6, OUTPUT); // BLUE pinmode(7, OUTPUT); // GREEN pinmode(8, OUTPUT); // RED void loop(void) photocellreading = analogread(photocellpin); Serial.print("Analog reading = "); Serial.println(photocellReading); // the raw analog reading delay(100); Exercice 1.1 : Testez l exemple donné, Choisissez les intervalles de la luminosité à signaler sur la diode RGB (0-20 RED, 21-100 GREEN, 101 BLUE )

1.2 Arduino Nano avec capteur DHT 11/22 et un indicateur LED tricolore 1.2.1 Architecture et connexions +;d2++;f1++;f2++; d1+ Figure 1.2 Schéma symbolique et les composants de l'architecture : capteur de température/humidité Nano LED RGB Connexions : Capteur DHT VCC Dout Nano 5V D5 1.2.2 Code Arduino : #include "DHT.h" #define DHTPIN 5 // what digital pin we're connected to? #define DHTTYPE DHT11 // DHT 11 //#define DHTTYPE DHT22 // DHT 22 // Connect pin VCC of the sensor to +5V // Connect pin 5 of the sensor to whatever your DHTPIN is // Connect pin DHT dht(dhtpin, DHTTYPE); void setup() Serial.begin(9600); pinmode(6, OUTPUT); // BLUE pinmode(7, OUTPUT); // GREEN pinmode(8, OUTPUT); // RED Serial.println("DHTxx test!"); dht.begin(); void loop() digitalwrite(6,low);digitalwrite(7,low);digitalwrite(8,low); // Wait a few seconds between measurements. delay(2000); // Reading temperature or humidity takes about 250 milliseconds! // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor) float h = dht.readhumidity(); // Read temperature as Celsius (the default) float t = dht.readtemperature(); // Read temperature as Fahrenheit (isfahrenheit = true) float f = dht.readtemperature(true); // Check if any reads failed and exit early (to try again). if (isnan(h) isnan(t) isnan(f))

Serial.println("Failed to read from DHT sensor!"); return; Serial.print("Humidity: ");Serial.print(h);Serial.print("%\t"); Serial.print("Temperature: ");Serial.print(t);Serial.println("*C"); if(t<21.0) digitalwrite(6, HIGH); // set LED BLUE.. // a completer 1.2.3 Protocole DHT Figure 1.3. Le diagramme du protocole DHT11/22 La bibliothèque DHT.h contient les fonctions de communication avec les capteurs DHT11/22 qui opèrent selon le protocole spécifique. Le chronogramme ci-dessus décrit le protocole de transfert de données entre un MCU et le capteur DHT11. Le MCU déclenche une transmission de données en émettant un signal "Start". La broche MCU doit être configurée en sortie. Le MCU envoie d'abord sur la ligne de données un signal LOW pendant au moins 18 ms, puis envoie HIGH pour les 20-40μs suivants avant de la libérer. Ensuite, le capteur répond au signal "Start" de MCU en émettant le signal LOW pendant 80μs suivi d'un signal HIGH qui dure aussi 80μs. Après la détection du signal de réponse du capteur, le MCU devrait être prêt à recevoir les données du capteur. Le capteur envoie alors 40 bits (5 octets) de données en continu sur la ligne de données. Notez que lors de l'émission des octets, le capteur envoie le bit le plus important en premier. Exercice 1.2 : a. Etudier le protocole du capteur DHT(11/22) b. Compléter l code Arduino présenté ci-dessus il s'agit d'afficher la couleur bleue pour la température inférieure à 21 C, la verte pour la température entre 21 C et 25 C et la rouge au delà 25 C

1.3 Arduino Nano, capteurs et le bus I2C pour l afficheur OLED 1.3.1 Architecture et connexions Dans cet exercice nous utilisons un Arduino Nano et le connecter avec deux composants partageant le bus I2C. Figure 1.4. Architecture avec une carte Arduino Nano avec composants capteurs et l écran OLED Connexions : Ecran OLED Nano VCC 5V SDA A4 SCK A5 ( pins I2C par défaut ) 1.3.2 Bus et protocole I2C et le test de la présence Dans le protocole I2C les échanges ont toujours lieu entre un seul maître et un (ou tous les) esclave(s), toujours à l'initiative du maître (jamais de maître à maître ou d'esclave à esclave). La connexion est réalisée par l'intermédiaire de deux lignes : SDA (Serial Data Line) : ligne de données bidirectionnelle, SCL (Serial Clock Line) : ligne d'horloge de synchronisation bidirectionnelle. Il ne faut également pas oublier la masse qui doit être commune aux équipements. Les 2 lignes sont tirées au niveau de tension V DD (ici 3.3 V) à travers des résistances de pull-up (R P ). Figure 1.5. Connexions électriques du bus I2C Le protocole d'échange Le bus ne dispose que de deux lignes SCL et SDA. Les différents états que vont pouvoir prendre ces lignes vont permettre d'exprimer les étapes d'un échange. On parle de conditions car il s'agit en fait de changements d'état. Pour prendre un exemple, un maître veut faire un échange avec un esclave. 1. Le bus étant libre (free time), le maître prend le bus en imposant une condition de démarrage (start condition). 2. Le maître envoie l'adresse de l'abonné esclave visé et le sens du transfert read/write. Pour cela, il

génère le signal d'horloge SCL périodique et transmet l'adresse bit après bits (bit transfer) sur SDA. 3. L'esclave qui se reconnaît renvoie un acquittement (acknowledge ou ACK) sur SDA. 4. Le transfert se poursuit par l'envoi de donnée, nous allons voir comment, et après chaque envoi par l'émetteur, le récepteur envoie un acquittement. 5. L'échange se termine normalement à l'initiative du maître (sauf exception) et s'achève par une condition d'arrêt (stop condition). 6. Éventuellement, le maître peut remplacer la condition d'arrêt par une condition de redémarrage (restart condition) dans le cas où il veut changer d'abonné ou de sens d'échange. 7. Les bits sont transférés par paquet de 8, bit de poids fort en premier (à l'inverse du rs232), qu'il s'agisse des données ou des adresses. Le récepteur envoie un acquittement après chaque envoi de 8 bits par l'émetteur. l'acquittement est le 9ième bit. Figure 1.6. L'envoi de l'adresse et des donnés sur le bus I2C L'adressage Après avoir émis une condition de départ, le maître indique avec quel esclave il souhaite se connecter, pour cela il envoie sur le bus l'adresse de l'esclave composé de 7 bits (donc 128 adresses différentes), puis un dernier bit indiquant le sens du transfert : Lecture (1) ou Écriture (0). Tous les esclaves scrutent le bus et voient la condition de départ, celui qui reconnait son adresse envoie un acquittement (SDA à 0). 1.3.4 Code Arduino pour tester la présence des dispositifs connectés sur le bus I2C Dans la première partie de cet exercice nous allons tester la présence d un dispositif connecté sur le bus I2C de la carte Arduino Nano. Pour ce test il faut connecter l écran OLED sur les broches A4 - SDA, A5 SCL avec l alimentation de 5V. #include <Wire.h> // A4 SDA, A5 SCL sur Nano void setup() Wire.begin(); Serial.begin(9600); Serial.println("\nI2C Scanner");

void loop() byte error, address; int ndevices; Serial.println("Scanning..."); ndevices = 0; for(address = 1; address < 127; address++ ) // I2C address scaner Wire.beginTransmission(address); error = Wire.endTransmission(); if (error == 0) Serial.print("I2C device found at address 0x"); if (address<16) Serial.print("0"); Serial.print(address,HEX); Serial.println("!"); ndevices++; else if (error==4) Serial.print("Unknown error at address 0x"); if (address<16) Serial.print("0"); Serial.println(address,HEX); if (ndevices == 0) Serial.println("No I2C devices found\n"); else Serial.println("done\n"); delay(5000); // wait 5 seconds for next scan Le résultat affiché sur le terminal : I2C Scanner Scanning... I2C device found at address 0x3C! done 1.3.5 Code Arduino pour l architecture de la figure 1.4, incluant deux capteurs et un afficheur (écran OLED) #include "DHT.h" #define DHTPIN 5 // what digital pin we're connected to #define DHTTYPE DHT11 // DHT 11 #include <Wire.h> #include <Adafruit_SSD1306.h> #define OLED_RESET 4 Adafruit_SSD1306 display(oled_reset); DHT dht(dhtpin, DHTTYPE);

#if (SSD1306_LCDHEIGHT!= 64) #error("height incorrect, please fix Adafruit_SSD1306.h!"); #endif int photocellpin = 0; int photocellreading; float t,h; // A0 int readdth() h = dht.readhumidity(); // Read temperature as Celsius (the default) t = dht.readtemperature(); // Check if any reads failed and exit early (to try again). if (isnan(h) isnan(t)) Serial.println("Failed to read from DHT sensor!"); return 1; return 0; char buf[32]; int res; void affiche(void) display.settextsize(2); display.settextcolor( WHITE ); display.cleardisplay(); res=readdth(); display.setcursor(4,0); sprintf(buf,"lumi:%d",photocellreading); display.println(buf); display.setcursor(4,20); sprintf(buf,"temp:%d",(int)t); display.println(buf); display.setcursor(4,40); sprintf(buf,"humi:%d",(int)h); display.println(buf); display.display(); void setup() Serial.begin(9600); dht.begin(); // Initialise la communication I²C à l adresse 0x3C. display.begin(ssd1306_switchcapvcc,0x3c); display.cleardisplay(); void loop() delay(1000); photocellreading = analogread(photocellpin); Serial.print("Analog reading = "); Serial.println(photocellReading); // the raw analog reading affiche(); delay(1000);

Exercice 1.3: 1. Trouver l'adresse du capteur HTU21D dans fichiers HTU.h et/ou HTU.cpp. 2. Le capteur HTU21D fournit des valeurs précises de température et d'humidité avec deux décimales enregistrées sur le format à virgule flottante. Le code ci-dessus avec la fonction d'affichage affiche uniquement des valeurs entières. Modifiez ce code pour afficher les décimales.