45187| 7
|
[案例教程]【NB-IoT 物联网开发板ESP32 TinkerNode】智能家居 |
Hello,大家好。本次项目将会使用Esp32的板载LED灯,在阿里云平台上,借助阿里云的IoT Studio WEB可视化开发功能,搭建一个远程控制灯的开关以及亮度的系统,这也是智能家居系统中一个典型的远程开关控制场景。 视频教程 为了方便大家的学习,除了文字教程外,我们还制作了视频教程供大家参阅。 元件清单 FireBeetle 萤火虫 ESP32微控制器 X 1 如果你是第一次使用ESP32,请先参照ESP32的官方wiki进行环境配置 :ESP32官方wiki 1. 阿里云IoT注册与产品创建 本次项目选择的是阿里云IoT作为项目的云平台,所以需要大家注册一个阿里云IoT平台的账号,并跟随接下来的教程,熟悉阿里云IoT平台的使用方法。 注册新用户 首先,打开阿里云IoT的首页 https://iot.aliyun.com/ 。点击右上角的免费注册,创建一个阿里云IoT的账号。 开通物联网平台 登录阿里云平台,点击右上角的工作台,即可进入阿里云控制台首页。 阿里云平台管理体系 在开始制作项目之前,我们需要先来了解一下阿里云IoT平台中的设备管理体系,如下图所示。 在阿里云的物联网平台中,有项目、产品和设备三种概念,它们是一种从属关系。在物联网iot中可以创建多个项目;一个物联网项目可以包含多个产品;一个物联网产品也可以包含多个设备。在这其中,每一个项目、产品以及设备,都有自己独立的管理界面,方便我们进行调试和数据的查询。另外,需要注意的一点是,在阿里云IoT平台中,同一个设备可以从属于多个不同的产品,同一个产品也可以从属于多个不同的项目,这一点在我们进行多项目开发时,是十分便利的。 新建项目 在物联网平台的页面左侧,选择IoT Studio -> 项目管理,点击新建项目,新建一个空白项目,如下图所示。 项目的名称,我们可以填写“智能家居”,如下图所示。 创建完成后,我们会进入“智能家居”项目的管理页面,如下图所示。 此时,我们就已经创建好了项目,接下来我们需要为这个项目添加产品和设备。 新建产品 在项目管理页面左侧的功能栏点击产品,在弹出的产品页面中选择创建产品,如下图所示。 产品的名称填写“物联网灯控”,所属品类选择“自定义品类”,其他选项默认,如下图所示。 完成后点击保存,此时我们已经在“智能家居”项目下创建了一个名为“物联网灯控”的新产品,如下图所示。 功能定义 接下来,我们需要对产品进行功能定义,这一步也叫作定义产品的“物模型”,物模型创建的过程就是通过协议描述产品的功能,定义产品有几组传感器数据,有什么控制功能,数据的类型是什么。 选择功能定义 -> 自定义功能 -> 添加自定义功能 ,如下图所示。 由于本次项目需要实现的目标是,通过云平台实现LED灯的开关,所以我们需要创建一个数据类型为bool类型的自定义功能(物模型)。 创建完成后,效果如下图所示。点击发布上线。 新增设备 完成了产品的功能定义之后,我们需要为“物联网灯控”产品,建立一个设备,这样我们就要可以将Esp32 开发板连接到阿里云平台了。 在弹出的窗口中,产品选择“物联网灯控”,添加方式选择自动生成,设备数量填写1,如下图所示。 到此,我们已经在阿里云平台上创建好了项目、产品和设备。 2. 代码调试 右击Arduino IDE图标,打开文件所在位置,点击libraries文件夹,下载并解压文末的库压缩包,把四个库文件夹复制到libraries文件夹下。重启Arduino IDE软件就可成功加载库环境。 在Arduino IDE中,点击文件->示例->DFRobot_IoT->Bedroom_Light,如下图所示。 在样例中,我们需要进行修改的有以下四个部分:
② 产品标识符设置 将该产品的产品标识符复制到代码中的Identifier变量值的双引号内,即下列代码所示:
③ 设备证书信息设置 将该设备的设备证书信息分别复制粘贴到代码中ProductKey、DeviceName、DeviceSecret变量值的双引号内,ClientId可设置任意参数,即下列代码所示:
④ 发布和订阅Topic设置 将发布和订阅的Topic信息填写在代码中对应位置,如下列代码所示:
至此,Arduino程序已经修改完成了,可以将代码上传至Esp32 开发板。 MQTT连接完成后,可以在设备管理界面看到设备显示在线,如下图所示: 至此,我们可以在阿里云IoT平台上对该设备进行在线调试。 在线调试 在设备管理界面选择在线调试,在调试设备栏选择调试真实设备,功能选择为“灯工作状态(LightStatus)”,方法选择为“设置”。在代码框中通过修改LightStatus的值为1,并点击发送指令,即可以实现控制Esp32板载LED开关的功能,如下图所示: 同时我们可以在Arduino IDE的串口监视器中看到TinkerNode收到阿里云iot平台发送的调试信息,如下图所示: 同时可以看到TinkerNode板载LED,随着LightStatus状态标识符的改变而变化。 至此,我们已经建立了Esp32与云平台的连接,并且可以通过云平台控制Esp32开发板上LED的开关状态。 3. IoT Studio Web可视化页面开发 在阿里云平台中,可以进行Web可视化页面的开发,这也是IoT Studio的核心功能,我们可以通过Web可视化页面开发,开发个性化的设备控制页面。接下来,就让我们为刚刚制作的智能家居项目,创建一个Web可视化页面吧! 在智能家居的项目管理页面,在左侧的功能菜单栏选择主页,在项目开发中选择Web应用,点击新建,如下图所示。 在弹出的窗口中,可以给新建的Web应用命名,这里我们命名为“智能家居控制页面”,如下图所示。 点击确认后,进入Web可视化开发的页面,我们可以看到,上方是基础的菜单栏,左侧为功能区,中间是可视化开发的画布,右侧是属性配置区,如下图所示。 在左侧的菜单栏,选择组件,如下图所示。 选择组件后,我们可以看到出现很多功能各异的组件,有指示灯、开关、按钮、仪表盘、时钟等,在这里阿里云还专门区分出了基础和工业组件,以及更细化的变配电组件。而工业组件相比基础组件,带有了更丰富的显示功能。如果是对工业场景有一定了解的朋友,这时候应该已经大概了解了可视化页面的功能,他与PLC中的组态是十分类似的。 点击指示灯组件,在右侧的配置栏点击配置数据源,如下图所示。 选择我们创建的“物联网灯控”产品,点击确定,如下图所示。 在设备的选项中,选择指定设备,在弹出的窗口中选择我们刚刚创建的设备,点击确定,如下图所示。 在属性选项,点击选择属性,在弹出的窗口中选择我们在产品中定义的功能(物模型)“灯工作状态”,点击确定,如下图所示。 此时我们可以点击验证数据格式,如果配置正确,系统会提示数据格式验证成功,如下图所示。 最后点击确定,完成指示灯的数据源配置。 全部完成后点击确认,完成开关组件的配置。 发布后,我们回到IoT Studio的主页,此时我们可以看到页面中多了一个名为“智能家居控制页面”的Web应用,并且发布状态已经变为“已发布”,此时我们可以点击右侧的发布地址,既可以进入该Web控制页面。 Esp32开发板上的LED灯了,最终发布页面的效果如下图所示。 另外,阿里云中也可以自行添加图片背景,大家可以自行尝试。 本项目同样适用于TinkerNode,请先参照TinkerNode的官方wiki进行环境配置:TinkerNode官方wiki,然后烧录TinkerNode版本代码。 |
1.64 KB, 下载次数: 4538
esp32
1.79 KB, 下载次数: 4502
tinkernode
老师您好!想问下您程序上传后串口监视器一直输出这个信息Recevice [/ext/error/a1jMWCbieSf/asGW8xB9ovLIN0zJh4Jw] {"code":520,"data":{"topic":"/sys/a1jMWCbieSf/${deviceName}/thing/event/property/post","productKey":"a1jMWCbieSf","deviceName":"${deviceName}"},"id":"123456","message":"no active session for a1jMWCbieSf&${deviceName}"}是怎么回事儿啊 |
aliteamer 发表于 2022-6-22 18:22 改一下topic.把${deviceName}改成DeviceName String DeviceName = "led11"; /*需要上报和订阅的两个TOPIC*/ const char * subTopic = "/sys/a1UfuGOV44D/led11/thing/service/property/set";//****set const char * pubTopic = "/sys/a1UfuGOV44D/led11/thing/event/property/post";//******post |
aliteamer 发表于 2023-9-6 15:21 easyiot网址:https://iot.dfrobot.com/ |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed