NodeMCU+Arduino上云LED灯
https://iotx-aep-communitysupport-prod.oss-cn-shanghai.aliyuncs.com/demo/1552534518717_3983974概述本Demo通过在NodeMCU上运行Arduino,完成了一个通过本地开关和远程云端可控制的LED灯小程序。Demo中开发板通过MQTT协议连接到阿里云物联网平台。
物料清单
硬件(5)
软件(1)
代码(1)
NodeMCUNode MCU使用了ESP8266 SOC,本Demo中将在上面运行Arduino Framework. 其他基于ESP8266的开发板过程类似。
X1
LED灯无描述信息
X1
按键开关无描述信息
X1
电阻本实验用了两个10K ohm的电阻
X2
连接线若干条够用就可以
X10
方法&步骤
第1步在云端创建智能灯设备
创建过程请参考另外一个Demo中的说明,步骤类似。这一次创建的还是高级版的设备,名称为smartLight,但是不需要自己定义属性,可以从预定义好的分类中直接选择,联网方式仍为WiFi.
https://iotx-aep-communitysupport-prod.oss-cn-shanghai.aliyuncs.com/editor/1552631595910_68377409
按照上述分类创建出来的产品,默认有一个可读写的灯状态LightSwitch, 0表示关闭,1表示打开。之后创建该产品的一个设备,设备名称可以自动生成。
创建设备成功后,进入设备详情页,复制刚刚创建出的设备的ProductKey, DeviceName和DeviceSecret,接下来设备开发时要使用(也可到下一步时再复制)。
第2步在Hacklab中下载、编辑代码
https://iotx-aep-communitysupport-prod.oss-cn-shanghai.aliyuncs.com/editor/1552632019348_78258747
参考这里下载这个新Demo的代码,这一次要执行的git clone命令为:git clone https://code.aliyun.com/legenddcr/nodemcu_led.git
代码下载后,从文件树打开工程中的main.cpp文件,并在图中对应部分填写本地Wifi网络以及上一步创建出的设备三元组后,保存修改的文件。注意由于使用的ESP8266库限制,请使用2.4GHz信道的Wifi网络。
https://iotx-aep-communitysupport-prod.oss-cn-shanghai.aliyuncs.com/editor/1552632140787_4500493
第3步下载、启动本地Device Agent
关于Device Agent的作用和详细说明请参考Hacklab设备开发文档.
在Hacklab中,可以在IDE的状态栏上看到如下的Device Agent下载按钮,点击下载,IDE会根据你所使用的系统自动下载对应的版本的Device Agent程序。
https://iotx-aep-communitysupport-prod.oss-cn-shanghai.aliyuncs.com/editor/1552893088331_23361422
注意:每个用户下载的Device Agent包中包含该用户对应IDE实例的唯一认证信息,因此请勿将该压缩包发送给其他人,该Device Agent只能由用于连接用户自己的IDE。
下载完毕后解压缩下载到本地的zip包。启动Device Agent之前,打开IDE,查看其中的Device View (可通过菜单View中的Device进入),会看到如下界面,表示当前并无远程的Device Agent连接到IDE中:
https://iotx-aep-communitysupport-prod.oss-cn-shanghai.aliyuncs.com/editor/1552893187725_13515645
解压后Device Agent目录如下(以Windows为例):
https://iotx-aep-communitysupport-prod.oss-cn-shanghai.aliyuncs.com/editor/1552893233597_2257186
接下来让我们运行Device Agent。由于启动脚本使用相对路径调用Device Agent可执行程序,执行以下命令时,当前工作目录应当为agent解压后的根目录。
[*]Linux/Mac用户:在Terminal中执行
$ cd <agent path>
# Mac
$ ./run-mac.sh
# Linux上为了访问硬件,可能需要以sudo权限运行该脚本
$ ./run-linux.sh
[*]Windows用户: 在命令行中执行以下命令,或者也可直接双击run-win.bat批处理文件来启动。
cd <agent path>
.\run-win.bat
Device Agent运行窗口将会运行,如下图所示(以Windows为例):
https://iotx-aep-communitysupport-prod.oss-cn-shanghai.aliyuncs.com/editor/1552893291606_7054215
再次查看IDE中的Device View,本地设备管理Tab中状态已经从等待远程Device Agent连接变成已连接状态,如果本地开发机上还没有开发板接入,会显示如下:
https://iotx-aep-communitysupport-prod.oss-cn-shanghai.aliyuncs.com/editor/1552893359422_64504260
第4步编译、烧写镜像
点击底部工具栏上的Build按钮开始构建当前这个新工程nodemcu_led的镜像。
https://iotx-aep-communitysupport-prod.oss-cn-shanghai.aliyuncs.com/editor/1552632758515_46188276
将开关、LED和开发板参照下图连接到一起。将LED灯正极接入到Node MCU开发板D5,开关按键的数据(图中白色连接线)连接到开发板D2。LED连接电路和开关的正负极连接电路上分别加入一个电阻。
https://iotx-aep-communitysupport-prod.oss-cn-shanghai.aliyuncs.com/editor/1552633348984_22272067
Device agent启动后,开发板通过串口连接到开发机,就能如下在IDE的Device面板中看到设备了:
https://iotx-aep-communitysupport-prod.oss-cn-shanghai.aliyuncs.com/editor/1552633534858_49486889
然后类似构建镜像过程,点击底部工具栏上的Run,开始烧写镜像到开发板直到烧写完成:
https://iotx-aep-communitysupport-prod.oss-cn-shanghai.aliyuncs.com/editor/1552633595640_60949878
此时应该可以看到LED灯亮起了。
第5步本地+云端控灯
https://iotx-aep-communitysupport-prod.oss-cn-shanghai.aliyuncs.com/editor/1552633965197_4515182
点击Device面板中设备名称,会打开串口命令行。然后通过按连在电路上的开关可以控制灯的亮灭,同时在串口日志中也输出了对应的信息,每操作一次开关,设备端就会像云端上报一次本地灯的状态。
https://iotx-aep-communitysupport-prod.oss-cn-shanghai.aliyuncs.com/editor/1552634134246_5757449
打开云端设备的控制台,在运行状态中打开实时监控,可以看到设备端的灯状态实时同步到了云端:
https://iotx-aep-communitysupport-prod.oss-cn-shanghai.aliyuncs.com/editor/1552634211831_9662678
然后打开云端控制台上的设备调试界面,从云端下发开关灯指令给设备端:
https://iotx-aep-communitysupport-prod.oss-cn-shanghai.aliyuncs.com/editor/1552634296622_51499771
相应的在Hacklab IDE的设备串口日志中我们收到了云端对应的命令,并且灯的状态也可被云端改变:
https://iotx-aep-communitysupport-prod.oss-cn-shanghai.aliyuncs.com/editor/1552634352885_85162110
小结
总结一下,我们通过在线的设备开发利器Hacklab,无需安装本地开发工具的情况下,快速完成了一个连云的LED灯设备的开发。这个Demo中无需手动安装Demo依赖的JSON解析库,以及连接阿里云物联网平台的库AliyunMqttArduino,Hacklab会在构建镜像前自动帮我们完成依赖库的下载安装过程。
Hacklab地址:https://hacklab.aliyun.com
页:
[1]