69945ffcff | ||
---|---|---|
0.9.2/512k-flash | ||
examples | ||
LICENSE | ||
README.md | ||
blank512k.bin |
README.md
NodeMcu
###A lua based firmware for wifi-soc esp8266 version 0.9.2 build 2014-12-02
Change log
2014-12-02
fix the heap recover too slow issue, heap will recover in seconds, not minutes.
modify the return of file.open, return nil if file not exist, true if opend ok.
move startup version display before doing the init.lua.
modify wifi.ap.config(), remove the restart at the end of config.
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 index | ESP8266 pin | IO index | ESP8266 pin |
---|---|---|---|
0 | GPIO12 | 8 | GPIO0 |
1 | GPIO13 | 9 | GPIO2 |
2 | GPIO14 | 10 | GPIO4 |
3 | GPIO15 | 11 | GPIO5 |
4 | GPIO3 | ||
5 | GPIO1 | ||
6 | GPIO9 | ||
7 | GPIO10 |
#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