微信小程序连接物联网(二):NodeMCU Lua学习笔记
索引
这是用微信小程序遥控开门的系列文章,具体微信小程序连接物联网的代码在第三章提及。
微信小程序连接物联网(一):初始化ESP8266 NodeMCU
微信小程序连接物联网(二):NodeMCU Lua学习笔记
微信小程序连接物联网(三):微信小程序远程遥控宿舍开门 基于NodeMCU通过MQTT协议连接阿里云物联网平台
上一章是记录esp8266初始化的步骤, 这章记录使用NodeMCU Lua时的学习笔记。记录常见的用法,都是参考官方的api文档的。
最新的模块用法参考官方api文档:
https://nodemcu.readthedocs.io/en/master/
我学习nodemcu lua时看的视频:
b站av22926769
(由于视频与现在新的sdk版本不同,具体用法还得参考官方api文档)
Lua跟Python语法有点类似,很快就能入手,参考菜鸟教程的Lua教程:
菜鸟教程Lua语法
使用ESPlorer,这个是NodeMCU在lua脚本语言下的开发工具(前提要有jdk)
gpio
函数 | 说明 |
---|---|
gpio.mode() | 初始化引脚为GPIO模式,设置引脚的IN / OUT方向,以及可选的内部弱上拉电路。 |
gpio.read() | 读取数字GPIO引脚值。 |
gpio.write() | 设置数字GPIO引脚值。 |
点亮esp8266上的灯
esp8266上的灯默认是与d4口相接,而且是输入低电平时亮起,高电平不亮
pin = 4
gpio.mode(4, gpio.OUTPUT)
gpio.write(4, gpio.LOW)
设置D1口为高电平
pin=1
gpio.mode(pin, gpio.OUTPUT)
gpio.write(pin, gpio.HIGH)
PWM
函数 | 说明 |
---|---|
pwm.close() | 退出指定GPIO引脚的PWM模式。 |
pwm.getclock() | 获取引脚的选定PWM频率。 |
pwm.getduty() | 获取引脚的选定占空比。 |
pwm.setclock() | 设置PWM频率。 |
pwm.setduty() | 设置引脚的占空比。 |
pwm.setup() | 将引脚设置为PWM模式。 |
pwm.start() | PWM启动,波形被施加到GPIO引脚。 |
pwm.stop() | 暂停PWM波形的输出。 |
设置D1口频率为500Hz 占空比为512
pin = 1
pwm.setup(pin, 500, 512)
pwm.start(pin)
pwm.setduty(pin, 0) -- 改变D1口占空比为0
pwm.stop()
设置D3口的舵机 转动一定角度3秒后复原
初始化舵机的频率为50HZ,占空比为 40 / 1024。
(控制舵机这段代码不一定正确,但实际使用中测试正常。如果有错误请指出)
pin = 3
pwm.setup(pin, 50, 40)
pwm.start(pin)
tmr.create():alarm(3000, tmr.ALARM_SINGLE, function()pwm.setduty(pin, 120)pwm.stop(pin)
end)
HTTP
执行GET / POST / PUT / DELETE以及自定义请求的接口。
不能使用此模块进行并发HTTP请求,由于ESP8266的内存限制,支持的页面/正文大小受可用内存的限制。尝试接收大于此范围的页面将失败。
每个请求方法都采用一个回调,当从服务器接收到响应时将调用该回调。第一个参数是状态码,它可以是常规HTTP状态码,也可以是-1,以表示DNS,连接或内存不足故障或超时(当前为60秒)。
函数 | 说明 |
---|---|
http.delete() | 执行HTTP DELETE请求。 |
http.get() | 执行一个HTTP GET请求。 |
http.post() | 执行一个HTTP POST请求。 |
http.put() | 执行一个HTTP PUT请求。 |
http.request() | 对任何HTTP方法执行自定义HTTP请求。 |
http.get()
执行一个HTTP GET请求。请注意,不支持并发请求。使用http先确保连上了wifi
句法
http.get(url, headers, callback)
参数
url 要获取的网址,包括http://或https://前缀
headers 要附加的可选附加标头,包括\ r \ n;也许nil
callback 收到响应或发生错误时要调用的回调函数;它被调用,参数status_code,body和headers。如果发生错误,status_code则设置为-1。
返回
nil
例
http.get("http://httpbin.org/ip", nil, function(code, data)if (code < 0) thenprint("HTTP request failed")elseprint(code, data)end
end)
http.post()
执行一个HTTP POST请求。请注意,不支持并发请求。
句法
http.post(url, headers, body, callback)
参数
url 要获取的网址,包括http://或https://前缀
headers 要附加的可选附加标头,包括\ r \ n;也可以nil
body 必须已经以适当的格式编码,但是可以为空
callback 收到响应或发生错误时要调用的回调函数;它被调用,参数status_code,body和headers。如果发生错误,status_code则设置为-1。
退货
nil
例
http.post('http://httpbin.org/post','Content-Type: application/json\r\n','{"hello":"world"}',function(code, data)if (code < 0) thenprint("HTTP request failed")elseprint(code, data)end
end)
WIFI
ESP8266支持3种工作模式
分别是”STA”、“AP”、“STA+AP”模式:
① STA模式:该模块通过路由器连接网络,手机或者电脑实现该设备的远程控制.
② AP模式:该模块作为热点,手机或者电脑连接wifi与该模块通信,实现局域网的无线控制
③ STA+AP模式:两种模式共存,既可以通过路由器连接到互联网,也可以作为WiFi热点,使其他设备连接到这个模块,实现广域网与局域网的无缝切换.
功能参考
函数 | 说明 |
---|---|
wifi.getmode() | 获取WiFi操作模式。 |
wifi.setmode() | 配置要使用的WiFi模式。 |
wifi.sta.config() | 设置WiFi站配置。 |
wifi.sta.connect() | 在站点模式下连接到已配置的AP。 |
wifi.sta.disconnect() | 在站点模式下与AP断开连接。 |
wifi.sta.getip() | 在工作站模式下获取IP地址,网络掩码和网关地址。 |
wifi.sta.getmac() | 在站点模式下获取MAC地址。 |
wifi.sta.status() | 获取工作站模式下的当前状态。 |
wifi.eventmon.register() | 注册/注销WiFi事件监视器的回调。 |
wifi.eventmon.unregister() | 取消注册WiFi事件监视器的回调。 |
wifi.eventmon.reason | 该表包含断开连接的原因。 |
例:连接名为f103的wifi
wifi.setmode(wifi.STATION)
station_cfg={}
station_cfg.ssid="f103"
station_cfg.pwd="11111111"
station_cfg.save=false
wifi.sta.config(station_cfg)
例:连接wifi回调事件
-- wifi eventmon
wifi.eventmon.register(wifi.eventmon.STA_CONNECTED, function(T)print("wifi connecting...")
end)wifi.eventmon.register(wifi.eventmon.STA_GOT_IP, function(T)ip = wifi.sta.getip()print("wifi connect:" .. ip)
end)wifi.eventmon.register(wifi.eventmon.STA_DISCONNECTED, function(T)print("wifi disconnect:" .. T.reason)
end)
时钟
函数 | 描述 |
---|---|
tmr.create() | 创建一个动态计时器对象。 |
tmr.delay() | 在处理器指定的微秒内忙循环。 |
tmr.now() | 返回系统计数器,以微秒为单位。 |
tmr.softwd() | 提供一个简单的软件看门狗,该看门狗需要在其过期之前重新设置或禁用,否则系统将重新启动。 |
tmr.time() | 返回系统正常运行时间,以秒为单位。 |
tmr.wdclr() | 喂系统看门狗。在while(True) 里加入防止MCU自动重启 |
tmr.create()
创建一个动态计时器对象;参见下面的方法表。
在控制功能中,可以使用动态计时器代替数字ID。也可以以面向对象的方式进行控制。
计时器对象支持的功能:
- t:alarm()
- t:interval()
- t:register()
- t:start()
- t:state()
- t:stop()
- t:unregister()
参数
没有
返回
timer 宾语
例
local mytimer = tmr.create()
mytimer:register(5000, tmr.ALARM_SINGLE, function (t) print("expired"); t:unregister() end)
mytimer:start()
计时器对象方法
tobj:alarm()
句法
tobj:alarm(interval_ms, mode, func())
参数
interval_ms 计时器间隔(以毫秒为单位)。最大值是6870947(1:54:30.947)。
mode 计时器模式:
- tmr.ALARM_SINGLE 一键式警报(无需致电unregister())
- tmr.ALARM_SEMI 手动重复报警(呼叫start()重新启动)
- tmr.ALARM_AUTO 自动重复报警
func(timer) 以计时器对象作为参数调用的回调函数
例:手动启动的时钟事件
Connect_timer = tmr.create()
Connect_timer:alarm(2000, tmr.ALARM_SEMI, function()print("test..")
end)Connect_timer:start()
例:一次性的时钟事件,相当于sleep(2000ms)再执行事件
tmr.create():alarm(2000, tmr.ALARM_SINGLE, function()print("test..")
end)
例:一直执行的时钟。
tmr.create():alarm(8000, tmr.ALARM_AUTO, function()print("test..")
end)
微信小程序连接物联网(二):NodeMCU Lua学习笔记相关推荐
- 微信小程序连接物联网(三):微信小程序远程遥控宿舍开门 基于NodeMCU通过MQTT协议连接阿里云物联网平台
索引 这是用微信小程序遥控开门的系列文章,具体微信小程序连接物联网的代码在第三章提及. 微信小程序连接物联网(一):初始化ESP8266 NodeMCU 微信小程序连接物联网(二):NodeMCU L ...
- 微信小程序连接物联网(一):初始化ESP8266 NodeMCU
索引 这是用微信小程序遥控开门的系列文章,具体微信小程序连接物联网的代码在第三章提及. 微信小程序连接物联网(一):初始化ESP8266 NodeMCU 微信小程序连接物联网(二):NodeMCU L ...
- 《微信小程序商城界面设计实战》--学习笔记作业
一.学习笔记 1.注释:wxml文档注释: css文档注释:/** **/ js文档注释:单行注释以"//"开头:多行注释以"/"开头,以"/&quo ...
- 七天学习微信小程序开发(一)—— 学习笔记
文章目录 前言 目标 第一天 -- 前端配置和编写 微信开发 微信小程序的代码结构 常用标签(wxml) 常用样式(wxss) 界面布局的技术 任务 第二天 -- 深度学习微信前端编写(一) 程序底部 ...
- 微信小程序-常用API开发技巧学习笔记
常用API开发技巧学习笔记 第一章 认识微信小程序 前后端分离的开发方式 小程序的特点 小程序对开发者的影响 学习小程序需要的基础 第二章 小程序环境搭建与开发工具介绍 小程序开发环境 没有小程序号对 ...
- 微信小程序 - - 云开发の云函数学习笔记
前后端分离:前端请求云函数(书写逻辑),后端请求数据库(操作数据) 一.云函数初体验 错误1:Cannot find module 'wx-server-sdk' # getData/index.js ...
- 微信小程序连接阿里云物联网平台操控设备(IOT)二
文章导航: 微信小程序连接阿里云物联网平台操控设备(IOT)一 设备上云 微信小程序连接阿里云物联网平台操控设备(IOT)二 微信小程序开发(一) 微信小程序连接阿里云物联网平台操控设备(IOT)三 ...
- 微信小程序连接阿里云物联网平台操控设备(IOT)一
文章导航: 微信小程序连接阿里云物联网平台操控设备(IOT)一 设备上云 微信小程序连接阿里云物联网平台操控设备(IOT)二 微信小程序开发(一) 微信小程序连接阿里云物联网平台操控设备(IOT)三 ...
- 微信小程序连接阿里云物联网平台操控设备(IOT)三
文章导航: 微信小程序连接阿里云物联网平台操控设备(IOT)一 设备上云 微信小程序连接阿里云物联网平台操控设备(IOT)二 微信小程序开发(一) 微信小程序连接阿里云物联网平台操控设备(IOT)三 ...
最新文章
- matlab中dither 函数,(转)matlab里一些简单的函数
- 【前端来刷LeetCode】两数之和与两数相加
- 企业关系网络分析,大数据时代淘金利器
- 没有连接上aspnetdb.mdf数据库
- Kubernetes安装之十:配置node节点之kube-proxy
- go语言快速刷《程序员面试金典》(2)
- php中define的参数_php中define的用法有哪些
- SAP License:SAP顾问你的路在何方?
- cin指定输入截止符
- swiper动态加载数据滑动失效,ajax执行后swiper.js的效果消失问题
- 整数数组的最大子数组
- sharelatex在centos 6.7 64位上的部署(2)
- win10计算机用户账户和密码,win10改administrator账户密码的方法
- 简单的网页在线咨询代码
- 图书销售系统需求分析获取
- Java 实例 – 打印平行四边形和打印倒立的三角形
- IpadOS15.4系统通用控制开启
- 1.python性能优化
- PHP如何读取txt文档域名集,并且生成数组/随机显示一个
- 雪后看疫情:一切能否变得更加清澈而透明?
热门文章
- 两台小米手机如何实现远程控制
- 社交电商如何运营推广?
- Kotlin扩展方法进化之Context Receiver
- python 多版本共存
- TimingLaba(定时播放软件)控制文件夹内音乐播放间隔的方法
- 从零开始入门 K8s | Kubernetes API 编程利器:Operator 和 Operat
- 【图文教程】注册Oculus开发者账号
- 10个谈话技巧让你平步青云
- 计算机动漫与游戏制作报告,计算机动漫与游戏制作专业课程体系建设总结报告.PDF...
- 微信小程序有时不自动换行 强制换行;tabbar兼容苹果底部小黑条;单行省略号