Table des matières:

Flash ESP-01 (ESP8266) sans adaptateur USB-série utilisant Raspberry Pi : 3 étapes
Flash ESP-01 (ESP8266) sans adaptateur USB-série utilisant Raspberry Pi : 3 étapes

Vidéo: Flash ESP-01 (ESP8266) sans adaptateur USB-série utilisant Raspberry Pi : 3 étapes

Vidéo: Flash ESP-01 (ESP8266) sans adaptateur USB-série utilisant Raspberry Pi : 3 étapes
Vidéo: Home Assistant - подключаем адресную ленту WS2812B через ESP8266 с прошивкой WLED 2024, Juillet
Anonim
Flash ESP-01 (ESP8266) sans adaptateur USB-série utilisant Raspberry Pi
Flash ESP-01 (ESP8266) sans adaptateur USB-série utilisant Raspberry Pi

Ce Instructable vous guide sur la façon de commencer à programmer votre microcontrôleur ESP8266 sur un module WIFI ESP-01. Tout ce dont vous avez besoin pour commencer (à part le module ESP-01, bien sûr) est

  • Tarte aux framboises
  • Fils de cavalier
  • Résistance 10K

Je voulais remettre à neuf une vieille lampe de chevet en lampe de nuit LED moderne contrôlée par Alexa. Rien d'extraordinaire, il suffit de l'allumer/éteindre à l'aide de la commande vocale. J'ai commandé en ligne le module WIFI ESP-01 le plus simple, le relais et le fil avec LED, et j'ai totalement oublié de commander un adaptateur USB-série pour programmer le microcontrôleur ESP8266. Mais comme j'avais un Raspberry Pi et que le Raspberry Pi et la carte ESP-01 avaient des broches UART, j'ai pensé que je pouvais utiliser mon RPi pour programmer ESP8266 sans l'adaptateur.

Étape 1: Configurer Rapberry Pi

Configurer Rapberry Pi
Configurer Rapberry Pi

J'ai utilisé Raspberry Pi 3 modèle B+, cependant, les instructions devraient fonctionner sur d'autres versions, en particulier sur le modèle B.

Donc, tout d'abord, nous devons activer UART sur Pi.

Allez dans les paramètres de configuration RPi. Dans la fenêtre du terminal exécuter

$ sudo raspi-config

Accédez aux 5 options d'interfaçage, puis sélectionnez P6 Serial. Vous avez alors demandé Souhaitez-vous qu'un shell de connexion soit accessible en série ? sélectionnez car nous ne voulons pas utiliser UART pour exécuter le Pi sans tête, mais pour communiquer avec d'autres appareils, donc sur l'écran suivant lorsque demandé Souhaitez-vous que le matériel du port série soit activé? sélectionnez. Redémarrez le Pi comme demandé. UART devrait maintenant être activé pour la communication série sur les broches RX et TX du Raspberry Pi 3. Remarque: après cela, une nouvelle entrée enable_uart=1 devrait apparaître à la fin de /boot/config.txt.

Étape 2: Connectez ESP-01 à Raspberry Pi

Connectez ESP-01 à Raspberry Pi
Connectez ESP-01 à Raspberry Pi

Maintenant, nous nous attelons à tout câbler ensemble.

Tout d'abord, identifiez sur votre RPi 3.3V les broches d'alimentation et GND (masse) pour alimenter le microcontrôleur ESP8266, les broches TXD (transmission) et RXD (réception) pour communiquer, et deux broches à usage général pour faire fonctionner ESP8266 (broches qui peuvent être réglées haut ou meugler). Recherchez la disposition des broches sur pinout.xyz ou tapez dans le terminal:

$ brochage

Identifiez ensuite les broches nécessaires sur l'ESP-01. Mais au début, nous devons avoir une compréhension des broches ESP-01. J'ai trouvé un certain nombre de ressources utiles disponibles sur Internet pour vous aider à cet égard. Celui-ci est le plus court, tandis que celui-ci donne une bien meilleure explication. En bref: Il y a 8 broches, nous allons en avoir besoin de 7 à savoir les broches d'alimentation VCC et GND (masse) pour l'alimentation, les broches TXD et RXD pour la communication, et RST (reset), CH_PD (Chip Power Down, parfois étiqueté CH_EN ou chip enable) et GPIO0 pour faire fonctionner le module. Habituellement, l'ESP8266 fonctionne en mode normal, mais lors du téléchargement d'un code sur l'ESP8266, il doit être en mode flash. Pour le mode de fonctionnement normal ou normal, le module doit être connecté à l'alimentation (évidemment), mais la broche CH_PD doit également être connectée à VCC via un 10K (cette valeur varie selon les recours, j'ai trouvé des valeurs jusqu'à 3K) pull-up résistance au démarrage. de l'autre côté, pour entrer en mode clignotant ou de programmation, vous devez mettre à la terre la broche GPIO0 au démarrage. Pour empêcher un flux de courant illimité via GPIO0 lorsqu'il est mis à la terre, il est recommandé de connecter GPIO0 à la terre via une résistance à faible résistance 300Ω - 470Ω (plus de détails ici). La broche RST, comme son nom l'indique, réinitialise (ou redémarre) le MCU. Pendant le fonctionnement normal, il peut être connecté à VCC via une résistance de rappel de 10K, mais doit être mis à la terre pour réinitialiser le microcontrôleur. Bien qu'il soit toujours possible d'utiliser des boutons physiques pour mettre à la terre les broches RST et GPIO0 (ou même joindre manuellement des fils pour simuler un bouton), il est beaucoup plus agréable d'utiliser les broches Raspberry Pi pour régler la tension haut et bas sur le RST et le GPIO0 du module. épingles. De plus, il n'y a pas besoin de résistances 10K et 470Ω alors.

