Opis Wyprowadzeń
ESP-01:
NodeMCU V2 (ESP12):
Każdy pin GPIO posiada swój własny numer, który wpisujemy podczas programowania. Te numery to:
nr Pinu | GPIO | nr Pinu | GPIO |
---|---|---|---|
0 [*] | GPIO16 | 7 | GPIO13 |
1 | GPIO5 | 8 | GPIO15 |
2 | GPIO4 | 9 | GPIO3 |
3 | GPIO0 | 10 | GPIO1 |
4 | GPIO2 | 11 | GPIO9 |
5 | GPIO14 | 12 | GPIO10 |
6 | GPIO12 |
*GPIO0 może być tylko wykorzystane jako zwykłe I/O
Język programistyczny Lua
Ze względu na to, że chcemy, aby nasze kursy nie były robione „na jedno kopyto” to kurs o modułach ESP8266 będzie się odbywać w języku programistycznym Lua (ESP8266 można jeszcze programować jak Arduino). Ale tak właściwie czym jest Lua ?
Lua (z j.portugalskiego = księżyc) to multi-platformowy język skryptowy, pierwotnie zaprojektowany dla rozszerzenia funkcjonalności różnych aplikacji, jednak często jest używany jako samodzielny język. Lua wiąże w sobie prostą składnię procedury (podobną do Pascala) z konstrukcjami opisu danych opartymi na tablicach asocjacyjnych i rozszerzalnej semantyce. Język ten zaimplementowany jest jako mała biblioteka języka C, napisana według standardu ANSI C. Celami implementacji są: prostota, wydajność i przenośność kodu.
Tyle wiemy w teorii, a jak to wygląda w praktyce ? Zobaczmy:
Przykład komunikacji po UART:
Wpiszmy do naszego okienka taką funkcję:
1 |
print("Kurs Programowania ESP8266 feriar-lab.pl") |
Następnie klikamy powyżej dyskietkę Save zapisujemy nasz pliki jako init.lua Jest to bardzo ważne, ponieważ tak nazwany plik będzie wykonywany razem ze startem ESP8266. Po zatwierdzeniu zobaczymy na monitorze portu szeregowego, że nasz pliki był wysłyany po kolei linijkami. Po wgraniu programu otrzymujemy taki komunikat:
Jak widać program został wykonany. W porównaniu do Arduino nie musimy definiować komunikacji UART, ustawiać prędkości transmisji itp. Tutaj chciałbym wtrącić ważną rzecz. Jeżeli używacie NodeMCU v2 to może Wam się wyświetlać taki komunikat „Can’t autodetect firmware, because proper answer not received. ” Można go zignorować ponieważ to bug i oprogramowanie jest poprawnie wykrywane. Jeżeli się rozłączymy i połączymy ponownie to już powinno pokazać odpowienią linijkę odpowiedzialną za nasz firmware.
Teraz jak klikniemy Reload po prawej stronie to zostanie odświeżona zawartość układu ESP8266 i powinniśmy otrzymać takie okno:
Zostanie nam wyświetlona lista wgranych plików do modułu oraz ich waga. Ponadto od tego momentu pod przyciskiem Reload będą się wyświetlać wgrane pliki, które będziemy mogli bezpośrednio wykonywać po naciśnięciu ich.
Zapalanie diody
Teraz napiszmy już „trudniejszy program”, który będzie się składać z dwóch linii. Jego zadaniem będzie zapalać diodę. Naszą diodę podłączamy do GPIO0, co koresponduje z pinem 3. Aby zapalić naszą diodę to musimy na pin 3 podać stan niski. Do tego trzeba się przyzwyczaić, ponieważ wszystkie piny GPIO są na stałe podciągnięte do 3,3V. Zatem diodę podłączamy katodą do pinu GPIO0, a anodę przez rezystor do 3,3V.
Teraz potrzebujemy funkcje, przy pomocy których zrealizujemy nasz program:
Konfiguracja pinu
W pierwszej kolejności musimy ustalić jaki pin chcemy wykorzystać i jaką ma pełnić funkcję. Z pomocą przychodzi gpio.mode():
1 2 3 4 5 6 |
gpio.mode(nr_pinu,gpio.funkcja) nr_pinu -podajemy numer pinu korespondujący z danym GPIO funkcja : INPUT -jeżeli ma być wejściem OUTPUT -jeżeli ma być wyjściem |
Stan pinu:
1 2 3 4 5 6 |
gpio.write(nr_pinu,gpio.stan) nr_pinu -podajemy numer pinu korespondujący z danym GPIO stan: LOW - jeżeli ma podać stan niski HIGH- jeżeli ma podać stan wysoki |
Znając te dwie podstawowe funkcje jesteśmy w stanie sklecić nasz program, a wygląda on następująco:
1 2 |
gpio.mode(3,gpio.OUTPUT) --przypisz pin 3 jako wyjście gpio.write(3,gpio.LOW) --ustaw na pinie 3 stan niski |
Efekt jaki uzyskamy powinien być następujący: