Skocz do zawartości

Aktualizacja oprogramowania ESP8266-01


Klubbers

Pomocna odpowiedź

Witam.

Wiem, że w internecie jest pełno poradników, tutoriali i innych tematów dotyczących aktualizacji modułu ESP, lecz wydaje mi się, że wszystkie już przerabiałem i nic nie pomogło.

Jestem w posiadaniu 2 modułów ESP8266-01 wersja czarna z 1MB pamięci FLASH. Posiadam jeszcze moduł ESP-12E, lecz póki nie rozwiążę problemów z ESP-01 nie mam zamiaru go ruszać. A więc do rzeczy.

Do wszystkich aktualizacji używałem konwertera USB->UART FTDI F232 z opcją logiki 5V jak i 3.3V

Po odpakowaniu podłączyłem moduł do komputera (Win10) wgrałem wszystkie niezbędne sterowniki i zabrałem się do aktualizacji najnowszego oprogramowania. Z obecnej pozycji wiem, że błędem było nie sprawdzenie obecnej wersji oprogramowania, oraz tego czy moduł reaguje na komendy AT. Po "udanej" aktualizacji (XTCOM_UTIL) podłączam moduł w trybie pracy i okazuje się, że nie działają komendy AT. Ogólnie to nic nie działa, w serial monitorze wyskakują krzaki zarówno przy baudrate 9600 jak i przy 115200. Dla baudrate 74880 pojawia się taki błąd:

 ets Jan  8 2013,rst cause:2, boot mode:(3,6)

load 0x40100000, len 1396, room 16 
tail 4
chksum 0xef
load 0x00000000, len 0, room 4 
tail 0
chksum 0xef
ho 12 tail 0 room 4
load 0x00000000, len 0, room 12 
tail 0
chksum 0xef
csum 0xef
csum err
ets_main.c 

Wyczytałem, że jest to błąd reset, nie wiem jednak czym spowodowany. Wiem jedynie, że zmieniają się wartości boot mode. W razie podłączenia GPIO0 do masy w nawiasie otrzymamy (1,6), a gdy ponownie podłączymy pin CH_PD do zasilania kod błędu wynosi (1,7).

Próbowałem ponownych aktualizacji różnymi programami, z różnymi softami.

Używałem:

  • XTCOM_UTIL - brak żadnych komunikatów o błędzie

  • ESPflasher - tutaj przy 99% aktualizacji wyskakiwał błąd "failed to leave the flash" ale podobno wyskakuje to zawsze i nie ma wpływu na powodzenie aktualizacji

  • NodeMCU flasher - program normalnie wykrywa moduł i aktualizacja przebiega pomyślnie. Po ponownym podłączeniu modułu serial monitor lub putty pokazuje krzaczki (tak jakby się nic nie zmieniło)
  • FLASH DOWNLOAD TOOLS - program testowany w wersji 2.4 oraz 3.4.8. Adresy brałem z dokumentacji, a z braku informacji na temat ustawień, próbowałem różnych kombinacji. W SPI MODE wybierałem między DIO oraz QIO (gdzieś obiło mi się o uszy, że ma być QIO, ale nie byłem pewny), natomiast w FLASH SIZE wybierałem 4 lub 8 Mbit. Próbowałem wgrywać wszystkie 4 pliki, albo tylko główny - bez różnicy. W wersji 3.4.8 program tak jakby nie wgrywał nowego softu, a jedynie czyścił flash. Widać to po zapisach w okienku z logami. Program 3-krotnie wykonuje "erase flash" - do momentu aż pasek postępu "instalacji" oprogramowania nie osiągnie 100%. W wersji 2.4 "erase flash" wykonuje się jeden raz, a następnie program "wgrywa" oprogramowanie. A przynajmniej udaje, bo po zakończeniu wgrywania nie ma śladu po nowym sofcie.

  • Próbowałem zaktualizować moduł za pomocą pythona - bez powodzenia