Étant maintenant conscients des particularités des broches ESP-01, nous pouvons commencer à tout connecter ensemble. Vous pouvez utiliser le tableau suivant comme référence avec le dessin ci-dessus:

ESP-01 Framboise Pi

  • VCC (3,3 V) broche 1 (3,3 V)
  • Broche GND #6 (GND)
  • Broche TXD #10 (RXD / BCM 15)
  • Broche RXD #8 (TXD / BCM 14)
  • CH_PD broche n° 1 (3,3 V)
  • Broche RST #3 (BCM 2)
  • GPIO 0 broche #5 (BMC 5)

Connectez la broche VCC en dernier. L'instance à laquelle vous avez connecté la broche VCC de votre module Wi-Fi s'allumera. Utilisez screen ou minicom pour vérifier si RPi et ESP8266 peuvent communiquer à l'aide d'UART (remarque: vous devrez peut-être d'abord installer screen ou minicom, car ils ne semblent pas être installés sur Raspbian par défaut).

À l'aide de l'exécution d'écran:

$ sudo screen /dev/serial0 115200

À l'aide de minicom, exécutez:

$ sudo minicom -b 115200 -o -D /dev/serial0

Remarque: de nombreuses ressources en ligne suggèrent de se connecter à ESP8266 sur /dev/ttyAMA0, mais cela ne fonctionne pas avec RPi 3 ou version ultérieure (y compris zéro W) selon la documentation RPi. Connectez-vous via /dev/serial0 à la place ou /dev/ttyS0.

Après avoir entré screen ou minicom, utilisez les commandes AT pour communiquer avec ESP8266. Tapez AT, puis appuyez sur Entrée, puis appuyez sur Ctrl+J pour envoyer la commande. Vous devriez obtenir OK en réponse. La liste des commandes AT disponibles peut être trouvée sur espressiff.com ou juste ici.

Une fois que les appareils sont physiquement connectés et se parlent, nous pouvons nous atteler à la programmation des broches GPIO du RPi et, enfin, de l'ESP8266 lui-même.

Étape 3: Configuration du logiciel (Python pour fonctionner et Arduino IDE pour programmer)

PARTIE 1. Utiliser python pour changer de mode ESP8266

Comme mentionné ci-dessus, il est pratique d'utiliser les broches GPIO de RPI pour changer les modes de fonctionnement de l'ESP8266. J'ai écrit deux codes python de base qui mettent ESP8266 en mode normal ou de programmation.

Mode normal: pour mettre le microcontrôleur en mode de fonctionnement normal, nous avons juste besoin de l'alimenter et de connecter CH_PD via une résistance de rappel à VCC, mais pour faire passer le MCU du mode de programmation au mode normal, nous devons le réinitialiser (pensez à redémarrer). Pour ce faire sur RPi, nous allons brièvement dérouler le GPIO du RPi connecté à la broche RST sur ESP-01 (par défaut, la broche RPi que j'ai utilisée pour la réinitialisation est définie sur HIGH). Comment brièvement? Pour moi, c'est une question spéculative. Vous pouvez essayer différents intervalles de temps, mais j'ai trouvé que 200 à 500 ms fonctionnaient très bien. Écrivez dans les commentaires si vous avez une meilleure idée. Enregistrez votre code sous reset.py

#!/usr/bin/python

importer RPi. GPIO en tant qu'heure d'importation GPIO GPIO.setmode(GPIO. BOARD) # définit l'identification GPIO par les numéros de broches physiques resetPin = 3 # identifie la broche physique RPi connectée à la broche ESP8266 RST GPIO.setup(resetPin, GPIO. OUT) # définit la réinitialisation broche en sortie GPIO.output(resetPin, GPIO. LOW) # chute de tension sur la broche RST time.sleep(.2) # attendre.2 s GPIO.output(resetPin, GPIO. HIGH) # restaurer la tension sur la broche RST GPIO. cleanup() # réinitialise les broches sur RPI pour éviter les futurs avertissements d'exécution

  • Mode de programmation: pour mettre le MCU en mode de programmation, nous devons alimenter l'ESP8266 avec GPIO0 mis à la terre, ou bien le réinitialiser et mettre à la terre GPIO0 pendant le démarrage (encore une fois, la durée exacte des chutes de tension ne m'est pas tout à fait connue, alors ne soyez pas strictement guidé par les valeurs utilisées). Enregistrez le code sous flash.py ou téléchargez-le ci-dessous. La succession des actions est la suivante:

    • tirer vers le bas la broche RST
    • tirer vers le bas la broche GPIO0
    • tirez la broche RST
    • tirer vers le haut la broche GPIO0

