Teraz jest czwartek, 24 pa┼║dziernika 2019, 05:12

Strefa czasowa: UTC + 2




Utw├│rz nowy w─ůtek Odpowiedz w w─ůtku
Autor Wiadomo┼Ť─ç
 Tytu┼é: Arduino w astronomii - Modu┼é WiFi ESP-01S
PostNapisane: pi─ůtek, 28 czerwca 2019, 16:45 
Offline
Ranga: [3]
Avatar u┼╝ytkownika

Do┼é─ůczy┼é(a): niedziela, 28 sierpnia 2011, 19:05
Posty: 336
Lokalizacja: Świętochłowice
Gdyby tak można było...

...pod┼é─ůczy─ç do Internetu zbudowane przez siebie urz─ůdzenie oparte o Arduino? Pobra─ç aktualny czas z Internetu,
prognoz─Ö pogody, godzin─Ö przelotu Mi─Ödzynarodowej Stacji Kosmicznej ISS. Wy┼Ťwietli─ç informacje na wy┼Ťwietlaczu,
ewentualnie po┼é─ůczy─ç si─Ö z naszym urz─ůdzeniem i spojrze─ç na parametry przez przegl─ůdark─Ö internetow─ů....

Mo┼╝na to zrobi─ç!

Bez problemu pobierzemy dane z API serwisu pogodowego np. OpenWeatherMap
Nie b─Ödzie problemu z pobraniem aktualnego czasu by nasze urz─ůdzenie by┼éo zsynchronizowane.
Strona WWW do obs┼éugi naszego urz─ůdzenia to pestka.
Dane przelot├│w ISS nad nasz─ů lokalizacj─ů z serwisu no2yo.com to chwila.
Co powiesz na NASA Image of the Day? - do zrobienia

Mam nadziej─Ö, ┼╝e ju┼╝ widzicie mo┼╝liwo┼Ťci jakie kryj─ů si─Ö w ma┼éym module WiFi ESP-01S - pe┼éna komunikacja ze ┼Ťwiatem jest jak na d┼éoni!

Gasimy eufori─Ö - nic nie ma za darmo

Musz─Ö zgasi─ç. Nie ma nic za darmo i nie mam tu absolutnie na my┼Ťli koszt├│w poniesionych z tytu┼éu zakupu niezb─Ödnych modu┼é├│w czy drobnych element├│w elektronicznych.
Podejrzewam, że narobiłem małym wstępem duży apetyt. Mam nadzieję, że pobudziłem wyobraźnię na jeszcze więcej "Gdyby tak można było..."

Jak już wspomniałem - nie ma nic za darmo. Będzie trzeba poznać co to jest format danych JSON, język programowania Micropython (odmiana Pythona dla elektroniki - w uproszczeniu)
Nie jest to trudne, cho─ç przyznam, ┼╝e mnie na pocz─ůtku przerazi┼éo, ale jest do opanowania i nie jest to tak skomplikowane jak si─Ö wydawa┼éo.

Modu┼é WiFi ESP-01S male┼ästwo o du┼╝ych mo┼╝liwo┼Ťciach

Moduł ESP-01S to najtańsza wersja całej rodziny modułów WiFi opartych o układ ESP8266.

Specyfikacja

  • 2 porty GPIO, oba z PWM
  • Procesor RISC 80MHz (160MHz) Tensilica L106.
  • Pami─Ö─ç FLASH - 1MB
  • WiFi 802.11 b/g/n
  • Wbudowana antena na PCB
  • Obs┼éuga protoko┼é├│w UART, SPI, I2C
  • Logika 3.3V
  • Napi─Öcie zasilanie 3.3V - przekroczenie tej warto┼Ťci to niemal pewne uszkodzenie modu┼éu!
  • Temperatura pracy -40┬░~125┬░

Specyfikacja specyfikacj─ů, ale praktyka znacznie ciekawsza. Kr├│tko m├│wi─ůc mamy mo┼╝liwo┼Ť─ç pod┼é─ůczenia si─Ö za pomoc─ů modu┼éu do sieci Internet.
Modu┼é bez problemu mo┼╝e komunikowa─ç si─Ö za pomoc─ů UART z dowolnym urz─ůdzeniem z portem COM czy te┼╝ z Arduino.
Moduł można wyposażyć w odpowiedni dla nas firmware. Fabryczny umożliwia komunikację z modułem z wykorzystaniem komend AT stosowanych też w modemach.
Istnieje te┼╝ kilka rozwi─ůza┼ä firmware z ciekawymi funkcjonalno┼Ťciami jak np ESPEasy (polecam, zw┼éaszcza do zastosowa┼ä automatyki domowej)
Jest te┼╝ mo┼╝liwo┼Ť─ç wgrania interpretera j─Özyka MicroPython co daje nam mo┼╝liwo┼Ť─ç pisania w┼éasnych skrypt├│w.
Pocz─ůwszy od po┼é─ůczenia z lokaln─ů sieci─ů WiFi, po przez pobieranie danych z internetu np. we wspomnianym formacie JSON, ko┼äcz─ůc na wys┼éaniu ich do Arduino.
Zdecydowanie polecam MicroPython'a, to ten j─Özyk daje nam tak szerokie mo┼╝liwo┼Ťci i pe┼énie swobody w realizacji pomys┼é├│w.

Praktyka. Niezb─Ödnik do programowania ESP-01S

Skupi─Ö si─Ö na konkretnych programach, z kt├│rych korzystam oraz na sprz─Öcie kt├│ry posiadam.
Wielokrotnie używałem tych metod programowania (wgrywania firmware) i mam je sprawdzone.
Oczywi┼Ťcie s─ů inne sposoby , nie mniej dobre, jednak chce skupi─ç si─Ö na tych rozwi─ůzaniach, kt├│re
sam sprawdzi┼éem i wiem, ┼╝e daj─ů zamierzony efekt.

Potrzebne elementy i oprogramowanie:

  • Modu┼é WiFi ESP-01S
  • Programator - dedykowany konwerter dla ESP-01S
  • Python 3.7.x (Windows, Linux)
  • uPyCraft IDE - proste narz─Ödzie do pisania i uruchamiania skrypt├│w
  • esptool.py - narz─Ödzie do wgrywania firmware do ESP

Opis instalacji Python 3.7.x i uPyCraft - instrukcja w j─Özyku angielskim
Instalacja Pythona jest niezb─Ödna do uruchomienia uPyCraft oraz do uruchomienia esptool.py

Programator - konwerter UART

Programator, który wykorzystuję jest chyba jednym z najtańszych jakie można kupić. Tak na prawdę jest to tylko konwerter UART, który zapewnia prawidłowe zasilanie układu ESP-01S.
Jednocze┼Ťnie umo┼╝liwia komunikacj─Ö z nim (konwerter jest widoczny w systemie jako port COM). Konwerter mo┼╝e s┼éu┼╝y─ç jako programator, ale wymaga drobnej modyfikacji i bez lutownicy
nie ob─Ödzie si─Ö (odrobina precyzji te┼╝ mo┼╝e si─Ö przyda─ç)

Za┼é─ůcznik:
Komentarz: Programator - Konwerter UART
Programator_UART.jpg
Programator_UART.jpg [ 64.64 KiB | Przegl─ůdane 446 razy ]


Modyfikacja umo┼╝liwi nam programowanie za pomoc─ů tego konwertera. Polega ona na dolutowaniu do pin├│w konwertera goldpin├│w tak by mo┼╝na by┼éo za pomoc─ů zworki wprowadzi─ç modu┼é ESP-01S
w tryb programowania. Wybra┼éem to rozwi─ůzanie ze wzgl─Ödu na prostot─Ö i szybko┼Ť─ç dokonania takiej modyfikacji. Mo┼╝na te┼╝ dolutowa─ç dwa przewody zako┼äczone goldpinami. W moim przypdaku
wykorzysta┼éem goldpiny k─ůtowe, kt├│re wyprostowa┼éem i jeden z nich wygi─ů┼éem w taki spos├│b by pasowa┼é do p┼éytki.

Za┼é─ůcznik:
Programator_UART_1.jpg
Programator_UART_1.jpg [ 71.37 KiB | Przegl─ůdane 446 razy ]
Za┼é─ůcznik:
Programator_UART_2.jpg
Programator_UART_2.jpg [ 78.74 KiB | Przegl─ůdane 446 razy ]
Za┼é─ůcznik:
Programator_UART_3.jpg
Programator_UART_3.jpg [ 86.96 KiB | Przegl─ůdane 446 razy ]


Ostatnie zdj─Öcie my┼Ťl─Ö, ┼╝e dok┼éadnie pokazuje, o kt├│re piny na p┼éytce dok┼éadnie chodzi. Zwarcie n├│┼╝ki ESP-01S oznaczonej jako IO0 (GPIO0) wprowadza uk┼éad w tryb programowania i umo┼╝liwia nam
wgranie firmweare do niego. Taka prosta modyfikacja ma pewn─ů wad─Ö zwi─ůzan─ů z resetowaniem uk┼éadu. Nie mamy przycisku RESET. Jednak nie jest to a┼╝ tak powa┼╝na wada. Wspomn─Ö o tym jeszcze
przy omawianiu samego programowania uk┼éadu. Dobrze, mamy zmodyfikowany konwerter, mo┼╝emy przej┼Ť─ç teraz do wgrania firmwear'u do naszego ESP-01S.

Narz─Ödzie esptool.py - Pobranie, ustanowienie parametr├│w po┼é─ůczenia, podstawowe komendy, wgrywanie firmweare'u

Narz─Ödzie esptool.py jest skryptem napisanym w Pythonie s┼éu┼╝─ůcym do wgrywania do uk┼éad├│w opartych na ESP8266 oprogramowania. Umo┼╝liwia r├│wnie┼╝ kasowanie zawarto┼Ťci pami─Öci FLASH,
zrzut zawarto┼Ťci pami─Öci FLASH do pliku, identyfikacj─Ö uk┼éadu jaki posiadamy i kilka innych przydatnych polece┼ä. Zak┼éadam, ┼╝e interpreter Python 3.7.x jest ju┼╝ zainstalowany, bez niego nie
zadziała nam esptool.py

Link do pobrania: esptool.py

Narz─Ödzie jest dost─Öpne na GitHub'ie. Klikamy w zielony przycisk Clone or download i wybieramy opcj─Ö Download ZIP. ┼Üci─ůgamy plik ZIP, nast─Öpnie nale┼╝y rozpakowa─ç plik w wybrane
miejsce na dysku swojego komputera. Po wej┼Ťciu z linii komend do katalogu gdzie mamy esptool.py warto sprawdzi─ç czy wszystko jest okej wydaj─ůc polecenie:
Kod:
esptool.py help

je┼Ťli nie zadzia┼éa, pojawi si─Ö b┼é─ůd, mo┼╝na sprawdzi─ç jeszcze w ten spos├│b
Kod:
python esptool.py help

Efektem tego polecenia powinno by─ç wy┼Ťwietlenie pomocy dla esptool.py
Kod:
usage: esptool [-h] [--chip {auto,esp8266,esp32}] [--port PORT] [--baud BAUD]
               [--before {default_reset,no_reset,no_reset_no_sync}]
               [--after {hard_reset,soft_reset,no_reset}] [--no-stub]
               [--trace] [--override-vddsdio [{1.8V,1.9V,OFF}]]...............

