Kamis, 20 Oktober 2016

Pemrograman NodeMCU V1.0 Lua

Setelah melakukan flash firmware NodeMCU Lua ataupun board ESP8266 anda telah tersedia firmware NodeMCU Lua, maka langkah berikutnya adalah bagaimana melakukan pemrograman dengan bahasa Lua?

Langkah-langkah:
1. Instalasi aplikasi ESPlorer yang dapat didownload.
2. Ekstraksi file zip hasil download, dan jalankan Esplorer.bat
3. Tampilan IDE dari ESPlorer adalah sebagai berikut:

 
4. Pilih Port, dan klik pada Open, jika berhasil akan tampil prompt:

NodeMCU 0.9.5 build 20150318  powered by Lua 5.1.4
lua: cannot open init.lua
>  

Jika tampilan respon setelah klik pada Open adalah:

Communication with MCU..Waiting answer from ESP - Timeout reached. Command aborted.]

Maka reset board anda, dengan menekan tombol RST yang ada di board.

Catatan:
lua:cannot open init.lua memberitahukan kepada anda bahwa program init.lua tidak ditemukan di root dari sistem file yang mana akan secara otomatis dieksekusi pada rangkaian boot (fitur standard Lua)

5. Lakuklan koding berikut ini untuk setting SSID dan Password:

-- Credentials
SSID = "isikan SSID hotspot anda"
PASSWORD = "isikan password hotspot anda"


 

Klik pada Save dan beri nama sebagai credentials.lua

6. Lakukan koding berikut ini untuk blink led pada board

-- led warna biru pada board
LED_PIN = 4
US_TO_MS = 1000

gpio.mode(LED_PIN, gpio.OUTPUT)

while true do
   gpio.write(LED_PIN, gpio.HIGH)
   tmr.delay(1000 * US_TO_MS)
   gpio.write(LED_PIN, gpio.LOW)
   tmr.delay(1000 * US_TO_MS)
end
 

7. Lakukan koding untuk sebagai init.lua
init.lua merupakan file yang berisi script yang otomatis akan dijalankan pada rangkaian akhir dari proses booting, sehingga hal yang perlu diperhatikan adalah jika ada bugs pada script pada file init.lua dapat menyebabkan sistem anda terjebak pada restart loop yang tidak terbatas sehingga anda perlu melakukan flash kembali firmware dari awal.

Untuk menghindari kondisi terjebak tersebut diatas, anda perlu membuat aplikasi anda pada file "application.lua" yang berisi script utama anda, sedangkan script pada init.lua akan mengaktifkan "application.lua" secara timer alarm 3 detik, yang memungkinkan anda melakukan intervensi untuk segera menghapus file "application.lua" dengan menggunakan perintah file.remove("application.lua") ada tahapan awal reboot jika terdapat bugs.

Pada umumnya init.lua digunakan untuk melakukan koneksi ke hotspot dan mendapatkan IP address, jika berhasil, maka akan mengaktifkan "application.lua" secara timer alarm 3 detik.

-- load credentials, 'SSID' and 'PASSWORD' declared and initialize in there
dofile("credentials.lua")

-- function startup akan diaktifkan secara timer alarm setelah sistem berhasil koneksi ke hotspot dengan
-- jeda waktu 3 detik, sehingga jika terdapat bugs pada application.lua, dapat diintervensi
-- dengan perintah file.remove("application.lua") pada tahapan awal boot

function startup()
    if file.open("init.lua") == nil then
        print("init.lua deleted or renamed")
    else
        print("Running")
        file.close("init.lua")
        -- aplikasi autoexec anda  sekarang adalah 'application.lua'
        if file.open("application.lua") == nil then
            print("application.lua tidak ditemukan, silakan buat application.lua sebagai autoexec.")
        else   
            file.close("application.lua")
            dofile("application.lua")
        end
    end
end

print("Connecting to WiFi access point...")
wifi.setmode(wifi.STATION)
wifi.sta.config(SSID, PASSWORD)
-- wifi.sta.connect() not necessary because config() uses auto-connect=true by default
-- timer alarm untuk per tiap detik sampai tmr.stop(1)
tmr.alarm(1, 1000, 1, function()
    if wifi.sta.getip() == nil then
        print("Waiting for IP address...")
    else
-- berhasil koneksi dan mendapatkan IP Address
        tmr.stop(1)
        print("WiFi connection established, IP address: " .. wifi.sta.getip())
        print("You have 3 seconds to abort")
        print("Waiting...")
-- jalankan fungsi startup setelah 3 detik
        tmr.alarm(0, 3000, 0, startup)
    end
end)

Simpan script diatas sebagai init.lua.

8. Upload credentials.lua, Uploading to ESP file credentialss.lua...Success
9. Upload application.lua, Uploading to ESP file application.lua...Success
10. Upload init.lua, Uploading to ESP file init.lua...Success
11. Reset board anda, dan jika berhasil

NodeMCU 0.9.5 build 20150318  powered by Lua 5.1.4
Connecting to WiFi access point...
> Waiting for IP address...
Waiting for IP address...
Waiting for IP address...
WiFi connection established, IP address: 192.168.1.105
You have 3 seconds to abort
Waiting...
Running

12. Jika terdapat bugs pada "application.lua", maka reset board anda, dan pada saat booting berikan perintah file.remove("application.lua")

 
 
 Lakukan koreksi script application.lua dan upload kembali.

Salam,
Hendra.

Tidak ada komentar:

Posting Komentar