Tuesday, July 28, 2015

TEST: NodeMCU V2 - Lua based ESP8266 development kit

ทดสอบบอร์ด ESP8266 NodeMCU V2 สั่งงานผ่าน WIFI โดยให้ตัว Node MCU เป็น Access Point และ Web Server แล้วใช้ Smartphone เข้า Web สั่งงานเปิดปิดหลอด LED บนบอร์ดครับ

สิ่งจำเป็น


เมื่อลง Driver เสร็จแล้วลองตรวจสอบ Driver โดยการตอนสาย USB เชื่อมบอร์ดและคอมพิวเตอร์ และดูที่ Device Manager

เปิดโปรแกรม NodeMCU Studio เลือก Port Com ที่เชื่อมต่อ

Click ที่ List File lua ด้านซ้ายที่ชื่อว่า init.lua
(โดยที่โปรแกรมอะไรก็ตามที่เขียนอยู่ใน init.lua จะถูกรันเป็นอันดับแรกเมื่อบอร์ดทำงาน)

ทดสอบเขียนคำสั่งเพื่อให้บอร์ดทำงานเป็น Access Point และ Web Server และทดสอบโดยใช้ SmartPhone ต่อ Wifi เข้า Web ไปสั่งงานเปิดปิดหลอดไฟที่อยู่บอร์ด โดยมี Code ดังนี้
lp4 = 4
gpio.mode(lp4,gpio.OUTPUT)
gpio.write(lp4,gpio.LOW) 
wifi.setmode(wifi.SOFTAP);
wifi.ap.config({ssid="yesprezzo",pwd="12345678"}); 
function split(s, delimiter)
 result = {};
  for match in (s..delimiter):gmatch("(.-)"..delimiter) do
    table.insert(result, match);
  end
 return result;
end 
function urldecode(payload)
 result = {};
 list=split(payload,"\r\n")
 list=split(list[1]," ")
 list=split(list[2],"\/")
 table.insert(result, list[1]);
 table.insert(result, list[2]);
 table.insert(result, list[3]);
 return result;
end 
srv=net.createServer(net.TCP)
srv:listen(80,function(conn) 
  local buf = "";
  conn:on("receive",function(conn,payload)
  list=urldecode(payload)
  --print(payload) 
  buf = buf.."HTTP/1.1 200 OK\r\nConnection: keep-alive\r\nCache-Control: private, no-store\r\n\r\n\
             <!DOCTYPE HTML><html><head>\
             <meta content=\"text/html;charset=utf-8\"><title>I.n.n.O</title>\
             <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0\">\
             <body bgcolor=\"#ffe4c4\">\
             <h2>I.n.n.O-Home v5</h2><hr>"
  buf = buf.."<a href=\"on001\"><button>ON 01</button></a>&nbsp;<a href=\"off001\"><button>OFF 01</button></a></p>"
  buf = buf.."<a href=\"on002\"><button>ON 02</button></a>&nbsp;<a href=\"off002\"><button>OFF 02</button></a></p>"
  buf = buf.."<a href=\"on003\"><button>ON 03</button></a>&nbsp;<a href=\"off003\"><button>OFF 03</button></a></p>" 
  if(list[2]=="")then
    buf = buf.."<p> Not Command</p>"
  elseif (list[2]=="on001")then
    buf = buf.."<p>ON-001</p>"
    gpio.write(lp4,gpio.LOW)
  elseif (list[2]=="off001")then
    buf = buf.."<p>OFF-001</p>"
    gpio.write(lp4,gpio.HIGH)
  elseif (list[2]=="on002")then
    buf = buf.."<p>ON-002</p>"
    gpio.write(lp4,gpio.LOW)
  elseif (list[2]=="off002")then
    buf = buf.."<p>OFF-002</p>"
    gpio.write(lp4,gpio.HIGH)
  elseif (list[2]=="on003")then
    buf = buf.."<p>ON-003</p>"
    gpio.write(lp4,gpio.LOW)
  elseif (list[2]=="off003")then
    buf = buf.."<p>OFF-003</p>"
    gpio.write(lp4,gpio.HIGH)
  else
    buf = buf.."<p>URL ERROR</p>"
  end
  buf =  buf.."</body></html>"
  conn:send(buf)
  conn:close()
 end)
end)

เมื่อนำ Code ไปว่างเสร็จแล้วกดปุ่มดัง Download จะปรากฏการเขียนข้อมูลลง init.lua ขึ้นทาง Terminal ด้านล่างขวา

กดปุ่ม Restart ที่ตัวบอร์ดแล้วลองนำ Smart Phone มาเชื่อมต่อ Wifi ที่ชื่อ wifi.ap.config({ssid="yesprezzo",pwd="12345678"}); 

เมื่อ Connected! แล้วให้ใช้ Web Browser เข้า url ip: 192.168.4.1 จะปรากฎเว็บขึ้นมาให้สั่งงาน LED ได้ครับ

 

รีวิวนี้จบแค่นี้ก่อนนะครับ ถ้ามีความก้าวหน้ามาขึ้นจะกลับมารีวิวอีกครับ ขอบคุณครับ
PS. ถ้ามีข้อสงสัยหรืออยากแลกเปลี่ยนคุยกันได้ที่ www.facebook.com/yesprezzo  นะครับ



1 comment:

  1. hello friend, how do I change the wifi name and password?

    ReplyDelete