NodeMCU 远程开关

技术文章请注意时效!原理才是根本。

使用教程

简介

NodeMCU,是一个开源的物联网平台。 它使用Lua脚本语言编程。该平台基于eLua开源项目,底层使用ESP8266 sdk 0.9.5版本。该平台使用了很多开源项目, 例如 lua-cjson, spiffs. NodeMCU包含了可以运行在 esp8266 Wi-Fi SoC芯片之上的固件,以及基于ESP-12模组的硬件。

购买

大概十多块一个。

构建固件

这个网站:https://nodemcu-build.com/ 提供构建固件的服务,只要选好模块,构建完成后,就会发邮件通知。不过我使用一次后,就再也没有收到构建成功的邮件了。

还是自己手动编译,搜索github,有人已经做好了docker。 https://github.com/marcelstoer/docker-nodemcu-build/blob/master/README-CN.md

1.克隆nodemcu固件仓库 git clone https://github.com/nodemcu/nodemcu-firmware.git

2.拉取docker镜像 docker pull marcelstoer/nodemcu-build

3.更改编译配置 查找 https://nodemcu.readthedocs.io/en/master/en/build/ 文档,更改固件目录下的app/include/user_modules.h,app/include/user_config.h。

4.进入克隆好的固件目录,进行编译。

5.进入固件目录/bin中,得到编译完成后的固件。

刷入固件

为了避免不必要的麻烦,就不要尝试其他的烧录软件了。

flashmode需要根据芯片型号选择。

上传代码

推荐使用ESPlorer,需要Java环境。下载ESPlorer.zip。

注意连接的波特率根据刷入的固件不同而有所不同,就是上面编译固件时候规定的波特率。

lua代码教程

参考:https://github.com/wangzexi/NodeMCU-Tutorial ,由于api的变化,它的代码已经不适合自己编译好的固件了,对应改一下就可以,看我的github仓库也可以。思路是没问题的。

api文档(nodemcu documentation):https://nodemcu.readthedocs.io/en/master/

配置wifi的原理

nodemcu可以作为一个station连接到wifi,同时又能作为一个ap,为其他设备提供wifi连接。由于没有网线连接,被称为soft-ap。同时它还可以ap和station共存,可以实现中继的功能。

按一下按键,设置nodemcu为station和ap共存状态,手机脸上nodemcu的ap就可以配网了。

树莓派远程开关

买了一个路由器的ups,用来给树莓派供电,防止突然关机损坏树莓派sd卡。

nodemcu通过http协议去请求服务器的json数据,来控制继电器开关,进而控制树莓派电源。根据文档导入证书后,使用https协议连接不上,找毛病浪费时间,就不用https了。要用mqtt协议的自行研究。

实际上nodemcu连接两个继电器,控制树莓派电源和树莓派引脚的通断。 第一个继电器控制树莓派的一个GPIO信号。树莓派的这个GPIO拉高后,接地,平时是不通的,也就是GPIO一直是高电平。第一个继电器闭合后,树莓派的这个GPIO接地,变成低电平。树莓派通过检测这个GPIO变成低电平来执行shutdown命令关闭树莓派。等待二分钟后,保证树莓派已经关机,就控制第二个继电器关闭树莓派电源。

同时,由于树莓派不能读取ups剩余电量,就由nodemcu控制ups断电使用时间了。nodemcu检查网络断掉后,就认为已经断电,维持适当时间后,关闭树莓派。当来电后,nodemcu检查到网络联通后,就认为来电了,打开树莓派。

发表评论

电子邮件地址不会被公开。 必填项已用*标注