Internet des objets - IoT - SmartComputerLab · Internet des objets - IoT L'Internet des objets, ou...

43
Internet des objets - IoT L'Internet des objets, ou IdO (en anglais Internet of Things, ou IoT) est l'interconnexion entre Internet et des objets, des lieux et des environnements physiques. L'appellation désigne un nombre croissant d' objets connectés à Internet permettant ainsi une communication entre nos biens dits physiques et leurs existences numériques. Ces formes de connexions permettent de rassembler de nouvelles masses de données sur le réseau et donc, de nouvelles connaissances et formes de savoirs.

Transcript of Internet des objets - IoT - SmartComputerLab · Internet des objets - IoT L'Internet des objets, ou...

Page 1: Internet des objets - IoT - SmartComputerLab · Internet des objets - IoT L'Internet des objets, ou IdO (en anglais Internet of Things, ou IoT) est l'interconnexion entre Internet

Internet des objets - IoT

L'Internet des objets, ou IdO (en anglais Internet of Things, ou IoT) est l'interconnexion entre Internet et des objets, des lieux et des environnements physiques.

L'appellation désigne un nombre croissant d'objets connectés à Internet permettant ainsi une communication entre nos biens dits physiques et leurs existences numériques.

Ces formes de connexions permettent de rassembler de nouvelles masses de données sur le réseau et donc, de nouvelles connaissances et formes de savoirs.

Page 2: Internet des objets - IoT - SmartComputerLab · Internet des objets - IoT L'Internet des objets, ou IdO (en anglais Internet of Things, ou IoT) est l'interconnexion entre Internet

SmartComputerLab 2

Internet des objets - IoT

Page 3: Internet des objets - IoT - SmartComputerLab · Internet des objets - IoT L'Internet des objets, ou IdO (en anglais Internet of Things, ou IoT) est l'interconnexion entre Internet

SmartComputerLab 3

Principaux composants d’Internet

Internet

routeur avec un point d’accès - AP

serveurclientPC/Tablette/Smartphone

réseau local

commutateur

AP

WiFi

Ethernetréseau

cellulaire

Page 4: Internet des objets - IoT - SmartComputerLab · Internet des objets - IoT L'Internet des objets, ou IdO (en anglais Internet of Things, ou IoT) est l'interconnexion entre Internet

SmartComputerLab 4

Principaux composants IoT

InternetIoT

capteur

actionneur

terminal mono-tâche

terminal multi-tâche passerelle routeur

serveur

client

Lien - LoRa

Page 5: Internet des objets - IoT - SmartComputerLab · Internet des objets - IoT L'Internet des objets, ou IdO (en anglais Internet of Things, ou IoT) est l'interconnexion entre Internet

SmartComputerLab 5

Evolution du Matériel pour IoT (IA)unités centrales pour terminaux et passerelles

2003 -● MCU - Arduino - simple microcontrôleur pour les applications

embarquées● SBC – Raspberry-Pi (2,3) – carte ordinateur embarqué

2012 - ● MCU - ESP8266 (ESP12) puis ESP32

- puissant microcontrôleur avec WiFi et BT – freeRTOSmodems LoRa

● SBC Nvidia - Jetson (TK1,TX1,TX2), Jetson Nano – puissantes cartes ordinateur embarqué - Linux Ubuntuunités IA pour deep learning, deep streaming etc. (GPU+TensorFlow,..)

Page 6: Internet des objets - IoT - SmartComputerLab · Internet des objets - IoT L'Internet des objets, ou IdO (en anglais Internet of Things, ou IoT) est l'interconnexion entre Internet

SmartComputerLab 6

Plate-forme pédagogique – IoT DevKit La plate-forme La plate-forme IoT DevKitIoT DevKit a été développée à l’Université de a été développée à l’Université de Nantes (Nantes (Polytech’NantesPolytech’Nantes) au sein de ) au sein de SmartComputerLabSmartComputerLab qui qui est associé au laboratoire est associé au laboratoire LS2NLS2N – équipe – équipe RIORIO (Réseaux et (Réseaux et Internet des Objets).Internet des Objets).

IoT DevKitIoT DevKit consiste en : consiste en :● cartes de basecartes de base (3 formats) (3 formats)● cartes MCU et SBCcartes MCU et SBC (ESP12, ESP32, NanoPi) (ESP12, ESP32, NanoPi)● cartes d’extensioncartes d’extension pour de multiples pour de multiples capteurscapteurs, ,

actionneursactionneurs et et modemsmodems de communication de communication

Le kit est complété par les Le kit est complété par les préparationspréparations (logiciel) pour les (logiciel) pour les laboratoires IoTlaboratoires IoT

Page 7: Internet des objets - IoT - SmartComputerLab · Internet des objets - IoT L'Internet des objets, ou IdO (en anglais Internet of Things, ou IoT) est l'interconnexion entre Internet

SmartComputerLab 7

Plate-forme pédagogique – IoT DevKitformat large avec une batterie

Cartes de base avec une Cartes de base avec une unité MCU – unité MCU – (ESP32+WiFi,LoRa,..)(ESP32+WiFi,LoRa,..)

emplacements pour les cartes d’extension

format mini D1

Page 8: Internet des objets - IoT - SmartComputerLab · Internet des objets - IoT L'Internet des objets, ou IdO (en anglais Internet of Things, ou IoT) est l'interconnexion entre Internet

SmartComputerLab 8

Plate-forme pédagogique – IoT DevKitformat longue

emplacements pour les cartes d’extension en format mini D1emplacements pour les cartes d’extension en format mini D1

