[[microc:accueilmc|{{ :iconemaison.jpg?nolink&30|Sommaire Microcontrôleur}}]] ===== Microcontrôleurs - ESP8266 Feather Huzzah ===== [Mise à jour le 10/8/2023] {{ :microc:uc:feather_huzzah_esp8266.jpg?nolink|}} == Ressources == * Généralités sur l'ESP8266 Wikipédia * Sites Espressif et Adafruit * ESP8266/Arduino sur Github * Connectique des différents modèles de cartes * Arduino IDE 2 == Lectures connexes == * Découverte des ESP8266 : le microcontrôleur connecté par Wifi pour 2€ au potentiel phénoménal * Wiki [[materiels:accueilmateriels|" Matériels - Capteurs, afficheurs, préactionneurs, etc."]] * Wiki [[microc:iot:clientmqttesp8266|"Mettre en oeuvre un client MQTT sur un EP8266 (ESP32) Feather Huzzah ou MKR1010"]] * Wiki [[microc:arduino:spiffs|"Le système de fichiers LittleFS (ESP)"]] (Mini Serre) * Exemples "ESP8266 First Web Server" * Arduino pour l'ESP8266 (Documentation) : ESP8266 Arduino Core * Bibliothèques - Arduino Library List == Distributeurs == * GO TRONIC, (Adafruit) ==== 1. Généralités ==== La carte Feather HUZZAH ESP8266, développée par Adafruit, est une carte de développement WiFi “tout-en-un” à ESP8226 avec USB intégré et chargeur de batterie. ==== 2. Principales caractéristiques ==== * **SOC** : ESP8266 * **Processeur** : 32-bit CPU @ 80MHz * **Wifi** 802.11 b/g/n (WEP/WPA-PSK/WPA2-PSK) * **Flash** : 4MB * **SRAM** : 96K * **GPIO** : 9 (logique 3,3V) partagés avec I2C et SPI * **I²C** : 1 (logiciel) * **SPI** : 1 * **UART** : 2 * **Entrée analogique** : 1 (**1V max**) * **Alimentation** : 5V régulateur 3.3V (pic de courant 500mA max) * **Chargeur Lipo intégré** :( 3,7V - 4,2V) - 100mA * **LED** rouge à usage général sur la broche 0 * **Bouton** de Reset * **Consommation** : 60 à 200mA * **Dimensions** : 51mm x 23mm x 8mm * ** Masse** : 6g ==== 3. Brochage ==== * Description de la connectique des **différents modèles** de cartes Random Nerd Tutorials. * **Identification** et description des entrées / sorties de la carte Huzzah sur le site Adafruit. {{ :arduino:esp8266_pinout.jpg?nolink |}} ==== 4. Accessoires ==== {{ :arduino:grovesfw.jpg?nolink|Grove Shield FeatherWing for Particle Mesh and all Feathers}} * **Adafruit Grove Shield FeatherWing** pour Particle Mesh et tous les Feathers((Avec une ESP8266 Feather Huzzah, il est nécessaire de connecter une résistance de 10k entre la broche CHPD et le 3,3V)). * **Caractéristiques** * 8 connecteurs Grove : * 3 connecteurs analogiques, 2 broches analogiques par connecteur, 6 broches analogiques au total; * 2 connecteurs numériques, 2 broches numériques par connecteur, 4 broches numériques au total; * 2 connecteurs I2C * 1 connecteur UART * **Schéma** de la carte ici * **Photo de l'adaptation** à réaliser sur la carte Adafruit Grove Shield (R=10k)((Avec une ESP8266 Feather Huzzah, il est nécessaire de connecter une résistance de 10k entre la broche CHPD et le 3,3V)) : ici * **Distributeurs** : Mouser et (Adafruit) * **Table de correspondance** ^ Shield ^ ESP ^ Commentaires ^ |D2|2|GPIO 2 est connectée à la LED bleue située près de l’antenne WiFi. Utilisable comme sortie.| |D3|16|GPIO 16 utilisable comme sortie.| |D4|0|GPIO 0 n’a pas de pull-up interne. Est connectée à la LED rouge. Utilisable comme sortie.| |D5|15|GPIO 15 utilisable comme sortie.| {{ :arduino:battesp.jpg?nolink|}} * **Batterie Lipo 3,7V 500mA** * **Caractéristiques** * Tension: 3,7 Vcc * Intensité: 400 mAh * ​​Courant de décharge maxi: 880 mA * Connecteur: 2 broches type JST * Dimensions: 35,5 x 25,5 x 5,2 mm * Longueur du câble: 100 mm * Poids: 10 g * **Distributeurs** : Gotronic ==== 5. Préparation de l'IDE Arduino ==== === 5.1 Généralités === L'**ESP8266 Arduino core** est livré avec des bibliothèques permettant : * de communiquer via le WiFi en utilisant les protocoles TCP et UDP, * de configurer des serveurs HTTP, mDNS, SSDP et DNS, * d'effectuer des mises à jour OTA, * d'utiliser un système de fichiers en mémoire flash et * de travailler avec des cartes SD, des servos, des périphériques SPI et I2C. === 5.2 Installation du support pour les cartes à "ESP8266" === * L'**installation du support ESP8266** pour Arduino se fait en passant par l’édition des préférences (**Fichier** -> **Préférences**). \\ Dans « URL de gestionnaire de cartes supplémentaires » ajoutez https://arduino.esp8266.com/stable/package_esp8266com_index.json{{ :arduino:preferencearduino.png?nolink |}} __Remarque__ : une URL par ligne, pas de séparateur ! === 5.3 Installation du gestionnaire de carte === * Dans le menu « **Outils** » , « **Type de carte** » et « **Gestionnaire de carte** », rechercher « **esp8266 by ESP8266 Community** » et installer le composant. {{ :arduino:esp8266bibl.png?nolink |}} ==== 6. Installation de MicroPython ==== * Wiki [[microc:uc:espressif|Installation de MicroPython sur les modules Espressif ESP32 et ESP8266]] ==== 7. Programmation de la carte ESP8266 ==== === 7.1 Premier Programme (blink) === * [[#tab-arduino_1|Arduino]] * [[#tab-micropy_1|MicropyPython]] void setup() { pinMode(LED_BUILTIN,OUTPUT); } void loop() { digitalWrite(LED_BUILTIN, HIGH); delay(1000); digitalWrite(LED_BUILTIN, LOW); delay(1000); } A faire === 7.2 Test du Wifi === * [[#tab-arduino_2|Arduino]] * [[#tab-micropy_2|MicropyPython]] Le SSID et le mot de passe du réseau doivent avoir été préalablement chargés avec infoClientMQTT_ESP8266.ino // Connexion au wifi #include // mDNS pour la résolution des noms des hôtes #include // EEPROM : émule une EEPROM dans l'ESP8266 #include // --------------------------------------------------------------------------------- // Structure pour la configuration de la connexion au réseau wifi struct EEconf { // Les champs sont remplis par le croquis infoClientMQTT_ESP8266.ino // avec les données stockées dans l'EEPROM (émulée) char ssid[32]; // SSID du réseau. Exemple : SynBoxLAN, char password[64]; // Mot de passe du réseau. Exemple : 12345678 char myhostname[32]; // Nom donné au client MQTT. Exemple : ESP8266_1 } readconf; // Objet pour la connexion au réseau wifi WiFiClient espClient; // Connexion au Wifi // --------------------------------------------------------------------------------- void setup_wifi() { // Mode station WiFi.mode(WIFI_STA); Serial.println(); Serial.print("Tentative de connexion à "); Serial.println(readconf.ssid); // Connexion au Wifi WiFi.begin(readconf.ssid, readconf.password); while (WiFi.status() != WL_CONNECTED) { delay(5000); Serial.print("."); } // Affichage Serial.println(""); Serial.println("Connexion au Wifi ok"); Serial.print("MAC: "); Serial.println(WiFi.macAddress()); Serial.print("Adresse IP : "); Serial.println(WiFi.localIP()); // Configuration de mDNS WiFi.hostname(readconf.myhostname); if (!MDNS.begin(readconf.myhostname)) { Serial.println("Erreur de configuration mDNS !"); } else { Serial.println("Répondeur mDNS démarré"); Serial.println(readconf.myhostname); } } void setup() { // Configuration du moniteur série Serial.begin(115200); delay(500); // Lecture des paramètres sauvegardés par ARD_ESP_SauveInfosClientMqtt.ino EEPROM.begin(sizeof(readconf)); EEPROM.get(0, readconf); // Connexion au Wifi setup_wifi(); } void loop() { delay(100); } // Exemple de résultat attendu // {{ :arduino:uc:esp8266testwifi.png?nolink |}} {{ :arduino:uc:platformioico.png?nolink&50|}} Le projet PlatformIO pour VSCode. A faire ==== 8. Résolution des problèmes ==== === 8.1 Installation du driver USB === * Si le port COM n'est pas identifiable lors de la connexion de l'ESP8266 au PC, installer le driver USB depuis Silicon Lab. === 8.2 Réinstallation ou mise à jour du firmware === * **Programmation avec Arduino** : nodemcu-flasher pour Windows 64-bit pour réinstaller le paquet package_esp8266com_index.json disponible sur github. ==== Pour aller plus loin ==== * **ESP8266 SDK** - Getting Started Guide