NodeMCU+Arduino上云LED灯-Arduino中文社区 - Powered by Discuz! Archiver

~旭日东升~ 发表于 2019-3-20 14:47

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会在构建镜像前自动帮我们完成依赖库的下载安装过程。




~旭日东升~ 发表于 2019-3-20 14:58

Hacklab地址:https://hacklab.aliyun.com
页: [1]
查看完整版本: NodeMCU+Arduino上云LED灯