Je┼Ťli tak jest to ┼Ťwietnie mo┼╝emy wykona─ç kolejny krok. Przetestujemy esptool.py w praktyce. Pobierzemy informacje o module ESP i wyczy┼Ťcimy pami─Ö─ç FLASH z niepotrzebnych rzeczy.

Wpinamy modu┼é ESP-01S do gniazda w programatorze - konwerterze jak na zdj─Öciu. Na p┼éytce powinna by─ç te┼╝ strza┼éka wskazuj─ůca w kt├│r─ů stron─Ö ma by─ç zorientowana p┼éytka ESP.
Jest to bardzo ważne! odwrotne wpięcie ESP może spowodować uszkodzenie konwertera i/lub modułu ESP!

Za┼é─ůcznik:
Komentarz: Prawidłowa pozycja modułu ESP-01S w konwerterze UART
Programator_UART_ESP01S.jpg
Programator_UART_ESP01S.jpg [ 67.21 KiB | Przegl─ůdane 446 razy ]


Parametry transmisji

Modu┼é WiFi w konwerterze umieszczony prawid┼éowo, zworka za┼éo┼╝ona (IO0 pod┼é─ůczone do masy), konwerter wpi─Öty do portu USB, nadszed┼é czas na pobranie informacji o uk┼éadzie.
W moim przypadku esptool.py sam bez problemu rozpoznaje, na którym porcie COM jest moduł ESP, jednak może być tak, że nie rozpozna wówczas w poleceniu warto wskazać
na kt├│rym porcie COM ma by─ç ustanowiona komunikacja odpowiednim parametrem:

Kod:
esptool.py --port COM8 polecenie_esptool

W moim przypadku jest to port COM8. w poleceniach nie będę używał tego parametru, ale pamiętajcie o tym parametrze.

Mo┼╝e jeszcze przyda─ç si─Ö parametr ustawiaj─ůcy pr─Ödko┼Ť─ç transmisji:
Kod:
esptool.py --port COM8 --baud 9600 polecenie_esptoo

W tym przypadku parametr --baud wskazuje na pr─Ödko┼Ť─ç 9600. Mo┼╝e zdarzy─ç si─Ö te┼╝ tak, ┼╝e warto┼Ť─ç pr─Ödko┼Ťci transmisji dla danego modu┼éu ESP b─Ödzie inna. Warto w├│wczas poeksperymentowa─ç.


Podstawowe komendy esptool.py

Polecenie: chip_id - wy┼Ťwietla informacje na temat naszego uk┼éadu ESP
Kod:
esptool.py chip_id

Efektem wydania tego polecenia b─Ödzie:
Kod:
esptool.py v2.6
Found 2 serial ports
Serial port COM8
Connecting....
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
MAC: 5c:cf:7f:fa:bf:4b
Uploading stub...
Running stub...
Stub running...
Chip ID: 0x00fabf4b
Hard resetting via RTS pin...


Polecenie: flash_id - wy┼Ťwietla informacje na temat naszego uk┼éadu ESP
Kod:
esptool.py flash_id

Efektem wydania tego polecenia b─Ödzie:
Kod:
esptool.py v2.6
Serial port COM8
Connecting....
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
MAC: 5c:cf:7f:fa:bf:4b
Uploading stub...
Running stub...
Stub running...
Manufacturer: e0
Device: 4014
Detected flash size: 1MB
Hard resetting via RTS pin...

Jak wida─ç uzyskali┼Ťmy informacj─Ö, ┼╝e modu┼é ma rozmiar pami─Öci FLASH = 1MB

Problem przycisku RESET

Wspomniałem o braku przycisku RESET w zmodyfikowanym konwerterze dla ESP. Próba wydania kolejnego polecenia kończy się w moim przypadku takim wynikiem:
Kod:
esptool.py v2.6
Serial port COM8
Connecting........____

