Pro základní funkčnost, zpříjemnění používání webu, analytické účely a v případě udělení souhlasu také pro účely cílení reklamy využíváme soubory cookies. Nastavení vlastních preferencí cookies můžete kdykoli upravit odkazem ve spodní části stránek.

KONTAKTY

MonkeyTech
Ing. Karel Mencl
Dohnalova 552, 411 08 Štětí
tel: 602 133 240
obchod(a)monkeytech.cz

ZBOŽÍ V AKCI

naše cena 390 Kč
skladem

NEJPRODÁVANĚJŠÍ


» Jazyk Lua
Teploměr HOBBY edice - instalace Lua

 

Lua je odlehčený, reflexivní, imperativní a procedurální programovací jazyk navržený jako skriptovací jazyk s rozšiřitelnou sémantikou viz Wikipedie. Implementace vychází z projektu eLua a používá jednoduchý systém souborů SPIFFS. Náš WiFi teploměr je kompatibilní s projektem NodeMCU, proto můžete využít většinu návodů pro tento projekt.

 

Nejprve si stáhněte NodeMCU Flasher a NodeMCU firmware. Pomocí následujícího postupu ho nahrajte do teploměru:

 

Spusťte NodeMCU Flasher a ve druhé záložce „Config“ vyberte uložený soubor s firmware.

 

nodemcu flasher - Config

 

Vraťte se na první záložku „Operation“, vyberte správný sériový port (COM port) a stiskněte Flash.

 

nodemcu-flasher - Operation

 

Po úspěšném nahrání restartujte teploměr.

 

nodemcu-flasher - Finish

 

Pracovat s teploměrem můžete přes sériový terminál. Vhodné je použít některý ze specializovaných programů jako je ESP8266 Lua Loader nebo ESPlorer.

 

Další popis věnujeme programu ESP8266 Lua Loader:

 

lua loader nastavení

 

Nejprve v menu „Settings -> Comm Port Settings“ vyberte správný sériový port.

 

lua loader com

 

Bohužel program ESP8266 Lua Loader má omezení pouze na porty COM1 – COM4. Pokud máte číslo portu vyšší, změňte ho dle tohoto návodu.Následně vyberte v menu „Connect“.

 

lua loader připojení

 

Pro ověření komunikace můžete využít tlačítko v zeleném poli „chipID“, v terminálovém okně se vypíše identifikační číslo chipu.

 

lua loader test

 

Pokud nechceme psát jednotlivé příkazy do terminálu, můžeme skript nahrát jako soubor. Stačí ve žlutém poli stisknout tlačítko „Upload File…“ vybrat soubor s programem a počkat až se nahraje.

 

lua loader upload

 

Následující program demonstruje blikání dvojbarevnou diodou na teploměru:

 

 -- ESP_TME_Example1.lua

BlueLED = 6 -- GPIO12
RedLED = 7  -- GPIO13
Button = 5  -- GPIO14
Jack1 = 2   -- GPIO4
Jack2 = 1   -- GPIO5

gpio.mode(BlueLED,gpio.OUTPUT)
gpio.mode(RedLED,gpio.OUTPUT)
gpio.mode(Button,gpio.INPUT,gpio.PULLUP)

while 1 do
   if gpio.read(Button) == 1 then
      gpio.write(BlueLED, gpio.HIGH)
      tmr.delay(250000)  -- wait 250ms
      gpio.write(BlueLED, gpio.LOW)
      tmr.delay(250000)  -- wait 250ms
   else      gpio.write(RedLED, gpio.HIGH)
      tmr.delay(250000)  -- wait 250ms
      gpio.write(RedLED, gpio.LOW)
      tmr.delay(250000)  -- wait 250ms
   end 
end 

 

Nahraný program spustíme tlačítkem „dofile“. V pravidelných intervalech bliká LED modře a při stisku tlačítka SETUP červeně.

Takto napsaný program sice funguje, ale není to ideálně. V podstatě už s teploměrem nic dalšího neuděláme mimo resetu. Důvodem tohoto příkladu je se z hlediska kódu přiblížit příkladu pro prostředí Arduino. Dále je třeba zdůraznit, že prostředí používá zcela jiné číslování pinů. Například GPIO 12 má číslo 6, GPIO13 se značí 7 atd. Stejný příklad lze v Lua napsat podstatně efektivněji následujícím způsobem:

 

-- ESP_TME_Example1b.lua

BlueLED = 6 -- GPIO12
RedLED = 7  -- GPIO13
Button = 5  -- GPIO14
Jack1 = 2   -- GPIO4
Jack2 = 1   -- GPIO5

gpio.mode(BlueLED,gpio.OUTPUT)
gpio.mode(RedLED,gpio.OUTPUT)
gpio.mode(Button,gpio.INPUT,gpio.PULLUP)

tmr.alarm(0,250,1,function() -- timer id 0, 250ms, 1 = repeat
  if gpio.read(Button) == 1 then
     gpio.write(BlueLED, (gpio.read(BlueLED) + 1) % 2)
     gpio.write(RedLED, 0)
  else
     gpio.write(RedLED, (gpio.read(RedLED) + 1) % 2)
     gpio.write(BlueLED, 0)
  end 
end)

 

Příklad opět spustíme příkazem dofile("ESP_TME_Example1b.lua"). Výhodou je, že program neběží stále, ale pouze při události vyvolané časovačem. Zbývá nám prostor na vykonávání dalšího kódu. Kód ukončíme zastavením časovače příkazem „tmr.stop(0)“ nebo stačí stisknout tlačítko „tmr.stop“ v zelením poli. Pokud chcete, aby se program vykonával automaticky pro restartu teploměru, musíme soubor s programem pojmenovat „init.lua“.

 

 

NodeMCU dokumentace

 

 

Příklady ke stažení: ESP_TME_Example1.zip


NÁZORY A DOTAZY NÁVŠTĚVNÍKŮ