Przejdź do głównej zawartości

Aktualizacja oprogramowania układowego w ESP-01 do najnowszej wersji NodeMCU

Oprogramowanie i projekt NodeMCU cieszą się niesłabnącym zainteresowaniem świata konstruktorów urządzeń IoT, zatem co jakiś czas warto odświeżyć sobie firmware w naszych płytkach ESP. Osobiście jestem przeciwnikiem zmienienia czegoś, co dobrze działa, tylko dla zasady czy z chęci cieszenia się świadomością posiadania najnowszej wersji, ale tym razem chodzi jednak o coś innego – zwiększenie funkcjonalności i zapewnienie poprawnego działania oraz kompatybilności z najnowszymi projektami i bibliotekami.

W tytule tego artykułu jest mowa o najprostszych płytkach z układem ESP8266ESP-01. To właśnie w oparciu o ten model opracowałem płytkę prototypową, o której pisałem w poprzednim rozdziale. Dotychczas wszystkie moje płytki ESP miały na pokładzie oprogramowanie NodeMCU w wersji 0.9.5. Zorientowani choć trochę w temacie od razu zauważą (Google? Bing?), że wersja ta ma już co najmniej dwa lata... Najwyższy czas zatem na aktualizację.
Do aktualizacji trzeba się oczywiście przygotować, zatem:
  • płytkę ESP-01 łączymy z konwerterem USB-Serial tak, aby umożliwić bezproblemową komunikację przez port szeregowy (na krzyż TxD z RxD i wyrównujemy masy);
  • do ESP-01 podłączamy zasilanie z osobnego źródła, w miarę wydajnego – ja stosuję przetwornicę DC-DC dającą na wyjściu 3,3V/2A "napędzaną" zasilaczem stabilizowanym 9V, co stanowi konkretny zapas mocy; niektóre konwertery USB-Serial posiadają możliwość zasilania układów napięciem 3,3V i 5V, ale zwykle nie zapewniają odpowiedniej wydajności prądowej (liczby miliamperów);
  • wyprowadzenie CH_PD płytki ESP-01 podłączamy do zasilania (3,3V, inaczej: podajemy stan wysoki), zaś GPIO0 (G0) do masy.
W następnej kolejności pobieramy sobie dwa pliki: pierwszy, esp_init_data_default.bin (init data block – bardzo ważny!), ze strony https://github.com/espressif/ESP8266_AT/tree/master/bin. Kolejny plik to już właściwe oprogramowanie układowe NodeMCU. I tutaj mógłby być problem, ponieważ twórcy NodeMCU przestali publikować binarne wsady, co skazywałoby nas na walkę z przygotowaniem sobie środowiska do budowy pakietów oprogramowania dla ESP8266, jednak pojawił się ciekawy projekt – na stronie https://nodemcu-build.com/index.php mamy możliwość "zamówienia" sobie skompilowanej wersji najnowszego oprogramowania NodeMCU, zawierającego wszystkie moduły, na których nam zależy.
Podajemy więc nasz adres email, na który wysłane zostaną linki do binarnych wsadów i zaznaczamy pakiety (moduły), które chcemy mieć wkompilowane w oprogramowanie układowe. Do projektu mojej płytki prototypowej zalecam wybranie modułów (z gałęzi "master" projektu): file, GPIO, I2C, net, node, PWM, timer, UART i WiFi. Nie należy przesadzać z modułami, bo rozmiar wsadu może znacznie przekraczać pojemność pamięci flash ESP-01 (512kB zaledwie) i z aktualizacji oprogramowanie nic interesującego nie wyjdzie...
Po kilku(nastu) minutach powinniśmy dostać email zawierający linki do gotowych plików. Pobieramy plik nodemcu-*-float.bin.
Przyda nam się teraz oprogramowanie, za pomocą którego wgramy wsad do pamięci flash naszego układu. Osobiście polecam esptool – bardzo wygodne w obsłudze narzędzie uruchamiane z linii poleceń.
Oba pliki *.bin kopiujemy sobie do jednego folderu (dla porządku i wygody wyłącznie), podłączamy konwerter USB-Serial do wolnego gniazda USB w komputerze, włączamy zasilanie płytki ESP-01 (przygotowanej jak w opisie wyżej), sprawdzamy, jaką nazwę ma wirtualny port szeregowy konwertera (u mnie jest to np. /dev/ttyUSB0) i wydajemy polecenie (w przykładzie dostosowane do płytki ESP-01 i nadanych przeze mnie nazw plików), wcześniej resetując ESP-01 (G16 zwieramy na chwilę do masy):

esptool.py --port /dev/ttyUSB0 write_flash -fm qio -fs 4m 0x00000 nodemcu-i2c-float.bin 0x7c000 esp_init_data_default.bin

Po kilku krótkich chwilach oprogramowanie jest wgrane i gotowe do naszych eksperymentów. Żeby się przekonać, że wszystkie moduły (pakiety) zostały zainstalowane według naszych wskazań, wystarczy sprawdzić, co pojawi się w terminalu portu szeregowego na pececie (polecam np. CuteCOM) po wydaniu polecenia:

node.restart()

Pamiętać należy również, że w nowej wersji oprogramowania NodeMCU (numeru nie podaję – wiadomo, zmieni się zapewne wkrótce na wyższy ;)) szybkość transmisji portu szeregowego po stronie PC trzeba ustawić na 115200b/s, a nie jak w wersji NodeMCU 0.9.x – 9600b/s.

I to wszystko! Owocnych prób i udanych projektów – życzy autor :)

Przydatne linki:

Komentarze

  1. ESP-01 to mój podstawowy moduł do komunikacji ze światem zewnętrznym w połączeniu z NANO - jako baza dla BLYNK. Chętnie też stosuję D1 mini jako samodzielny procesor z BLYNK. Programuję w Arduino IDE i nie mam doświadczenia z NodeMCU i LUA.
    Jaka jest twoim zdaniem przewaga LUA nad Arduino IDE?
    pozdr
    K
    http://100-x-arduino.blogspot.com/

    OdpowiedzUsuń
    Odpowiedzi
    1. Szczerze mówiąc nie próbowałem nawet programować ESP-01 z poziomu Arduino IDE, więc raczej nie dam rady rzetelnie odpowiedzieć na to pytanie.

      Postanowiłem bawić się modułami NodeMCU korzystając z języka Lua głownie poprzez chęć wdrożenia się w kolejny język programowania. Interesująco wygląda też koncepcja NodeMCU, według której mam w pamięci układu do dyspozycji "przestrzeń dyskową" do przechowywania skryptów i możliwość uruchamiania kodu tych skryptów w dowolnym momencie (w szczególności przy uruchomieniu układu – z poziomu skryptu startowego/inicjującego). Nie sprawdzałem, jak to wygląda w Arduino IDE, ale – z drugiej strony – użycie znanego nam dobrze środowiska i języka programowania, tego samego, w którym programujemy pozostałe nasze płytki, może być bardzo pomocne w utrzymaniu pewnej dyscypliny i konsekwencji projektu.

      Usuń

Prześlij komentarz

Popularne posty z tego bloga

Niesamowicie prosty czujnik zmierzchowy.

Tym razem zero programowania, będzie natomiast nostalgiczno-wspomnieniowy układzik, lekko zmodyfikowany.
Otóż kilka dni temu rozmawialiśmy w gronie znajomych o różnego rodzaju czujnikach zmierzchowych i czujnikach ruchu. Ponieważ należę do tych wariatów, co to hołdują jeszcze owej przestarzałej i kompletnie odrealnionej dziś zasadzie: "po co kupować, gdy można zrobić", stwierdziłem, że poskładam takie coś (czujnik zmierzchowy; sensor ruchu faktycznie lepiej nabyć, choćby ze względu na rozmiary ;)) i być może podłączę do jakiegoś mikrokontrolera. Przypomniało mi się też przy okazji, że znalazłem ostatnio w elektronicznych śmieciach stary fotorezystor (dla niewtajemniczonych: element zmieniający rezystancję, czyli opór elektryczny, pod wpływem działania strumienia światła) RPP130, jeden z kilku pozostałych po montowanych wieki temu układach tranzystorowych do zdalnego sterowania pracą urządzeń za pomocą latarki... No OK, nie było to specjalnie rozbudowane zdalne sterowanie ;)

Android i zewnętrzny moduł GPS

Od kilku dni jestem w posiadaniu smyrfona z Androidem 4.1.1 na pokładzie. Kwestie związane z wyborem systemu roztrząsałem już na G+, a ten artykuł tutaj ma konkretny temat, więc nie będę wyjaśniał po raz n-ty. Po prostu zwyciężyły popularność i ekosystem oraz przywiązanie do produktów sieciowych Google. Mniejsza.

Zbliża się sezon urlopowy :-) Moi podopieczni już mają wakacje, a ja wyjeżdżam wkrótce. W każdym bądź razie wakacje to podróże - samochodem, rowerem, na piechotę, żaglówką, motorówką, samolotem... Zaawansowane urządzenia mobilne przyzwyczaiły nas już do usług lokalizacyjnych, z których najważniejszą jest GPS (na dalszym planie mamy A-GPS, lokalizacje w oparciu o sieci WiFi itp.). Często korzystamy z programów, które w coraz ciekawszy sposób wiążą naszą lokalizację, pobraną z np. GPS-a, z przeróżnymi danymi, nieraz ocierając się o AR.
Każdy współczesny smartfon, a przynajmniej znakomita ich większość, wyposażona jest we wbudowany odbiornik sygnału lokalizacyjnego (GPS, GLONASS…

Po co mi to całe Arduino?

Oczywiście tytuł ma być jedynie prowokacją. Chociaż nie do końca - artykuł jest właśnie poświęcony pracy w Arduino IDE z mikrokontrolerami, ale bez płytek Arduino.
Czym jest Arduino - wiemy wszyscy, zarówno początkujący fani programowania elektroniki, jak i zaawansowani mikrokontrolerowcy. Jeśli jednak nie do końca wiemy, zachęcam do odwiedzenia strony domowej projektu (link 5 na końcu artykułu) oraz zerknięcia np. w poradnik (link 4).

Jakiś czas temu, przełamując się i zmieniając zdanie ("o 180 stopni" ;-)) nabyłem sobie Arduino Leonardo, głównie w celu jego "obwąchania" i zapoznania się z bogatym zbiorem bibliotek dostępnych dla tej platformy. Zgoda, różne biblioteki są dostępne niezależnie od Arduino, ale i tak się zdecydowałem. Dlaczego Leonardo? Otóż miałem ochotę przyrządzić dwie pieczenie na jednym ogniu - mieć Arduino i przetestować ATmegę 32u4. Dziś doskonale zdaję sobie sprawę, że żeby pobawić się Arduino nie trzeba go w ogóle posiadać... Ale po kolei.

Pi…