Oprogramowanie które próbowałem wgrać:

  • ESP8266 v0.9.2.0 AT Firmware
  • ESP8266 v0.9.5.0 AT Firmware
  • ESP8266 v1.1.1.1 AT Firmware
  • ESP8266 v1.3.0.2 AT Firmware
  • ESP8266 v1.5.4 AT Firmware
  • ESP IOT SDK - różne wersje
  • ESP NONOS SDK - wersje 2.0.0 i 2.1.0
  • NodeMCU firmware 2.1

Po 2 dniach bezsensownych prób postawienia ESP na nogi, spróbowałem wykorzystać Arduino Core dla ESP8266. Niestety mimo pozytywnego wgrania szkicu (przykład Blink, oraz własny skrypt z mrugającą diodą na GPIO2) nic nie działało. Tak jakby po pozytywnym wgraniu szkicu, dochodziło do formatu pamięci FLASH. Próbowałem także podpiąć kondensatory 100uF oraz 470uF między VCC i GND (podobno kiedyś to komuś pomogło 😅 ).

Schemat podłączeń ESP8266-01 do konwertera FT232.

Dla programów (XTCOM_UTIL, ESPflasher)

FT232 -> ESP-01

GND -> GND

RX -> TX

TX -> RX

GND -> GPIO0

Konwerter zasilany był z USB, natomiast ESP z osobnego zasilania:

VCC -> 3.3V

CH_PD ->10kOhm -> VCC

RESET -> 10kOhm -> VCC

Dla pozostałych programów schemat połączeń wyglądał nieco inaczej (aczkolwiek ten powyżej tez próbowałem):

FT232 -> ESP-01

GND -> GND

RX -> TX

TX -> RX

DTR# -> GPIO0

RTS# -> RESET

Pozostałe zasilanie bez zmian.

VCC -> 3.3V

CH_PD ->10kOhm -> VCC

Do momentu zakończenia aktualizacji wszystko działa tak jak w podręczniku. Po zakończeniu flashowania i odłączeniu GPIO0, moduł tak jakby się formatował do stanu przed wgraniem oprogramowania.

Koniec..?

Nic bardziej mylnego. Zrozpaczony, zmęczony i mocno wkurzony odpakowałem drugi, taki sam moduł. Jako, że człowiek uczy się na błędach, po podpięciu ESP do komputera od razu odpaliłem serial monitor w Arduino IDE i sprawdziłem komendy AT. Okazało się, że działają. Wklepałem zatem AT+GMR i wyskoczyła mi wersja oprogramowania wgrana do modułu. Firmware AT v1.1.1.1. SDK version 1.5.4(baaeaebb). Z tego podniecenia, że mam działający moduł ESP (a przynajmniej komendy działają) straciłem głowę i poszedłem na całość. Wgrałem stworzony przez siebie szkic poprzez Arduino Core ESP8266 (ten z mrugającą diodą na GPIO2). Wiedziałem o tym, że po wgraniu jakiegokolwiek szkicu stracę komendy AT, ale były mi one niepotrzebne w przypadku działającego modułu pod Arduino lub Lua. No i wszystko szlag trafił. Szkic wgrany poprawnie, komend AT brak i działającego szkicu również. Reszty możecie się domyślić. Próby wgrania jakiegokolwiek oprogramowania kończyły się takim samym rezultatem jak w przypadku pierwszego modułu.

Ja już wyczerpałem swoje możliwości i wiedzę. Liczę na waszą pomoc i doświadczenie. Gdyby ktoś miał jakieś sprawdzone ustawienia do programu, albo wiedział co robię źle, to bardzo proszę o informację.

Z góry dziękuję i pozdrawiam.

Link do komentarza
Share on other sites

A jak zasilasz ten moduł? Musisz pamiętać, że on potrzebuje do 300mA prądu momentami, więc zasilanie go z samego adaptera usb-serial w najmniejszym stopniu nie wystarczy i moduł się będzie resetować jak tylko dojdzie do momentu włączania wifi.

Link do komentarza
Share on other sites

Wydajność prądowa modułu zasilającego to 1A. Zasilacz 2A.

To nie wina zasilania, ponieważ gdybym nie dostarczył odpowiedniego prądu do modułu, to żaden program by mi go nie wykrył. A tymczasem w każdym programie mogę się swobodnie połączyć.

