ESP8266. Débuter sur IDE Arduino. Librairies, GPIO, programmation Web Serveur, Client Web, drivers

Les modules WiFi ESP8266 peuvent remplacer dans beaucoup d’applications l’Arduino en ajoutant à moindre coût la connectivité Wi-Fi. Au lancement des modules ESP8266 (en 2014), la langage de programmation de prédilection était de Lua (on peut d’ailleurs toujours programmer dans ce langage !). Rapidement, la grande majorité des librairies Arduino ont été adaptées pour fonctionner sur l’ESP8266.

Aujourd’hui il est aussi simple de programmer un module ESP8266 qu’un Arduino en C++. Nous allons découvrir dans ce tutoriel comment installer les librairies nécessaires sur l’IDE Arduino, et découvrir au travers d’exemples simples les bases de la programmations de l’ESP8266.

Installer le driver CH340 ou CH341 du programmateur intégré

A priori, tous les systèmes d’exploitation (Windows, macOS et Linux) détectent et installent automatiquement le driver du programmateur intégré (convertisseur UART / USB) sur les cartes de développement ESP8266.

Si la carte ESP8266 n’est pas détectée, suivez les instructions de cet article pour installer manuellement le drivers CH340 ou CH342

Installer les cartes et les librairies pour les modules ESP8266 sur l’IDE Arduino

Lancez l’IDE Arduino et ouvrez les préférences depuis le menu Fichier. Sur macOS, allez dans le menu Arduino puis Préférences… Cliquez sur l’icône indiquée par la flèche rouge sur la photo ci-dessous.

cenndkrax0qquhbclihu-2023184

Dans le champ de saisie, collez l’adresse internet suivante puis validez

https://arduino.esp8266.com/stable/package_esp8266com_index.json

http://arduino.esp8266.com/staging/package_esp8266com_index.json

5cjmy4s6kpiqevl27ep0-7464912

Pour les cartes ESP32, ajoutez la source suivante

https://dl.espressif.com/dl/package_esp32_index.json

Cela permet d’indiquer à l’IDE Arduino qu’il doit aller sur le site arduino.esp8266.com afin d’aller y récupérer d’autres cartes compatibles. Maintenant, allez dans le menu Outils puis Type de Cartes et enfin Gestionnaire de carte

92fi1etz8ot6isccjj3v-3067534

Dans le champ de recherche, saisissez esp8266 pour trouver les nouvelles cartes à installer. Si les cartes n’apparaissent pas, vérifiez dans les préférences que l’URL est correcte. vérifiez également la connexion Internet. Cliquer sur Installer.

fcs0ivtrdgb72achyhqo-3388957

L’installation ne dure que quelques minutes. L’installation terminée, fermez le gestionnaire de carte et ouvrez de nouveau le menu Outils. Dans le sous-menu Type de Carte, vous avez maintenant une nouvelle section appelée ESP8266 Modules.

a8wyagageoixhdfocaji-7259121

Les principaux fabricants qui contribuent le plus à la communauté (Adafruit, ESPresso, Olimex, Sparkfun, WeMos…) se trouvent dans le menu. Pour les autres modules, choisissez simplement Generic ESP8266 Module.

Pour afficher le exemples installés avec les cartes ESP826, if suffit de choisir dans la liste puis d’aller dans le Fichier -> Exemples.

0gew77uqjz38hoflcn7j-4748898

Problèmes avec le bus I2C et la librairie SD à partir de la version 2.5

La version 2.5 du SDK ESP8266 semble introduire des changements importants qui peuvent poser des problèmes d’incompatibilité avec certaines libraires. J’ai par exemple rencontré des problèmes de compilation avec la librairie SD qui permet d’enregistrer et lire sur une carte micro SD. Un problème similaire avait été signalé en 2016 sur le forum officiel. Le compilateur refuse de compiler le programme sans que le chip select de la carte SD soit indiqué. ce paramètre est normalement facultatif. Si on indique un chip select, la compilation et le téléversement s’effectue correctement mais on perd la communication avec le bus I2C.

