SCIENCES DE L'INGENIEUR

Niveau : Terminale générale, enseignement de spécialité SI

D
É
C
O
N
N
E
C
T
É

TP : L'Internet des Objets (IOT)

iot

1 - Objectif :

On souhaite relever la température de la salle de cours du lycée et de l'enregistrer afin de pouvoir exploiter les données plus tard, afin d'optimizer le chauffage et de faire des économies d'énergie.

2 - Cahier des charges

  1. Un microcontrôleur ESP8266 se chargera de relever la température et la transmettre sans fil à un serveur,
  2. L'autonomie du microcontrôleur ESP8266 devra être d'une semaine au moins,
  3. Les données reçues par le serveur, seront stockées dans une base de données,
  4. La portée de transmission sera inférieure à 50 mètres,
  5. Les données seront transmises en utilisant le protocole UDP.

3 - Protocole UDP

Que signifie UDP ?

Pour transmettre les données du microcontrôleur vers le serveur, l'ESP8266 devra connaître l'adresse IP.

Les données transitent par un port. Un port s'apparente à une porte par laquelle passent les données. Il est désigné par un entier compris entre 0 et 65535

Trame Ethernet II

Trame Ethernet

Trame UDP

La trame UDP est encapsulée dans le paquet Data de la trame Ethernet II

Un transfert UDP est caractérisé par :

Entête Ethernet II
adresse mac destination
(6 octets)
adresse mac source
(6 octets)
type de paquet
(2 octets)
Entête IP
version
(4 bits)
longueur Entête
(4 bits)
type de service
(8 bits)
longueur totale du datagramme
(16 bits)
Identification
(16 bits)
drapeaux
(8 bits)
Décalage de fragment
( 8 bits)
Durée de vie
(8 bits)
Protocole
(8 bits)
contrôle des entêtes
(16 bits)
Adresse IP Source
(32 bits)
Adresse IP destination
(32 bits)
User Datagram Protocole (UDP encapsulée)
Port source
(16 bits)
Port destination
(16 bits)
Longueur totale du datagramme
(16 bits)
Checksum
(16 bits)
Données Données
Données ...

4 - Mise en oeuvre

On dispose :

4.1 Configuration du point d'accès Wifi

Exécuter le logiciel Thonny python

Dans le menu outil, cliquer sur option, puis sélectionner l'onglet interpréteur, Sélectionner l'interpréteur MicroPython (ESP8266).

Coller le programme ci-dessous permettant de créer le point d'accès wifi.

Personnaliser le nom du point d'accès en ligne 3 en remplaçant le ? par le nom de votre choix (restez correct...), puis exécuter le programme.

Depuis la console Thonny Python relevez :

4.2 Connexion au réseau Wifi

Connectez le PC au point d'accès ainsi crée.

Exécuter le programme "powershell" (touches windows + R) et tapez la commande "ipconfig /all" et relevez les informations de la carte réseau sans fil wi-fi :

4.3 Câblage du capteur de température :

Brancher le capteur de température sur le connecteur A0 de l'ESP

4.4 Configuration du client : l'ESP8266

Coller le code python ci-dessous dans Thonny python après avoir remplacé les ? pour faire fonctionner le programme.

4.5 Capture de la trame UDP :

Exécuter le logiciel Wireshark et capturez les trames Ethernet de votre carte "Wi-Fi".

Sélectionnez la ligne du protocole UDP et remplir le tableau ci-dessous :

Entête Ethernet II
adresse mac destination (6 octets)
adresse mac source (6)
type de paquet (2)
Entête IP
version (½)
 
longueur Entête (½)
type de service (1)
longueur totale du datagramme (2)
Identification (2)
drapeaux (1)
Décalage (1)
Durée de vie (1)
Protocole (1)
contrôle des entêtes (2)
Adresse IP Source (4)
Adresse IP destination (4)
User Datagram Protocole (UDP encapsulée)
Port source (2) Port destination (2)
Longueur totale du datagramme (2)
Checksum (2)
Données (1 / 1) / Données (1 / 1) /
Données (1)

Dans quelle base de numération sont encodés les octets de la trame ?

Comparez les adresses mac et identifiez qui du PC et de l'ESP8266 est  la source et la destination :

          • Source :

          • Destination :

Dans l'entête IP vérifier le type de service : (ICMP = 1, TCP = 6, UDP = 17...).

Convertir en décimal  :

  • Le port source :

  • L'adresse IP source :

          • L'adresse IP destination :

Quel code est utilisé pour transmettre les données ?

De combien d'octets en tout est composée la trame Ethernet ?

