Cours « Internet of Things » Tarak Chaari Maître assistant à l’Ecole Nationale d’Electronique et de Télécommunications de Sfax
[email protected]
IoT
Votre interlocuteur Tarak CHAARI
Maître assistant à l’ENET’com Membre de l’unité de recherche RedCad Enseignement: Ingénierie des systèmes d’information
Recherche: l’adaptation dans les environnements dynamiques
Tarak CHAARI (IIT)
IoT
2
Présentation générale du cours
Le nom du cours Internet Of Things
Volume horaire 22,5 heures Cours + TP
Objectifs Découvrir le domaine d’objets connectés
Réaliser quelques objets connectés
Tarak CHAARI (IIT)
IoT
3
Contenu du cours Chapitre 1 Concept d'objets connectés et de l'Internet des objets
Chapitre 2 La partie embarquée des IoT
Chapitre 3 Fonctionnalités et technologies de communication des IoT
Chapitre 4 Plateformes logicielles IoT
Chapitre 5 Etudes de cas et domaines d’application
IoT
4
Chapitre 1
Concepts des objets connectés
IoT
5
Internet of things - définition
Et il est souvent difficile d'établir avec précision à partir de quand un objet et connecté et à partir de quand débute l'Internet des Objets. Parfois raccourci en IdO, ou plus souvent en IoT (Internet of Things), ce
concept représente l'expansion du réseau Internet à des objets et/ou des lieux du monde physique.
Vision générique qui englobe tout objet qui nous entoure
IoT
6
Objet connecté - définition
Un objet physique ou virtuel qui a la capacité d’envoyer et/ou recevoir des données vers/depuis internet Exemples: Montre connectée Téléphone Capteur de rythme cardiaque connecté Pilulier connecté etc
IoT
7
Objet connecté - caractéristiques
Capacité de récupérer des données et de les envoyer sur internet (capteurs)
Capacité de recevoir des ordres depuis internet (actionneurs)
IoT
8
Objet connecté - défi
Cout Il doit être le moins cher possible sinon pas utile
Autonomie Il doit tenir sur des batteries ou piles
Communication Comment assurer la liaison avec internet?
IoT
9
Iot : principe
Connecter toutes les choses qui nous entourent A des logiciels d’analyse de données Mieux nous informer et nous guider Prendre des décision automatiques IoT
Objectif
IoT
Prévisions
Source: Gartner 2016
IoT
Origine de l’IoT
IoT
Architecture
Capteurs, Gateway, Systèmes Embarqués communication
Analyse, Apprentissage, prédictions
Visualisation, Tableaux de bord Prise de décision
IoT
Chaîne de valeur : capteurs
IoT
Chaîne de valeur : Transmission
IoT
Chaîne de valeur : software •
Comment identifier et gérer ces milliards d’objets?
•
Comment gérer la vélocité et le volume des données générées?
•
Comment analyser ces données?
•
Comment disséminer ces données vers les parties concernées?
•
Comment générer de la valeur de ces données?
IoT
Chaîne de valeur Ils ont déjà investi dans l’IOT
IoT
Domaines d’application
IoT
Exemple : parking connecté 1
IoT
Exemple : parking connecté 2
IoT
Exemple : parking connecté 3
IoT
Exemple : parking connecté 4
IoT
Exemple : parking connecté 5
IoT
Exemple : parking connecté 6
IoT
Exemple : parking connecté 7
IoT
Chapitre 2
La partie embarquée des objets connectés
IoT
27
Principe
La partie hardware de l’objet connecté comprend : Une plateforme matérielle d’acquisition et contrôle (MCU) A programmation matérielle (FPGA, ASIC, Automate, DSP…) A programmation logicielle (μContrôleur, μprocesseur)
Des capteurs Analogique : Température, humidité, gaz, lumière… Numérique : présence, contact, impulsions…
Des actionneurs Relais, moteurs, lampes, variateurs…
IoT
28
Les capteurs
Transforment une grandeur physique réelle en signal électrique
IoT
29
Les capteurs
Que peut-on capter ?
IoT
30
Les capteurs
Vocabulaire
Capteur • Acquisition de la grandeur physique
Conditionneur • Adaptation de la grandeur électrique au traitement : - Amplification - Filtrage - Réduction de courant/tension
Système de traitement • Electronique numérique : - Microcontrôleur - Ordinateur - DSP - FPGA - Automate industriel
IoT
31
Les actionneurs
Transforment un signal électrique en action physique réelle Système de commande • Electronique numérique : - Microcontrôleur - Ordinateur - DSP - FPGA - Automate industriel
Conditionneur • Adaptation de la grandeur électrique au traitement :
Actionneur • Transformation de la grandeur électrique en action physique
- Isolation - Commutation - Conversion
IoT
32
Architectures à base de microcontrôleurs
Forme de base
IoT
33
Les microcontroleurs
✓Processeur: élément central d’un système informatique – Interprète les instructions et Traite les données
✓Besoins d’éléments complémentaires – Horloge pour le cadencer
– Mémoire pour l’exécution des programmes (RAM) pour le stockage
(ROM) – Périphériques
✓Bus pour relier ces entités Bus d’adressage
Processeur
Bus de contrôle
ROM Programme(s)
RAM Données
Périphériques Entrées/Sorties
Bus de données
IoT
34
Microcontroleur ✓ Le microprocesseur – Intégration dans des circuits distincts – Nécessité de prévoir l’interconnexion (bus, câblage) – La place occupée par ces composants séparés est plus importante – Plus de consommation et de chaleur dégagée – Coût financier
✓ Le microcontrôleur – Rassemble ces éléments sur un seul circuit intégré – Composant autonome, capable d’exécuté des programmes sur sa ROM – Améliore l’intégration et le coût – Moins de capacités que le microprocesseur
Tarak CHAARI (IIT)
IoT
35
Microprocesseur vs Microcontrôleur
Microprocesseur ✓Electronique complexe ✓Entrées-sorties par des contrôleurs externes ✓Utilisation d’un OS
Alimentation
Horloge
Flash > 1Go
Microprocesseur Cœur(s) > 200MHz CPU FPU MMU
Microcontrôleur ✓Electronique simple ✓Déterminisme ✓Fiabilité fonctionnement ✓Généralement sans OS
Bus
RAM > 256Mo
Alimentatio n
Contrôleur E/S
Horloge
Microcontrôleur Cœur CPU < 200MHz ROM (Flash) < 2Mo RAM < 1Mo Watchdog
E/S
RS-232 GPIO SPI I²C USB CAN Etherne t
RS-232, GPIO, SPI I²C, USB, CAN Ethernet
Tarak CHAARI (IIT)
IoT
36
Microcontrôleur vs microprocesseur Microprocesseur
Microcontrôleur
Coût moyen
> 20 €
< 10€
PCB support
Complexe (6 couches)
Simple (2 couches)
Alimentation
Multiples – 3.3V / 5V / 12V
Simple – 3.3V
Volume de code métier
Plusieurs dizaines de Mo
Quelques Ko
Environnement développement Livre et gratuit si développement Linux
Généralement propriétaire (coût élevé)
Mise au point de code
Classique grâce à l’OS
Complexe, débuggueur spécifique
Déploiement, MàJ
Simple
Complexe
Protection code métier
Difficile
Facile (fusibles)
Tarak CHAARI (IIT)
IoT
37
SoC : System on chip
System on Chip (S.O.C.)
P
Contrôleur Ethernet USB
ROM Bootlaoder
Contrôleur
Contrôleur
UART
SPI
RS 232
MMC /SD
✓ Contrôleurs d’entrées-sorties déjà incorporés ✓ Intégration électronique plus complexe ✓ Souvent peu d’entrées sorties industrielles (CAN) ou analogiques (ADC/DAC, PWM) Tarak CHAARI (IIT)
IoT
38
Formes intégrées
Arduino Uno Microcontrôleur
Odroid SoC
MSP Launchpad Microcontrôleur
Tessel 2 SoC
STM 32 Discovery Microcontrôleur
Raspberry PI SoC IoT
39
Arduino ? Start-up italienne lancée en 2005 (http://arduino.cc) Crée un microcontrôleur bas-coût (à partir de 20 e) avec un IDE permettant de facilement le programmer, même par un débutant. Public visé : les artistes, les étudiants (université voire lycée), les "bidouilleurs" du dimanche, les experts pour certaines applications ou du développement Open-source (sauf nom) : les plans sont en ligne et on peut donc reproduire, modifier et améliorer et vendre une telle carte. L’IDE est aussi open-source. ➮ Enorme communauté d’utilisateurs (Arduino Day 2014) Centaines de produits sur le marché (versions officielles, copies à l’identique à bas coût, versions améliorées). Chaque jour naît un nouveau produit "duino" Hardware open-source est une nouvelle révolution industrielle selon certains experts (de nombreuses compagnies se sont lancées sur ce marché)
IoT
Modèle UNO Quelques caractéristiques : •32 ko de ROM (dont bootloader de 0.5 ko) •2 ko de RAM, 1 ko d’EEPROM •16 MHz (Intel 8086 : de 5 à 10 MHz)
IoT
Modèle UNO Quelques caractéristiques : •32 ko de ROM (dont bootloader de 0.5 ko)
•2 ko de RAM, 1 ko d’EEPROM •16 MHz (Intel 8086 : de 5 à 10 MHz) •14 ports entrée/sortie numériques
Les E/S numériques (deux valeurs : ON/OFF) peuvent "lire" des interrupteurs, des boutons, contrôler des DEL et l’activation de moteurs
IoT
Modèle UNO Quelques caractéristiques : •32 ko de ROM (dont bootloader de 0.5 ko) •2 ko de RAM, 1 ko d’EEPROM •16 MHz (Intel 8086 : de 5 à 10 MHz) •14 ports entrée/sortie numériques •5 ports d’entrée analogique
Les E/S numériques (deux valeurs : ON/OFF) peuvent "lire" des interrupteurs, des boutons, contrôler des DEL et l’activation de moteurs Les entrées analogiques (une "infinité" de valeurs) peuvent lire des potentiomètres et autres capteurs à données variables
IoT
Modèle UNO Quelques caractéristiques : •32 ko de ROM (dont bootloader de 0.5 ko) •2 ko de RAM, 1 ko d’EEPROM •16 MHz (Intel 8086 : de 5 à 10 MHz) •14 ports entrée/sortie numériques (dont 6 MLI) •5 ports d’entrée analogique Les E/S numériques (deux valeurs : ON/OFF) peuvent "lire" des interrupteurs, des boutons, contrôler des DEL et l’activation de moteurs Les entrées analogiques (une "infinité" de valeurs) peuvent lire des potentiomètres et autres capteurs à données variables Les sorties analogiques peuvent être obtenues par des "modulations de largeur d’impulsion" IoT
Modèle UNO Quelques caractéristiques : •32 ko de ROM (dont bootloader de 0.5 ko) •2 ko de RAM, 1 ko d’EEPROM •16 MHz (Intel 8086 : de 5 à 10 MHz) •14 ports entrée/sortie numériques (dont 6 MLI) •5 ports d’entrée analogique Tension de fonctionnement : 5 V Tension d’entrée (recommendée) : 7-12 V Tension d’entrée (limites) : 6-20 V Intensité de courant par port E/S : 40 mA
Intensité de courant par port E/S en 3.3 V : 50 mA
IoT
Que peut-on connecter à l’Arduino ? Quelques exemples
Des capteurs de température :
IoT
Que peut-on connecter à l’Arduino ? Quelques exemples
Des capteurs de pression/torsion :
IoT
Que peut-on connecter à l’Arduino ? Quelques exemples
Des moteurs :
IoT
Que peut-on connecter à l’Arduino ? Quelques exemples
Des écrans d’affichage :
IoT
Que peut-on connecter à l’Arduino ? Quelques exemples
Des relais :
IoT
Que peut-on connecter à l’Arduino ? Quelques exemples
Mais aussi des modules appelés "shields"
IoT
IDE
Compiler Transférer
IDE téléchargeable sur http://arduino.cc Un programme s’appelle "sketch" Compiler, remettre à zéro la carte (appuyer sur reset) et charger le programme IoT
Langage Arduino
Langage très proche du C Beaucoup de fonctions très simples pinMode() – choisit un port comme entrée ou sortie (INPUT/OUTPUT) digitalWrite() – affecte à un port numérique la valeur haute ou basse (HIGH/LOW) digitalRead() – lit l’état du port numérique analogRead() – lit un port analogique analogWrite() – écrit une valeur MLI "analogique" delay() – attend une durée de temps définie (en ms) millis() – fournit le temps épuisé (en ms) depuis le lancement du programme courant
Et beaucoup d’autres "bibliothèques" et "fonctions"
IoT
Le squelette d’un programme arduino
// Déclaration de variables void setup() { // Initialisation des variables } void loop() { // Cette fonction est appelée indéfiniment, // après le setup }
IoT
Chapitre 3
Fonctionnalités et technologies de communication des objets connectés
IoT
55
Communications possibles
IoT
Communication courte portée
Bluetooth HC-06 IoT
Communication courte portée char blueToothVal; char lastValue; void setup() { Serial.begin(9600); pinMode(13,OUTPUT); }
void loop() { if(Serial.available()){ blueToothVal=Serial.read(); }
if (blueToothVal=='n’){ digitalWrite(13,HIGH); if (lastValue!='n') lastValue=blueToothVal; } else if (blueToothVal=='f') { digitalWrite(13,LOW); if (lastValue!='f') lastValue=blueToothVal; } delay(1000); }
Code HC-06 IoT
Communication courte portée ESP8266 -Mode station -Mode point d’accès -Les deux
• The ESP8266 does not have 5V tolerant inputs–you could destroy your WiFi module. • The ESP8266 may draw more current than the 3.3V regulator on your Arduino can supply – you could damage your Arduino. • The operation of the ESP8266 outside of stated limits may be unstable and unreliable
Commandes AT AT+CWMODE=1 (se mettre en mode station) AT+CWLAP
(Pour scanner les réseaux wifi disponibles) IoT
Communication courte portée NRF-24L01 (radio fréquence 2.4GHz)
Code : File > Examples > RadioHead > nrf24 IoT
Communication courte portée
Arduino wifi shield File > Examples > Wifi > ScanNetworks IoT
Communication longue portée
Arduino GSM shield https://www.arduino.cc/en/Guide/ArduinoGSMShield IoT
Communication longue portée
IoT
Communication longue portée
IoT
Communication longue portée
IoT
Communication longue portée
IoT
LP-WAN objectives
• •
• •
More than 50% of IoT/M2M connections need only a few bytes of data transmitted to and from the remote device periodically Real-time communications not needed i.e. some latency is acceptable
Long battery life required In-building coverage/penetration desired IoT
Requirements for LPWANs Internet of 80% of volume
Objects
LPWAN Requirements: Low
power technology
transmit
Long range communication Low power consumption
Long battery life Low cost communications &
infrastructure Scalable system Permits mobility Reliable communication
IoT
Connected Devices: Access Lo Power WAN
LAN
Short Range
Long Range w/ Battery
✓
Well established standards Good for: • • •
Mobile devices In-home Short range
Not good: • •
Battery life Long range
Long Range w/Power
Internet of Objects
Communicating Devices
✓
Cellular
✓ ✓
Emerging PHY solutions / Undecided Good for: • • •
Long range Long battery Low cost
Not good: •
High data-rate
Traditional M2M
✓ ✓
Well established standards Good for: • • •
Long range High data-rate Coverage
• •
Battery life Cost
Not good:
IoT
Communication longue portée
IoT
Communication longue portée
IoT
LoRa Network Architecture
Star-of-star topology
IoT
Communication longue portée
IoT
Communication longue portée
IoT
Communication longue portée
IoT
Communication longue portée
IoT
Communication longue portée
IoT
Communication longue portée
IoT
Echange LoRa Envoi périodique d’un message PULL_DATA (keep alive)
IoT
Echange LoRa Contenu du message PULL_DATA
Contenu du message PULL_ACK
IoT
Echange LoRa Transmission de données à la réception d’une trame venant d’un device
IoT
Echange LoRa Contenu du message PUSH_DATA
Contenu du message PUSH_ACK
IoT
Echange LoRa Transmission de données à partir du serveur
IoT
Echange LoRa Contenu du message PULL_RESP
Contenu du message TX_ACK
IoT
Echange LoRa Exemple d’un rxpk (du gateway vers le serveur) "rxpk": [ { "time":"2013-03-31T16:21:17.528002Z", "tmst":3512348611, "chan":2, "rfch":0, "freq":866.349812, "stat":1, "modu":"LORA", "datr":"SF7BW125", "codr":"4/6", "rssi":-35, "lsnr":5.1, "size":32, "data":"-DS4CGaDCdG+48eJNM3VaizDpsR71Pn9CPA9uCON84" }
] IoT
Echange LoRa Exemple d’un txpk (du serveur vers le gateway)
"txpk": { "imme":true, "freq":864.123456, "rfch":0, "powe":14, "modu":"LORA", "datr":"SF11BW125", "codr":"4/6", "ipol":false, "size":32, "data":"H3P3N2i9qc4yt7rK7ldqoeCVJGB ybzPY5h1Dd7P7p8v" }
IoT
Format des messages LoRaWAN
IoT
Format des messages LoRaWAN
IoT
Format des messages LoRaWAN
IoT
Lorawan – Confidentialité des messages Cryptage AES 128 bits (IEEE 24 802.15.4/2006 Annex B [IEEE802154])
IoT
Lorawan – Intégrité des messages Vérification d’intégrité par un hash cmac 128 bits (RFC4493)
IoT
Chapitre 4
La partie logicielle de l’IoT
IoT
92
Gestion de l’infrastructure matérielle Gestion des objets connectés Comment les identifier? Quels sont leurs caractéristiques et capacités Le type des données qu’ils véhiculent
Gestion de l’infrastructure de communication Gateways et leurs configurations Monitoring du bon fonctionnement du système Gestion de la mobilité
Gestion des serveurs Sur cloud ou Interne Load balancing Administration des serveurs
IoT
93
Gestion des données Gestion des trames Comment les identifier leurs sources Décrypter
Stockage Où stocker les trames? Bases de données SQL/NoSQL? Stockage permanent ou temporaire?
Dissémination Où envoyer les trames? Elles viennent de quelles sources Elles doivent aller où?
Analyse des données Statistiques (moyennes, minimas, maximas…) Interprétation de valeurs brutes en valeurs plus compréhensibles IoT
94
Développement des applications IoT Gestion des accès Chaque utilisateur ne doit voir que ses données Possibilité de partage des objets connectés entre utilisateurs
Affichage de l’historique Pouvoir parcourir l’historique des données à tout moment Affichage tabulaire ou sous la forme de courbes
Affichage de données en temps réel Afficher les trames dès leurs arrivées Possibilité de déclencher des actions d’une façon automatique
Interaction avec le système de de gestion des données
IoT
95
Architecture technique
IoT
96
Les plateformes IoT : classification
IoT
97
Les plateformes IoT : couches
IoT
98
Ingestion des données Big Data stream processing Apache spark Apache Nifi Apache Flume Apache storm IBM Streams…
Développement personnalisé J2EE Go Node JS…
IoT
99
Stockage de données Bases de données relationnelles Mysql Oracle postgres…
Bases de données nosql MongoDB Hbase Cassandra…
Bases de données temporelles (Time series databases) InfluxDB IBM Informix ElasticSearch…
IoT
100
Dissémination de données (Broker)
Apache Kafka
DataBus (supervision de BD) HiveMQ / Mosquitto Amazon Kinesis Redis…
IoT
101
Affichage et analyse de données
Kibana
Tableau R Rapid miner Développement personnalisée… IoT
102