25 KiB
25 KiB
nodeMcu API Instruction
version 0.1 2014-10-11 change log: 2014-11-5 delete log operation api from node module add log module modify wifi module api modify node.key long_press and short_press default function key is triged only when key is released
Summary
- Easy to access wireless router
- Based on Lua 5.1.4,Developer are supposed to have experience in Lua Program language.
- Try to use Event-Drive programming modal.
- In-side timer,pwm,i2c,net,gpio,wifi module.
- Serial Port BaudRate:74880
- Re-indexing the 8266 pin,use the index to program gpio,i2c,pwm.
- Index vs Pin-number Table:
IO index ESP8266 pin IO index ESP8266 pin 0 GPIO 12 8 GPIO 00 1 GPIO 13 9 GPIO 02 2 GPIO 14 10 GPIO 04 3 GPIO 15 11 GPIO 05 4 GPIO 03 5 GPIO 01 6 GPIO 09 7 GPIO 10
- #Firmware Program
- Address
- eagle.app.v6.flash.bin: 0x00000
- eagle.app.v6.irom0text.bin: 0x10000
- esp_init_data_default.bin: 0x7c000
- blank.bin: 0x7e000
node.restart()
- Description
- module restart.
- Syntax
- node.restart()
- Parameters
- null
- Returns
- null
- Example
node.restart();
## node.dsleep()
Description
: enter deep sleep mode for us micro seconds,restart when timed out
us: sleep time in micro second
- Syntax
- node.dsleep(us) Note: This function can only be used in the condition of connecting esp8266 PIN32(rst) and PIN8(XPD_DCDC) together.
- Parameters
- us:sleep time in micro second
- Returns
- null
- Example
node.dsleep(us);
## node.chipid()
Description
: return chip identifier
- Syntax
- node.chipid()
- Parameters
- null
- Returns
- number:chip identifier
- Example
uint32 id = node.chipid();
## node.heap()
Description
: return the available RAM size in bytes
- Syntax
- node.heap()
- Parameters
- null
- Returns
- number:system heap size left in bytes
- Example
uint32 heap_size = node.heap();
## node.key()
Description
: define button function.
- Syntax
- node.key(type, function())
- Parameters
- type: type is either string ”long” or ”short”. long: press the button for 3 seconds, short: press shortly(less than 3 seconds) function(): user defined function for button. If null, cancling the user defined function, function are initialized to default. Default function: long:change LED blinking rate, short:reset chip
- Returns
- null
- Example
node.key(long, function(){print('hello world')})
## node.led()
Description
: setup the on/off time for led
- Syntax
- node.key(type, function())
- Parameters
- Low: LED off time, 0 for LED keeps on. Unit: milliseconds, time resolution: 80~100ms High: LED off time. Unit: milliseconds, time resolution: 80~100ms
- Returns
- null
- Example
//turn led on forever.
node.led(0,null);
log.format()
- Description
- format flash for users.
- Syntax
- log.format()
- Parameters
- null
- Returns
- null
- Example
//record log to init.lua. Call the file after system restart.
log.format()
log.startlog(“init.lua”, 1)
print(“hello world”)
log.stoplog()
## log.startlog()
Description
: start to log input
- Syntax
- log.startlog(filename, noparse)
- Parameters
- filename: log file, directories are not supported noparse: 1 for lua VM doesn’t parse input, 0 for lua VM parse input
- Returns
- null
- Example
//record log to init.lua. Call the file after system restart.
log.format()
log.startlog(“init.lua”, 1)
print(“hello world”)
log.stoplog()
//At this point, the content of init.lua is “print(“hello world”)”. When system restart, print(“hello world”) are excuted.
## log.stoplog()
Description
: stop log.
- Syntax
- log.stoplog()
- Parameters
- null
- Returns
- null
- Example
//record log to init.lua. Call the file after system restart.
log.format()
log.startlog(“init.lua”, 1)
print(“hello world”)
log.stoplog()
//At this point, the content of init.lua is “print(“hello world”)”. When system restart, print(“hello world”) are excuted.
## log.open()
Description
: open the log file
- Syntax
- log.open(filename)
- Parameters
- filename: log file, directories are not supported
- Returns
- null
- Example
//print the first line of 'init.lua'
log.open(“init.lua”)
print(log.readline())
log.close()
## log.close()
Description
: close the log file which opened before
- Syntax
- log.close()
- Parameters
- null
- Returns
- null
- Example
//print the first line of 'init.lua'
log.open(“init.lua”)
print(log.readline())
log.close()
## log.readline()
Description
: read log file which is opened before line by line.
- Syntax
- log.readline()
- Parameters
- null
- Returns
- log file content in string
- Example
//print the first line of 'init.lua'
log.open(“init.lua”)
print(log.readline())
log.close()
## log.list()
Description
: list all files.
- Syntax
- log.list()
- Parameters
- null
- Returns
- null
- Example
log.list();
- See also
- - log.format()
- #wifi module
- ##CONSTANT
- wifi.STATION, wifi.SOFTAP, wifi.STATIONAP
- Syntax
- wifi.setmode(mode)
- Parameters
- mode: value should be: wifi. STATION, wifi.SOFTAP or wifi.STATIONAP
- Returns
- current mode after setup
- Example
wifi.setmode(wifi.STATION)
## wifi.getmode(mode)
Description
: get wifi working mode.
- Syntax
- wifi.getmode()
- Parameters
- null
- Returns
- wifi working mode
- Example
print(wifi.getmode())
## wifi.startsmart()
Description
: starts to auto configuration,if success set up ssid and pwd automatically .
- Syntax
- wifi.startsmart(channel, function succeed_callback())
- Parameters
- channel: 1~13,startup channel for searching, if null, default to 6. 20 seconds for each channel. succeed_callback: callback function for success configuration, which is called after getting the password and the connection to AP.
- Returns
- null
- Example
wifi.startsmart(6, cb())
## wifi.stopsmart()
Description
: stop the configuring process.
- Syntax
- wifi.stopsmart()
- Parameters
- null
- Returns
- null
- Example
wifi.stopsmart()
#wifi.sta module
## wifi.sta.config() Description : set ssid and password in station mode.- Syntax
- wifi.sta.config(ssid, password)
- Parameters
- ssid: string which is less than 32 bytes. password: string which is less than 64 bytes.
- Returns
- null
- Example
wifi.sta.config("myssid","mypassword")
## wifi.sta.connect()
Description
: connect to AP in station mode.
- Syntax
- wifi.sta.connect()
- Parameters
- null
- Returns
- null
- Example
wifi.sta.connect()
## wifi.sta.disconnect()
Description
: disconnect from AP in station mode.
- Syntax
- wifi.sta.disconnect()
- Parameters
- null
- Returns
- null
- Example
wifi.sta.disconnect()
## wifi.sta.autoconnect()
Description
: auto connect to AP in station mode.
- Syntax
- wifi.sta.autoconnect(auto)
- Parameters
- auto: 0 for disable auto connecting. 1 for enable auto connecting
- Returns
- null
- Example
wifi.sta.autoconnect()
## wifi.sta.getip()
Description
: get ip address in station mode.
- Syntax
- wifi.sta.getip()
- Parameters
- null
- Returns
- ip address in string, for example:"192.168.0.111"
- Example
//print current ip
print(wifi.sta.getip())
## wifi.sta.getmac()
Description
: get mac address in station mode.
- Syntax
- wifi.sta.getmac()
- Parameters
- null
- Returns
- mac address in string, for example:"18-33-44-FE-55-BB"
- Example
//print current mac address
print(wifi.sta.getmac())
#wifi.ap module
## wifi.ap.config() Description : set ssid and password in ap mode.- Syntax
- wifi.ap.config(cfg)
- Parameters
- cfg: lua table for setup ap.
- Example:
cfg={}
cfg.ssid="myssid"
cfg.pwd="mypwd"
wifi.ap.setconfig(cfg)
- Returns
- null
- Example
wifi.ap.config(ssid, 'password')
- See also
- <>
- Syntax
- wifi.ap.getip()
- Parameters
- null
- Returns
- ip address in string, for example:"192.168.0.111"
- Example
wifi.ap.getip()
## wifi.ap.getmac()
Description
: get mac address in ap mode.
- Syntax
- wifi.ap.getmac()
- Parameters
- null
- Returns
- mac address in string, for example:"1A-33-44-FE-55-BB"
- Example
wifi.ap.getmac()
tmr.delay()
- Description
- delay us micro seconds.
- Syntax
- tmr.dealy(us)
- Parameters
- us: delay time in micro second
- Returns
- null
- Example
//delay 100us
tmr.delay(100)
## tmr.now()
Description
: return the current value of system counter: uint32, loopback, us.
- Syntax
- tmr.now()
- Parameters
- null
- Returns
- uint32: value of counter
- Example
//print current value of counter
print(tmr.now())
## tmr.alarm()
Description
: alarm time.
- Syntax
- tmr.alarm(interval, repeat, function do())
- Parameters
- Interval: alarm time, unit: millisecond; repeat: 0 for one time alarm, 1 for repeat; function do(): callback function for alarm timed out.
- Returns
- null
- Example
//print "hello world" every 1000ms
tmr.alarm(1000, 1, function() print(“hello world”) end )
## tmr.stop()
Description
: stop alarm.
: Note: only one alarm is allowed, the previous one would be replaced if tmr.alarm() again before tmr.stop().
- Syntax
- tmr.stop()
- Parameters
- null.
- Returns
- null
- Example
//print "hello world" every 1000ms
tmr.alarm(1000, 1, function() print(“hello world”) end )
//something else
//stop alarm
tmr.stop()
## gpio.mode()
Description
: initialize pin to GPIO mode, set the pin in/out mode.
- Syntax
- gpio.mode(pin, mode)
- Parameters
- pin: 0~11,IO index mode: gpio.OUTPUT or gpio.INPUT, or gpio.INT(interrupt mode)
- Returns
- null
- Example
//set gpio 0 as output.
gpio.mode(0, gpio.OUTPUT)
## gpio.read()
Description
: read pin value.
- Syntax
- gpio.read(pin)
- Parameters
- pin: 0~11,IO index
- Returns
- number:0 for low, 1 for high
- Example
//read value of gpio 0.
gpio.read(0)
## gpio.write()
Description
: set pin value.
- Syntax
- gpio.write(pin)
- Parameters
- pin: 0~11,IO index
- level: gpio.HIGH or gpio.LOW
- Returns
- null
- Example
//set pin index 1 to GPIO mode, and set the pin to high.
pin=1
gpio.mode(pin, gpio.OUTPUT)
gpio.write(pin, gpio.HIGH)
## gpio.trig()
Description
: set the interrupt callback function for pin.
- Syntax
- gpio.trig(pin, type, function(level))
- Parameters
- pin: 0~11,IO index type: ”up”, “down”, “both”, “low”, “high”, which represent rising edge, falling edge, both edge, low level, high level trig mode separately. function(level): callback function when triggered. The gpio level is the param. Use previous callback function if undefined here.
- Returns
- null
- Example
//use pin 0 as the input pulse width counter
pulse0 = 0
du = 0
gpio.mode(0,gpio.INT)
function pin0cb(level)
du = tmr.now() – pulse0
print(du)
pulse0 = tmr.now()
if level == 1 then gpio.trig(0, "down ") else gpio.trig(0, "up ") end
end
gpio.trig(0, "down ",pin0cb)
pwm.setup()
- Description
- set pin to PWM mode. Only 3 pins can be set to PWM mode at the most.
- Syntax
- pwm.setup(pin, clock, duty)
- Parameters
- pin: 0~11,IO index clock: 1~500,pwm frequency duty: 0~100,pwm duty cycle in percentage
- Returns
- null
- Example
//set pin index 0 as pwm output, frequency is 100Hz, duty cycle is 50-50..
pwm.setup(0, 100, 50)
## pwm.close()
Description
: quit PWM mode for specified pin.
- Syntax
- pwm.close(pin)
- Parameters
- pin: 0~11,IO index
- Returns
- null
- Example
pwm.close(0)
## pwm.start()
Description
: pwm starts, you can detect the waveform on the gpio.
- Syntax
- pwm.start(pin)
- Parameters
- pin: 0~11,IO index
- Returns
- null
- Example
pwm.start(0)
## pwm.stop()
Description
: pause the output of PWM waveform.
- Syntax
- pwm.stop(pin)
- Parameters
- pin: 0~11,IO index
- Returns
- null
- Example
pwm.stop(0)
## pwm.setclock()
Description
: set pwm frequency for pin.
: Note: setup pwm frequency will synchronously change others if there are any. Only one PWM frequency can be allowed for the system.
- Syntax
- pwm.setclock(pin, clock)
- Parameters
- pin: 0~11,IO index. clock: 1~500, pwm frequency.
- Returns
- null
- Example
pwm.setclock(0, 100)
## pwm.getclock()
Description
: get pwm frequency of pin.
- Syntax
- pwm.getclock(pin)
- Parameters
- pin: 0~11,IO index.
- Returns
- number:pwm frequency of pin
- Example
print(pwm.getclock(0))
## pwm.setduty()
Description
: set duty clycle for pin.
- Syntax
- pwm.setduty(pin, duty)
- Parameters
- pin: 0~11,IO index
- duty: 0~100,pwm duty cycle in percentage
- Returns
- null
- Example
pwm.setduty(0, 50)
## pwm.getduty()
Description
: get duty clycle for pin.
- Syntax
- pwm.getduty(pin)
- Parameters
- pin: 0~11,IO index
- Returns
- null
- Example
//D0 is connected to green led
//D1 is connected to blue led
//D2 is connected to red led
pwm.setup(0,500,50)
pwm.setup(1,500,50)
pwm.setup(2,500,50)
pwm.start(0)
pwm.start(1)
pwm.start(2)
function led(r,g,b)
pwm.setduty(0,g)
pwm.setduty(1,b)
pwm.setduty(2,r)
end
led(50,0,0) // set led to red
led(0,0,50) //set led to blue.
- See also
- - pwm.setduty()
- #net module
- ##CONSTANT
- net.TCP, net.UDP
- Syntax
- net.createServer(type, secure)
- Parameters
- type: net.TCP or net.UDP secure: true or false, true for safe link, false for ordinary link
- Returns
- net.server sub module
- Example
net.createServer(net.TCP, true)
## net.createConnection()
Description
: create a client.
- Syntax
- net.createConnection(type, secure)
- Parameters
- type: net.TCP or net.UDP secure: true or false, true for safe link, false for ordinary link
- Returns
- net.server sub module
- Example
net.createConnection(net.UDP, false)
listen()
- Description
- listen on port from [ip] address.
- Syntax
- net.server.listen(port,[ip],function(net.socket))
- Parameters
- port: port number ip:ip address string, can be omitted function(net.socket): callback function, pass to Caller function as param if a connection is created successfully
- Returns
- null
- Example
//create a server
sv=net.createServer(net.TCP, false)
//server listen on 80, if data received, print data to console, and send "hello world" to remote.
sv:listen(80,function(c)
c:on("receive", function(sck, pl) print(pl) end)
c:send("hello world")
end)
## close()
Description
: close server.
- Syntax
- net.server.close()
- Parameters
- null
- Returns
- null
- Example
//create a server
sv=net.createServer(net.TCP, false)
//close server
sv:close()
connect()
- Description
- connect to remote.
- Syntax
- connect(port, ip)
- Parameters
- port: port number ip: ip address in string
- Returns
- null
- See also
- - net.socket:on()
- Syntax
- send(string, function(sent))
- Parameters
- string: data in string which will be sent to remote function(sent): callback function for sending string
- Returns
- null
- See also
- - net.socket:on()
- Syntax
- on(event, function cb())
- Parameters
- event: string, which can be: "connection","reconnection","disconnection","receive","sent" function cb(net.socket, [string]): callback function. The first param is the socket. If event is”receive”, the second param is received data in string.
- Returns
- null
- Example
sk=net.createConnection(net.TCP, false)
sk:on("receive", function(sck, c) print(c) end )
sk:connect(80,"192.168.0.66")
sk:send("GET / HTTP/1.1\r\nHost: 192.168.0.66\r\nConnection: keep-alive\r\nAccept: */*\r\n\r\n")
## close()
Description
: close socket.
## dns()
Description
: get domain ip
- Syntax
- dns(domain, function(net.socket, ip))
- Parameters
- domain: domain name. function (net.socket, ip): callback function. The first param is the socket, the second param is the ip address in string.
- Returns
- null
- See also
- - net.createServer()
- #i2c module
- ##CONSTANT
- i2c.SLOW, i2c.TRANSMITTER, i2c. RECEIVER. FAST(400k)is not supported for now.
- Syntax
- i2c.setup(id, pinSDA, pinSCL, speed)
- Parameters
- id = 0 pinSDA: 0~11,IO index pinSCL: 0~11,IO index speed: i2c.SLOW
- Returns
- null
- See also
- - i2c.read()
- Syntax
- i2c.address(id, device_addr, direction)
- Parameters
- id=0 device_addr: device address. direction: i2c.TRANSMITTER for writing mode , i2c. RECEIVER for reading mode
- Returns
- null
- See also
- - i2c.read()
- Syntax
- i2c.write(id, data1, data2,...)
- Parameters
- id=0 data: data can be numbers, string or lua table.
- Returns
- null
- Example
i2c.write(0, "hello", "world")
## i2c.read()
Description
: read data for len bytes.
- Syntax
- i2c.read(id, len)
- Parameters
- id=0 len: data length
- Returns
- string:data received.
- Example
id=0
sda=1
scl=0
//initialize i2c, set pin1 as sda, set pin0 as scl
i2c.setup(id,sda,scl,i2c.SLOW)
//user defined function: read from reg_addr content of dev_addr
function read_reg(dev_addr, reg_addr)
i2c.start(id)
i2c.address(id, dev_addr ,i2c.TRANSMITTER)
i2c.write(id,reg_addr)
i2c.stop(id)
i2c.start(id)
i2c.address(id, dev_addr,i2c.RECEIVER)
c=i2c.read(id,1)
i2c.stop(id)
return c
end
//get content of register 0xAA of device 0x77
reg = read_reg(0x77, 0xAA)
pirnt(string.byte(reg))