Moje WiFi ESP8266 - výměna SDK firmware

Vytisknout
ELEKTRONIKA
Zobrazení: 8964

Pokud zakoupíme nějaký modul ESPxxxx (například ESP8266 12E) v určitou dobu je jasné, že firmware obvodu bude z té doby (také například 2 roky starý). Firmware v obvodu ESP zajišťuje správnou obsluhu Wi-Fi připojení a také například ovládání pomocí AT příkazů. Protože stávající originální firmware v zakoupeném obvodu může obsahovat chyby, je vhodné aktualizovat vždy na poslední dostupný firmware (zlepší se například stabilita obvodu, nebo oprava chyb a tím spolehlivost)...

1) stažení aktuální verze SDK firmware pro obvod ESPxxxx

Ze stránek: http://bbs.espressif.com/viewtopic.php?f=46&t=850 stáhneme poslední verzi SDK. V době psaní tohoto článku byla verze: Latest Version: 2.1.0 Release date: May 05, 2017

Nebo přímo z Githubu: https://github.com/espressif/ESP8266_NONOS_SDK

Nebo v příloze pod článkem na mém webu (verze 2.1.0)

Soubor rozbalíme pokud je to nutné a uvidíme tuto strukturu:

1

2) stažení programu pro vložení SDK do ESP obvodu

Ze stránek: http://bbs.espressif.com/viewtopic.php?f=5&t=433#p1658 stáhneme poslední verzi programu "Flash Download Tool". V době psaní tohoto článku byla verze: UPDATE on 2016.11.14

Nebo v příloze pod článkem na mém webu (verze 3.4.4)

Soubor rozbalíme pokud je to nutné a uvidíme tuto strukturu:

2

3) propojení ESP s PC - komunikace Rx/Tx

Propojíme z ESP piny Rx, Tx do USB převodníku Tx a Rx. Napájení pro ESP použijeme externí 3,3V (ne USB 5V a stabilizátor). Připojíme pár nezbytných rezistorů (pokud je již v našem zařízení nemáme).

espminimal

Používám například tento Arduino USB převodník: https://www.gme.cz/arduino-usb-serial-light-adapter

prevodnik

Z převodníku "leze" 5V logika a ESP8266 má 3,3V logiku. Správně bychom měli signál Tx z USB převodíku zmenšit (například přes dělič 20K a 10K) na 3,3V - přizpůsobit pro Rx ESP obvodu. Tímto způsobem (bez děliče) jsem "nakrmil" spoustu ESP a ani jeden neodešel (na webu jsem se dočetl, že je dost tolerantní - například zde: http://hackaday.com/2016/07/28/ask-hackaday-is-the-esp8266-5v-tolerant/). Nicméně připojení a použití je na vaše riziko poškození :-) ale za tu cenu ESP to neřeším (a jak říkám zatím nic neodešlo :-D).

4) nastavení programu FlashDownloadTool a identifikace verze SDK

Spustíme program "ESPFlashDownloadTool.exe" testováno ve Windows 10 Pro - 64bit 16.5.2017 (verze 1703) a v pořádku běží.

Otevře se nám černé okno s výpisem co se právě děje a následně toto okno

0program

Zvolíme tlačítko ESP8266 DownloadTool... po chvilce se spustí toto okno

program

Nyní ...vlezeme... do složky jako na obrázku a například v poznámkovém bloku, nebo PS padu otevřeme soubor "README.md"

3

Z výpisu zjistíme, jaké soubory použijeme pro nahrávání do ESP obvodu (s porovnáním k výpisu flash paměti viz "DETECTED INFO")

1program

V mém případě jsem použil soubory jako na obrázku v červeném oválu. Zároveň se zde dozvíme rozsah pro nastavené prostoru ve flash paměti (například boot_v1.2+.bin má adresu 0x00000).

Pokud neproběhne nahrávání v pořádku hledáme chybu ve výpisu v černém okně:

 

5) testování ESP pomocí AT příkazů

