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

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7558|回复: 1

NodeMCU+Arduino上云LED灯

[复制链接]
发表于 2019-3-20 14:47 | 显示全部楼层 |阅读模式
概述
本Demo通过在NodeMCU上运行Arduino,完成了一个通过本地开关和远程云端可控制的LED灯小程序。Demo中开发板通过MQTT协议连接到阿里云物联网平台。


物料清单
硬件(5)

软件(1)

代码(1)







NodeMCU

Node MCU使用了ESP8266 SOC,本Demo中将在上面运行Arduino Framework. 其他基于ESP8266的开发板过程类似。


X1



LED灯

无描述信息


X1
[color=rgba(102, 102, 102, 0.3)]



按键开关

无描述信息


X1
[color=rgba(102, 102, 102, 0.3)]



电阻

本实验用了两个10K ohm的电阻


X2
[color=rgba(102, 102, 102, 0.3)]



连接线

若干条够用就可以


X10
[color=rgba(102, 102, 102, 0.3)]







方法&步骤
第1步在云端创建智能灯设备
创建过程请参考另外一个Demo中的说明,步骤类似。这一次创建的还是高级版的设备,名称为smartLight,但是不需要自己定义属性,可以从预定义好的分类中直接选择,联网方式仍为WiFi.




按照上述分类创建出来的产品,默认有一个可读写的灯状态LightSwitch, 0表示关闭,1表示打开。之后创建该产品的一个设备,设备名称可以自动生成。

创建设备成功后,进入设备详情页,复制刚刚创建出的设备的ProductKey, DeviceName和DeviceSecret,接下来设备开发时要使用(也可到下一步时再复制)。


第2步在Hacklab中下载、编辑代码



参考这里下载这个新Demo的代码,这一次要执行的git clone命令为:
git clone https://code.aliyun.com/legenddcr/nodemcu_led.git

代码下载后,从文件树打开工程中的main.cpp文件,并在图中对应部分填写本地Wifi网络以及上一步创建出的设备三元组后,保存修改的文件。注意由于使用的ESP8266库限制,请使用2.4GHz信道的Wifi网络。






第3步下载、启动本地Device Agent
关于Device Agent的作用和详细说明请参考Hacklab设备开发文档.

Hacklab中,可以在IDE的状态栏上看到如下的Device Agent下载按钮,点击下载,IDE会根据你所使用的系统自动下载对应的版本的Device Agent程序。



注意:每个用户下载的Device Agent包中包含该用户对应IDE实例的唯一认证信息,因此请勿将该压缩包发送给其他人,该Device Agent只能由用于连接用户自己的IDE。

下载完毕后解压缩下载到本地的zip包。启动Device Agent之前,打开IDE,查看其中的Device View (可通过菜单View中的Device进入),会看到如下界面,表示当前并无远程的Device Agent连接到IDE中:




解压后Device Agent目录如下(以Windows为例):


接下来让我们运行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为例):



再次查看IDE中的Device View,本地设备管理Tab中状态已经从等待远程Device Agent连接变成已连接状态,如果本地开发机上还没有开发板接入,会显示如下:






第4步编译、烧写镜像
点击底部工具栏上的Build按钮开始构建当前这个新工程nodemcu_led的镜像。



将开关、LED和开发板参照下图连接到一起。将LED灯正极接入到Node MCU开发板D5,开关按键的数据(图中白色连接线)连接到开发板D2。LED连接电路和开关的正负极连接电路上分别加入一个电阻。



Device agent启动后,开发板通过串口连接到开发机,就能如下在IDE的Device面板中看到设备了:



然后类似构建镜像过程,点击底部工具栏上的Run,开始烧写镜像到开发板直到烧写完成:



此时应该可以看到LED灯亮起了。


第5步本地+云端控灯


点击Device面板中设备名称,会打开串口命令行。然后通过按连在电路上的开关可以控制灯的亮灭,同时在串口日志中也输出了对应的信息,每操作一次开关,设备端就会像云端上报一次本地灯的状态。



打开云端设备的控制台,在运行状态中打开实时监控,可以看到设备端的灯状态实时同步到了云端:



然后打开云端控制台上的设备调试界面,从云端下发开关灯指令给设备端:



相应的在Hacklab IDE的设备串口日志中我们收到了云端对应的命令,并且灯的状态也可被云端改变:





小结
总结一下,我们通过在线的设备开发利器Hacklab,无需安装本地开发工具的情况下,快速完成了一个连云的LED灯设备的开发。这个Demo中无需手动安装Demo依赖的JSON解析库,以及连接阿里云物联网平台的库AliyunMqttArduino,Hacklab会在构建镜像前自动帮我们完成依赖库的下载安装过程。




 楼主| 发表于 2019-3-20 14:58 | 显示全部楼层
Hacklab地址:https://hacklab.aliyun.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 14:41 , Processed in 0.071817 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表