Link do komentarza
Share on other sites

To nie wina zasilania, ponieważ gdybym nie dostarczył odpowiedniego prądu do modułu, to żaden program by mi go nie wykrył. A tymczasem w każdym programie mogę się swobodnie połączyć.

Niestety twoja teoria nie jest prawdziwa. Ten moduł nie pobiera takiego samego prądu przez cały czas. W szczególności, gdy część odpowiedzialna za WiFi nie jest włączona (na przykład w trakcie programowania), to będzie działać poprawnie nawet zasilany z USB.

No ale skoro piszesz, że zasilasz go z zasilacza 2A, to powinno być wszystko w porządku. Niestety nie mam więcej pomysłów -- sam mam kilka takich modułów i u mnie one działają. Możesz spróbować jeszcze wykonać komendę erase_flash przed wgraniem nowego firmware-u, żeby się upewnić, że nie zostały żadne śmieci po starym...

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Niestety czyszczenie flasha nie pomogło. Jeżeli ktoś używał tego modułu i działały mu szkice wgrywane z Arduino to bardzo proszę o podzielenie się ustawieniami w Arduino IDE.

Link do komentarza
Share on other sites

Cześć.

Mam dokładnie ten sam problem.

Flashowanie (poprzedzone kasowaniem) przechodzi ok, ale brak jakiejkolwiek reakcji potem.

Dokłądnie to samo robione na kości z 512kb pamięci przechodzi poprawnie i układ działa.

Żeby wykluczyć problemy z zasilaniem, podłączyłem ukłąd z ładowarki telefonu (5V, 2A) przez stabilizator ld33cv - (3.3V 0.8A)

Jakby kotś rozwiązał problem z tymi układami to proszę o pomoc 🙂

Link do komentarza
Share on other sites

Witam

Nie wiem czy temat jest jeszcze aktualny, ale dziś dopadł mnie. Po analizie znalazłem rozwiązanie . Dotyczył pamięci. A dokładnie odpowiednich ustawień SPI mode. W moich ESP-01S

była kość 25D80BZSEG firmy Zetta ( 8 Mbit  - 1 MB). Poprawne jej zaprogramowanie było tylko na ustawieniach SPI mode na DOUT.

Link do komentarza
Share on other sites

@Klubbers mógł mieć taki, albo zupełnie inny problem. Główny to taki, że mocno się miotał, podaje różne kombinacje podłączenia pinów, ale nie wyglądają na prawidłowe. Niezależnie od programu  pinologia jest ta sama, bo ustawia urządzenie, a tryb komunikacji jest zawsze ten sam. Można to zrobić ręcznie na stałe i potem wywołać program do wgrywania. Co do zasady, piny które mają w trakcie działania zmieniać stan podłączamy do VCC/GND przez rezystor PULL 10k (GPIO0, RST), ale po co CHPD przez rezystor, tak samo jak VCC zworka do 3.3V. Jest tryb automatycznego resetu do wyboru, ale każdy taki automatyczny wymaga nieco hardwareu, np. NODEMCU wymaga układu z dwoma tranzystorami NPN i kilka rezystorów, ten jest o tyle dobry, że w Arduino procek jest resetowany i uruchamiany od razu w wymaganym trybie, raz do pracy, raz do flashowania. I tu podłączenie GPIO0, RST i CHPD jest tak samo wykonywane "ręcznie". Są też proste podstawki z wtyczką USB i przełącznikiem UART/FLASH. Też testowałem i działa OK, ale automatyczny jest oczywiście lepszy. Z kolei jak się nie wie co do czego, to taki dongiel od razu odcina cały problem hadwareu i jest (w miarę) pewne, że problem został już tylko w ustawieniach software na PC.  Kondensator podstawowy to ceramiczny 100n, jak się wstawi duży elektrolityczny daleko to i tak nie pomoże. Jak są jeszcze wątpliwości czy źródło prądu jest OK to można wziąć 3 akku 1.2V  lub LIPO/LION 3.7V i z nich zasilić moduł, bez żadnych regulatorów (tylko faktycznie żeby nie miały więcej niż 3.7V). No i najważniejsze, ustawia się tryb uruchomienia rezystorami lub zwarciem i robi reset. Niektóre schematy do podłączenia podają jeszcze piny GPIO15 i GPIO2, ale nie robiłem tego nigdy z płytką ESP01.