Si vous rencontrez un problème similaire, vous pouvez (temporairement) revenir à une version précédente du SDK.

Comment installer une version précédente du SDK ESP8266 ?

En cas de problème, il est toutefois possible d’utiliser une version précédente du SDK. Pour cela, ouvrez le gestionnaire de carte et cherchez la carte ESP8266. Cliquez sur Supprimer pour effacer tout le SDK.

7u5djpdbdnf1c1uhosfk-4746612

Choisissez ensuite la version désirée, par exemple la version 2.4.2 puis cliquez sur installer. Ne cliquez par sur mettre à jour car l’IDE Arduino installe automatiquement la dernière version publiée (latest) !

7c7bhub3zybqrumebuhq-2457635

Avant d’aller plus loin, remarque sur l’ESP-01

klulsfdjxheguqozdbqp-8368557L’ESP-01 est une version plus limitée de l’ESP8266. Il ne dispose que de 2 entrées / sorties (GPIO). Il existe deux versions dont la différence réside dans la quantité de mémoire flash installée

  • ESP-01 équipé de 512Ko de mémoire flash
  • ESP-01S équipé d’1Mo de mémoire flash

Pour en savoir plus, tout est expliqué en détail dans cet article

Les cartes ESP-01 ne disposent pas de convertisseur UART vers USB. A chaque fois qu’on souhaite téléverser un programme Arduino, il faut mettre le module dans un mode particulier, le Bootload ou Flashing Mode. Il existe une petite carte pour faciliter la programmation. Pour en savoir plus, tout est expliqué en détail dans cet article

Différences entre Arduino et ESP8266, repérage des broches

L’ESP8266 dispose de 9 E/S numériques au lieu de 14 pour l’Arduino Uno. Alors que sur l’Arduino Uno il n’y a que 6 sorties qui supportent le mode PWM (3 5 6 9 10 11), toutes les sorties de l’ESP8266 peuvent générer un signal PWM. Si vous avez besoin d’un plus grande nombre d’E/S, vous pouvez passer à l’ESP32.

En résumé

Arduino / Genuino 101 ESP8266 (ESP-12x)
Micro-contrôleur Arduio Uno et la plupart des cartes compatibles : ATmel ATmega328p

Le nouveau Genuino 101 : Intel Curie

Tensilica Xtensa LX106
WiFi
Bluetooth LE
Adressage 8…32bits 32bits
Fréquence d’horloge 16 MHz 80 MHz
Mémoire flash 32ko 512…4Mo (1)
Nombre d’E/S x14 x11 (D0…D8 + RX/TX)
Nombre de sorties PWM Arduino Uno et clones : x6 (3, 5, 6, 9, 10, 11)

Arduino 101 : x4

Toutes les sorties sont PWM
Nombre d’entrées analogiques x6 (A0..A5), 10bits, 5V max. x1 (A0), 10 bits, 1V max. (2) 
UART (port série) x1 x1 (3)
I2C x1 x1
SPI x1 x1
Documentation technique Arduino Uno R3

Genuino 101

version 5.4

Le repérage des broches est légèrement différent sur l’ESP8266. Chaque sortie est précédée d’un D (pour Digital probablement). Dans un programme Arduino, on peut directement utiliser le repère indiqué sur la carte D1 ou l’équivalent Arduino 5.

1Mémoire externe. Aujourd’hui, presque tous les modèles disposent de 4Mo de mémoire flash. La totalité n’est pas exploitable toutefois. Une partie est réservée au stockage de données (stockage de données utilisateur, interface HTML et code javascript de l’interface…). C’est la zone SPIFFS présentée dans cet article.

2 L’ESP8266 accepte 1V maximum sur la broche analogique. Certains modules de intègrent un pont diviseur de tension qui permet de monter la tension. Par exemple la Wemos d1 mini accepte 3,3V max. 

3 Un seul port série utilisable. L’autre broche TX est utilisée durant l’écriture de la mémoire flash

