Initiation à l'ESP-01
Description
Un problème très concret : transmettre aux radiateurs l'information « heures creuses », alors que personne n'a pensé à tirer le fil au moment des travaux et qu'il n'est pas question de casser la dalle.
La solution passe par un ESP-01, choisi parce qu'il existe des supports prévus pour piloter un relais. Suit le premier échec : le programme compile, mais refuse de se téléverser. Le hack qui débloque tout ne touche pas le module lui-même mais son adaptateur — un simple cavalier, pour relier ou non la broche GPIO 0 à la masse selon qu'on veut programmer ou exécuter.
La seconde partie est plus ardue : restaurer le programme d'origine, celui qui répond aux commandes AT. Le constructeur le distribue en binaires qu'il faut écrire à des adresses mémoire précises, ce qui interdit de l'adapter mais permet de repartir d'un module propre.
Mots-clés
- esp01
- programme
- ESP
- commande
- besoin
- mode
- creuse
- broche
- adaptateur
- circuit
- piloter
- permet
- envoyer
- phase
- série
- injecter
- binaire
- programmation
- connecter
- mets
- information
- GPI
- AT
- esp8266ex
- téléverser
- rubrique
- radiateur
- chauffe-eau
- usine
- coller
77 autres termes relevés
- humuse
- jumper
- esptool
- esp8266
- borne
- compilation
- horaire
- hacké
- interagir
- pilote
- communiquer
- étape
- boot
- vide
- bornier
- initial
- menu
- énergie
- hacker
- quatre
- tombe
- électrique
- livré
- intègre
- content
- développement
- objectif
- grosse
- journée
- répond
- aime
- technologie
- microcontrôleur
- volt
- ordre
- propose
- communication
- programmer
- fois-ci
- Wi-Fi
- gestion
- arriver
- verra
- intégré
- alimentation
- partir
- tard
- grâce
- projet
- capable
- récupérer
- connecté
- USB
- appareil
- passé
- sauf
- forcément
- adresse
- base
- attention
- directement
- est-à-dire
- maison
- serveur
- hack
- partie
- évidemment
- lorsque
- loisir
- simplement
- site
- tech
- technique
- informatique
- Cédric
- également
- informer
Articles connexes
Pour situer
- Wi-Fi
Le (ou la) Wi-Fi, aussi orthographié wifi, est un ensemble de protocoles de communication sans fil régi par les normes du groupe IEEE 802.11 (ISO/CEI 8802-11). Un réseau Wi-Fi permet de relier par ondes radio plusieurs appareils informatiques (ordinateur, routeur, smartphone, modem Internet, etc.) au sein d'un réseau informatique afin de permettre la transmission de données entre eux. Apparues pour la première fois en 1997, les normes IEEE 802.11 (ISO/CEI 8802-11), qui sont utilisées internationalement, décrivent les caractéristiques d’un réseau local sans fil (WLAN). La marque déposée « Wi-F…
- USB
L'USB (de l'anglais, « Universal Serial Bus ») est une norme de bus informatique série qui sert à connecter des périphériques informatiques à un ordinateur ou à tout type d'appareil prévu à cet effet (tablette, smartphone, etc.). Le bus USB permet de connecter des périphériques « à chaud » (quand l'ordinateur est en marche) et en bénéficiant du plug and play qui reconnaît automatiquement le périphérique. Il peut alimenter les périphériques peu gourmands en énergie (clé USB, disques SSD) et, pour ses dernières versions à prise USB Type-C, des appareils réclamant plus de puissance (60 W en vers…
- Tech
Le Tech [tɛk] est un fleuve côtier du Roussillon dont le cours de 84,5 kilomètres s'inscrit dans le département des Pyrénées-Orientales. Il présente la particularité de disposer du bassin versant le plus méridional de la France continentale.
Transcription
0:00 Vous écoutez S'informer sur la tech.
0:05 Sécurité, informatique, hack et loisirs techniques. Bonjour, je m'appelle Cédric et je suis technicien informatique. Nous allons parler de SP. Dans S'informer sur la tech, j'aime bien parler de technologie. Et c'est vrai que les bébêtes à quatre pattes, ça correspond au thème. Alors des fois, il y en a beaucoup plus. J'adore, c'est vraiment l'extase.
0:27 Et depuis peu, je me passionne sur les microcontrôleurs, les circuits intégrés programmables, ESP. Mais qu'est-ce que c'est ? Je ne vais pas vous refaire un cours sur ce que c'est un microcontrôleur, mais grosso modo, grâce à sa petite bête, je vais pouvoir piloter, commander ou récupérer des informations de différents appareils.
0:48 Et j'aime bien dire que quand on veut apprendre quelque chose, il faut avoir un objectif. Et là, ça y est, j'ai un objectif qui me permettra d'exploiter l'ESPI. L'objectif est le suivant. On me met au défi de piloter un radiateur à distance, mais ce n'est pas juste un simple fil pilote. En fait, le radiateur cible permet d'accumuler de l'énergie dans des pierres réfractaires, d'emmagasiner de l'énergie et de le restituer tout au long de la journée lorsqu'on en a besoin.
1:17 Donc ce radiateur, en plus d'avoir besoin d'une alimentation électrique et d'un fil pilote, il a également besoin d'avoir le fameux fil heure creuse, heure pleine. Vous savez, celui qui va vers les chauffe-eau et qui permet de mettre en route le chauffe-eau également en heure creuse. Et bien voilà, on a besoin également de ce fil, pas pilote, mais de ce fil heure creuse qui doit arriver sur ce radiateur.
1:41 Sauf qu'entre nous, on n'a jamais pensé à faire arriver un fil heure creuse vers les radiateurs. Bref, la problématique est là et à moindre coût et sans forcément monter une usine à gaz, il faut que j'arrive à envoyer cette information et puis sans forcément casser la dalle pour retirer un câble, il faut que j'arrive à donner au radiateur l'information qu'il souhaite, la vraie information.
2:06 Pour rappel, le signal heure creuse, c'est simplement le passage de la phase du 230 volts sur une borne de l'appareil. Oui, tout simplement. Il suffit de mettre la phase 230 volts sur la borne heure creuse pour indiquer à l'appareil que nous sommes en heure creuse. Donc si on veut automatiser ça, on va avoir besoin d'un relais qui est broché sur la phase du circuit électrique, du circuit de la maison et à un certain moment, on collera ce relais pour que ce 230 volts phase puisse être envoyé directement sur la broche du radiateur.
2:46 Mais qui va piloter ce relais ? Vous avez déjà la réponse, un ESP. Pourquoi un ESP ? On va faire travailler l'ESP pour qu'il puisse coller le relais sur ordre. Et cet ordre va être un ordre horaire. Donc on y apporte la notion de gestion des temps, savoir quelle heure il est, et de communication, communication pour contacter un serveur des temps.
3:10 Donc l'ESP32 ou l'ESP01 qui intègre le Wi-Fi va sûrement répondre à nos besoins. Avant de partir dans une usine à gaz avec la gestion horaire, on verra ça plus tard, on va d'abord comprendre ce que c'est l'ESP. Je vais m'attarder sur l'ESP01, parce que c'est celui que j'ai en possession et c'est celui qui est déjà prévu pour piloter un relais.
3:34 Il y a déjà le support, la base pour accueillir l'ESP01. Donc c'est pour ça que je suis parti sur l'ESP01. Attention, l'ESP01 n'a pas été qualifié CE, c'est-à-dire qu'il n'est pas passé sur les bancs de test en France, et il n'a pas passé la qualification, car a priori, d'après ce que j'ai compris, il peut amener quelques perturbations électromagnétiques.
3:56 De base, l'ESP01 est un circuit de développement qui contient le circuit intégré ESP8266EX et qui intègre des notions également de Wi-Fi. C'est génial ! L'antenne Wi-Fi est même incorporée sur l'ESP01. Pour pouvoir communiquer avec l'ESP01 en dehors du Wi-Fi, en mode développement, il y a un bornier, huit broches. Sur ce bornier, il y a une alimentation, plus VCC et la masse, la terre, et d'autres bornes qui, ben, deux sont connectées directement à l'ESP8266, la GPI-0 et la GPI-2.
4:36 Deux broches pour communiquer avec l'UART, le RX et le TX, puis deux, trois autres bornes dont, pour l'instant, je ne veux pas m'aventurer là-dedans, quoique, on verra un petit peu plus tard pourquoi on en aura besoin. Pour pouvoir communiquer avec l'ordinateur, il faut une interface série, série USB. Ça tombe bien, l'ESP intègre déjà un RX-TX, donc il a déjà une liaison série.
5:01 Donc il va falloir faire la transformation USB série, et ça tombe bien car il existe des clés, des adaptateurs USB vers l'ESP01, toutes prêtes. Je me suis empressé d'en acheter une et de brancher l'ESP dessus. Allez, je fais mon petit premier programme, vous savez, celui qui fait clignoter la LED, et je clique sur téléverser sur l'ESP01.
5:21 Là, j'ai eu une grosse surprise. En effet, le code voulait bien se compiler, mais j'avais une grosse erreur lorsque je voulais envoyer l'information vers l'ESP01. Bref, après quelques recherches, je tombe sur une page qui m'indique qu'on peut dialoguer avec l'ESP01 avec des commandes AT. Bon, soit, pourquoi pas, ça ne répond pas à mon premier besoin qui était de téléverser un programme, mais on va faire m'humuse avec ça.
5:49 Et c'est là-dessus où je suis tombé sur les commandes AT et AIS qui m'ont rappelé de vieux souvenirs. J'ai commencé à faire m'humuse, à découvrir le réseau Wi-Fi de la maison, à programmer un point de connexion, un AP. Voilà, ça m'a fait ma journée, j'étais bien content, sauf que je n'arrivais toujours pas à envoyer le programme dans l'ESP.
6:11 Pour envoyer un programme sur l'ESP8266EX, il faut que l'ESP01, la carte de développement, puisse mettre l'ESP8266 en mode programmation. L'adaptateur que j'ai acheté n'a pas cette option. Cette bascule en mode programmation ne se fait pas logiciellement parlant, mais se fait au niveau matériel. Donc j'ai dû hacker l'ESP01 pour connecter deux broches, la broche GNT et GPI 0, et lorsque je connecte ces deux broches, l'ESP01 met en mode programmation l'ESP8266.
6:48 Ben oui, parce que la GPI 0, la broche GPI 0 est reliée directement à l'ESP8266. Et à partir de ce moment-là, j'ai pu envoyer, téléverser mon programme de BlinkLED. Youpi, ça marche ! Voilà, donc un petit hack sur l'ESP01, enfin sur l'adaptateur, parce que j'ai plein de ESP01, je ne vais pas hacker tout l'ESP01. Donc j'ai plutôt hacké l'adaptateur, j'ai mis un petit jumper qui permet de connecter la GPI 0 avec la masse ou de ne pas le connecter.
7:21 Si je ne suis pas connecté, je suis en mode standard, je suis en mode série, en fait je suis en mode UART. Si le jumper relie la GPI 0 à la masse, je suis en mode flash, en mode programmation. Attention, depuis tout à l'heure, je vous parle de GPI 0 ou de GPI 2, mais c'est GPIO 0 ou GPIO 2. Voilà, IO pour Input Output.
7:44 Sur mon compte Twitter, Cédric Abonel, vous avez pu voir ce hack que j'ai réalisé. Bien sûr, évidemment, je me suis trompé. Au début, j'avais hacké l'ESP01 et non l'adaptateur. Cette fois-ci, c'est corrigé, j'ai mis des points de colle là où il fallait pour solidifier l'ensemble, pour éviter que des fils puissent être arrachés malgré la soudure.
8:05 Et tout ça est bien joli et je m'en sers là depuis au moins 24 heures avec grand plaisir. Qu'est-ce que je suis content ! Mais qu'est-ce que je suis content ! On va se calmer un peu et on va continuer. En injectant mes nouveaux programmes, j'ai écrasé le programme qui a été livré initialement avec l'ESP01. Et en fait, le programme initial, c'est celui qui me permettait d'interagir avec l'ESP01, avec les commandes AT.
8:30 Donc fini les commandes AT, bye bye, au revoir. Je trouvais ça un petit peu dommage, bien que le projet final ne s'appuyait plus du tout sur les commandes AT, ma curiosité m'a poussé à dire comment je pourrais injecter ce programme-là. Expressif, le constructeur de l'ESP8266EX, propose sur son site, dans l'une de ses rubriques, de télécharger de nouveau le programme initial qui permet d'interagir avec votre ESP, avec les commandes AT.
8:58 Vous allez dire chouette, on va pouvoir hacker ce programme et l'adapter à nos besoins. Pas de bol, Expressif distribue ce programme en format binaire, c'est-à-dire déjà compilé. La compilation, c'est l'étape un peu transparente que vous ne voyez pas lorsque vous écrivez votre programme à langue gâchée dans l'IDE Arduino.
9:18 Il y a une étape de compilation avant d'être téléversé dans l'appareil. Ce que propose Expressif, c'est un package complet pour reprogrammer l'intégralité de l'ESP8266. C'est-à-dire la partie boot, la partie démarrage de l'ESP, la partie programme, le programme qui répond aux commandes AT, quelques données et puis du vide histoire de tout réinitialiser.
9:46 Donc en fait, il y a quatre programmes précompilés, quatre binaires à injecter dans l'ESP. Cette fois-ci, on ne s'appuie plus sur le programme Arduino IDE. Ben oui, je ne sais pas dans quel menu aller pour dire injecter les binaires. On peut injecter du langage chez sur un ESP parce qu'il y a la phase de compilation, etc.
10:07 Mais je ne vois pas le menu pour pouvoir injecter des programmes déjà binaires. Mais on ne va pas se dégonfler. On va utiliser en ligne de commande le programme ESPTool. Et ESPTool permet donc de flasher l'ESP qui est connecté sur le port USB qu'on désigne et d'incorporer les binaires aux adresses mentionnées. Donc le boot, je le mets à l'adresse 0.
10:28 Le programme, je le mets à l'adresse 0.1.0.0.0. Le programme data, je le mets à FC 0.0.0.0. Et le vide, je le mets à partir de 7E et de FE. Voilà. Vous pouvez avoir ces détails sur le site abonnel.fr dans la rubrique technologie ESP. Vous aurez toutes ces informations dans la rubrique réinitialisée l'ESP8266EX. Et là, deuxième joie, ça a marché.
10:56 Évidemment, j'ai retrouvé mon ESP8266, l'ESP01, avec les fameuses commandes AT. Donc je suis capable de remettre en état tel qui m'a été livré. Et je suis capable de programmer l'ESP01. Et maintenant, on va se replonger sur le projet qui est de piloter un radiateur grâce à la commande Heurcreuse. Et vous savez quoi ? Eh bien, c'est à suivre.
11:18 On va voir comment se connecter sur un serveur NTP, récupérer les infos et coller le relais. Mais ça, je vous donne rendez-vous au prochain numéro. C'était Cédric pour vous servir et garder un oeil ouvert. Et puis surtout, soyez curieux. Allez, bisous, à bientôt, bye bye. C'était S'informer sur la tech et les loisirs techniques.
Commentaires 0
Personne n'a encore réagi. Écrire le premier commentaire.