Niestety procedura jest ręczna : wyjmujemy konwerter z portu USB, wkładamy konwerter do portu USB ponownie, wydajemy polecenie esptool.py
Jest to niedogodno┼Ť─ç, ale nieuci─ů┼╝liwa skoro tak na prawd─Ö potrzebujemy wgra─ç tylko firmware. W┼éa┼Ťnie! Frimware trzeba wgra─ç!

Procedura wgrywania firmware do modułu WiFi ESP-01S

Naszym firmware'em b─Ödzie MicroPython. Teraz bardo wa┼╝na informacja.

Wykorzystamy firmware dla uk┼éad├│w ESP8266 z pami─Öci─ů flash wi─Öksz─ů lub r├│wn─ů 1MB.
Dlatego pamiętać należy, że moduł ESP-01 ma 512kB natomiast ESP-01S ma 1MB.


To do dzie┼éa, pod┼é─ůcz konwerter z ESP do komputera. Odpalamy lini─Ö komend i dzia┼éamy z narz─Ödziem esptool.py

1. Kasowanie pami─Öci FLASH

Wydajemy polecenie:
Kod:
esptool.py erase_flash

Po chwili pami─Ö─ç flash b─Ödzie skasowana i zobaczymy tak─ů informacj─Ö:
Kod:
esptool.py v2.6
Serial port COM8
Connecting....
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
MAC: 5c:cf:7f:fa:bf:4b
Uploading stub...
Running stub...
Stub running...
Erasing flash (this may take a while)...
Chip erase completed successfully in 3.7s
Hard resetting via RTS pin...

Pamięć FLASH skasowana - wyjmujemy konwerter z portu USB odkładamy na bok i idziemy do punktu numer 2.

2. Pobranie pliku bin ze strony https://micropython.org

Wchodzimy na stron─Ö https://micropython.org/download#esp8266 i pobieramy ostatni dost─Öpny plik bin znajduj─ůcy si─Ö w sekcji Firmware for ESP8266 boards.

Ostatni dost─Öpny w czasie tworzenia postu plik: esp8266-20190529-v1.11.bin

Najlepiej zapisa─ç ten plik w miejscu gdzie znajduje si─Ö te┼╝ esptool.py, u┼éatwi to znacznie wpisywanie nazw plik├│w bez konieczno┼Ťci dodawania pe┼énych ┼Ťcie┼╝ek.

3. Wgrywamy firmware do ESP

Pod┼é─ůcz konwerter z ESP do poru USB. Zak┼éadam, ┼╝e plik pobrany z punktu 2 znajduje si─Ö w tym samym miejscu gdzie esptool.py.

Wydajemy polecenie wgrania firmware do ESP:
Kod:
esptool.py write_flash --flash_size=detect 0 esp8266-20190529-v1.11.bin

W efekcie ko┼äcowym je┼Ťli posz┼éo wszystko zgodnie z planem powinni┼Ťmy uzyska─ç taki wynik:
Kod:
esptool.py v2.6
Found 2 serial ports
Serial port COM8
Connecting....
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
MAC: 5c:cf:7f:fa:bf:4b
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Auto-detected Flash size: 1MB
Flash params set to 0x0020
Compressed 617880 bytes to 402086...
Wrote 617880 bytes (402086 compressed) at 0x00000000 in 35.6 seconds (effective 138.7 kbit/s)...
Hash of data verified.

Je┼╝eli tak jest to ┼Ťwietnie! Mamy wgrany firmware, nasz ESP-01S ma wgrany interpreter MicroPython'a!
Wyjmujemy konwerter z portu USB komputera i odkładamy na bok.

4. Sprawdzenie działania MicroPython'a

Zdejmujemy zwork─Ö z konwertera. Teraz pin oznaczony IO0 (GPIO0) nie jest pod┼é─ůczony do masy (GND) uk┼éadu, ESP-01S b─Ödzie pracowa┼é w normalnym trybie.
Wkładamy konwerter do portu USB i uruchamiamy program uPyCraft.

