Jumat, 21 Oktober 2016

Control LED_BUILTIN pada board ESP8266 NodeMCU V1.0 melalui web (Lua)

Pada contoh ini akan dibuat aplikasi dimana dapat mengaktifkan dan mematikan LED_BUILTIN pada board NodeMCU V1.0 dengan melakukan pull LOW (on), dan pull HIGH(off) yang dikendalikan melakui web.


Gambar 1. Lokasi Led BuiltIn pada board NodeMCU V1.0

Perangkat yang diperlukan:
1. Board ESP8266 NodeMCU V1.0
2. Micro USB Cable
3. Smartphone yang telah diaktifkan fungsi Hotspot
4. CP2102 (USB to Serial Converter) driver yang telah diinstall
6. ESPlorer IDE

Langkah-langkah:
1. Install CP2102 (USB to Serial Converter) driver jika anda belum melakukannya
2. Install Arduino IDE jika anda belum melakukannya
3. Install board manager ESP8266
4. Aktifkan Hotspot pada smartphone anda, tentukan SSID dan Password
Gambar 2. Pengaktifan Hotspot pada smartphone

5. Lakukan koding sebagai berikut:

nama file: credentials.lua

-- Credentials
SSID = "BOLT!Super4G-899A"
PASSWORD = "********"

nama file: application.lua

-- Aplication
print("Server started")
print("Use this URL to connect: ")
print("http://" .. wifi.sta.getip() .. "/") 

ledPin = 0 -- GPIO 16

gpio.mode(ledPin, gpio.OUTPUT)
gpio.write(ledPin, gpio.HIGH)

value = "Off";

srv=net.createServer(net.TCP)

srv:listen(80,function(conn)
    conn:on("receive", function(client,request)
        print("new client")
        local buf = "";
        print(request)

        -- Return the response
        buf = buf .. "HTTP/1.1 200 OK\n"
        buf = buf .. "Content-Type: text/html\n"
        buf = buf .. "\n"
        buf = buf .. "<!DOCTYPE HTML>\n"
        buf = buf .. "<html>\n"
              
        if(string.find(request,"LED=ON") == nil) then
              gpio.write(ledPin, gpio.HIGH)
              value = "Off"
        else
              gpio.write(ledPin, gpio.LOW)
              value = "On"             
        end

        buf = buf .. "Led pin is now:" .. value .. "\n";

        buf = buf .. "<br><br>\n"
        buf = buf .. "<a href=\"/LED=ON\"\"><button>Turn On </button></a>\n"
        buf = buf .. "<a href=\"/LED=OFF\"\"><button>Turn Off </button></a><br />\n"
        buf = buf .. "</html>\n"

        print(buf)
       
        client:send(buf)
        client:close()
        collectgarbage()
    end)
end)

nama file: init.lua
-- Init
-- 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 " .. SSID)
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(".")
    else

-- berhasil koneksi dan mendapatkan IP Address
        tmr.stop(1)
        print("WiFi connected")
        print("You have 3 seconds to abort")
        print("Waiting...")
-- jalankan fungsi startup setelah 3 detik       
        tmr.alarm(0, 3000, 0, startup)
    end
end)

6. Upload Masing-masing file

 Gambar 3. Masing-masing file pada Editor
7. Lihat hasil eksekusi pada jendela serial monitor
Connecting to BOLT!Super4G-899A
> ...
WiFi connected
You have 3 seconds to abort
Waiting...
Running
Server started
Use this URL to connect:
http://192.168.43.207/

8. Catat Nomor IP Server yang diberikan oleh hotspot
9. Aktifkan browser pada smartphone anda, dan browse ke http://192.168.43.207


Gambar 4. Hasil Browse pada Smartphone

12. Silakan coba klik Turn-on dan Turn-Off
Selamat mencoba.
Salam,
Hendra.



Tidak ada komentar:

Posting Komentar