Broches ESP8266 Remarque Equivalent Arduino / Genuino 101 Autre utilisation
TX 1 CS1, TXD0
RX 3 RXD0
D0 PWM (1) 16 WAKE
D1 PWM 5
D2 PWM 4
D3 PWM 0 CS2
D4 PWM 2 TXD1
D5 PWM 14 CLK
D6 PWM 12 MISO
D7 PWM 13 MOSI, RXD2, CTS0
D8 PWM 15 CS, TXD2, RTS0
RST RST
A0 3.3V max. A0
3V3 3V
5V 800 mA maxi.
G GND (x3)

(1) Relié à la broche GND à la mise sous tension pour mettre l’ESP en bootload mode. Ce mode permet de ré-installer le firmware d’origine ou charger un programme Arduino. Sur certaines cartes, WeMos d1 mini par exemple, cette opération est prise en charge par le gestionnaire de carte. Cette opération est donc inutile, le téléversement est transparent.

Généralement, les fabricants publient un schéma des broches (pinout) qui indique la broche équivalente sur un Arduino Uno. Ici, par exemple, les broches d’une LoLin WeMos d1 mini. Ce schéma de branchement est valable pour toutes les cartes à base de module ESP-12x.

plqn2cmh3dcnqjfyirzq-2164978

Attention, le GPIO fonctionne avec une tension de 3.3V

Particularité de l’ESP8266 par rapport à l’Arduino Uno (ce n’est plus le cas pour le Genuino 101 et les nouvelles cartes à base d’Intel Curie), le GPIO fonctionne sous une tension de 3,3V. Il faudra donc dans certain cas adapter vos montages. Pour cela, il existe des diviseurs de tension (5V vers 3.3V) ou l’inverse (3.3V vers 5V).

Comment programmer l’ESP8266 avec l’IDE Arduino ?

Matériel et circuit de test

Voici un petit montage à réaliser avec un ESP8266 et une Led qui vous permettra de tester les différents codes proposés dans ce tutoriel.

mydgvoskifuufgjuaxqm-2605915

Pour mémoire, voici un tableau récapitulatif de la tension d’alimentation typique en fonction de la couleur et du diamètre de la Led.

Couleur Longueur d’onde (nm) Tension (V) pour diamètre  3mm Tension(V) pour diamètre  5mm
Rouge 625-630  1,9-2,1 2,1-2,2
Bleu 460-470 3,0-3,2 3,2-3,4
Vert 520-525 2,0-2,2 2,0-2,2
Jaune 585-595 2,0-2,2 3,0-3,2
Blanc  460-470 3,0-3,2 1,9-2,1

La programmation “classique”

La première chose à savoir lorsqu’on débute avec un module ESP8266, c’est qu’on peut le programmer exactement comme un Arduino. Contrairement aux micro-contrôleurs ATTiny, moins puissants, le SoC de l’ESP8266 est capable d’exécuter toutes les commandes C++ du code Arduino. La seule condition à respecter est d’utiliser la librairie adaptée pour ce dernier dès qu’on veut utiliser le WiFi (paragraphe suivant).

Ouvrez l’IDE Arduino et collez ce code dans un nouveau projet avant de le téléverser.

Que fait ce programme ?

  • Une variable de type entier (int) permet d’indiquer sur quelle sortie la Led est branchée
  • Dans la boucle setup(), on indique que la broche (ici 16) est une sortie (OUTPUT)
  • La boucle loop() s’execute à l’infini. A chaque passage
    • On met la sortie (16) au niveau bas (LOW), c’est à dire que la tension de sortie est nulle (pas de courant)
    • On attend 1 seconde. Le délais (Delay) est indiqué en millisecondes (1000ms = 1s)
    • On met la sortie (16) au niveau haut (HIGH), c’est à dire que la tension de sortie est de 5V (le courant passe)
    • On attend 2 secondes
    • Et ainsi de suite
int led = 16;

void setup() {
  pinMode(led, OUTPUT);     // Initialise la broche "led" comme une sortie - Initialize the "LED" pin as an output
}

