Nodejs+espruino+espjs+(NodeMCU esp8266 cp2102开发板)+vue 实现简单的物联网开发(点亮第一个LED灯)
espruinoAPI文档www.espruino.com/Reference
espjs文档www.kancloud.cn/shuai/espjs…
串口驱动下载链接pan.baidu.com/s/1hWOk78vh… 提取码: enfe
我选的就是那个NodeMCU的开发板
我自己的驱动是在这里下载的 www.silabs.com/developers/…
一、安装串口驱动
拿到板子第一件事就是将板子和电脑用USB连接起来,连接之后在设备管理器
中如果没有看到这个端口,那就要装驱动了;注意哈我这里使用的是cp2102的芯片,所以下载的是适配cp2102的驱动,下载完之后重启一下电脑
二、下载espjs脚手架
同样下载链接在espjs
文档里面有,下载对应的这个压缩包即可;
然后找个存储位置解压这个压缩包,以下是我解压的目录
然后把这个路径加到系统环境变量中
添加完成之后,验证的方式也很简单,在命令行窗口 输入espjs version
,能出来对应的版本号即可
这时候,我们可以将我们的设备写入espjs
配置中,使用espjs flash esp8266
,因为这个板子是esp8266的我才输入的esp8266 如果你是其他型号,就输入对应的型号写入即可,注意输入此命令的时候会自动弹出一个新的命令行窗口,此时等到百分之百窗口就会自动关闭了
关闭之后我们可以输入espjs blink
这个是一个闪灯的程序试验,如果你的板子上的LED灯在闪烁,就说明已经ok了;
三、利用espjs项目工程将我们自己的代码烧录到板子上
首先我们得先创建一个espjs init
创建一个espjs的工程
创建完的目录是这样的
然后我们这里用的IDE工具,是vsCode的代码编写工具
里面最开始的index.js
文件是这样的,就打印了一个hello world;
我们尝试着写一个我们自己的闪灯程序,我们简易版的闪灯程序就已经做好了
我们现在就可以把代码烧录到板子上,然后重启设备就能看到了
我们按照官方的说明的espjs upload
这个命令将文件都上传到开发板上去,下图这个我就是写入成功并且没有任何错误
紧接着就是见证奇迹的时刻我们输入espjs reboot
命令我们重启设备就可以看到我们自己的闪灯效果了,这个效果应该会比之前用那个espjs blink
命令的闪灯效果更快一些
至此我们的第一个小demo闪灯程序就ok了,以下是我的效果
现在是它自己亮灯,有没有办法我们直接控制它,亮灯灭灯呢,这必然是有的,espruino给我们提供了很多Nodejs一样的模块,具体我们可以对着文档去看,当然里面有些模块是在这里兼容不是很好,具体还得看开发实践中得效果
四、使用espruino里面的WiFi模块和http模块来搭建可以被控制的熄灭,亮起的LED灯
上面我们通过简单的闪灯程序,点亮我们第一个通往物联网大门的灯,现在我们要重新编写我们的代码了
1、首先我们先调试一下我们的wifi模块;看是不是真的有效;
这里我们写程序调试的话,就不能机械的去执行上面的 espjs upload
和 espjs reboot
那样不会有任何调试信息在控制台输出,需要用到espjs dev
命令,这里就可以进入开发者模式了,可以看到打印输出的信息
进入这个模式之后,无非还是两个操作,上传和重启,我们这里就先按U重新上传代码,然后在按R重启设备
ok 我们这里成功的连接了上了wifi 并且在控制台成功的输出了这个板子所在的IP地址了
2、我们可以使用http模块,来搭建一个服务,使得这个服务可以控制板子上的LED亮和灭
注意:我们使用了
espjs dev
之后它就自动会监视当前目录下的文件变化,如果有文件变化了就会自动上传写入,这时候我们只需要按一下R 重启设备即可
我们实现两个函数,一个创建服务的函数,另一个是请求服务的回调函数
最后我们在获取ip地址的那一块,调用startServer
函数
然后我们重启,看到下面这个输出的信息,我们的服务就启动成功
这时候我们可以利用接口调试工具来调试,我这里就用apifox
来测试一下,是不是可以进行亮灯和关灯的操作
这样其实我们的led灯的通断效果就可以达成了,然后大家可以自行对这个技术进行变种
例如自己买一个小型的电磁继电器和这个开发板连接,然后去控制电压稍大的电子元器件,也可以进行元器件和传感器之间的交互等等
我这里就只是做一个入门,以上的代码我已经上传到github上了github.com/nodewe/esp8…
五、总结与思考
1、 其实我原来一直在想怎么用js 简便的去开发物联网的程序,其实我也是看到b站上的一些视频然后得到一些启发,现在这个想法算是已经实现了
2、这个其实还可以使用mqtt技术对现有这个http的demo进行改造