Vous êtes sur la page 1sur 102

Cours « Internet of Things »

Tarak Chaari

Maître assistant à l’Ecole Nationale d’Electronique


et de Télécommunications de Sfax

tarak.chaari@enetcom.usf.tn

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, Analyse, Visualisation,


Systèmes Gateway, Apprentissage, Tableaux de bord
Embarqués communication prédictions 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 Conditionneur Système de


traitement

• Acquisition de la • Adaptation de la • Electronique


grandeur physique grandeur électrique numérique :
au traitement : - Microcontrôleur
- Ordinateur
- Amplification - DSP
- Filtrage - FPGA
- Réduction de - Automate
courant/tension industriel

IoT
31
Les actionneurs

Transforment un signal électrique en action


physique réelle

Système de Conditionneur Actionneur


commande

• Adaptation de la • Transformation de
• Electronique grandeur électrique la grandeur
numérique : au traitement : électrique en
- Microcontrôleur action physique
- Ordinateur - Isolation
- DSP - Commutation
- FPGA - Conversion
- Automate
industriel

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

ROM RAM Périphériques


Processeur
Programme(s) Données Entrées/Sorties

Bus de contrôle 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 Microcontrôleur
✓Electronique complexe ✓Electronique simple
✓Entrées-sorties par des ✓Déterminisme
contrôleurs externes ✓Fiabilité fonctionnement
✓Utilisation d’un OS ✓Généralement sans OS

Flash > 1Go RS-232


Alimentation Microprocesseur
Microcontrôleur
Alimentatio GPIO
Cœur(s) > RAM > 256Mo n SPI
Bus Cœur CPU < 200MHz E/S
200MHz CPU I²C USB
Horloge ROM (Flash) < 2Mo
FPU MMU CAN
Contrôleur E/S Horloge RAM < 1Mo
Etherne
Watchdog
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 Généralement propriétaire (coût


développement Linux é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 Contrôleur SPI
Bootlaoder

Contrôleur UART
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

STM 32
MSP Launchpad Discovery
Arduino Uno Microcontrôleur Microcontrôleur
Microcontrôleur

Odroid Tessel 2 Raspberry PI


SoC SoC 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; if (blueToothVal=='n’){
char lastValue; digitalWrite(13,HIGH);
void setup() { if (lastValue!='n')
Serial.begin(9600); lastValue=blueToothVal;
pinMode(13,OUTPUT); }
} else if (blueToothVal=='f') {
digitalWrite(13,LOW);
if (lastValue!='f')
void loop() { lastValue=blueToothVal;
if(Serial.available()){ }
blueToothVal=Serial.read(); 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 Objects
LPWAN Requirements:
80% of volume
Low power transmit
technology
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
LAN Cellular
WAN
Short Range Long Range w/ Battery Long Range w/Power
Communicating Devices Internet of Objects Traditional M2M

✓ Well established ✓ Emerging PHY ✓ Well established


standards solutions / Undecided standards
✓ Good for: ✓ Good for: ✓ Good for:
• Mobile devices • Long range • Long range
• In-home • Long battery • High data-rate
• Short range • Low cost • Coverage
 Not good:  Not good:  Not good:
• Battery life • High data-rate • Battery life
• Long range • Cost

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+48eJNM3Vai-
zDpsR71Pn9CPA9uCON84"
}
]
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

Rapid miner

Développement personnalisée…

IoT
102