了解物接入-家庭温湿度交互式系统开发
2020.05.08 11:54浏览量:6721简介:了解物接入-家庭温湿度交互式系统开发 今天我来介绍一款家庭环境温湿度交互式系统,该系统基于NodeMCU开发板搭建,用于对家庭温湿度进行监测,并按照温湿度状态
了解物接入-家庭温湿度交互式系统开发
今天我来介绍一款家庭环境温湿度交互式系统,该系统基于NodeMCU开发板搭建,用于对家庭温湿度进行监测,并按照温湿度状态实现反控功能。
一.准备清单
- NodeMCU物联网开发板,型号ESP8266,淘宝有售(<20元)。
- DHT11传感器
- 百度天工物联网平台
二.硬件连接与固件烧录
1.硬件连接
连接ESP8266开发板和DHT11传感器,连接方式见下图:
2.驱动安装
安装驱动,以便于电脑正确识别开发板。NodeMCU ESP8266开发板一般支持CP2102和CH340驱动。
驱动安装包地址:
CP2102: https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers
CH340: http://www.wch.cn/search?q=340&t=downloads。
3.固件包下载
固件包地址:https://nodemcu-build.com/(build service)
(1)输入邮箱
(2)选择固件包偏好
(3)勾选接入协议,此处我们勾选MQTT和DHT,点击『start your build』等待固件包邮件发送。
(4)收到确认邮件,进行确认。之后会收到固件包邮件,点击链接进行下载。下载好的固件应该是以.bin结尾的。
4.正式烧录
烧录教程:https://nodemcu.readthedocs.io/en/master/flash/
此处我们选择esptool.py作为烧录工具。
链接地址:https://github.com/espressif/esptool
安装好后,用terminal进入到固件所在的路径,输入以下command来安装固件附:以下红字区域为常更改内容
esptool.py --port <serial-port-of-ESP8266> write_flash -fm <flash-mode> 0x00000 <nodemcu-firmware>.bin
注:<serial-port-of-ESP8266> 指的是驱动所在的路径。
<nodemcu-firmware>.bin为固件名称。
举例:
Command:Esptool-master/esptool.py --port /dev/tty.wchusbserial1420 write_flash -fm dio 0x00000 nodemcu-master-10-modules-2019-07-05-07-51-07-float.bin
意思为驱动路径为/dev/tty.wchusbserial1420,设备为:ESP8266 ESP-01,固件名称为nodemcu-master-10-modules-2019-07-05-07-51-07-float.bin。
固件烧录成功页面:
若固件烧录出现问题,输入以下command进行固件擦除,以重新输入。
esptool.py --port <serial-port-of-ESP8266> erase_flash
三.云平台设置
我们选择百度天工物联网平台对云端的数据进行加工与呈现。
1.账号创建与项目接入
(1)登录百度天工官网首页(https://cloud.baidu.com/),注册百度云账号。
(2)创建物接入项目:
在首页右上点击管理控制台,在控制台左侧【产品服务】中找到【物联网服务】—【物接入】进入到物接入的设置页面。
按照自己的需求购买合适的套餐。(1百万条/月,1元)。
购买完成后,点击左侧【+创建项目】。在配置信息中输入项目信息即可,点击右侧的提交。
返回物接入首页,可以看到新建的项目了。
注:项目名称下方那一排数字+字母的组合(红圈部分)是后台随机生成的,是项目的EndPoint。
2.物模型建立
(1)在项目列表中点击项目名称,进入项目详情页,点击【物模型】,进入物模型卡片列表;点击“新建物模型”进入物模型配置界面。
(2)在配置界面输入模型名称,需要添加的属性,因为需要上报温湿度和反控LED灯,此处创建3个相关属性,之后点击下方【创建】。
3.时序数据库创建
(1)创建时序数据库以存储物影子的数据。回到个人控制台首页,在控制台左侧【产品服务】中找到【物联网服务】—【时序数据库】进入到时序数据库的设置页面。
(2)点击【+创建数据库】进入创建数据库页面,填写配置信息。完成配置后点击左侧【下一步】确认订单并付款,完成数据库的创建。
(3)返回数据库列表,就可以看见我们刚刚新建的数据库啦。
4.物影子建立
(1)有了时序数据库之后,接下来对物模型的物影子进行编辑,在项目详情页左侧选择【物影子】进入物影子卡片列表;点击“新建物影子”进入物影子配置界面。
(2)输入配置信息,在【选择物模型】中选择我们之前创建好的物模型;打开存储配置,设置一下每个属性的存储配置然后在【数据存储到】中选择之前创建好的时序数据库。最后点击【创建】完成创建。
(3)在物影子创建成功后,会跳出一个黑框显示我们连接云端时需要的一些连接配置信息,非常重要记得保存!!如果忘记了也可以在物影子详情页点击上方【物详情】进入相关页面点击右上方的【连接配置】查看信息;注意,此时密码不会显示,所以一定要在第一次弹出时就记得保存。如果忘记密码,点击提示框下方的【更新密匙】即可。
(4)在物影子详情页点击上方【交互】可以查看一些我们在后面运用MQTT时需要用到的一些topic和它们的用法,建议在编写相关代码前先浏览一下。
注:在物影子详情页下方的原始数据会显示数据格式要求,后续在编写代码的时候,所上报的数据需要满足格式要求,才能够上传并存储在云端。
四.数据采集与反馈
1.连接开发板与电脑
在编写代码之前,需要先安装一个可以把code上传到开发板上的工具。
Code上传教程(https://nodemcu.readthedocs.io/en/master/upload/)
我们选择ESPlorer工具进行上传,注意必须在电脑上安装了JAVA才能使ESPlorer。
ESPlorer下载地址:https://github.com/4refr0nt/ESPlorer
打开ESPlorer可以看到以下界面。左侧为编辑代码,右侧为连接开发板后,运行代码的工作台。
(1)监测开发板与电脑的连接状况。在右上方(上图红框处)选择开发板的驱动以及在此下方设置波特率;这里波特率我设置的是115200。选择完成后点击open,如果出现下图红框中的消息,就证明你的开发板已经成功连接电脑啦。如果一次没有成功,试着换不同的波特率多试几下;常见波特率有9600和115200。
(2)上传代码。如果已有编辑好的代码,在左侧点击open打开你的代码文件。如果打算在ESPlorer中编写,直接在左侧黑框中编写即可,记得写好后一定要先点save将代码保存好。上传代码时,先打开开发板和电脑的连接和已经保存好的代码文件,点击左下方的upload等待运行,如收到如下信息
则证明代码已经上传成功。断开连接开发板和电脑的连接再重新连接,现在开发板上运行的就是刚刚上传的最新的代码了。
2.代码编写:
编写代码以实现(1)温湿度数据采集、(2)LED状态灯状态控制、(3)将采集到的数据上传到我们的物联网平台(通过MQTT连接)。
这里我用了lua编程,为了让传感器和开发板一通电就自动开始运行代码,记得将lua文件命名为init.lua。
将代码按照之前所说的方法上传到开发板后,再重启开发板,就可以看到开发板已经成功开始运行代码了。
打开百度天工物影子详情页,在下方的属性表格中,可以看到上传的数据和相应的更新时间:
我所使用的代码:https://github.com/Tian-Gong/Baidu/blob/master/Temperature%20and%20humidity%20monitoring%20code
3.反控操控led灯
采用百度天工物联网平台web端控制开发板led灯的开关。在开发板通电运行的情况下,打开物影子详情页,在下方的属性表格中,我们可以看到有【当前值】和【期望值】这两个选项。当前值就是我们上传的当前的相关数据,这里我们可以看到led的当前值是false因为它现在是关闭的。点击表格右上方的【编辑】,将led的期望值改为true并点击保存,表明我们期望led现在打开。此时我们可以看到开发板上的led亮了,点击刷新页面,可以看到led的当前值已经变为了true,因为我们在开灯的同时也上传了更新后的数据。关灯的话,将期望值改为false就可以了。
示意图如下:
4.展示数据/制作报表
对于上传的温湿度的数据,可以使用百度天工物联网平台的【物可视】功能制作一些好看的报表来展示我们的数据。
在个人控制台左侧【产品服务】中找到【物联网服务】—【物可视】进入到物可视的设置页面。首先我们创建一个工作区。
创建好工作区后点击工作区的头标进入工作区管理页。在这里我们创建一个新的仪表盘。点击左上【+创建仪表盘】会直接创建出一个空的未命名仪表盘,点击这个仪表盘进入到仪表盘的编辑页面。
在选择报表式样之前,我们点击上方的【数据】先新建一个数据表来提取我们存储在时序数据库里的数据。先填好数据表的基本信息(e.g. 名称,对应时序数据库),再点击【下一步】选择我们需要的参数最后点击确认就创建好啦;在这一步,我们可以设定一下【自动刷新】这个功能,这样在我们制作完成并发布报表后,报表会依我们设置的频率自动更新最新的数据。
如果我们只想针对当前值来做报表,我们可以再新建一个新的数据表。大部分操作同步骤3一致,只是在【新建数据表】里选择类型时记得选择【设备影子】。
创建好数据表后,我们点击上方设计回到报表设计页面,在左侧选择喜欢的报表样式,这里针对时序数据库的数据,我选择了【时序面积图】。将【时序面积图】拖动到中间的白板上,此时白板上会出现一个初始默认款式的报表。选定这个报表在右上点击【数据绑定】-【图表绑定】中的【序列】,在弹出的设置框中选定我们刚刚做好的时序数据库数据表【温湿度】并设置X/Y轴,最后点击【确认】就可以看到一个漂亮的报表生成啦!示意图如下:
针对物影子的数据表,我选择了【仪表指针】,大部分操作同步骤5,只是在选定白板上的初始默认报表后,右上点击【数据绑定】-【图表绑定】中的【指标值】,在弹出的设置框中选定我们刚刚做好的【物影子】数据表并选定想要展示的特定数值,最后点击【确认】就可以看到一个漂亮的报表生成啦!示意图如下:
最后我们返回仪表盘管理列表,点击将我们刚刚创建的仪表盘发布。发布后点击下方的【分享】获取分享链接。用在任意地点的任意浏览器打开分享链接,都可以看到我们刚刚做好的报表啦!关于物可视,还有很多有用的功能和报表式样可以尝试,如果感兴趣,可以多看看官网的帮助文档(https://cloud.baidu.com/doc/IOTVIZ/index.html) 进行了解。
- 结束
至此,整个模型从搭建到展示的过程就完成啦。过程不难,可以有效帮助了解物联网设备的开发;而且也还挺实用的,在这个天气多变的夏日~
发表评论
登录后可评论,请前往 登录 或 注册