ESP12 (Wemos)

ESP32 (Wemos)

Page 9: Internet des objets - IoT - SmartComputerLab · Internet des objets - IoT L'Internet des objets, ou IdO (en anglais Internet of Things, ou IoT) est l'interconnexion entre Internet

SmartComputerLab 9

Architecture ESP32 : le « top » de MCU pour IoT

processeurs

Interfaces - bus modems radio

Page 10: Internet des objets - IoT - SmartComputerLab · Internet des objets - IoT L'Internet des objets, ou IdO (en anglais Internet of Things, ou IoT) est l'interconnexion entre Internet

SmartComputerLab 10

Cartes ESP32 (ESP12)

Carte MCU (Heltec) ESP32 + LoRa + OLED

pour la plate-forme large avec une batterie

WiFi/BT/BLE LoRa

Page 11: Internet des objets - IoT - SmartComputerLab · Internet des objets - IoT L'Internet des objets, ou IdO (en anglais Internet of Things, ou IoT) est l'interconnexion entre Internet

SmartComputerLab 11

Cartes ESP32 (ESP12)

Carte MCU (Wemos) ESP12 et ESP32

pour la plate-forme longue – cartes d’extension au format mini D1

WiFiWiFi/BT/BLE

Page 12: Internet des objets - IoT - SmartComputerLab · Internet des objets - IoT L'Internet des objets, ou IdO (en anglais Internet of Things, ou IoT) est l'interconnexion entre Internet

SmartComputerLab 12

Cartes d’extension (exemples)

Cartes d’extension pour les Cartes d’extension pour les emplacements « longues »emplacements « longues »

Une trentaine !Une trentaine !

UART

I2C

SPI

spécifique

Page 13: Internet des objets - IoT - SmartComputerLab · Internet des objets - IoT L'Internet des objets, ou IdO (en anglais Internet of Things, ou IoT) est l'interconnexion entre Internet

SmartComputerLab 13

Cartes d’extension avec capteurs (exemples)

Carte - bus I2C et un Carte - bus I2C et un capteur de luminosité - capteur de luminosité - BH1750BH1750

Carte - bus I2C et un capteur Carte - bus I2C et un capteur de température/humidité - de température/humidité - HTU21HTU21

Carte - bus UARTet Carte - bus UARTet module GPS – NEO-M6module GPS – NEO-M6

Page 14: Internet des objets - IoT - SmartComputerLab · Internet des objets - IoT L'Internet des objets, ou IdO (en anglais Internet of Things, ou IoT) est l'interconnexion entre Internet

SmartComputerLab 14

Cartes d’extension format mini D1

Cartes d’extension de SmartComputerLab

Une vingtaine !

Cartes d’extension Cartes d’extension « externes »« externes »En dizaines !En dizaines !

Page 15: Internet des objets - IoT - SmartComputerLab · Internet des objets - IoT L'Internet des objets, ou IdO (en anglais Internet of Things, ou IoT) est l'interconnexion entre Internet

SmartComputerLab 15

Exemple d’une architecture IoTExemple d’une architecture IoT

MCU – ESP32MCU – ESP32+ carte relais+ carte relais+ carte OLED+ carte OLED+ carte LoRa + carte LoRa

MCU – MCU – ESP32+LoRa+OLEDESP32+LoRa+OLED+ carte relais+ carte relais

Page 16: Internet des objets - IoT - SmartComputerLab · Internet des objets - IoT L'Internet des objets, ou IdO (en anglais Internet of Things, ou IoT) est l'interconnexion entre Internet

SmartComputerLab 16

Exemples, exemples, exemples, ..

Lecture de température, humidité, luminosité Lecture de température, humidité, luminosité Envoi par WiFi (Internet) sur le serveur, Envoi par WiFi (Internet) sur le serveur, Réception de la commande pour le relaisRéception de la commande pour le relais

Page 17: Internet des objets - IoT - SmartComputerLab · Internet des objets - IoT L'Internet des objets, ou IdO (en anglais Internet of Things, ou IoT) est l'interconnexion entre Internet

SmartComputerLab 17

Exemples, exemples, exemples, ..

Lecture de température, humidité, luminosité, CO2, particules, Lecture de température, humidité, luminosité, CO2, particules, Envoi par LoRa vers une passerelle LoRa-WiFi (Internet) Envoi par LoRa vers une passerelle LoRa-WiFi (Internet) Réception de la commande pour le relaisRéception de la commande pour le relais

LoRa

Page 18: Internet des objets - IoT - SmartComputerLab · Internet des objets - IoT L'Internet des objets, ou IdO (en anglais Internet of Things, ou IoT) est l'interconnexion entre Internet

SmartComputerLab 18

Exemples, exemples, exemples, ..

Lecture empreintes, carte RFIDLecture empreintes, carte RFIDEnvoi par LoRa vers une passerelle LoRa-WiFi (Internet) Envoi par LoRa vers une passerelle LoRa-WiFi (Internet)

LoRa

Page 19: Internet des objets - IoT - SmartComputerLab · Internet des objets - IoT L'Internet des objets, ou IdO (en anglais Internet of Things, ou IoT) est l'interconnexion entre Internet

SmartComputerLab 19

Exemples, exemples, exemples, ..

Passerelle Passerelle LoRa-WiFiLoRa-WiFi configurableconfigurableRéception-EnvoiRéception-Envoi des données sur le serveur des données sur le serveur ThingspeakThingspeakStockage des données horodatées sur une carte Stockage des données horodatées sur une carte SDSD

LoRa

WiFi

