Ta strona używa ciasteczek (cookies), dzięki którym możliwe jest między innymi poprawne wyświetlanie elementów strony, zapamiętywanie sesji użytkowników. Dodatkowo na stronie znajduje się skrypt Google Analytics oraz PIWIK (statystyki oglądalności). Znajdują się również skrypty przycisków serwisów społecznościowych Facebook, Twitter i Google+ oraz YouTube, które również mogą zapisywać ciasteczka.

ESP8266 część 3

Jak wspominałem w drugiej części poradnika, na chwilę kiedy to piszę jest dostępna wersja firmware oznaczona numerem v.0.60.0.0. Najnowszej oficjalnej wersji firmware należy szukać na stronie producenta układu ESP8266, a dokładnie to w temacie o tytule "Latest Release". Wybieramy firmware oznaczony jako "Non-OS SDK..." naciskając "Click to Download". Przeniesie nas na stronę z opisem dodanych nowych funkcjonalności. Na końcu artykułu z opisem, znajduje się link dzięki któremu możemy pobrać firmware na dysk. Pobrany plik przenosimy na konto z uprawnieniami administratora, ewentualnie na takim koncie pobieramy plik, ponieważ zmiany firmware'u można dokonać, mając pełen dostęp do poleceń wydawanych za pomocą terminala. Będąc już zalogowanym na koncie administratora uruchamiamy program Terminal, znajdziemy go w lokalizacji "Programy -> Inne". Pierwszą czynnością jaką musimy wykonać, to zainstalowanie narzędzia dzięki któremu można wgrywać firmware do układu ESP8266, czyli "esptool.py". Jest to skrypt napisany w języku Python, który daje nam właśnie możliwość wgrywania "wsadów" do ESP. Skrypt ten, z racji że jest multiplatformowy, musimy skompilować do wersji na Mac OS. Wpisujemy więc w terminalu polecenie:

git clone https://github.com/themadinventor/esptool.git

i naciskamy Enter. Utworzy nam ono na dysku folder "esptool" ze zrzutem repozytorium zawierającym wszystkie potrzebne pliki do kompilacji. Jeżeli tak się stało, to musimy teraz zmienić folder źródłowy na ten nowo utworzony. Do zmiany folderu służy polecenie:

cd tutaj pełna ścieżka dostępu do folderu esptool

Najprostszą i bezbłędną metodą wprowadzenia ścieżki dostępu, jest otwarcie Findera, odnalezienie folderu "esptool", a następnie przeciągnięcie go na okno terminala w którym już mamy wpisaną komendę "cd". Upuszczenie folderu w terminalu spowoduje wpisanie całej ścieżki w postaci tekstowej, naciskamy Enter. Teraz poleceniem:

sudo python setup.py install

kompilujemy skrypt do wersji na Mac OS X. Oczywiście należy podać hasło konta administratora, o które zostaniemy poproszeni po wpisaniu powyższego polecenia. Przy podawaniu hasła nie będzie widać wpisywanych znaków. Po wprowadzeniu całego hasła naciskamy Enter. Nastąpi kompilacja skryptu, a o tym że się zakończyła będzie świadczyło pojawienie się "znaku zachęty" w oknie terminala umożliwiającego wpisywanie kolejnych poleceń. Możemy przejść do uaktualnienia firmware'u w układzie ESP. Terminala oczywiście nie zamykamy oraz nie zmieniamy folderu źródłowego, cały czas ma być nim folder "esptool".

Chcąc uaktualnić firmware w ESP8266, pin GPIO0 modułu, tutaj trzeba sprawdzić w dokumentacji naszego modułu gdzie on się znajduje, musimy podłączyć do GND. Oczywiście podłączamy konwerter do modułu z układem ESP, pamiętając o tym że ESP8266 nie może być zasilane napięciem większym niż 3,3V i takie też napięcie musi być na liniach RX i TX. W pierwszej części poradnika opisałem jak powinno wyglądać połączenie konwertera z modułem ESP. Jeżeli mamy już wszystko poprawnie podłączone a pin GPIO0 zwarty do GND, włączamy zasilanie. Nie sprawdzimy teraz poprawności komunikacji z ESP, ponieważ poprzez zwarcie pinu GPIO0 z masą, układ ustawił się w tryb wgrywania danych do pamięci i nie ma możliwości wydawania komend AT. Jeżeli jednak zastosowaliśmy się do wszystkiego o czym wspominałem w pierwszym poradniku odnośnie zasilania, można założyć że wszystko jest w OK :)

Rozpakowujemy więc plik jaki pobraliśmy ze strony producenta ESP8266 i w rozpakowanym archiwum przechodzimy do folderu "bin". Tutaj znajdują się już gotowe paczki z plikami firmware, które należy zainstalować w ESP. Standardowo gdy pobieramy plik z internetu, znajduje on się w folderze "Pobrane rzeczy" i do tego też folderu archiwum zostanie rozpakowane. Z racji że "esptool.py" wymaga podania dokładnej ścieżki dostępu do każdego instalowanego pliku, uprościłem sobie to w ten sposób że interesujące mnie pliki *.bin przeniosłem z folderu "bin" oraz "bin/at" bezpośrednio do folderu "Pobrane rzeczy", dzięki czemu jest mniej pisania w terminalu :).