// Cette boucle s'exécute à l'infini
// the loop function runs over and over again forever
void loop() {
  digitalWrite(led, LOW);   // Eteint la Led - Turn the LED OFF 
  delay(1000);              // Attendre 1 seconde - Wait for a second
  digitalWrite(led, HIGH);  // Allume la Led - Turn the LED off by making the voltage HIGH
  delay(2000);              // Pause de 2 secondes - Wait 2 secondes
}

Maintenant, remplacez dans la sortie 16 par le repérage équivalent de l’ESP8266, à savoir D0, ce qui donne int led = D0;

Comme vous pouvez le constater, le programme fonctionne à l’identique.

Programmation Web Serveur : connecter l’ESP8266 au réseau WiFi

La programmation Web Serveur permet d’ajouter une interface Web (écrite dans le langage HTML et javascript) à un projet ESP8266. C’est également possible avec un Arduino mais cela prend tout son sens avec un ESP8266 qui nativement dispose d’une connexion WiFi.

Reprenons le code précédent et ajoutons les deux librairies nécessaires

#include 
#include 

On va créer deux variables pour définir le SSID (identifiant du réseau WiFi) et le mot de passe avant de créer un objet qui va contenir le serveur Web (objet C++)

const char* ssid = "xxxx";           // Identifiant WiFi
const char* password = "xxxxxxxxx";  // Mot de passe WiFi
ESP8266WebServer server(80);         // On démarre un serveur qui écoute sur le port 80 les demande du client, l'utilisateur sur son navigateur internet

Le code de la fonction setup fait les opérations suivantes

  • Serial.begin(115200)  on ouvre le port série à 115200 bauds
  • WiFi.begin(ssid, password)  l’ESP8266 se connecte au réseau WiFi
  • La boucle while écrit un point sur le port série toute les 500ms jusqu’à ce que l’ESP8266 soit connecté au WiFi WiFi.status() != WL_CONNECTED (très mauvaise idée lorsqu’on fonctionne sur batterie d’ailleurs, mais c’est juste pour comprendre le fonctionnement)
  • Serial.println(WiFi.localIP()) écrit sur le port série l’adresse IP attribuée par la box internet ou le routeur à l’ESP8266
  • server.on("/", [](){
      server.send(200, "text/plain", "Page d'accueil");   // Ajoute un point d'entree, une page web 
    });

    On ajoute un point d’entrée, c’est à dire une adresse internet (URL) sur laquelle on affichera pour le moment un simple texte

  • server.on("/parametres", [](){
      server.send(200, "text/plain", "Une page de parametres");
    });

    Une seconde page qui pourrait être une page de paramètres

  • server.begin() enfin, on démarre le serveur web

Il ne reste plus qu’à demander à l’ESP8266 d’écouter les demandes et d’afficher les pages correspondantes. Pour cela on ajoute la commande server.handleClient() dans la fonction loop().

Collez le code complet dans un nouveau projet et téléversez le sur la WeMos.

#include 
#include 
const char* ssid = "XXXX";           // Identifiant WiFi
const char* password = "XXXXXXXXX";  // Mot de passe WiFi
ESP8266WebServer server(80);         // On instancie un serveur qui ecoute sur le port 80

int led = D0;

void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  Serial.println("");
  // on attend d'etre connecte au WiFi avant de continuer
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  // on affiche l'adresse IP attribuee pour le serveur DSN
  Serial.println("");
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
  
  // on definit les points d'entree (les URL a saisir dans le navigateur web) et on affiche un simple texte 
  server.on("/", [](){
    server.send(200, "text/plain", "Page d'accueil");
  });
  server.on("/parametres", [](){
    server.send(200, "text/plain", "Une page de parametres");
  });
  // on demarre le serveur web 
  server.begin();
  pinMode(led, OUTPUT);     // Initialise la broche "led" comme une sortie - Initialize the "LED" pin as an output
}

