了解物接入-家庭温湿度交互式系统开发

了解物接入-家庭温湿度交互式系统开发

今天我来介绍一款家庭环境温湿度交互式系统,该系统基于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) 进行了解。

 

 

  • 结束

至此,整个模型从搭建到展示的过程就完成啦。过程不难,可以有效帮助了解物联网设备的开发;而且也还挺实用的,在这个天气多变的夏日~

收藏 评论(2)
分享到:
共2条回复 最后由筱Myselfkv 回复于2019-08-24 08:38
#2 豆豆s95 回复于2019-08-13

哇~好棒!

物联网的时代要来了!

0
#3 lizzyooox 回复于2019-08-13

哇神奇的物联网~XD

0
#4 DuerOs开发者 回复于2019-08-13

0
#5 tc...c@163.com 回复于2019-08-23

棒棒哒

0
#6 筱Myselfkv 回复于2019-08-24

棒棒哒

0