Dodatkowo zauważyłem, że starsze moduły z 512kB flash bez problemu flashowałem i uruchamiałem zasilane z przejściówki FTDI. Nowsze 1MB bardzo często się resetują i pracują niestabilnie. Muszę je zasilać z pinu 5V i konwertować przetwornicą na 3.3V, zwykły stabilizator LDO 500mA wysiadał, choć niby ESP średnio bierze z 80mA, a w pikach do 250mA.  Nie jest to kwestia, że USB mi się zestarzało i daje mniej prądu/niższe napięcie, bo ciągle mam stare i nowe na biurku. No i moduły z flash PUYA wymagają dogrania patcha do Arduino, inaczej flash się wywala gdy chce się coś zmodyfikować w systemie plików SPIFFS.  Ogólnie to na początek polecam płytkę NODEMCU lub WeMOS. Różnica 10zł (jak się doliczy przesyłkę to ta różnica jeszcze skromniej wygląda), a jakość pracy zupełnie inna.

ESP8266-upload-with-NPN-schema1.thumb.png.b4c37902ee5c1c1a33de92fa820831f6.pngRSTNODE.thumb.jpg.c53d7d63ec05d6b0a82d9391708171a3.jpg

Schemat powyższego "programatora" jest na sieci np. tu https://arduino-esp8266.readthedocs.io/en/latest/faq/a01-espcomm_sync-failed.html , tranzystory pewnie byle jakie NPN, ja wstawiłem C547B i rezystory 10k, bo akurat takie miałem. Widać tu jeszcze dwa kabelki "do programowania ręcznego" - na chwilę zwarcie GPIO0 do GND, RST, odłaczenie GPIO0 i wgrywanie. Ale GPIO0 cały czas przez PULLUP do VCC.  Podstawka na płytce to jakieś 20c, gotowy programator widoczny poniżej z przełącznikiem  to około 2$.

Link do komentarza
Share on other sites

Temat stary ale może komuś się przyda. Ja miałem podobny problem z flashowaniem (to samo na ESP01 i na ESP8266), Pomogła zmiana prędkości w Serial Monitor na 74880. Zadziałał firmware : 'v2.0.ATFirmware(ESP).bin' i tryb QIO.

Link do komentarza
Share on other sites

Witam.

Zostawiam podsumowania mojej "walki" z aktualizacją oprogramowania AT i SDK w płytkach V3 i V2 ModeMcu.

Zbiorę wszystko w punkty, żeby było przejrzyście i w miarę zrozumiale, więc tak.
1) Należy zacząć od sprawdzenia jaka wersja AT i SDK znajduje się w posiadanym układzie ESP8288 użyć do tego dowolnego monitora portu szeregowego i komend AT+RST i AT+GMR

Po wpisaniu komendy AT+GMR powinniśmy otrzymać wersję AT i SDK jak poniżej:

AT version:1.3.0.0(Jul 14 2016 18:54:01)
SDK version:2.0.0(5a875ba)
v1.0.0.3
Mar 13 2018 09:37:06

Komendą AT+RST sprawdzamy wersję boot i parametry pamięci. Otrzymujemy ekran jak poniżej:
2nd boot version : 1.6
  SPI Speed      : 40MHz
  SPI Mode       : QIO
  SPI Flash Size & Map: 32Mbit(512KB+512KB)
jump to run user1 @ 1000

2) Używałem narzędzia flash_download_tool i ESP8266 FLASHER, polecam ten pierwszy.

3) Uruchamiamy flash_download_tool w trybie develp. W konfiguracji ustawiamy parametry zgodne ztym co otrzymaliśmy wcześniej w moim przypadku SPI Speed:40MHz, SPI Mode: QIO, Flash Size 32Mbit.

4) Ściągnąć ze strony producenta oprogramowanie, które nas interesuje. Otworzyć i zapoznać się z plikem REDME w katalogu bin\at