Pliki które przeniosłem i które trzeba wgrać do ESP to: boot_v1.5.bin, user1.1024.new.2.bin, esp_init_data_default.bin, blank.bin. Uaktualniamy firmware poleceniem:

sudo python esptool.py --baud 115200 --port /dev/tty.usbserial-A50285BI write_flash -fm dio 0x00000 ~/Downloads/boot_v1.5.bin 0x01000 ~/Downloads/user1.1024.new.2.bin 0x7C000 ~/Downloads/esp_init_data_default.bin 0x7E000 ~/Downloads/blank.bin

Krótkie objaśnienie powyższej składni: --baud - tu wpisujemy prędkość z jaką chcemy się komunikować z ESP, w razie problemów można wpisać mniejszą wartość; --port - tutaj trzeba podać lokalizację wraz z nazwą portu do konwertera którego używamy do łączenia się z ESP. Jak nie pamiętamy jaka jest dokładna nazwa portu, można to sprawdzić poleceniem:

ls /dev/tty.*

u mnie ścieżka do portu wygląda tak: /dev/tty.usbserial-A50285BI i taką też podałem po argumencie --port. Następnie jest argument "write_flash -fm dio", tu nic nie zmieniamy. Jak widać, na kolejnych pozycjach w linii poleceń są wpisane ścieżki dostępu do każdego z plików jaki wgrywamy do ESP. Wartości HEX jakie znajdują się przed każdą ścieżką, są adresami w pamięci układu pod którymi mają zostać zapisane wskazane pliki. W tym przypadku żadnego z tych adresów nie zmieniamy, jedynie zmieniamy ścieżki dostępu do plików jeśli masz je w innej lokalizacji niż ja. Po wprowadzeniu wymaganych zmian w powyższym poleceniu, naciskamy Enter. Nastąpi uaktualnienie firmware'u w układzie ESP. Po zakończonym wgrywaniu plików do układu w terminalu pojawi się komunikat "Leaving..." a następnie linia poleceń. Wyłączamy zasilanie układu, odłączamy pin GPIO0 od masy.

CoolTerm1

Uruchamiamy program CoolTerm, włączamy zasilanie modułu z ESP i nawiązujemy połączenie z układem ESP8266 mając ustawioną prędkość komunikacji na 115200. Następnie  komendą

AT

upewniamy się czy komunikacja przebiega poprawnie. Jeśli tak, to poleceniem

AT+GMR

sprawdzamy wersję zainstalowanego oprogramowania w ESP. O ile wszystko podczas uaktualniania firmware'u przebiegło poprawnie, w oknie CoolTerm zostaną wypisane wersje poszczególnych komponentów składających się na firmware.

Oficjalny firmware jest ciągle rozwijany i dodawane są coraz to nowe funkcjonalności, jednak posiada on też pewne ograniczenia. Na przykład jednym z takich ograniczeń, jest na chwilę obecną nie możność automatycznego, po włączeniu układu,  utworzenia połączenia po protokole UDP lub TCP. Część parametrów można zmienić i zostaną one zapisane w pamięci flash układu a co za tym idzie przy każdym restarcie modułu będą wczytywane, jednak aby utworzyć serwer trzeba już wprowadzić polecenie ręcznie. Oczywiście możemy połączyć moduł ESP z  mikrokontrolerem AVR i za pomocą protokołu UART wysłać polecenie utworzenia serwera, jednak w ten sposób tracimy trochę z funkcjonalności samego układu ESP, który przecież posiada piny GPIO którymi można zarządzać bez potrzeby podłączania dodatkowych peryferiów. Na szczęście oprócz oficjalnego oprogramowania, można w internecie znaleźć alternatywne wersje firmware'u do ESP8266. Oprócz wielu różnych autorskich rozwiązań użytkowników układu ESP8266, jest jedno które daje dość spore możliwości nie tylko konfiguracyjne układu ale i wykorzystania samego modułu z układem ESP8266 jako niezależnego urządzenia z którym można się komunikować poprzez internet. Mowa tu o NodeMCU. Link prowadzi do strony z opisem i przykładami wykorzystania tego firmware'u. Po lewej stronie widać spis bibliotek jakie mamy do dyspozycji po zainstalowaniu NodeMCU w ESP8266. Wybranie którejś z bibliotek na stronie, sprawi że ukaże się lista poleceń z jakich można skorzystać przy programowaniu układu ESP8266. Do pisania skryptów używanych przez ESP wykorzystywany jest język LUA a biblioteki korzystają z odmiany eLUA. Dlatego też należy zapoznać się ze składnią języka LUA oraz głównymi poleceniami, jak i zasadami pisania programów w LUA chcąc pisać skrypty dla ESP. Na tej stronie można znaleźć parę przykładowych skryptów napisanych z wykorzystaniem języka LUA i wspomnianych wcześniej bibliotek.

