Niveau : Terminale générale, enseignement de spécialité SI
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.
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
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 | ... |
On dispose :
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 :
le masque de sous réseau :
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 :
l'adresse physique (MAC) :
l'adresse IP :
le masque de sous réseau :
Le module ESP8266 est-il en mesure de communiquer avec votre PC ? Justifiez votre réponse
Brancher le capteur de température sur le connecteur A0 de l'ESP
Coller le code python ci-dessous dans Thonny python après avoir remplacé les ? pour faire fonctionner le programme.
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 :
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.
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 :
Créer une nouvelle base de données "lavoisier.db" que vous sauvegardez dans un dossier de vos documents.
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.
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
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.
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%
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.
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.
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.
L'architecture réseau du lycée ne nous permet pas mettre en œuvre un TP basé sur ce principe. Il faudrait passer par un partage de connexion depuis votre Smartphone.
Un exemple simple est accessible depuis le logiciel Arduino :
Insérer les informations du partage wifi : nom de partage et mot de passe, dans l'onglet secrets.h
Se rendre sur le site https://thingspeak.com/
Créer un compte étudiant (student) confirmez la création du compte depuis votre boite mail
Connectez-vous au site internet
Créer une nouveau canal : cliquez sur Channel - My Channels et
Puis sauvegardez.
Récupérez l'ID (1) et l'API key (2)
Les inscrire dans les deux lignes du code secrets.h
Téléversez le programme et dans "My channels", cliquez sur "lavoisier" pour voir évoluer les données toutes les 20 secondes.
Il ne reste plus qu'à modifier le programme pour envoyer la température.
Si l'ESP8266 était relié à une box, le programme pourrait envoyer en continu les données dans la base de manière autonome.
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/
Contenu
sous
licence CC BY-NC-SA 3.0
Pascal Hassenforder 04/01/2020
Mise à jour du 26/09/2024