Spustíme naše Arduino (nebo například terminál Putty) a otevřeme okno sériového monitoru. Nastavíme port převodníku (COMxx) a rychlost na 115200 Baud a zapneme ESP. Pokud odešleme do ESP například příkaz AT+GMR dostaneme odpověď o verzi firmware.

Seznam dostupných příkazů (čerpáno zde).

Commands

Description

Type

Set/Execute

Inquiry

test

Parameters and Examples

AT

general test

basic

-

-

-

-

AT+RST

restart the module

basic

-

-

-

-

AT+GMR

check firmware version

basic

-

-

-

-

AT+CWMODE

wifi mode

wifi

AT+CWMODE=<mode>

AT+CWMODE?

AT+CWMODE=?

1= Sta, 2= AP, 3=both, Sta is the default mode of router, AP is a normal mode for devices

AT+CWJAP

join the AP

wifi

AT+ CWJAP =<ssid>,< pwd >

AT+ CWJAP?

-

ssid = ssid, pwd = wifi password

AT+CWLAP

list the AP

wifi

AT+CWLAP

     

AT+CWQAP

quit the AP

wifi

AT+CWQAP

-

AT+CWQAP=?

 

AT+ CWSAP

set the parameters of AP

wifi

AT+ CWSAP= <ssid>,<pwd>,<chl>, <ecn>

AT+ CWSAP?

 

ssid, pwd, chl = channel, ecn = encryption; eg. Connect to your router: AT+CWJAP="www.electrodragon.com","helloworld"; and check if connected: AT+CWJAP?

AT+CWLIF

check join devices' IP

wifi

AT+CWLIF

-

-

 

AT+ CIPSTATUS

get the connection status

TCP/IP

AT+ CIPSTATUS

   

<id>,<type>,<addr>,<port>,<tetype>= client or server mode

AT+CIPSTART

set up TCP or UDP connection

TCP/IP

1)single connection (+CIPMUX=0) AT+CIPSTART= <type>,<addr>,<port>; 2) multiple connection (+CIPMUX=1) AT+CIPSTART= <id><type>,<addr>, <port>

-

AT+CIPSTART=?

id = 0-4, type = TCP/UDP, addr = IP address, port= port; eg. Connect to another TCP server, set multiple connection first: AT+CIPMUX=1; connect: AT+CIPSTART=4,"TCP","X1.X2.X3.X4",9999

AT+CIPMODE

set data transmission mode

TCP/IP

AT+CIPMODE=<mode>

AT+CIPSEND?

 

0 not data mode, 1 data mode; return "Link is builded"

AT+CIPSEND

send data

TCP/IP

1)single connection(+CIPMUX=0) AT+CIPSEND=<length>; 2) multiple connection (+CIPMUX=1) AT+CIPSEND= <id>,<length>

 

AT+CIPSEND=?

eg. send data: AT+CIPSEND=4,15 and then enter the data.

AT+CIPCLOSE

close TCP or UDP connection

TCP/IP

AT+CIPCLOSE=<id> or AT+CIPCLOSE

 

AT+CIPCLOSE=?

 

AT+CIFSR

Get IP address

TCP/IP

AT+CIFSR

 

AT+ CIFSR=?

 

AT+ CIPMUX

set mutiple connection

TCP/IP

AT+ CIPMUX=<mode>

AT+ CIPMUX?

 

0 for single connection 1 for multiple connection

AT+ CIPSERVER

set as server

TCP/IP

AT+ CIPSERVER= <mode>[,<port> ]

   

mode 0 to close server mode, mode 1 to open; port = port; eg. turn on as a TCP server: AT+CIPSERVER=1,8888, check the self server IP address: AT+CIFSR=?

AT+ CIPSTO

Set the server timeout

AT+CIPSTO=<time>

AT+CIPSTO?

 

<time>0~28800 in second

 

+IPD

received data

       

For Single Connection mode(CIPMUX=0): + IPD, <len>:
For Multi Connection mode(CIPMUX=1): + IPD, <id>, <len>: <data>

Další výbornou dokumentaci k ESP obvodům nalezneme zde: http://espressif.com/en/support/download/documents?keys=&field_type_tid%5B%5D=14

Arduino
ESP8266