Page 20: Internet des objets - IoT - SmartComputerLab · Internet des objets - IoT L'Internet des objets, ou IdO (en anglais Internet of Things, ou IoT) est l'interconnexion entre Internet

SmartComputerLab 20

Serveurs IoTServeurs IoT

ExempleExemple -  - ThingSpeakThingSpeak (open source)  (open source) Thingspeak.comThingspeak.com (MatLab), (MatLab), Thingspeak.frThingspeak.fr (SmartComputerLab) (SmartComputerLab)

Il existe plusieurs types de serveurs pour IoT.Il existe plusieurs types de serveurs pour IoT.Fonctions : Fonctions : stockagestockage , , visualisationvisualisation (IU), (IU), traitementstraitements

Page 21: Internet des objets - IoT - SmartComputerLab · Internet des objets - IoT L'Internet des objets, ou IdO (en anglais Internet of Things, ou IoT) est l'interconnexion entre Internet

SmartComputerLab 21

Serveurs IoTServeurs IoTUn canal ThingSpeak avec les champs (fields) :

Page 22: Internet des objets - IoT - SmartComputerLab · Internet des objets - IoT L'Internet des objets, ou IdO (en anglais Internet of Things, ou IoT) est l'interconnexion entre Internet

SmartComputerLab 22

Programmation – Arduino IDEProgrammation – Arduino IDE

Ajouter les cartes Ajouter les cartes ESP32ESP32 et et ESP12ESP12 (8266) (8266)

Dans les préférences :Dans les préférences :https://dl.espressif.com/dl/package_esp32_index.jsonhttps://dl.espressif.com/dl/package_esp32_index.json,,http://arduino.esp8266.com/stable/package_esp8266com_index.jsonhttp://arduino.esp8266.com/stable/package_esp8266com_index.json

Puis dans le Puis dans le Boards ManagerBoards Manager

Télécharger le fichier d’installation Arduino IDETélécharger le fichier d’installation Arduino IDE● LinuxLinux● WindowsWindows

Installer l’IDEInstaller l’IDE

Page 23: Internet des objets - IoT - SmartComputerLab · Internet des objets - IoT L'Internet des objets, ou IdO (en anglais Internet of Things, ou IoT) est l'interconnexion entre Internet

SmartComputerLab 23

Un très simple exemple du codeUn très simple exemple du code

Nous allons utiliser la carte « large » avec le MCU – Heltec : Nous allons utiliser la carte « large » avec le MCU – Heltec : ESP32+OLED+WiFi+LoRaESP32+OLED+WiFi+LoRa

Nous allons tester un bouton (pin 0) et un LED (pin 25).Nous allons tester un bouton (pin 0) et un LED (pin 25).

const intconst int ButtonPin=0;  // PRG ButtonPin=0;  // PRGconst intconst int LEDPin=25;    // LED LEDPin=25;    // LED

void void setupsetup() {() {    pinModepinMode(LEDPin, OUTPUT);  (LEDPin, OUTPUT);      // sens de fonctionnement : INPUT, OUTPUT// sens de fonctionnement : INPUT, OUTPUT}}

Page 24: Internet des objets - IoT - SmartComputerLab · Internet des objets - IoT L'Internet des objets, ou IdO (en anglais Internet of Things, ou IoT) est l'interconnexion entre Internet

SmartComputerLab 24

Un très simple exemple du code

const int ButtonPin=0;  // PRGconst int ButtonPin=0;  // PRGconst int LEDPin=25;    // LEDconst int LEDPin=25;    // LED

void setup() {void setup() {    pinModepinMode(LEDPin, OUTPUT);  // sens du fonctionnement : INPUT, OUTPUT(LEDPin, OUTPUT);  // sens du fonctionnement : INPUT, OUTPUT}}

void loop() {void loop() {{{int  buttonState; int  buttonState;     buttonState = buttonState = digitalReaddigitalRead(ButtonPin);  // lecture de l’etat(ButtonPin);  // lecture de l’etat    if(buttonState) if(buttonState)         digitalWritedigitalWrite(LEDPin,HIGH);      // envoi du signal : HIGH, LOW(LEDPin,HIGH);      // envoi du signal : HIGH, LOW    else  else          digitalWritedigitalWrite(LEDPin,LOW);(LEDPin,LOW);    delay(30);                        // attente de 30 msdelay(30);                        // attente de 30 ms    }}}}

Page 25: Internet des objets - IoT - SmartComputerLab · Internet des objets - IoT L'Internet des objets, ou IdO (en anglais Internet of Things, ou IoT) est l'interconnexion entre Internet

SmartComputerLab 25

Lecture des données sur SHT21

##includeinclude < <WireWire.h>.h>##includeinclude <Sodaq_SHT2x.h> <Sodaq_SHT2x.h>

void void setupsetup()(){{    WireWire..beginbegin(21,22);(21,22);    SerialSerial..beginbegin(9600);(9600);}}

void void looploop()(){{    Serial.print("Humidity(%RH): ");Serial.print("Humidity(%RH): ");    Serial.print(SHT2x.GetHumidity());Serial.print(SHT2x.GetHumidity());    Serial.print("     Temperature(C): ");Serial.print("     Temperature(C): ");    Serial.println(SHT2x.GetTemperature());Serial.println(SHT2x.GetTemperature());    delaydelay(1000);(1000);}}

Page 26: Internet des objets - IoT - SmartComputerLab · Internet des objets - IoT L'Internet des objets, ou IdO (en anglais Internet of Things, ou IoT) est l'interconnexion entre Internet

SmartComputerLab 26

Lecture des données surLecture des données sur SHT21 SHT21 et et l’affichagel’affichage sur l’écran OLED sur l’écran OLED

#include <#include <WireWire.h>.h>#include <Sodaq_SHT2x.h>#include <Sodaq_SHT2x.h>

##include include <U8x8lib.h>  // bibliothèque à charger a partir de <U8x8lib.h>  // bibliothèque à charger a partir de U8X8_SSD1306_128X64_NONAME_SW_I2C U8X8_SSD1306_128X64_NONAME_SW_I2C u8x8u8x8(15,4,16); // clock, data, reset(15,4,16); // clock, data, reset

floatfloat temperature,humidite; temperature,humidite;

void dispData() void dispData() { {     char dbuf[16]; char dbuf[16];     u8x8u8x8..clearclear(); ();     u8x8u8x8..drawStringdrawString(0,1,"SmartComputerLab"); (0,1,"SmartComputerLab");     sprintf(dbuf,"temp:%f",temperature); sprintf(dbuf,"temp:%f",temperature); u8x8u8x8..drawStringdrawString(0,3,dbuf); (0,3,dbuf);     sprintf(dbuf,"humi:%f",humidite); sprintf(dbuf,"humi:%f",humidite); u8x8u8x8..drawStringdrawString(0,4,dbuf); (0,4,dbuf);     delay(6000); delay(6000); } } 

Page 27: Internet des objets - IoT - SmartComputerLab · Internet des objets - IoT L'Internet des objets, ou IdO (en anglais Internet of Things, ou IoT) est l'interconnexion entre Internet

SmartComputerLab 27

Envoi des données sur Envoi des données sur ThingSpeakThingSpeak

Préparations :Préparations :

Adresse IP et numéro de port du serveur (pour Adresse IP et numéro de port du serveur (pour Thingspeak.frThingspeak.fr) dans ) dans ThingSpeak.hThingSpeak.h

##definedefine  THINGSPEAK_IPADDRESSTHINGSPEAK_IPADDRESS IPAddress(90,105,148,36) IPAddress(90,105,148,36)##definedefine  THINGSPEAK_PORT_NUMBERTHINGSPEAK_PORT_NUMBER 443 443

Ajouter au début du code :Ajouter au début du code :

#include <#include <WiFiWiFi.h> .h> #include "#include "ThingSpeakThingSpeak.h" .h" 

Utiliser les fonctions pour précharger et envoyer les données : Utiliser les fonctions pour précharger et envoyer les données :

ThingSpeak.ThingSpeak.setFieldsetField(1, sensor[0]);  // préparation du field1(1, sensor[0]);  // préparation du field1ThingSpeak.ThingSpeak.setFieldsetField(2, sensor[1]);  // préparation du field2(2, sensor[1]);  // préparation du field2

PuisPuis

ThingSpeak.ThingSpeak.writeFieldswriteFields((myChannelNumbermyChannelNumber[1], [1], myWriteAPIKeymyWriteAPIKey[1]);  // envoi[1]);  // envoi

Page 28: Internet des objets - IoT - SmartComputerLab · Internet des objets - IoT L'Internet des objets, ou IdO (en anglais Internet of Things, ou IoT) est l'interconnexion entre Internet

SmartComputerLab 28

Connexion WiFi Connexion WiFi

#include <#include <WiFiWiFi.h> .h> #include "#include "ThingSpeakThingSpeak.h".h"char char ssidssid[] = "PhoneAP";           //   SSID du reseau[] = "PhoneAP";           //   SSID du reseauchar char passpass[] = "smartcomputerlab";  //   mot de passe par defaut[] = "smartcomputerlab";  //   mot de passe par defautunsigned long unsigned long myChannelNumbermyChannelNumber = 100;    = 100;   const char * const char * myWriteAPIKeymyWriteAPIKey="MEH7A0FHAMNWJE8P" ;="MEH7A0FHAMNWJE8P" ;WiFiClient  client;WiFiClient  client;

void void setupsetup() {() {Serial.begin(9600);Serial.begin(9600);WiFi.WiFi.disconnectdisconnect(true);  // effacer de l’EEPROM WiFi (true);  // effacer de l’EEPROM WiFi credentialscredentialsdelay(1000);delay(1000);WiFi.WiFi.beginbegin((ssidssid, , passpass););delay(1000);delay(1000);      while (WiFi.while (WiFi.statusstatus() != () != WL_CONNECTEDWL_CONNECTED) {) {        delay(500);delay(500);        Serial.print(".");Serial.print(".");        }}

Page 29: Internet des objets - IoT - SmartComputerLab · Internet des objets - IoT L'Internet des objets, ou IdO (en anglais Internet of Things, ou IoT) est l'interconnexion entre Internet

SmartComputerLab 29

Envoi des données sur Envoi des données sur ThingSpeakThingSpeak    IPAddress IPAddress ipip = WiFi.localIP(); = WiFi.localIP();    Serial.print("IP Address: ");Serial.println(Serial.print("IP Address: ");Serial.println(ipip););    Serial.println("WiFi setup ok");delay(1000);Serial.println("WiFi setup ok");delay(1000);    ThingSpeak.ThingSpeak.beginbegin((clientclient); // ); // connexion TCPconnexion TCP au serveur au serveur    delay(1000);delay(1000);    Serial.println("ThingSpeak begin");Serial.println("ThingSpeak begin");}}

int tout=10000;  // en millisecondesint tout=10000;  // en millisecondesfloat luminosity=100.0, temperature=10.0;float luminosity=100.0, temperature=10.0;

void void looploop()(){{ThingSpeak.ThingSpeak.setFieldsetField(1, luminosity);  // préparation du field1(1, luminosity);  // préparation du field1ThingSpeak.ThingSpeak.setFieldsetField(2, temperature);  // préparation du field1(2, temperature);  // préparation du field1        while (WiFi.status() != WL_CONNECTED) {while (WiFi.status() != WL_CONNECTED) {        delay(500);Serial.print(".");}delay(500);Serial.print(".");}ThingSpeak.ThingSpeak.writeFieldswriteFields((myChannelNumbermyChannelNumber, , myWriteAPIKeymyWriteAPIKey); ); luminosity++;temperature++;luminosity++;temperature++;delay(tout);delay(tout);

}}

Page 30: Internet des objets - IoT - SmartComputerLab · Internet des objets - IoT L'Internet des objets, ou IdO (en anglais Internet of Things, ou IoT) est l'interconnexion entre Internet

SmartComputerLab 30

LoRa sur IoT DevKitLoRa sur IoT DevKit

LoRaLoRa ( (LoLong ng RaRange) est une technologie de communication de nge) est une technologie de communication de données numérique sans fil brevetée développée par données numérique sans fil brevetée développée par CycleoCycleo à Grenoble, et acquise par à Grenoble, et acquise par SemtechSemtech en 2012, membre en 2012, membre fondateur de l'Alliance LoRa. fondateur de l'Alliance LoRa.

LoRaLoRa est un protocole de communication sans fil longue est un protocole de communication sans fil longue portée qui rivalise avec d’autres réseaux sans fil à faible portée qui rivalise avec d’autres réseaux sans fil à faible puissance tels que puissance tels que SIGFOXSIGFOX ou ou 4G/5G4G/5G à bande étroite ( à bande étroite (NBNB).).

Les circuits – modems Les circuits – modems LoRaLoRa de référence sont de référence sont SX1276/78SX1276/78, , SX1301 (multicanal), ..SX1301 (multicanal), ..

Les circuits Les circuits SX1276/78SX1276/78 sont intégrés avec les SoC ESP32 sur sont intégrés avec les SoC ESP32 sur les cartes Heltec utilisés sur la plate-forme les cartes Heltec utilisés sur la plate-forme IoT DevKitIoT DevKit..

Page 31: Internet des objets - IoT - SmartComputerLab · Internet des objets - IoT L'Internet des objets, ou IdO (en anglais Internet of Things, ou IoT) est l'interconnexion entre Internet

SmartComputerLab 31

LoRa – émetteur/récepteurLoRa – émetteur/récepteur  

Préparations :Préparations :

#include <SPI.h>              // include libraries#include <SPI.h>              // include libraries#include <LoRa.h>#include <LoRa.h>#define SCK     5    // GPIO5  ­­ SX127x's SCK#define SCK     5    // GPIO5  ­­ SX127x's SCK#define MISO    19   // GPIO19 ­­ SX127x's MISO#define MISO    19   // GPIO19 ­­ SX127x's MISO#define MOSI    27   // GPIO27 ­­ SX127x's MOSI#define MOSI    27   // GPIO27 ­­ SX127x's MOSI#define SS      18   // GPIO18 ­­ SX127x's CS#define SS      18   // GPIO18 ­­ SX127x's CS#define RST     14   // GPIO14 ­­ SX127x's RESET#define RST     14   // GPIO14 ­­ SX127x's RESET#define DI0     26   // GPIO26 ­­ SX127x's IRQ(Interrupt Request)#define DI0     26   // GPIO26 ­­ SX127x's IRQ(Interrupt Request)

#define freq    #define freq    868E6868E6      #define sf #define sf 88#define sb #define sb 125E3125E3

Page 32: Internet des objets - IoT - SmartComputerLab · Internet des objets - IoT L'Internet des objets, ou IdO (en anglais Internet of Things, ou IoT) est l'interconnexion entre Internet

SmartComputerLab 32

LoRa – émetteur/récepteurLoRa – émetteur/récepteur  

unionunion pack pack{{

uint8_tuint8_t frame[16]; // trames avec octets frame[16]; // trames avec octetsfloat  data[4];   // 4 valeurs en virgule flottantefloat  data[4];   // 4 valeurs en virgule flottante

} sdp ;  // paquet d’emission} sdp ;  // paquet d’emission

void void setupsetup() {() {    Serial.begin(9600);Serial.begin(9600);    pinMode(DI0, INPUT);  // signal interruption                   pinMode(DI0, INPUT);  // signal interruption                       SPI.SPI.beginbegin(SCK,MISO,MOSI,SS);(SCK,MISO,MOSI,SS);    LoRaLoRa..setPinssetPins(SS,RST,DI0);(SS,RST,DI0);    if (!if (!LoRaLoRa..beginbegin((freqfreq)) {)) {        Serial.println("Starting LoRa failed!");Serial.println("Starting LoRa failed!");        while (1);while (1);    }}LoRaLoRa.setSpreadingFactor(.setSpreadingFactor(sfsf););LoRaLoRa.setSignalBandwidth (.setSignalBandwidth (sbsb););}}

Page 33: Internet des objets - IoT - SmartComputerLab · Internet des objets - IoT L'Internet des objets, ou IdO (en anglais Internet of Things, ou IoT) est l'interconnexion entre Internet

SmartComputerLab 33

LoRa – émetteurLoRa – émetteur  

float d1=12.0, d2=321.54 ;float d1=12.0, d2=321.54 ;

void void looploop()  // la boucle de l’emetteur()  // la boucle de l’emetteur{{Serial.println("New Packet") ;Serial.println("New Packet") ;    LoRaLoRa..beginPacketbeginPacket();                   // start packet();                   // start packet    sdp.data[0]=d1;sdp.data[0]=d1;    sdp.data[1]=d2;sdp.data[1]=d2;    LoRaLoRa..writewrite(sdp.frame,16);(sdp.frame,16);    LoRaLoRa..endPacketendPacket();();d1++; d2+=2;d1++; d2+=2;delay(2000);delay(2000);}}

packet

Page 34: Internet des objets - IoT - SmartComputerLab · Internet des objets - IoT L'Internet des objets, ou IdO (en anglais Internet of Things, ou IoT) est l'interconnexion entre Internet

SmartComputerLab 34

LoRa – récepteurLoRa – récepteur  

float d1,d2;float d1,d2;int i=0;int i=0;

void void looploop()  // la boucle de recepteur()  // la boucle de recepteur{{int packetLen;int packetLen;packetLen=packetLen=LoRaLoRa.parsePacket();.parsePacket();if(packetLen==16)if(packetLen==16)    {{        i=0;i=0;    while (while (LoRaLoRa..availableavailable()) {()) {        rdp.frame[i]=rdp.frame[i]=LoRaLoRa..readread();i++;();i++;        }}    d1=rdp.data[0];d2=rdp.data[1];d1=rdp.data[0];d2=rdp.data[1];    rssi=rssi=LoRaLoRa..packetRssipacketRssi();  // force du signal en réception en dB ();  // force du signal en réception en dB     Serial.println(d1);  Serial.println(d2);Serial.println(d1);  Serial.println(d2);    Serial.println(rssi);Serial.println(rssi);    }}}}

packet

Page 35: Internet des objets - IoT - SmartComputerLab · Internet des objets - IoT L'Internet des objets, ou IdO (en anglais Internet of Things, ou IoT) est l'interconnexion entre Internet

SmartComputerLab 35

Une architecture IoT multitâche avec Une architecture IoT multitâche avec freeRTOSfreeRTOS – exemple : passerelle LoRa-WiFi – exemple : passerelle LoRa-WiFi

  

LoRa - terminaux

WiFi – Internet - WiFi – Internet - ThingSpeakThingSpeak

EEPROM module

CardKB module

Page 36: Internet des objets - IoT - SmartComputerLab · Internet des objets - IoT L'Internet des objets, ou IdO (en anglais Internet of Things, ou IoT) est l'interconnexion entre Internet

SmartComputerLab 36

Une architecture IoT multitâche avec Une architecture IoT multitâche avec freeRTOSfreeRTOS – exemple : passerelle LoRa-WiFi – exemple : passerelle LoRa-WiFi

   #include <Wire.h>     // bus I2C#include <Wire.h>     // bus I2C#include "WiFi.h"#include "WiFi.h"#include "ThingSpeak.h"#include "ThingSpeak.h"#include <U8x8lib.h>  // ecran OLED  #include <U8x8lib.h>  // ecran OLED  U8X8_SSD1306_128X64_NONAME_SW_I2C u8x8(15, 4, 16);U8X8_SSD1306_128X64_NONAME_SW_I2C u8x8(15, 4, 16);#include <AT24Cxx.h>  // memoire EEPROM pour stocker les parametres#include <AT24Cxx.h>  // memoire EEPROM pour stocker les parametres#define i2c_address 0x50  // adresse I2C pour le module EEPROM#define i2c_address 0x50  // adresse I2C pour le module EEPROMuint16_t paddr=0;  uint16_t paddr=0;  AT24Cxx eep(i2c_address, 32);  // taille in KBAT24Cxx eep(i2c_address, 32);  // taille in KB#define CARDKB_ADDR 0x5F // adresse I2C pour le clavier cardKB#define CARDKB_ADDR 0x5F // adresse I2C pour le clavier cardKBchar ssid[32],pass[32];  // parametres WiFichar ssid[32],pass[32];  // parametres WiFiWiFiClient  client;WiFiClient  client;#include <SPI.h>     // bus SPI#include <SPI.h>     // bus SPI#include <#include <LoRaLoRa.h>.h>#define SCK     5    // GPIO5  ­­ SX127x's SCK#define SCK     5    // GPIO5  ­­ SX127x's SCK#define MISO    19   // GPIO19 ­­ SX127x's MISO#define MISO    19   // GPIO19 ­­ SX127x's MISO#define MOSI    27   // GPIO27 ­­ SX127x's MOSI#define MOSI    27   // GPIO27 ­­ SX127x's MOSI#define SS      18   // GPIO18 ­­ SX127x's CS#define SS      18   // GPIO18 ­­ SX127x's CS#define RST     14   // GPIO14 ­­ SX127x's RESET#define RST     14   // GPIO14 ­­ SX127x's RESET#define DI0     26   // GPIO26 ­­ SX127x's IRQ(Interrupt Request)#define DI0     26   // GPIO26 ­­ SX127x's IRQ(Interrupt Request)#define #define freqfreq        434E6 434E6  // ou 868E6 en Europe // ou 868E6 en Europeint  int  sf=8;sf=8;          // facteur d’etalement          // facteur d’etalementint int sb=125E3;sb=125E3;       // bande passante LoRa 125KHz,[250KHz,500Kz]       // bande passante LoRa 125KHz,[250KHz,500Kz]

Page 37: Internet des objets - IoT - SmartComputerLab · Internet des objets - IoT L'Internet des objets, ou IdO (en anglais Internet of Things, ou IoT) est l'interconnexion entre Internet

SmartComputerLab 37

Une architecture IoT multitâche avec Une architecture IoT multitâche avec freeRTOSfreeRTOS – exemple : passerelle LoRa-WiFi – exemple : passerelle LoRa-WiFi

   unionunion      {{        uint8_t frame[24];uint8_t frame[24];        struct struct             {{                uint8_t head[4];uint8_t head[4];                float sens[5];float sens[5];            } data;} data;    } pack;} pack;int setwifi=0,setts=0;   // mode parametresint setwifi=0,setts=0;   // mode parametreschar preset[32];char preset[32];int channel=1;  // thingspeak channel: 112int channel=1;  // thingspeak channel: 112char char chnumchnum[32];[32];char char wkeywkey[32];  // thingspeak channel write key : "0WLWT3UPVO2KI818"[32];  // thingspeak channel write key : "0WLWT3UPVO2KI818"

int int weepromweeprom(uint16_t addr, uint8_t *val, int len)(uint16_t addr, uint8_t *val, int len){{    for(int i=0;i<len;i++)  for(int i=0;i<len;i++)  eepeep..writewrite(addr++,val[i]); (addr++,val[i]); }}

int int reepromreeprom(uint16_t addr, uint8_t *val, int len)(uint16_t addr, uint8_t *val, int len){{    for(int i=0;i<len;i++)  val[i] = for(int i=0;i<len;i++)  val[i] = eepeep..readread(addr++); (addr++); }}

Page 38: Internet des objets - IoT - SmartComputerLab · Internet des objets - IoT L'Internet des objets, ou IdO (en anglais Internet of Things, ou IoT) est l'interconnexion entre Internet

SmartComputerLab 38

Une architecture IoT multitâche avec Une architecture IoT multitâche avec freeRTOSfreeRTOS – exemple : passerelle LoRa-WiFi – exemple : passerelle LoRa-WiFi

   int int getstrgetstr(char *p, int len)(char *p, int len){{int i=0;  memset(p,0x00,len);int i=0;  memset(p,0x00,len);while(1)while(1)  {  {      WireWire..requestFromrequestFrom(CARDKB_ADDR, 1);(CARDKB_ADDR, 1);    while(while(WireWire..availableavailable())())    {{        char c = char c = WireWire..readread(); // receive a byte as character(); // receive a byte as character        if (c != 0)if (c != 0)        {{            Serial.println(c, HEX);Serial.println(c);Serial.println(c, HEX);Serial.println(c);            if(c==0x08 && i>0) { i­­;}if(c==0x08 && i>0) { i­­;}            elseelse                {{                if(c=='\n' || c=='\r'){u8x8.clear();i=0;return(0);}if(c=='\n' || c=='\r'){u8x8.clear();i=0;return(0);}                else {p[i]=c;u8x8.drawString(0,i/16,p+16*(i/16));i++;}else {p[i]=c;u8x8.drawString(0,i/16,p+16*(i/16));i++;}                if(i==len) {u8x8.clear();i=0;memset(p,0x00,len);return(­1); }if(i==len) {u8x8.clear();i=0;memset(p,0x00,len);return(­1); }                }  }            }}    }}      delay(10);delay(10);  }}}}

Page 39: Internet des objets - IoT - SmartComputerLab · Internet des objets - IoT L'Internet des objets, ou IdO (en anglais Internet of Things, ou IoT) est l'interconnexion entre Internet

SmartComputerLab 39

Une architecture IoT multitâche avec Une architecture IoT multitâche avec freeRTOSfreeRTOS – exemple : passerelle LoRa-WiFi – exemple : passerelle LoRa-WiFi

   voidvoid  taskTStaskTS( void * ( void * parameterparameter)){ { int i=0,packetSize=0;int i=0,packetSize=0;char dbuff[32]; char dbuff[32]; whilewhile(1)  // une tache s’execute en boucle !(1)  // une tache s’execute en boucle !    {{    while (while (WiFiWiFi..statusstatus() != WL_CONNECTED) {() != WL_CONNECTED) {          delay(500);delay(500);          Serial.print(".");Serial.print(".");          }}                pack.data.sens[0]= (float) i++;pack.data.sens[0]= (float) i++;      ThingSpeakThingSpeak..setFieldsetField(1, pack.data.sens[0]);(1, pack.data.sens[0]);

      Serial.println(Serial.println(channelchannel);   Serial.println();   Serial.println(wkeywkey););      ThingSpeakThingSpeak..writeFieldswriteFields((channelchannel, , wkeywkey););      delay(10000);delay(10000);      }}}}

Page 40: Internet des objets - IoT - SmartComputerLab · Internet des objets - IoT L'Internet des objets, ou IdO (en anglais Internet of Things, ou IoT) est l'interconnexion entre Internet

SmartComputerLab 40

Une architecture IoT multitâche avec Une architecture IoT multitâche avec freeRTOSfreeRTOS – exemple : passerelle LoRa-WiFi – exemple : passerelle LoRa-WiFi

   voidvoid taskTS( void *  taskTS( void * parameterparameter)){ { int i=0,packetSize=0;char dbuff[32]; int i=0,packetSize=0;char dbuff[32]; whilewhile(1)(1)    { packetSize = { packetSize = LoRaLoRa..parsePacketparsePacket();();    if (packetSize==24) if (packetSize==24)         { i=0;{ i=0;        whilewhile ( (LoRaLoRa..availableavailable()) ())         { pack.frame[i]={ pack.frame[i]=LoRaLoRa..readread();i++; }();i++; }      while (while (WiFiWiFi..statusstatus() != WL_CONNECTED) {() != WL_CONNECTED) {          delay(500);Serial.print(".");delay(500);Serial.print(".");          }}      ThingSpeakThingSpeak..setFieldsetField(1, pack.data.sens[0]);(1, pack.data.sens[0]);      ThingSpeakThingSpeak..setFieldsetField(2, pack.data.sens[1]);(2, pack.data.sens[1]);      ThingSpeakThingSpeak..setFieldsetField(3, pack.data.sens[2]);(3, pack.data.sens[2]);      ThingSpeakThingSpeak..setFieldsetField(4, pack.data.sens[3]);(4, pack.data.sens[3]);      ThingSpeakThingSpeak..setFieldsetField(5, pack.data.sens[4]);(5, pack.data.sens[4]);      ThingSpeakThingSpeak..writeFieldswriteFields((channelchannel, , wkeywkey););      delay(10000); }delay(10000); }  }  }  }}

Page 41: Internet des objets - IoT - SmartComputerLab · Internet des objets - IoT L'Internet des objets, ou IdO (en anglais Internet of Things, ou IoT) est l'interconnexion entre Internet

SmartComputerLab 41

Une architecture IoT multitâche avec Une architecture IoT multitâche avec freeRTOSfreeRTOS – exemple : passerelle LoRa-WiFi – exemple : passerelle LoRa-WiFi

   void void setupsetup()(){{char dbuf[32]; int cn=0;char dbuf[32]; int cn=0;    Serial.begin(9600);Serial.begin(9600);WireWire.begin(21,22); ...begin(21,22); ..    SPISPI.begin(SCK,MISO,MOSI,SS);.begin(SCK,MISO,MOSI,SS);LoRaLoRa.setPins(SS,RST,DI0);.setPins(SS,RST,DI0);    if (!if (!LoRaLoRa.begin(434E6)) {.begin(434E6)) {        Serial.println("Starting LoRa failed!");Serial.println("Starting LoRa failed!");        while (1);while (1);    }}    WiFiWiFi.disconnect(true);.disconnect(true);      delay(100);delay(100);      WiFiWiFi.begin(ssid, pass);    .begin(ssid, pass);            while (while (WiFiWiFi.status() != WL_CONNECTED) { delay(500); Serial.print(".");.status() != WL_CONNECTED) { delay(500); Serial.print(".");        }}    IPAddress ip = IPAddress ip = WiFiWiFi.localIP(); ...localIP(); ..    sprintf(dbuf,"%d.%d.%d.%d",ip[0],ip[1],ip[2],ip[3]);sprintf(dbuf,"%d.%d.%d.%d",ip[0],ip[1],ip[2],ip[3]);    u8x8u8x8.drawString(0,3,dbuf); ...drawString(0,3,dbuf); ..    ThingSpeakThingSpeak.begin(client);.begin(client);    delay(1000);delay(1000);    Serial.println("ThingSpeak begin");Serial.println("ThingSpeak begin");        xTaskCreatexTaskCreate((                                        taskTS,          /* Task function. */taskTS,          /* Task function. */                                        "taskTS",        /* String with name of task. */"taskTS",        /* String with name of task. */                                        10000,            /* Stack size in words. */10000,            /* Stack size in words. */                                        NULL,             /* Parameter passed as input of the task */NULL,             /* Parameter passed as input of the task */                                        0,                /* Priority of the task. */0,                /* Priority of the task. */                                        NULL);NULL);}}

void void looploop(){ Serial.println("in the loop");delay(3000);}(){ Serial.println("in the loop");delay(3000);}

Page 42: Internet des objets - IoT - SmartComputerLab · Internet des objets - IoT L'Internet des objets, ou IdO (en anglais Internet of Things, ou IoT) est l'interconnexion entre Internet

SmartComputerLab 42

IoT DevKit et architectures IoT IoT DevKit et architectures IoT

Architectures des terminaux IoTArchitectures des terminaux IoT

● Terminaux simples – mono-tâche : ESP12/ESP32Terminaux simples – mono-tâche : ESP12/ESP32● Terminaux complexes – multi-tâches (Terminaux complexes – multi-tâches (freeRTOSfreeRTOS) : ESP32) : ESP32

Architectures des passerelles IoT :Architectures des passerelles IoT : ESP32 ESP32

● Multi-tâches et configurables (Multi-tâches et configurables (freeRTOSfreeRTOS))

Une vaste sélection des cartes et des capteurs/actionneurs Une vaste sélection des cartes et des capteurs/actionneurs permettant de construire une grande variété d’permettant de construire une grande variété d’architecturesarchitectures IoT façon LEGOIoT façon LEGO..

Page 43: Internet des objets - IoT - SmartComputerLab · Internet des objets - IoT L'Internet des objets, ou IdO (en anglais Internet of Things, ou IoT) est l'interconnexion entre Internet

SmartComputerLab 43

IoT DevKit et architectures IoTIoT DevKit et architectures IoT

Serveurs IoT Serveurs IoT

● ThingSpeak.frThingSpeak.fr● Thinger.frThinger.fr

Support pédagogique completSupport pédagogique complet

Incluant :Incluant :● Les préparations du Les préparations du logiciellogiciel - - scriptes Arduino scriptes Arduino et et

bibliothèques de bibliothèques de composantscomposants● Les Les exemplesexemples d’utilisation de l’ensemble des d’utilisation de l’ensemble des cartescartes et des et des

capteurs/actionneurscapteurs/actionneurs● Exemples Exemples d’architecturesd’architectures dans les dans les différentes domaines différentes domaines

d’application d’application