Z menu Tools wybieramy Serial i wskazujemy na kt├│rym porcie COM widoczny jest nasz konwerter z ESP.
Za┼é─ůcznik:
uPyCraft_1.png
uPyCraft_1.png [ 10.32 KiB | Przegl─ůdane 446 razy ]

Jeżeli po wybraniu portu zobaczysz charakterystyczny znacznik przy katalogu device i w rozwinięciu plik boot.py oznacza to, że wszystko przebiegło zgodnie z planem:
Za┼é─ůcznik:
uPyCraft_2.png
uPyCraft_2.png [ 7.61 KiB | Przegl─ůdane 446 razy ]


Modu┼é ESP-01S jest gotowy do tworzenia skrypt├│w realizuj─ůcych nasz "Gdyby tak mo┼╝na by┼éo..."

Podsumowanie

Mam nadziej─Ö, ┼╝e nie przerazi┼é was pierwszy post w─ůtku. Jest bardzo techniczny ale taki musi by─ç, jest to absolutnie konieczne by przygotowa─ç sobie sprz─Öt do dalszych zabaw z Arduino i realizacji
pomys┼é├│w zwi─ůzanych zastosowaniem Arduino w Astronomii. Tak przygotowany modu┼é jest gotowy do po┼é─ůczenia si─Ö z Internetem i pobieraniem z niego danych, obr├│bk─ů i komunikacj─ů z Arduino.
Tradycyjnie s┼éu┼╝─Ö pomoc─ů gdyby pojawi┼éy si─Ö problemy czy pytania. Zdaj─Ö sobie spraw─Ö, ┼╝e w niekt├│rych miejscach mo┼╝e by─ç co┼Ť nie jasne. Tym bardziej prosz─Ö o pytania.

Dodam od siebie, że ostatnio siedziałem nad tematem pobierania danych na temat położenia ISS z serwisu no2yo.com i działa to fajnie. Dlatego też postanowiłem popełnić ten wpis w celu
zaciekawienia większego grona osób "Gdyby tak można było..." :)



Prezentowane rozwi─ůzanie nie s─ů jedyne i s┼éuszne. Spos├│b tworzenia urz─ůdze┼ä oraz oprogramowania nie koniecznie musi by─ç ca┼ékowicie zgodne ze sztuk─ů. Nie daj─Ö gwarancji na prezentowane rozwi─ůzania i nie bior─Ö odpowiedzialno┼Ťci za szkody jakie mog─ů wynikn─ů─ç z tego tytu┼éu. Wszystkie kody ┼║r├│d┼éowe program├│w, przyk┼éady schemat├│w mo┼╝na dowolnie wykorzystywa─ç i modyfikowa─ç z zachowaniem informacji o ┼║r├│dle pochodzenia i autorze. Obowi─ůzuje licencja MIT dla oprogramowania i Open Hardware dla urz─ůdze┼ä.

_________________
SK Dobson 8", Delta Optical Voyager II 12x50

Projekty "Zr├│b to sam"


G├│ra
 Zobacz profil  
 

Wy┼Ťwietl posty nie starsze ni┼╝:  Sortuj wg  
Utw├│rz nowy w─ůtek Odpowiedz w w─ůtku

Strefa czasowa: UTC + 2


Kto przegl─ůda forum

U┼╝ytkownicy przegl─ůdaj─ůcy ten dzia┼é: Brak zidentyfikowanych u┼╝ytkownik├│w i 2 go┼Ťci


Nie mo┼╝esz rozpoczyna─ç nowych w─ůtk├│w
Nie mo┼╝esz odpowiada─ç w w─ůtkach
Nie mo┼╝esz edytowa─ç swoich post├│w
Nie mo┼╝esz usuwa─ç swoich post├│w
Nie mo┼╝esz dodawa─ç za┼é─ůcznik├│w

Szukaj:
Skocz do:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Przyjazne u┼╝ytkownikom polskie wsparcie phpBB3 - phpBB3.PL