5) Dodać po kolei w nowych liniach pliki boot, user1.1024, esp, blank 

6) Do dodanych plików po prawej w oknach dodać adresy zgodnie z plikem README. Dla pamięci od 1MB w górę należy sugerować się akapitem Flash size 8Mbit: 512kB+512kB

6) Odznaczyć wszystkie checkboxy po lewej stronie.

7) Podłączyć płytkę wybrać port COM i baud na 115200

😎 Wybrać klawisz ERASE poczekać cierpliwie do skasowania pamięci i komunikatu FINISH

9) Wcisnąć i przytrzymać klawisz RESET na płytce. Trzymając klawisz RESET wcisnąć klawisz FLASH i przytrzymać.

10) Odpuścić klawisz RESET.

11) W programie wybrać przycisk START.

12) W momencie, gdy na zielonym polu jest opis SYNC odpuścić klawisz FLASH. Następnie cierpliwie czekać do momentu zakończenia aktualizacji w ukazania się komunikatu FINISH.

13) Jeżeli wszystko przebiegło pomyślnie sprawdzić jeszcze raz komendami AT+RST i AT+GMR czy udało się zaktualizować oprogramowanie. U mnie po aktualizacji:

AT version:1.7.4.0(May 11 2020 19:13:04)
SDK version:3.0.4(9532ceb)
compile time:May 27 2020 10:12:17
Bin version(Wroom 02):1.7.4

2nd boot version : 1.7(5d6f877)
SPI Speed : 40MHz
SPI Mode : QIO
SPI Flash Size & Map: 32Mbit(512KB+512KB)
jump to run user1 @ 1000

Pozdrawiam.

Link do komentarza
Share on other sites

If someone destroys the software for the ESP01S module, I recommend repairing it according to my tips.
I wasted a lot of time on solving the lack of the "AT" command and I didn't find anything sensible on the internet. I know many of you have lost all hope of getting your esp01s back, but this solution gives you hope. After uploading the firmware, you will receive the following information:
AT + GMR
AT version: 1.6.2.0 (Apr 13 2018 11:10:59)
SDK version: 2.2.1 (6ab97e9)
compile time: Jun 7 2018 19:34:26
Bin version (Wroom 02): 1.6.2
OK

About programing ESP001S you find on Internet.

EEprom 1MB (T25S80)

Please remeber about power (proszę pamiętać o programowaniu napięciem) 3.3V

wersja: 

AT version:1.7.4.0(May 11 2020 19:13:04)
SDK version:3.0.4(9532ceb)
compile time:May 27 2020 10:12:17
Bin version(Wroom 02):1.7.4

nie widzi ukrytej sieci kiedy się chcesz zalogować. wpisuje fail:3

 

RepaireESP01S.zip

Edytowano przez RWE
Link do komentarza
Share on other sites

Cześć,

Dzisiaj trafiłem na problem z załadowaniem programu z poziomu Visual Studio Code + PlatformIO do właśnie zakupionych w Chinach ESP-01S (wcześniej zakupione moduły w kraju działały bez żadnego problemu). W ramach szukania po Internecie ... no właśnie, nawet nie wiedziałem czego szukać, ale od linku do linku trafiłem tutaj.

Post @RWE bardzo się przydał, bo po wykonaniu tego co tam napisane stwierdziłem, że płytki jednak działają.

Kluczem do rozwiązania problemu był post @dualp i zdanie: "Poprawne jej zaprogramowanie było tylko na ustawieniach SPI mode na DOUT." Nieszczęsne DOUT było też na instrukcji podesłanej przez @RWE.

Dobra, chwilę mi zajęło w ogóle zrozumienie o co chodzi, ale podsumowując:

Jeżeli po załadowaniu programu z poziomu PlatformIO do ESP-01S w terminalu wyskoczy (wielokrotnie):

Fatal exception (28):
epc1=0x4000228b, epc2=0x00000000, epc3=0x00000000, excvaddr=0x000000b5, depc=0x00000000

to trzeba (tak było u mnie) dopisać do platform.ini:

board_build.flash_mode = dout

Pozdrawiam,
Marcin

  • Lubię! 1
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.