// Cette boucle s'exécute à l'infini - the loop function runs over and over again forever
void loop() {
  // a chaque iteration, la fonction handleClient traite les requetes 
  server.handleClient();
  
  digitalWrite(led, LOW);   // Eteint la Led - Turn the LED OFF 
  delay(1000);              // Attendre 1 seconde - Wait for a second
  digitalWrite(led, HIGH);  // Allume la Led - Turn the LED off by making the voltage HIGH
  delay(1000);              // Pause de 2 secondes - Wait 2 secondes
}

Ouvrez le moniteur série pour récupérer l’adresse IP de l’ESP8266 sur le réseau local.

kmyphpsbjfumuvtasiwv-7049979

Ouvrez maintenant un navigateur internet er saisissez l’adresse IP ou IP_ESP8266/parametres.

fphatuhmnmhnf2y9x6qi-7533154

Et voilà, en quelques lignes de code, vous venez de connecter l’ESP8266 au réseau local (et internet par la même occasion). Vous pouvez accéder à une interface WEB depuis n’importe quel ordinateur ou smartphone. En faisant une redirection de port sur votre box internet ou routeur, vous pouvez même accéder à l’interface hors de chez vous avec une connexion 3G/4G.

Attention. La connexion n’est pas chiffrée. Elle n’est pas protégée. Tout le monde peut avoir accès aux commandes de votre interface. Il faudra ajouter des protections (mot de passe…)

Programmation Web Serveur : piloter le GPIO depuis un smarphone depuis internet !

Nous allons maintenant voir comment ajouter des commandes pour piloter le GPIO depuis une interface. Il existe plusieurs méthodes pour générer le code HTML de l’interface qui sera envoyée au navigateur internet. Ici, on va simplement créer une chaine (String) qui va contenir le code HTML. Tout est expliqué en détail dans ce tutoriel.

Chaque ligne est expliquée dans le code. Ce qu’il faut retenir :

  • Le code HTML est construit en assemblant des chaines de caractères
  • Il est possible d’intégrer le contenu de variable. Ici l’état de la sortie D0contenu dans la chaine etatD0.
  • Chaque changement d’état est envoyé au serveur web qui tourne sur l’ESP8266 à l’aide d’un formulaire sous la forme d’une requête HTTP de type POST.
  • Ici, l’actualisation est déclenchée manuellement en appuyant sur un bouton (submit)
