ESP8266 – pierwsze kroki

Ostatnio pisałem o ESP8266, dzisiaj pora rozszerzyć temat. Wiemy już jak podłączyć układ do komputera oraz jak wgrać firmware NodeMCU. Nasz ESP łączy się też automatycznie z domową siecią wifi. Pora zabrać się za programowie w Lua. Na razie trochę dla testu, trochę dla zabawy, trochę żeby poznać możliwości samodzielnej pracy układu, jak i jego stabilność.

Połączmy się więc z ESP8266 przez port szeregowy, jak dotychczas. Ostatnio robiłem to z użyciem oprogramowania Arduino, ale na dłuższą metę to mało wygodne. Pod Linuksem dużo prościej użyć screena, np. wydając komendę screen /dev/ttyUSB0 9600. Pod windows można użyć dowolnego teminala, jak choćby putty, który poza tym, że jest klientem ssh, to może działać jako terminal. Po połączeniu otrzymujemy znak zachęty interpretera Lua/NodeMCU.

Możemy więc przykładowo poprosić o podanie aktualnego adresu IP, którym posługuje się układ przy połączeniu wifi:

> print(wifi.sta.getip())
192.168.7.7

Można też zrestartować układ:

node.restart()

Działa jak trzeba. Tylko skoro już mamy połączeniu wifi i będziemy dużo eksperymentować z programowaniem, to dobrze byłoby wykorzystać ten rodzaj połączenia, zamiast ciągle nosić ESP i FTDI na kablu. Wszak to mało wygodne i jest formą proszenia się o zwarcie czy inne problemy. Do pierwszych zabaw dobrze więc by było, żeby przez wifi dało się połączyć z układem za pośrednictwem telnetu i wydawać polecenia jak przez połączenie szeregowe. Na stronie NodeMCU jest nawet stosowny przykład:

s=net.createServer(net.TCP,180) 
s:listen(2323,function(c) 
    function s_output(str) 
      if(c~=nil) 
        then c:send(str) 
      end 
    end 
    node.output(s_output, 0)   
    c:on("receive",function(c,l) 
      node.input(l)           
    end) 
    c:on("disconnection",function(c) 
      node.output(nil)        
    end) 
    print("Welcome to NodeMcu world.")
end)

Co robi program? Przede wszystkim tworzy serwer (zmienna s) i zaczyna nasłuchiwać na porcie 2323/tcp. Przy połączeniu przypina wyjście interpretera Lua do gniazda (mamy więc wyjście przez nasze połączenie, nie przez port szeregowy), a linie tekstu które pojawią się przez połączenie są przekierowywane do wejścia interpretera. Po rozłączeniu wyjście jest wyrejestrowywane i wraca do portu szeregowego. Mamy więc sytuację, że po połączeniu dostajemy komunikat powitalny i dalej pracujemy jak przez połączenie szeregowe.

Można oczywiście ten program przepisać przy połączeniu terminalowym, ale po restarcie nie zostanie z niego ślad. Można też go umieścić w pliku init.lua, który jest automatycznie wykonywany po starcie systemu. Oczywiście ta druga opcja jest praktyczniejsza. Jak to zrobić? Najprościej wydając komendy Lua do otwarcia pliku i zapisu kolejnych linii, ale na dłuższą metę to niewygodne, szczególnie gdy mamy w perspektywie modyfikowanie tego i innych plików oraz uruchamianie większej liczby układów.

Sprawę znacznie upraszcze użycie programu w języku python nodemcu-uploader. Ściągamy więc uploader, tworzymy plik init.lua z powyższym przykładem kodu i wysyłamy do ESP8266:

$ ../nodemcu-uploader/nodemcu-uploader.py upload init.lua
Preparing esp for transfer.
Transfering init.lua
All done!

Szybkie, proste i skuteczne. Teraz już można odłączyć układ od komputera i podłączyć do niezależnego zasilania (na razie choćby do ładowarki od telefonu przez interfejs FTDI, jak do komputera). W dalszej kolejności można ekperymenty prowadzić przez telnet (na port 2323).

Sprawdźmy więc jeszcze kilka poleceń zaczerpniętych z API NodeMCU. Na początek sprawdźmy adres MAC:

> print(wifi.sta.getmac())
18-FE-34-9D-02-F5

Aktualny zegar (w sekundach):

> print(tmr.time())
639453607

Ustawmy zegar nr 0 (dostępne 0-6) aby po sekundzie napisał „jest”:

> tmr.alarm(0, 1000, 0, function() print("jest") end )
jest

Albo, żeby pisał co sekundę:

> tmr.alarm(0, 1000, 1, function() print("jest") end )
jestjestjestjest

I przerwijmy to wypisywanie:

> tmr.stop(0)

I na początek tyle wystarczy. Ciekawiej będzie po podłączeniu czegokolwiek do układu (np. termometru). Tym jednak zajmiemy się już następnym razem.

Advertisements

One Response to ESP8266 – pierwsze kroki

  1. Właśnie przymierzam się do zakupu kilku sztuk żeby zrobić sobie sensory temperatury i natknąłem się na IDE do obsługi ESP8266 – http://esp8266.ru/esplorer/ – nie wiem na ile jest ono przydatne ale mam nadzieję sprawdzić to już niedługo 🙂

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Log Out / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Log Out / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Log Out / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Log Out / Zmień )

Connecting to %s

%d blogerów lubi to: