diff --git a/README.md b/README.md index 5a34abb9..e803077f 100644 --- a/README.md +++ b/README.md @@ -1,1494 +1,291 @@ -# **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 module - -## node.restart() -Description -: module restart. - -Syntax -: node.restart() - -Parameters -: null - -Returns -: null - -Example -: **** -``` - node.restart(); -``` - -See also -: **-** other function - - -## 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); -``` - -See also -: **-** other function - - -## node.chipid() -Description -: return chip identifier - -Syntax -: node.chipid() - -Parameters -: null - -Returns -: number:chip identifier - -Example -: **** -``` - uint32 id = node.chipid(); -``` - -See also -: **-** other function - - -## 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(); -``` - -See also -: **-** other function - - -## 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')}) -``` - -See also -: **-** node.startlog() - - -## 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); -``` - -See also -: **-** node.startlog() - -#log module - -## 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() -``` - -See also -: **-** log.startlog() -: **-** 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. -``` - -See also -: **-** log.format() -: **-** log.stoplog() - - -## 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. -``` - -See also -: **-** log.format() -: **-** log.startlog() - - -## 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() -``` - -See also -: **-** log.close() -: **-** log.readline() - - -## 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() -``` - -See also -: **-** log.open() -: **-** log.readline() - - -## 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() -``` - -See also -: **-** log.open() -: **-** log.close() - - -## log.list() -Description -: list all files. - -Syntax -: log.list() - -Parameters -: null - -Returns -: null - -Example -: **** -``` - log.list(); -``` - -See also -: **-** log.format() +nodeMcu API说明 +======= +version 0.1 2014-10-11 -#wifi module -##CONSTANT -: wifi.STATION, wifi.SOFTAP, wifi.STATIONAP +flash 错误 +---- + 注意:有些模块在烧写之后启动,串口输出 ERROR in flash_read: r=。。。 + 这是因为模块原来的flash内部没有擦除。 + 可使用blank.bin(4k), + 重复烧入起始地址0x47000, 0x48000, 0x49000, 0x4a000扇区. + 或者生成一个512k大小的blank512k.bin, 内容为全0xFF,从0x00000开始烧入。 + 烧入之后可以正常运行。 - -## wifi.setmode(mode) -Description -: set wifi working mode. - -Syntax -: wifi.setmode(mode) +概述 +------ + 支持一键配置 -Parameters -: mode: value should be: wifi. STATION, wifi.SOFTAP or wifi.STATIONAP + 基于Lua 5.1.4,使用者需了解最简单的Lua语法。 -Returns -: current mode after setup + 采用事件驱动的编程模型。 -Example -: **** -``` - wifi.setmode(wifi.STATION) -``` + 内置 timer,pwm,i2c,net,gpio,wifi module。 -See also -: **-** wf.getmode() + 对模块的引脚进行编号;gpio,i2c,pwm等模块需要使用引脚编号进行索引。 - -## wifi.getmode(mode) -Description -: get wifi working mode. +###目前的编号对应表格: -Syntax -: wifi.getmode() + IO索引编号 ESP8266实际IO IO索引编号 ESP8266实际IO + 0 GPIO12 8 GPIO0 + 1 GPIO13 9 GPIO2 + 2 GPIO14 10 GPIO4 + 3 GPIO15 11 GPIO5 + 4 GPIO3 + 5 GPIO1 + 6 GPIO9 + 7 GPIO10 -Parameters -: null +###串口波特率 +9600 -Returns -: wifi working mode +###固件烧写地址: -Example -: **** -``` - print(wifi.getmode()) -``` + eagle.app.v6.flash.bin:0x00000 + eagle.app.v6.irom0text.bin:0x10000 + esp_init_data_default.bin:0x7c000 + blank.bin:0x7e000 -See also -: **-** wf.setmode() + 第一次使用建议将blank512k.bin烧写在地址0x00000 - -## wifi.startsmart() -Description -: starts to auto configuration,if success set up ssid and pwd automatically . +node module +------ +node.restart() -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. +node.dsleep( us ) -Returns -: null + 描述:深度睡眠 us 微秒,时间到之后将重新启动 + us:时间,单位微秒 -Example -: **** -``` - wifi.startsmart(6, cb()) -``` +node.chipid() -See also -: **-** wf.stopsmart() + 描述:返回芯片id + 返回:number - -## wifi.stopsmart() -Description -: stop the configuring process. +node.heap() -Syntax -: wifi.stopsmart() + 描述:返回可用内存 in bytes + 返回:系统heap剩余 -Parameters -: null +node.format() -Returns -: null + 描述:格式化用户flash区 -Example -: **** -``` - wifi.stopsmart() -``` +node.startlog( filename, noparse) -See also -: **-** wf.startsmart() + 描述:开始记录输入 + filename:log所保存的文件名,不支持目录 + noparse:1表示lua虚拟机不对输入进行解析,0表示lua虚拟机对输入进行解析 -#wifi.sta module +node.stoplog() - -## wifi.sta.config() -Description -: set ssid and password in station mode. + 描述:结束log -Syntax -: wifi.sta.config(ssid, password) +例子:录制log到init.lua文件,可以在系统启动之后自动调用该文件。 -Parameters -: ssid: string which is less than 32 bytes. - password: string which is less than 64 bytes. + node.format() + node.startlog("init.lua", 1) + print("hello world") + node.stoplog() +此时,文件init.lua内部将含有内容,重启之后,系统执行print("hello world") -Returns -: null +node.readlog( filename) -Example -: **** -``` - wifi.sta.config("myssid","mypassword") -``` + 描述:读取文件 + filename:log文件名,不支持目录 + 返回:读取的内容,字符串形式 -See also -: **-** wifi.sta.connect() -: **-** wifi.sta.disconnect() +node.list() - -## wifi.sta.connect() -Description -: connect to AP in station mode. + 描述:返回所有文件 + 返回:一个包含 <文件名:文件大小> pair 的map -Syntax -: wifi.sta.connect() +wifi module +----------- -Parameters -: null +常量:wifi.STATION, wifi.SOFTAP, wifi.STATIONAP +wifi.setmode(mode) -Returns -: null + 描述:设置wifi的工作模式 + mode:取值:wifi.STATION, wifi.SOFTAP或wifi.STATIONAP + 返回设置之后的当前mode -Example -: **** -``` - wifi.sta.connect() -``` +wifi.getmode() -See also -: **-** wifi.sta.disconnect() -: **-** wifi.sta.config() + 描述:获取wifi的工作模式 + 返回:wifi.STATION, wifi.SOFTAP或wifi.STATIONAP - -## wifi.sta.disconnect() -Description -: disconnect from AP in station mode. +wifi.startconfig( channel, function succeed_callback ) -Syntax -: wifi.sta.disconnect() + 描述:开始智能配置,若成功自动设置ssid和pwd并退出 + channel:1~13,起始搜索信道。若不指定,默认为6,每个信道搜索20秒 + succeed_callback:配置成功后的回调函数,将在获取密码正确并连接上ap之后调用 -Parameters -: null +wifi.stopconfig() + 描述:中断智能配置 -Returns -: null +wifi.station module +----------------- +wifi.station.setconfig(ssid, password) -Example -: **** -``` - wifi.sta.disconnect() -``` + 描述:设置station模式下的ssid和password + ssid:字符串形式,长度小于32 + password:字符串形式,长度小于64 -See also -: **-** wifi.sta..config() -: **-** wifi.sta.connect() +wifi.station.connect() - -## wifi.sta.autoconnect() -Description -: auto connect to AP in station mode. + 描述:station模式下连接至ap -Syntax -: wifi.sta.autoconnect(auto) +wifi.station.disconnect() -Parameters -: auto: 0 for disable auto connecting. 1 for enable auto connecting + 描述:station模式下断开与ap的连接 +wifi.station.autoconnect(auto) -Returns -: null + 描述:station模式下设置自动连接至ap + auto:0表示设置为不自动连,1表示设置为自动连接 -Example -: **** -``` - wifi.sta.autoconnect() -``` +wifi.station.getip() -See also -: **-** wifi.sta..config() -: **-** wifi.sta.connect() -: **-** wifi.sta.disconnect() + 描述:station模式下获取ip + 返回:字符串形式的ip,如"192.168.0.2" - -## wifi.sta.getip() -Description -: get ip address in station mode. +wifi.station.getmac() -Syntax -: wifi.sta.getip() + 描述:station模式下获取mac + 返回:字符串形式的mac,如"18-33-44-FE-55-BB" -Parameters -: null +wifi.ap module +--------------- +wifi.ap.setconfig(cfg) + 描述:设置station模式下的ssid和password + cfg:设置需要的map -Returns -: ip address in string, for example:"192.168.0.111" +例子: -Example -: **** -``` - //print current ip - print(wifi.sta.getip()) -``` + cfg={} + cfg.ssid="myssid" + cfg.pwd="mypwd" + wifi.ap.setconfig(cfg) -See also -: **-** wifi.sta..getmac() +wifi.ap.getip() - -## wifi.sta.getmac() -Description -: get mac address in station mode. + 描述:ap模式下获取ip + 返回:字符串形式的ip,如"192.168.0.2" -Syntax -: wifi.sta.getmac() +wifi.ap.getmac() -Parameters -: null + 描述:ap模式下获取mac + 返回:字符串形式的mac,如"1A-33-44-FE-55-BB" +gpio module +----------- +常量:gpio.OUTPUT, gpio.INPUT, gpio.HIGH, gpio.LOW -Returns -: mac address in string, for example:"18-33-44-FE-55-BB" +gpio.mode( pin, mode) -Example -: **** -``` - //print current mac address - print(wifi.sta.getmac()) -``` + 描述:设置对应pin的输入输出模式,将该pin初始化为gpio模式。 + pin:0~11,IO索引编号 + mode:gpio.OUTPUT或者gpio.INPUT -See also -: **-** wifi.sta..getip() +gpio.read(pin) -#wifi.ap module + 描述:读取对应pin的值 + pin:0~11,IO索引编号 + 返回:0表示低,1表示高 - -## wifi.ap.config() -Description -: set ssid and password in ap mode. +gpio.write(pin, level) -Syntax -: wifi.ap.config(cfg) + 描述:设置对应pin的值 + pin:0~11,IO索引编号 + level:gpio.HIGH或者gpio.LOW -Parameters -: cfg: lua table for setup ap. -: Example: -``` - cfg={} - cfg.ssid="myssid" - cfg.pwd="mypwd" - wifi.ap.setconfig(cfg) -``` +例子: -Returns -: null + pin=1 + gpio.mode(pin, gpio.OUTPUT) + gpio.write(pin, gpio.HIGH) -Example -: **** -``` - wifi.ap.config(ssid, 'password') -``` +将索引1的pin设置为GPIO模式,并设置为高电平。 -See also -: <> +net module +--------------- +常量:net.TCP, net.UDP - -## wifi.ap.getip() -Description -: get ip in ap mode. +net.createServer(type) -Syntax -: wifi.ap.getip() + 描述:建立一个服务器 + type:net.TCP或 net.UDP + 返回:net.server子模块 -Parameters -: null +net.createConnection(type) -Returns -: ip address in string, for example:"192.168.0.111" + 描述:建立一个客户端 + type:net.TCP或 net.UDP + 返回:net.socket子模块 -Example -: **** -``` - wifi.ap.getip() -``` +net.server module +------------- +listen(port,[ip],function(net.socket)) -See also -: **-** wifi.ap..getmac() + 描述:监听某端口 + port:端口号 + ip:可忽略,ip字符串 + function(net.socket): 回调函数,当有连接建立的时候,作为参数传给回调函数。 - -## 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" + sv=net.createServer(net.TCP, false) + sv:listen(80,function(c) + c:on("receive", function(sck, pl) print(pl) end) + c:send("hello world") + end) -Example -: **** -``` - wifi.ap.getmac() -``` +close() -See also -: **-** wifi.ap..getip() + 描述:关闭服务器 -#timer module - -## tmr.delay() -Description -: delay us micro seconds. +net.socket module +------- +connect(port, ip) -Syntax -: tmr.dealy(us) + 描述:连接到某ip和端口 + port:端口号 + ip:ip字符串 -Parameters -: us: delay time in micro second +send( string, function(sent) ) -Returns -: null + 描述:向连接发送数据 + string:需要发送的数据字符串 -Example -: **** -``` - //delay 100us - tmr.delay(100) -``` +on(event, function cb()) -See also -: **-** tmr.now() + 描述:注册事件的回调函数 + event:字符串 + 可为:"connection","reconnection","disconnection","receive","sent" + function cb(net.socket, [string]):回调函数。第一个参数为socket连接。 + 若event为"receive", 第二个参数为接收到数据,字符串形式。 - -## tmr.now() -Description -: return the current value of system counter: uint32, loopback, us. - -Syntax -: tmr.now() +例子: -Parameters -: null + sk=net.createConnection(net.TCP, false) + sk:on("receive", function(sck, pl) print(pl) end ) + sk:connect(80,"115.239.210.27") + sk:send("GET / HTTP/1.1\r\nHost: 115.239.210.27\r\n + Connection: keep-alive\r\nAccept: */*\r\n\r\n") -Returns -: uint32: value of counter +close() -Example -: **** -``` - //print current value of counter - print(tmr.now()) -``` + 描述:关闭socket -See also -: **-** tmr.delay() +dns(domain, function cb(net.socket, ip) ) - -## 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 ) -``` - -See also -: **-** tmr.now() - - -## 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() -``` - -See also -: **-** tmr.now() - -#GPIO module -##CONSTANT -: gpio.OUTPUT, gpio.INPUT, gpio.INT, gpio.HIGH, gpio.LOW - - - -## 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) - -``` - -See also -: **-** gpio.read() - - -## 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) -``` - -See also -: **-** gpio.mode() - - -## 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) -``` - -See also -: **-** gpio.mode() -: **-** gpio.read() - - -## 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) - -``` - -See also -: **-** gpio.mode() -: **-** gpio.write() - -#PWM module - -## 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) -``` - -See also -: **-** pwm.start() - - -## 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) -``` - -See also -: **-** pwm.start() - - -## 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) -``` - -See also -: **-** pwm.stop() - - -## 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) -``` - -See also -: **-** pwm.start() - - -## 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) -``` - -See also -: **-** pwm.getclock() - - -## 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)) -``` - -See also -: **-** pwm.setclock() - - -## 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) -``` - -See also -: **-** pwm.getduty() - - -## 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 - - -## net.createServer() -Description -: create a server. - -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) -``` - -See also -: **-** net.createConnection() - - -## 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) -``` - -See also -: **-** net.createServer() - -#net.server module - -## 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) -``` - -See also -: **-** net.createServer() - - -## 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() -``` - -See also -: **-** net.createServer() - -#net.socket module - -## 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() - - -## send() -Description -: send data to remote via connection. - -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() - - -## on() -Description -: register callback function for event. - -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") -``` - -See also -: **-** net.createServer() - - -## close() -Description -: close socket. - -Syntax -: close() - -Parameters -: null - -Returns -: null - -See also -: **-** net.createServer() - - -## 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. - - -## i2c.setup() -Description -: initialize i2c. - -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() - - -## i2c.start() -Description -: start i2c transporting. - -Syntax -: i2c.start(id) - -Parameters -: id = 0 - -Returns -: null - -See also -: **-** i2c.read() - - -## i2c.stop() -Description -: stop i2c transporting. - -Syntax -: i2c.stop(id) - -Parameters -: id = 0 - -Returns -: null - -See also -: **-** i2c.read() - - -## i2c.address() -Description -: setup i2c address and read/write mode. - -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() - - -## i2c.write() -Description -: write data to i2c, data can be multi numbers, string or lua table. - -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") -``` - -See also -: **-** i2c.read() - - -## 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)) - -``` - -See also -: **-** i2c.write() + 描述:获取domain的ip + domain:字符串 + function cb(net.socket, ip):回调函数。 + 第一个参数为socket连接本身, 第二个为获取的ip, 字符串形式。 diff --git a/README1.md b/README1.md deleted file mode 100644 index e803077f..00000000 --- a/README1.md +++ /dev/null @@ -1,291 +0,0 @@ -nodeMcu API说明 -======= -version 0.1 2014-10-11 - -flash 错误 ----- - 注意:有些模块在烧写之后启动,串口输出 ERROR in flash_read: r=。。。 - 这是因为模块原来的flash内部没有擦除。 - 可使用blank.bin(4k), - 重复烧入起始地址0x47000, 0x48000, 0x49000, 0x4a000扇区. - 或者生成一个512k大小的blank512k.bin, 内容为全0xFF,从0x00000开始烧入。 - 烧入之后可以正常运行。 - -概述 ------- - 支持一键配置 - - 基于Lua 5.1.4,使用者需了解最简单的Lua语法。 - - 采用事件驱动的编程模型。 - - 内置 timer,pwm,i2c,net,gpio,wifi module。 - - 对模块的引脚进行编号;gpio,i2c,pwm等模块需要使用引脚编号进行索引。 - -###目前的编号对应表格: - - IO索引编号 ESP8266实际IO IO索引编号 ESP8266实际IO - 0 GPIO12 8 GPIO0 - 1 GPIO13 9 GPIO2 - 2 GPIO14 10 GPIO4 - 3 GPIO15 11 GPIO5 - 4 GPIO3 - 5 GPIO1 - 6 GPIO9 - 7 GPIO10 - -###串口波特率 -9600 - -###固件烧写地址: - - eagle.app.v6.flash.bin:0x00000 - eagle.app.v6.irom0text.bin:0x10000 - esp_init_data_default.bin:0x7c000 - blank.bin:0x7e000 - - 第一次使用建议将blank512k.bin烧写在地址0x00000 - -node module ------- -node.restart() - - 描述:重新启动 - -node.dsleep( us ) - - 描述:深度睡眠 us 微秒,时间到之后将重新启动 - us:时间,单位微秒 - -node.chipid() - - 描述:返回芯片id - 返回:number - -node.heap() - - 描述:返回可用内存 in bytes - 返回:系统heap剩余 - -node.format() - - 描述:格式化用户flash区 - -node.startlog( filename, noparse) - - 描述:开始记录输入 - filename:log所保存的文件名,不支持目录 - noparse:1表示lua虚拟机不对输入进行解析,0表示lua虚拟机对输入进行解析 - -node.stoplog() - - 描述:结束log - -例子:录制log到init.lua文件,可以在系统启动之后自动调用该文件。 - - node.format() - node.startlog("init.lua", 1) - print("hello world") - node.stoplog() - -此时,文件init.lua内部将含有内容,重启之后,系统执行print("hello world") - -node.readlog( filename) - - 描述:读取文件 - filename:log文件名,不支持目录 - 返回:读取的内容,字符串形式 - -node.list() - - 描述:返回所有文件 - 返回:一个包含 <文件名:文件大小> pair 的map - -wifi module ------------ - -常量:wifi.STATION, wifi.SOFTAP, wifi.STATIONAP - -wifi.setmode(mode) - - 描述:设置wifi的工作模式 - mode:取值:wifi.STATION, wifi.SOFTAP或wifi.STATIONAP - 返回设置之后的当前mode - -wifi.getmode() - - 描述:获取wifi的工作模式 - 返回:wifi.STATION, wifi.SOFTAP或wifi.STATIONAP - -wifi.startconfig( channel, function succeed_callback ) - - 描述:开始智能配置,若成功自动设置ssid和pwd并退出 - channel:1~13,起始搜索信道。若不指定,默认为6,每个信道搜索20秒 - succeed_callback:配置成功后的回调函数,将在获取密码正确并连接上ap之后调用 - -wifi.stopconfig() - - 描述:中断智能配置 - -wifi.station module ------------------ -wifi.station.setconfig(ssid, password) - - 描述:设置station模式下的ssid和password - ssid:字符串形式,长度小于32 - password:字符串形式,长度小于64 - -wifi.station.connect() - - 描述:station模式下连接至ap - -wifi.station.disconnect() - - 描述:station模式下断开与ap的连接 - -wifi.station.autoconnect(auto) - - 描述:station模式下设置自动连接至ap - auto:0表示设置为不自动连,1表示设置为自动连接 - -wifi.station.getip() - - 描述:station模式下获取ip - 返回:字符串形式的ip,如"192.168.0.2" - -wifi.station.getmac() - - 描述:station模式下获取mac - 返回:字符串形式的mac,如"18-33-44-FE-55-BB" - -wifi.ap module ---------------- -wifi.ap.setconfig(cfg) - - 描述:设置station模式下的ssid和password - cfg:设置需要的map - -例子: - - cfg={} - cfg.ssid="myssid" - cfg.pwd="mypwd" - wifi.ap.setconfig(cfg) - -wifi.ap.getip() - - 描述:ap模式下获取ip - 返回:字符串形式的ip,如"192.168.0.2" - -wifi.ap.getmac() - - 描述:ap模式下获取mac - 返回:字符串形式的mac,如"1A-33-44-FE-55-BB" - -gpio module ------------ -常量:gpio.OUTPUT, gpio.INPUT, gpio.HIGH, gpio.LOW - -gpio.mode( pin, mode) - - 描述:设置对应pin的输入输出模式,将该pin初始化为gpio模式。 - pin:0~11,IO索引编号 - mode:gpio.OUTPUT或者gpio.INPUT - -gpio.read(pin) - - 描述:读取对应pin的值 - pin:0~11,IO索引编号 - 返回:0表示低,1表示高 - -gpio.write(pin, level) - - 描述:设置对应pin的值 - pin:0~11,IO索引编号 - level:gpio.HIGH或者gpio.LOW - -例子: - - pin=1 - gpio.mode(pin, gpio.OUTPUT) - gpio.write(pin, gpio.HIGH) - -将索引1的pin设置为GPIO模式,并设置为高电平。 - -net module ---------------- -常量:net.TCP, net.UDP - -net.createServer(type) - - 描述:建立一个服务器 - type:net.TCP或 net.UDP - 返回:net.server子模块 - -net.createConnection(type) - - 描述:建立一个客户端 - type:net.TCP或 net.UDP - 返回:net.socket子模块 - -net.server module -------------- -listen(port,[ip],function(net.socket)) - - 描述:监听某端口 - port:端口号 - ip:可忽略,ip字符串 - function(net.socket): 回调函数,当有连接建立的时候,作为参数传给回调函数。 - -例子: - - sv=net.createServer(net.TCP, false) - sv:listen(80,function(c) - c:on("receive", function(sck, pl) print(pl) end) - c:send("hello world") - end) - -close() - - 描述:关闭服务器 - -net.socket module -------- -connect(port, ip) - - 描述:连接到某ip和端口 - port:端口号 - ip:ip字符串 - -send( string, function(sent) ) - - 描述:向连接发送数据 - string:需要发送的数据字符串 - -on(event, function cb()) - - 描述:注册事件的回调函数 - event:字符串 - 可为:"connection","reconnection","disconnection","receive","sent" - function cb(net.socket, [string]):回调函数。第一个参数为socket连接。 - 若event为"receive", 第二个参数为接收到数据,字符串形式。 - -例子: - - sk=net.createConnection(net.TCP, false) - sk:on("receive", function(sck, pl) print(pl) end ) - sk:connect(80,"115.239.210.27") - sk:send("GET / HTTP/1.1\r\nHost: 115.239.210.27\r\n - Connection: keep-alive\r\nAccept: */*\r\n\r\n") - -close() - - 描述:关闭socket - -dns(domain, function cb(net.socket, ip) ) - - 描述:获取domain的ip - domain:字符串 - function cb(net.socket, ip):回调函数。 - 第一个参数为socket连接本身, 第二个为获取的ip, 字符串形式。