#!/usr/bin/python

importer RPi. GPIO en tant qu'heure d'importation GPIO GPIO.setmode(GPIO. BOARD) # définit l'identification GPIO par les numéros de broches physiques resetPin = 3 # identifie la broche physique RPi connectée à la broche ESP8266 RST flashPin = 5 # identifie la broche physique RPi connectée à la broche ESP8266 GPIO0 GPIO.setup(resetPin, GPIO. OUT) # définir la broche de réinitialisation comme sortie GPIO.setup(flashPin, GPIO. OUT) # définir la broche flash comme sortie GPIO.output(resetPin, GPIO. LOW) # chute de tension sur le temps de la broche RST. sleep(.2) # le besoin de cette attente est spéculatif GPIO.output(flashPin, GPIO. LOW) # chute de tension sur GPIO0 time.sleep(.2) # le besoin de cette attente est spéculatif GPIO.output(resetPin, GPIO. HIGH) # commencer à démarrer ESP8266 time.sleep(.5) # attendre que ESP8266 démarre GPIO.ouput(flashPin. GPIO. HIGH) # restaurer la tension sur GPIO pinGPIO.cleanup() # réinitialiser les broches sur RPI pour éviter les futurs avertissements d'exécution

Dans les autorisations de modification du terminal:

$ sudo chmod +x flash.py

$ sudo chmod +x reset.py

A partir de maintenant chaque fois que vous devez entrer dans le mode de programmation exécuté dans le terminal:

$ python /flash.py

après avoir téléchargé le code pour entrer en mode de fonctionnement normal, exécutez:

$ python /reset.py

À ce stade, vous souhaiterez peut-être également mettre à jour le micrologiciel ESP8266. Il existe de nombreux tutoriels en ligne sur la façon de le faire, je n'entrerai donc pas dans les détails sur la façon de le faire.

PARTIE 2. Configuration de l'IDE Arduino

si vous avez déjà installé Arduino IDE, vous pouvez toujours parcourir la section en vous assurant que votre IDE est prêt pour ESP8266.

Sur Rapberry Pi, vous pouvez utiliser Arduino IDE pour programmer votre ESP8266. Il existe deux manières d'installer l'IDE sur RPi:

  • via la ligne de commande à partir des référentiels en utilisant apt-get install
  • télécharger et installer manuellement depuis arduino.cc.

Je suggère fortement d'emprunter cette dernière voie. La version IDE des référentiels semble obsolète et vous devrez très certainement en faire plus avant d'être prêt à commencer à programmer ESP8266. Pour éviter les tracas, accédez à la page de téléchargement Arduino.cc et téléchargez la version Linux ARM. Décompressez et installez ensuite: Si le nom du fichier téléchargé ressemble à ceci arduino-X. Y. Z-linuxarm.tar.xz, dans le dossier de téléchargement, exécutez:

$ tar -xvf arduino-X. Y. Z-linuxarm.tar.xz

Cela devrait décompresser le fichier dans le dossier arduino-X. Y. Z. Courir:

$ sudo./arduino-X. Y. Z/install.sh

Cela devrait installer l'IDE. Une fois l'installation terminée, démarrez l'IDE.

  • Depuis l'IDE Arduino, accédez à Fichier> Préférences. Recherchez les « URL supplémentaires de Board Manager » au bas de la fenêtre des préférences. Entrez https://arduino.esp8266.com/stable/package_esp8266com_index.json dans le champ "URL de gestionnaire de carte supplémentaire", cliquez sur le bouton "OK".
  • Allez dans Outils > Tableau: XXX > Gestionnaire de tableaux. Dans la fenêtre, utilisez la recherche ou faites défiler vers le bas, sélectionnez le menu de la carte ESP8266 et cliquez sur installer. Attendez la fin de l'installation et fermez la fenêtre.
  • Allez à nouveau dans Outils > Carte: XXX et recherchez les cartes ESP8266. Choisissez le module générique ESP8266.

IDE est maintenant prêt à programmer ESP8266. Tapez ou collez le code souhaité dans la fenêtre IDE et enregistrez-le. Cliquez sur Télécharger. Depuis le terminal, exécutez flash.py, cela devrait mettre votre carte en mode programmation. Attendez quelques minutes que l'IDE termine la compilation et le téléchargement (remarque: l'ESP-01 est généralement livré avec 2 LED, la LED bleue clignote pendant le téléchargement du code) et exécutez reset.py. Votre carte ESP-01 est maintenant prête à effectuer des tâches.

Conseillé: