Taula de continguts:

Flash ESP-01 (ESP8266) sense adaptador USB a sèrie mitjançant Raspberry Pi: 3 passos
Flash ESP-01 (ESP8266) sense adaptador USB a sèrie mitjançant Raspberry Pi: 3 passos

Vídeo: Flash ESP-01 (ESP8266) sense adaptador USB a sèrie mitjançant Raspberry Pi: 3 passos

Vídeo: Flash ESP-01 (ESP8266) sense adaptador USB a sèrie mitjançant Raspberry Pi: 3 passos
Vídeo: How To Connect An FTDI Adapter To A UART Port 2024, Juliol
Anonim
Flash ESP-01 (ESP8266) sense adaptador USB a sèrie que utilitza Raspberry Pi
Flash ESP-01 (ESP8266) sense adaptador USB a sèrie que utilitza Raspberry Pi

Aquest instructiu us guia sobre com començar a programar el vostre microcontrolador ESP8266 en un mòdul WIFI ESP-01. Tot el que necessiteu per començar (a més del mòdul ESP-01, és clar) és

  • Raspberry Pi
  • Filferros de pont
  • Resistència de 10K

Volia reformar una antiga làmpada de nit a una moderna llum de nit LED controlada per Alexa. Res de fantàstic només activar-lo / apagar-lo mitjançant l'ordre de veu. Vaig demanar el mòdul, el relé i el cable WIFI ESP-01 més senzills amb LEDs en línia i em vaig oblidar totalment de demanar un adaptador USB a sèrie per programar el microcontrolador ESP8266. Però com que tenia un Raspberry Pi i tant el Raspberry Pi com la placa ESP-01 tenien pins UART, vaig pensar que podia utilitzar el meu RPi per programar ESP8266 sense l'adaptador.

Pas 1: configureu Rapberry Pi

Configureu Rapberry Pi
Configureu Rapberry Pi

He utilitzat Raspberry Pi 3 Model B +, però, les instruccions haurien de funcionar en altres versions, especialment en el model B.

Per tant, en primer lloc, hem d’habilitar UART a Pi.

Aneu a la configuració de configuració de RPi. Executa la finestra del terminal

$ sudo raspi-config

Aneu a 5 Opcions d’interfície i seleccioneu Sèrie P6. Aleshores li va demanar Voleu que es pogués accedir a un intèrpret d'ordres d'inici de sessió per serial? seleccioneu ja que no volem utilitzar UART per executar el Pi sense cap, sinó per comunicar-nos amb altres dispositius, per tant, a la pantalla següent quan se us demani Voleu que el maquinari del port sèrie estigui habilitat? seleccioneu. Reinicieu el Pi com se us demani. Ara UART hauria d’estar habilitat per a la comunicació sèrie al pin RX i TX de Raspberry Pi 3. Nota: després d’això hauria d’aparèixer una nova entrada enable_uart = 1 al final de /boot/config.txt.

Pas 2: connecteu ESP-01 a Raspberry Pi

Connecteu ESP-01 a Raspberry Pi
Connecteu ESP-01 a Raspberry Pi

Ara ens posem a connectar-ho tot junt.

En primer lloc, identifiqueu els pins RPi 3.3V d’alimentació i GND (terra) per alimentar el microcontrolador ESP8266, els pins TXD (transmissió) i RXD (recepció) per comunicar-vos i dos pins d’ús general per operar ESP8266 (pins que es poden configurar alts o baix). Cerqueu la disposició dels pins a pinout.xyz o escriviu el terminal:

$ pinout

En segon lloc, identifiqueu els pins necessaris a ESP-01. Però al principi hem de tenir coneixement dels pins ESP-01. Vaig trobar diversos recursos útils disponibles a Internet per ajudar-vos en aquest sentit. Aquest és el més curt, mentre que aquest dóna una explicació molt millor. En resum: hi ha 8 pins, en necessitarem 7, és a dir, pins VCC i pins GND (terra) per a alimentació, pins TXD i RXD per a comunicació i RST (restabliment), CH_PD (apagat de xip, de vegades etiquetats) CH_EN o habilitació de xip) i GPIO0 per fer funcionar el mòdul. Normalment, l'ESP8266 funciona en mode normal, però quan es carrega un codi a l'ESP8266, s'ha de tenir en compte en mode flash. Per al mode d’operació normal o normal, el mòdul ha d’estar connectat a l’alimentació (òbviament), però també s’ha de connectar el pin CH_PD a VCC mitjançant un 10K (aquest valor varia segons els diferents recursos, he trobat valors fins a 3K) resistència a l'arrencada. a l’altra banda, per entrar al mode de programació o intermitent, cal posar a terra el pin GPIO0 a l’arrencada. Per evitar un flux de corrent sense restriccions a través de GPIO0 quan es posa a terra, es recomana connectar GPIO0 a terra mitjançant alguna resistència de baixa resistència de 300 Ω a 470 Ω (més informació aquí). El pin RST, tal com el seu nom indica, restableix (o reinicia) l'MCU. Durant el funcionament normal, es pot connectar a VCC mitjançant una resistència de tracció de 10K, però s’ha de connectar a terra per reiniciar el microcontrolador. Tot i que sempre és possible utilitzar botons físics per connectar a terra els pins RST i GPIO0 (o fins i tot unir manualment els cables per simular un botó), és una experiència molt més agradable fer servir els pins Raspberry Pi per configurar tensions altes i baixes a RST i GPIO0 del mòdul. pins. Tampoc hi ha necessitat de resistències de 10K i 470Ω.

Ara, tenint en compte les peculiaritats dels pins ESP-01, podem començar a connectar-ho tot junt. Podeu utilitzar la taula següent com a referència juntament amb el dibuix anterior:

ESP-01 Raspberry Pi

  • Pin # 1 de VCC (3,3 V) (3,3 V)
  • Pin GND # 6 (GND)
  • Pin TXD # 10 (RXD / BCM 15)
  • Pin RXD # 8 (TXD / BCM 14)
  • CH_PD pin # 1 (3,3 V)
  • Pin RST # 3 (BCM 2)
  • GPIO 0 pin # 5 (BMC 5)

Connecteu l'últim pin VCC. La instància en què heu connectat el pin VCC al mòdul Wi-Fi s'encendrà. Utilitzeu la pantalla o el minicom per comprovar si RPi i ESP8266 es poden comunicar mitjançant UART (nota: és possible que hàgiu d'instal·lar primer la pantalla o el minicom, ja que no sembla que estiguin instal·lats a Raspbian per defecte).

Utilitzant la pantalla:

$ sudo screen / dev / serial0 115200

Mitjançant l'execució de minicom:

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

Nota: molts recursos en línia suggereixen connectar-se a ESP8266 a / dev / ttyAMA0, però això no funciona amb RPi 3 o posterior (incloent zero W) segons la documentació de RPi. Connecteu-vos mitjançant / dev / serial0 o / dev / ttyS0.

Després d'haver introduït la pantalla o el minicom, utilitzeu les ordres AT per comunicar-vos amb ESP8266. Escriviu AT, premeu Retorn i premeu Ctrl + J per enviar l'ordre. Hauríeu d’estar bé en resposta. La llista d’ordres AT disponibles es pot trobar a espressiff.com o aquí.

Si els dispositius estan connectats físicament i parlen entre nosaltres, podem començar a programar els pins RPi GPIO i, finalment, el propi ESP8266.

Pas 3: Configuració del programari (Python per operar i Arduino IDE per programar)

PART 1. Utilitzar python per canviar de mode ESP8266

Com s'ha esmentat anteriorment, és convenient utilitzar els pins GPIO de RPI per canviar els modes de funcionament de l'ESP8266. Vaig escriure dos codis python bàsics que posaven ESP8266 en mode normal o de programació.

Mode normal: per posar el microcontrolador en mode d’operació normal, només cal alimentar-lo i connectar CH_PD mitjançant una resistència de tracció a VCC, però per canviar l’MCU de la programació al mode normal, hem de restablir-lo (penseu a reiniciar-lo). Per fer-ho a RPi, estirarem breument el GPIO de l'RPi connectat al pin RST de l'ESP-01 (per defecte, el pin RPi que he utilitzat per restablir està configurat a HIGH). Com de breument? Per a mi, això és una pregunta especulativa. Podeu provar diferents intervals de temps, però he trobat que els 200-500 ms funcionen bé. Escriviu comentaris si teniu una idea millor. Deseu el vostre codi com a reset.py

#! / usr / bin / python

importa RPi. GPIO com a temps d'importació GPIO GPIO.setmode (GPIO. BOARD) # defineix la identificació GPIO per números de pin físics resetPin = 3 # identifica pin físic RPi connectat a ESP8266 pin RST GPIO.setup (resetPin, GPIO. OUT) # set reset pin com a sortida GPIO.output (resetPin, GPIO. LOW) # caiguda de tensió al pin RST time.sleep (.2) # espera a 2,2 s GPIO.output (resetPin, GPIO. HIGH) # restauració del voltatge al pin RST GPIO. cleanup () # restableix pins a RPI per evitar futurs avisos d'execució

  • Mode de programació: per posar l’MCU en mode de programació, hem d’alimentar l’ESP8266 amb GPIO0 a terra o, alternativament, restablir-lo i posar a terra GPIO0 mentre arrenceu (de nou no sé del tot la durada exacta de les caigudes de tensió, de manera que no sigueu estrictament guiat pels valors utilitzats). Deseu el codi com a flash.py o baixeu-lo a continuació. La successió d'accions és la següent:

    • estireu el pin RST cap avall
    • estireu el pin GPIO0
    • estireu el pin RST
    • estireu el pin GPIO0

#! / usr / bin / python

importa RPi. GPIO com a temps d’importació GPIO GPIO.setmode (GPIO. BOARD) # defineix la identificació GPIO mitjançant números de pin físics resetPin = 3 # identifica pin físic RPi connectat a ESP8266 pin RST flashPin = 5 # identifica pin físic RPi connectat a pin GPIO0 ESP8266 GPIO. sleep (.2) # la necessitat d'aquesta espera és GPIO.output especulativa (flashPin, GPIO. LOW) # caiguda de tensió a GPIO0 time.sleep (.2) # la necessitat d'aquesta espera és GPIO.output especulativa (resetPin, GPIO. HIGH) # començar a arrencar ESP8266 time.sleep (.5) # esperar que ESP8266 arrenci GPIO.ouput (flashPin. GPIO. HIGH) # restaurar la tensió al pin GPIOGPIO.cleanup () # restablir els pins a RPI per evitar futurs avisos en temps d'execució

Als permisos de canvi de terminal:

$ sudo chmod + x flash.py

$ sudo chmod + x reset.py

A partir d’ara sempre que calgui entrar al mode de programació, executeu-lo al terminal:

$ python /flash.py

després de carregar el codi per entrar en mode d'execució normal:

$ python /reset.py

En aquest punt, és possible que també vulgueu actualitzar el microprogramari ESP8266. Hi ha molts tutorials en línia sobre com fer-ho, de manera que no entraré en detalls sobre com fer-ho.

PART 2. Configuració d'Arduino IDE

si ja teniu Arduino IDE instal·lat, és possible que vulgueu revisar la secció assegurant-vos que el vostre IDE estigui preparat per a ESP8266.

A Rapberry Pi podeu utilitzar Arduino IDE per programar el vostre ESP8266. Hi ha dues maneres d’instal·lar l’IDE a RPi:

  • mitjançant la línia d’ordres des de repositoris mitjançant apt-get install
  • descarregar i instal·lar manualment des de arduino.cc.

Us recomano encaridament seguir aquest darrer camí. La versió IDE dels dipòsits sembla estar obsoleta i segur que haureu de fer més abans de començar a programar ESP8266. Per evitar problemes, aneu a la pàgina de descàrrega d'Arduino.cc i descarregueu la versió Linux ARM. A continuació, descomprimiu i instal·leu: si el nom del fitxer descarregat és semblant a aquest arduino-X. Y. Z-linuxarm.tar.xz, executeu la carpeta de descàrrega:

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

Això hauria de descomprimir el fitxer a la carpeta arduino-X. Y. Z. Correr:

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

Això hauria d’instal·lar l’IDE. Un cop finalitzada la instal·lació, inicieu l'IDE.

  • Des de l’IDE Arduino aneu a Fitxer> Preferències. Cerqueu "URL del gestor de taules addicionals" a la part inferior de la finestra de preferències. Introduïu https://arduino.esp8266.com/stable/package_esp8266com_index.json al camp "URL de gestor de taules addicionals" i feu clic al botó "D'acord".
  • Aneu a Eines> Tauler: XXX> Gestor de taulers. A la finestra, utilitzeu la cerca o desplaceu-vos cap avall, seleccioneu el menú del tauler ESP8266 i feu clic a Instal·la. Espereu que finalitzi la instal·lació i tanqueu la finestra.
  • Torneu a anar a Eines> Tauler: XXX i cerqueu taulers ESP8266. Trieu el mòdul ESP8266 genèric.

Ara IDE està preparat per programar ESP8266. Escriviu o enganxeu el codi desitjat a la finestra IDE i deseu-lo. Feu clic a Penja. Des del terminal executeu flash.py, això hauria de posar la vostra placa en mode de programació. Espereu uns minuts fins que l'IDE acabi de compilar i carregar (nota: ESP-01 normalment inclou 2 LED, el LED blau parpelleja mentre es carrega el codi) i executeu reset.py. Ara la vostra placa ESP-01 està preparada per fer tasques.

Recomanat: