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 ESP8266 – ESP-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:
- NodeMCU custom builds
- Flashing ESP8266 ESP-01
- Flashing firmware (oficjalna dokumentacja NodeMCU)
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.
OdpowiedzUsuńJaka jest twoim zdaniem przewaga LUA nad Arduino IDE?
pozdr
K
http://100-x-arduino.blogspot.com/
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.
Usuń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.
Bardzo dobry wpis. Czekam na kolejne. Pozdrawiam :)
OdpowiedzUsuń___________________
Niskie ceny
Niestety obecnie coś im się chyba popsuło, bo nie działa float, zresztą oba pliki mają taką samą wielkość zarówno integer jak i float :-/
OdpowiedzUsuńBardzo dobry wpis. Pozdrawiam serdecznie.
OdpowiedzUsuń