Le débit théorique maximal de transmission est de 54 Mb/s. Calculer le temps qu'il faudra pour transmettre la trame de l'ESP8266 vers l'ordinateur.

4.6 Création d'une base de donnée

La base de données contiendra les informations sur heure et la température de la salle A004 envoyées par le capteur

Exécuter Edupython

Ouvrir l'outil permettant de créer une base de données en cliquant sur l'icône suivante : base

Créer une nouvelle base de données "lavoisier.db" que vous sauvegardez dans un dossier de vos documents.

  • Nommer la table "A004", ajouter les 3 champs suivants :
      • num : un numéro unique d'enregistrement (Type : INTEGER, clé primaire : cochez CP, auto-incrémenté : cochez IA)
      • date : la date et l'heure qui sera stockée au format "YYYY/MM/JJ-HH:MM:SS" (Type : TEXT)
      • valeur : la valeur de la température au dixième de degré (Type TEXT)

    4.7 Configuration du serveur

    Copier/coller le script suivant dans edupyton après avoir remplacé les ? :

    Sauvegarder le script dans le même dossier qui contient la base de données

    Exécuter le script python

    Ouvrir la base de données lavoisier.db depuis Edupython avec DB Browser for SQLite

    Cliquez sur l'onglet parcourir les données dans DB Browser for SQLite, rafraîchir les données si nécessaire et vérifier la présence d'une nouvelle donnée toutes les 10s.

    5 - Choix de la batterie

    La documentation constructeur donne les caractéristiques suivantes :

    Tension d'alimentation 3.0 à 3.6V
    Courant moyen absorbé 80 mA

    Calculer la capacité en mAh pour une semaine de fonctionnement.

    Afin de garder de la marge et éviter de trop décharger la batterie, Calculer la capacité de la batterie en appliquant un coefficient de 1.2 (+20%).

    On dispose de batteries NiMh de 1.2V et 8.0Ah. Comment faut-il associer les batteries pour former le pack 

    Simuler l'autonomie du pack en s'inspirant du schéma suivant

    simulation
    • La batterie se trouvent dans battery - Electrochemical, en cliquant sur l'élément indiquez le nombre de cellules en série et la capacité totale de votre batterie
    • La source de courant se trouve dans Electrical - Analog - Sources - Current qu'il faudra paramétrer à 80 mA
    • La masse dans Electrical - Analog - Common

    Simuler pour une durée de 10 jours pour atteindre la décharge compète de la batterie.

    Relever la capacité restante au bout de 7 jours ?

    On remarque que la tension de la batterie reste au-dessus des 3,6V il faudrait donc utiliser un régulateur permettant de réguler cette tension à 3,3V par exemple, afin de respecter les préconisations d'alimentation de l'ESP8266.

    Optimisation :

       

    Ajouter une donnée toutes des 10s n'est pas nécessaire, on peut se contenter de le faire toutes les 5 minutes par exemple.

    il est possible de faire rentrer l'ESP8266 en sommeil profond (deep sleep mode) pendant 5 minutes au lieu d'attendre avec un delay. Lors de son réveil programmé, il va redémarrer le programme complètement.

    Il suffit de remplacer la ligne time.sleep(...) par machine.deepsleep(sleep_time_ms).

    Durant la phase de sommeil profond, le courant circulant dans la puce est de 10 µA

    La phase de boot et de reconnexion au wifi dure en moyenne 10 secondes et le courant moyen est de 210 mA

    Calculer le courant moyen en tenant compte de la durée des 2 phases et en déduire la capacité de la batterie nécessaire pour une autonomie de 7 jours en tenant compte du coefficient de 20%

    tableau

    D'après le tableau ci dessus, quelle serait les technologies permettant d'augmenter encore l'autonomie tout en respectant la distance imposée par le cahier des charges.

    5 - Conclusion :

    Nous avons travaillé sur un réseau local avec le protocole UDP qui simplifie l'envoi des données.

    Lorsque le PC n'est plus connecté, les paquets envoyés seront perdus.

    L'IOT (Internet Of Things) passe par des bases de données accessibles sur Internet, afin que les données soit toujours disponibles, puisque les serveurs fonctionnent 24h/24.

    mathlab

    Il existe des sites Internet gratuits comme https://thingspeak.com/ qui permet de stocker nos données. Ces données peuvent être consultées par vous ou par l'ESP8266 à n'importe quel moment.

    Exemple d'un site Internet qui traite les données des températures dans le monde, grâce à des stations météo connectés par des particuliers : https://weathermap.netatmo.com/

     
    Fond : Texte : Tables :