Go to file
funshine 8105161081 modify pwm module, add uart module 2014-11-29 23:33:45 +08:00
0.9.2/512k-flash modify pwm module, add uart module 2014-11-29 23:33:45 +08:00
examples add a lua module example myfile.lua 2014-11-24 00:30:49 +08:00
LICENSE update doc 2014-11-21 00:10:01 +08:00
README.md modify pwm module, add uart module 2014-11-29 23:33:45 +08:00
blank512k.bin add blank512k.bin 2014-10-21 18:59:28 +08:00

README.md

NodeMcu

###A lua based firmware for wifi-soc esp8266 version 0.9.2 build 2014-11-29

Change log

2014-11-30
modify the max freq of pwm module to 1000.
modify the max duty cycle of pwm module to 1023.
add uart module, uart.on("data") api to receive data from uart.

more change log
更多变更日志

Summary

  • Easy to access wireless router
  • Based on Lua 5.1.4
  • Event-Drive programming preferred.
  • Build-in file, timer, pwm, i2c, net, gpio, wifi, adc, uart and system api.
  • GPIO pin re-mapped, use the index to access gpio, i2c, pwm.
  • GPIO Map Table:
IO indexESP8266 pinIO indexESP8266 pin
0GPIO128GPIO0
1GPIO139GPIO2
2GPIO1410GPIO4
3GPIO1511GPIO5
4GPIO3
5GPIO1
6GPIO9
7GPIO10

#Flash the firmware nodemcu_512k.bin: 0x00000
for most esp8266 modules, just pull GPIO0 down and restart.

#Connect the hardware in serial braudrate:9600

#Start play

####Connect to your ap

    print(wifi.sta.getip())
    --0.0.0.0
    wifi.setmode(wifi.STATION)
    wifi.sta.config("SSID","password")
    print(wifi.sta.getip())
    --192.168.18.110

####Manipulate hardware like a arduino

    pin = 1
    gpio.mode(pin,gpio.OUTPUT)
    gpio.write(pin,gpio.HIGH)
    print(gpio.read(pin))

####Write network application in nodejs style

    -- A simple http client
    conn=net.createConnection(net.TCP, 0) 
    conn:on("receive", function(conn, payload) print(payload) end )
    conn:connect(80,"115.239.210.27")
    conn:send("GET / HTTP/1.1\r\nHost: www.baidu.com\r\n"
        .."Connection: keep-alive\r\nAccept: */*\r\n\r\n")

####Or a simple http server

    -- A simple http server
    srv=net.createServer(net.TCP) 
    srv:listen(80,function(conn) 
      conn:on("receive",function(conn,payload) 
        print(payload) 
        conn:send("<h1> Hello, NodeMcu.</h1>")
      end) 
      conn:on("sent",function(conn) conn:close() end)
    end)

####Do something shining

  function led(r,g,b) 
    pwm.setduty(0,r) 
    pwm.setduty(1,g) 
    pwm.setduty(2,b) 
  end
  pwm.setup(0,500,512) 
  pwm.setup(1,500,512) 
  pwm.setup(2,500,512)
  pwm.start(0) 
  pwm.start(1) 
  pwm.start(2)
  led(512,0,0) -- red
  led(0,0,512) -- blue

####And blink it

  lighton=0
  tmr.alarm(1000,1,function()
    if lighton==0 then 
      lighton=1 
      led(512,512,512) 
    else 
      lighton=0 
      led(0,0,0) 
    end 
  end)

####If you want to run something when system started

  --init.lua will be excuted
  file.open("init.lua","w")
  file.writeline([[print("Hello, do this at the beginning.")]])
  file.close()
  node.restart()  -- this will restart the module.

####With below code, you can telnet to your esp8266 now

    -- a simple telnet server
    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)   -- re-direct output to function s_ouput.
       c:on("receive",function(c,l) 
          node.input(l)           -- works like pcall(loadstring(l)) but support multiple separate line
       end) 
       c:on("disconnection",function(c) 
          node.output(nil)        -- un-regist the redirect output function, output goes to serial
       end) 
       print("Welcome to NodeMcu world.")
    end)

#Check this out Tencent QQ group: 309957875
nodemcu wiki
nodemcu.com