Aby więc skorzystać z dobrodziejstwa środowiska NodeMCU musimy zmienić firmware w ESP8266. Znajdziemy go pod tym linkiem. Pobieramy plik "nodemcu_integer....bin". Oczywiście cały czas korzystamy z konta z uprawnieniami administratora. Do modułu z układem ESP8266 podłączamy konwerter, pamiętając o właściwym zasilaniu. Pin GPIO0 modułu zwieramy do masy i załączamy zasilanie modułu ESP.

Po pobraniu pliku z firmware na dysk, uruchamiamy Terminal, następnie zmieniamy folder źródłowy w Terminalu na folder "esptool" i jeśli mamy skompilowany już plik "esptool.py", wpisujemy polecenie:

sudo python esptool.py --baud 115200 --port /dev/tty.usbserial-A50285BI write_flash -fm dio 0x00000 ~/Downloads/nodemcu_integer_0.9.6-dev_20150704.bin

pamiętać należy o wpisaniu poprawnej ścieżki dostępu do portu obsługującego konwerter, jak i do pliku z firmware. Pojawienie się nowej linii w terminalu z możliwością wprowadzania poleceń, oznacza że wgrywanie firmware'u do ESP zostało zakończone. Odłączamy zasilanie modułu z ESP i rozłączamy pin GPIO0 od masy.

CoolTerm2

Uruchamiamy program CoolTerm, ustawiamy prędkość połączenia na 9600 i naciskamy ikonę "Connect". Podłączamy zasilanie do modułu z układem ESP8266. W oknie programu powinien pojawić się komunikat o zainstalowanej wersji NodeMCU. Może się jednak zdarzyć że układ się nie zgłosi w ten sposób. Chcąc więc sprawdzić poprawność komunikacji, możemy wpisać polecenia jakie udostępniają nam biblioteki NodeMCU. Pamiętać tylko trzeba aby każde polecenie poprzedzać znakiem = . Jeśli moduł odpowiada, oznacza to że zmiana firmware'u przebiegła prawidłowo. Od tej pory mamy dostęp do bibliotek których można użyć przy pisaniu skryptów, a dzięki którym będzie możliwe nawiązywanie połączeń poprzez np. WIFI, UDP, TCP, OneWire, I2C. Do dyspozycji mamy również biblioteki do obsługi ADC, PWM, DS18B20 a nawet do tzw. magic ledów, czyli diod z wbudowanym układem WS2812, oraz wiele innych.

Do pisania skryptów nie będziemy korzystali z programu CoolTerm. Programem który nam ułatwi pisanie i uprości proces wgrywania skryptów do ESP, jest program ESPlorer. Program ten jest tworzony przez fana układu ESP8266, a z racji że pisany jest w Javie bez problemu można go uruchomić na Mac OS X. Można też przy jego użyciu wydawać polecenia AT, o ile podłączony moduł takowe obsługuje. Na chwilę obecną jednak, program ma pod przyciskami zaimplementowane komendy AT w wersji 0.20, tak więc jeśli chcielibyśmy użyć nowszych komend to trzeba je i tak wpisywać w linii poleceń.

W następnej części poradnika zajmiemy się nawiązywaniem połączenia z ESP8266 po protokole TCP i UDP, czyli tym samym co opisałem w drugiej części. Różnica tylko będzie taka, że teraz moduł po każdym restarcie będzie automatycznie takie połączenie tworzył. Umożliwi nam to między innymi możliwość sterowania pinami GPIO modułu bez korzystania z dodatkowych peryferiów, tylko komendami wysyłanymi bezpośrednio do ESP przez internet.

Komentarze   

#7 Guest 2017-09-18 13:20
Ten komentarz został usunięty przez Administratora
#6 Guest 2017-09-13 09:16
Ten komentarz został usunięty przez Administratora
#5 Super User 2017-06-04 12:18
Cieszę się że przydały Ci się te poradniki :-) Fajnie się dowiedzieć że w ogóle ktoś to czyta :-)
Cytować
#4 n 2017-06-02 22:39
Fajnie, że Ci się chce. Fajnie że jest i dzięki Ci za to :) Szybka szkoła jak dla mnie i bardzo pomocne :) Dzięki!
Cytować
#3 Guest 2017-04-21 20:28
Ten komentarz został usunięty przez Administratora
#2 Guest 2017-04-21 12:38
Ten komentarz został usunięty przez Administratora
#1 Guest 2017-04-13 15:23
Ten komentarz został usunięty przez Administratora

Dodaj komentarz

Kod antyspamowy
Odśwież

026451
TodayToday16
This MonthThis Month1376
All DaysAll Days26451
Guests 17