String getPage(){
  String page = "";
  page += "ESP8266 Web Server Demo - www.projetsdiy.fr";
  page += " body { background-color: #fffff; font-family: Arial, Helvetica, Sans-Serif; Color: #000088; }";
  page += "

ESP8266 Web Server Demo

";
  page += "

GPIO

";
  page += "";
  page += "
  • D0 (etat: "; page += etatD0; page += ") "; page += "ON"; page += "OFF
";
  page += "";
  page += "


www.projetsdiy.fr"; page += ""; return page; }

Maintenant, on modifie dans le setup le point d’entrée vers la page d’accueil. On branche le point d’entrée “/” vers la fonction handleRoot.

server.on ( "/", handleRoot );

Lorsqu’on affiche la page principale (“/”) ou que le serveur web reçoit une requête POST (actualisation du GPIO), la fonction handleRoot est appelée. La fonction server.hasArg permet brancher des actions. Ici, si la requête contient l’argument (hasArg), alors c’est qu’on doit changer l’état du GPIO. On exécute la fonction handleSubmit, sinon on actualise la page.

void handleRoot(){ 
  if ( server.hasArg("D0") ) {
    handleSubmit();
  } else {
    server.send ( 200, "text/html", getPage() );
  }  
}

La fonction handleSubmit récupère la valeur de l’argument “D0” avec la fonction server.arg puis il suffit de tester la valeur de celle-ci pour réaliser le bon traitement. Attention, c’est une chaine de caractère. Il faut donc tester comme ceci == “1” et non pas == 1. On en profite pour stocker l’état de la sortie dans la variable etatD0.

void handleSubmit() {
  // Actualise le GPIO / Update GPIO 
  String LEDValue;
  LEDValue = server.arg("D0");
  Serial.print("Set GPIO to "); Serial.println(LEDValue);
  if ( LEDValue == "1" ) {
    digitalWrite(D0, 1);
    etatD0 = "On";
    server.send ( 200, "text/html", getPage() );
  } else if ( LEDValue == "0" ) {
    digitalWrite(D0, 0);
    etatD0 = "Off";
    server.send ( 200, "text/html", getPage() );
  } else {
    Serial.println("Err Led Value");
  }
}

Collez le code complet suivant en modifiant identifiant et mot de passe WiFi.

#include 
#include 
const char* ssid = "XXXX";          // Identifiant WiFi
const char* password = "XXXXXXXX";  // Mot de passe WiFi
ESP8266WebServer server(80);        // On instancie un serveur qui ecoute sur le port 80

int led = D0;
String  etatD0 = "Off";

String getPage(){
  String page = "";   // C'est du code HTML, la page s'auto-actualise    
  page += "ESP8266 Web Server Demo - www.projetsdiy.fr";               // Titre de la barre du navigateur
  page += " body { background-color: #fffff; font-family: Arial, Helvetica, Sans-Serif; Color: #000088; }"; // style de la page
  page += "

ESP8266 Web Server Demo

";  // Titre de la page (H1)
  page += "

GPIO

";                                  // Sous-titre (H3)
  page += "";                // Le formulaire sera envoye avec une requete de type POST 
  page += "
  • D0 (etat: "; // Premiere ligne de la liste (ul) avec D0 page += etatD0; // on concatene la chaine contenant l'etat de la sortie page += ") "; page += "ON"; // Bouton pour activer D0 page += "OFF
"; // et le desactiver
  page += "";       // Bouton d'actualisation
  page += "


www.projetsdiy.fr"; page += ""; return page; } void handleRoot(){ if ( server.hasArg("D0") ) { handleSubmit(); } else { server.send ( 200, "text/html", getPage() ); } } void handleSubmit() { // Actualise le GPIO / Update GPIO String LEDValue; LEDValue = server.arg("D0"); Serial.print("Set GPIO to "); Serial.println(LEDValue); if ( LEDValue == "1" ) { digitalWrite(D0, 1); etatD0 = "On"; server.send ( 200, "text/html", getPage() ); } else if ( LEDValue == "0" ) { digitalWrite(D0, 0); etatD0 = "Off"; server.send ( 200, "text/html", getPage() ); } else { Serial.println("Err Led Value"); } } void setup() { Serial.begin(115200); WiFi.begin(ssid, password); Serial.println(""); // on attend d'etre connecte au WiFi avant de continuer while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } // on affiche l'adresse IP qui nous a ete attribuee Serial.println(""); Serial.print("IP address: "); Serial.println(WiFi.localIP()); // on definit les points d'entree (les URL a saisir dans le navigateur web) et on affiche un simple texte server.on ( "/", handleRoot ); // on demarre le serveur web server.begin(); pinMode(led, OUTPUT); // Initialise la broche "led" comme une sortie - Initialize the "LED" pin as an output } // Cette boucle s'exécute à l'infini - the loop function runs over and over again forever void loop() { // a chaque iteration, on appelle handleClient pour que les requetes soient traitees server.handleClient(); }

Voici l’interface obtenue

0hemkkdquhtz7sawjypw-1337450

Maintenant que c’est plus clair, vous pouvez aller encore un peu plus loin dans les détails de la programmation Web Serveur de l’ESP8266 en lisant cet article. Vous pourrez réaliser ce type d’interface en suivant ce projet de station météo en 5 étapes.

aoahuulal3flxcvmbmzn-1982801

Tous les tutoriels sur la programmation Web Server des ESP8266

ESP8266, Serveur Web (Interface)

Programmation Client Web :

La programmation Client Web permet de faire communiquer un module ESP8266 avec un autre serveur, un autre ESP8266, une application mobile… Voici quelques exemples d’application :

  • Transmettre des mesures (température, humidité, taux de particules, pression atmosphérique, luminosité, bruit…)
  • Transmettre des états (détecteur d’ouverture de porte ou fenêtre, contacteur…)

Voici plusieurs articles sur le sujet avec des exemples d’application pour faire communiquer l’ESP8266 avec Jeedom ou Domoticz (affichage déporté)

ESP8266, Client Web (communication)

Questions fréquentes (FAQ)

Sur quelles plateformes l’IDE Arduino est-il disponible ?

L’IDE Arduino est disponible sur tous les systèmes d’exploitation (Windows, macOS, Linux, Linux ARM). Quelque soit votre environnement, vous pouvez donc développer vos projets ESP8266 avec l’IDE Arduino. Allez sur le site de la fonction Arduino pour récupérer la version qui convient à votre ordinateur ou mini-PC. Il existe également une version en ligne si vous ne voulez rien installer sur votre ordinateur.

Peut-on programmer un ESP8266 sur un Mac ?

Oui, l’IDE Arduino est disponible sur macOS également. Le kit de développement (SDK) d’Espressif étant écrit en python, il est possible de programmer les modules ESP8266 comme sur un PC Windows.

Peut-on programmer l’ESP8266 depuis Linux ARM (Raspberry Pi par exemple) ?

Oui, si vous possédez un Raspberry Pi ou un mini-PC équivalent fonctionnant sous Linux ARM (un Orange Pi par exemple), il est tout à fait possible d’utiliser l’IDE Arduino.

Je n’y connais rien en programmation, essayez le projet ESP Easy !

Si vous débutez avec les micro-contrôleurs et que tout ce que vous avez lu précédemment vous a un peu effrayé, pas de problème. Le projet ESP Easy est fait pour vous ! ESP Easy est une interface qui permet de développer des sondes ou des actionneurs par simple configuration. L’interface est en anglais mais tout est expliqué dans ces tutoriels en français.

Quel modèle d’ESP8266 ou ESP32 choisir  pour débuter ?

Si votre projet nécessite une connectivité WiFi ou Bluetooth, l’ESP8266 (guide complet) est un module compatible avec le code Arduino. L’ESP32 est une version améliorée qui dispose d’un plus grand nombre d’entrées / sorties (GPIO), plus de puissance et consomme encore moins.

Quelques tutoriels et projets à base d’ESP8266

Tous les projets ESP8266

Quelques tutoriels et projets à base d’ESP32

Tous les projets ESP32

Peut-on utiliser des cartes NodeMCU ou micropython ?

Oui absolument. Ce sont d’autres firmwares. NodeMCU permet d’exécuter du code Lua. Dès le premier téléversement, le firmware sera remplacé par le code Arduino. Vous pourrez ré-installer le firmware NodeMCU (suivez ce tutoriel pour cela) ou micropython ultérieurement.

Tutoriels et projets MicroPython

Tous les projets en Micro Pyton

Problèmes et solutions avec l’ESP8266

Erreur python3 not found sur macOS

Si vous rencontrez cette erreur au moment de la compilation sur macOS, voici une solution qui fonctionne. Ouvrez le Terminal puis exécutez les commandes suivantes

cd ~/Library/Arduino15/packages/esp8266/tools/python3/3.7.2-post1
unlink python3
ln -s /usr/local/bin/python3 python3

Source : https://github.com/esp8266/Arduino/issues/6931

Quelques livres pour débuter en C/C++

La programmation Arduino fait appel à des notions de programmation objet du C/C++. Il existe de très bons livres d’initiation ainsi que des tutoriels sur le Web pour aller plus loin que les notions abordées ici

Mises à jour

17/06/2020 Solution à l’erreur python3 not found sur macOS

24/04/2020 Actualisation de l’article

3/06/2019 Nouvelle url vers le SDK ESP8266. Régression SDK remarquée depuis la version 2.5.x. Comment installer une version précédente du SDK

Avez-vous aimé cet article ?