热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

20分钟18块钱搭建简易环境监测站(esp8266(NodeMCU)+DHT11模块+百度天工云平台)

前言最近笔者所在公司有个物联网项目需要采集环境数据并做数据的可视化展示。由于之前没有做过相关项目,于是找了找市场上的物联网解决方案。在具体项目实践中,我发现物联网项目不像传统Web
前言

最近笔者所在公司有个物联网项目需要采集环境数据并做数据的可视化展示。由于之前没有做过相关项目,于是找了找市场上的物联网解决方案。在具体项目实践中,我发现物联网项目不像传统Web架构LNMP直接搞定,而是有各种协议和组件,如果没有好的解决方案,开发者需要耗费大量精力在解决数据接入、协议支持、数据处理等方面,开发效率实在是低下。

纠结了很多方案之后,我发现百度云天工物联网平台比较中意。为快速进行可行性验证,我在开始正式项目(也是基于ESP8266)之前,先用温湿度作为基础数据,做了这个小Demo进行练手,整个过程下来20分钟搞定,搭建了一个简易的环境温湿度监测站,并且效果非常不错,而且成本十分低廉,仅仅18元!!!于是整理出一篇文章,希望可以对大家提供一些有用的帮助。

效果图

首先是硬件实物图,很简单:
《20分钟18块钱搭建简易环境监测站(esp8266(NodeMCU)+DHT11模块+百度天工云平台)》

下面是云端的最终展示效果图,可以实时监控温度和湿度的变化:
《20分钟18块钱搭建简易环境监测站(esp8266(NodeMCU)+DHT11模块+百度天工云平台)》
感觉挺高大上有木有?闲话少说,Let’s begin!

材料准备

一个ESP8266模组,我用的是NodeMCU。(14元)一个DHT11温湿度传感器,可以直接从淘宝上买(4元)。百度天工云平台负责上报的数据存储和展现,我们使用最低的配额,还有免费的代金券,完全免费。一共18元搞定!

设备端代码下载编译烧写

端上的代码已经包含在百度iot-edge-c-sdk里面,我们直接clone下来:

git clone https://github.com/baidu/iot-edge-c-sdk.git

耐心等待一会儿。。。
进入工程目录:

cd iot-edge-c-sdk/practise/freeRTOS/ESP/dht11_iotdm_monitor
cat README.md

按照README里面的指导,没啥好说的,配置,编译:

export IDF_PATH=你的 ESP8266_RTOS_SDK 路径
export PATH=esp8266 toolchain 路径
make menuconfig # 按照README配置,还有SPI模式这里是`DIO`大小`4M`,也在`Serial flasher config`里面配置好
# 修改iot-edge-c-sdk的`component.mk`中加入```CFLAGS += -DESP8266_SOC_RTC```
make

现在就可以编译通过了,但是还无法连接mqtt server。还需要登陆百度天工进行配置注册等工作。可以用你的百度账号直接登陆,进去之后,左侧的菜单栏依次点击:产品服务->物联网服务->物接入Iot Hub,进入天工的管理控制台界面。之后点击创建计费套餐,(这里如果是第一次登陆,还需要开发者实名认证一下)如下图所示:

《20分钟18块钱搭建简易环境监测站(esp8266(NodeMCU)+DHT11模块+百度天工云平台)》

在购买规格里面填写1,一个月,100万条数据,对于我们的demo足够了,而且还是免费的哦。直接下一步。然后是支付页面,这里不需要支付任何费用,这样套餐就创建完成啦。

接下来开始创建项目。

进入管理控制台,点击创建项目,如下图所示:

《20分钟18块钱搭建简易环境监测站(esp8266(NodeMCU)+DHT11模块+百度天工云平台)》

这里的项目名称随便写,比如iotdm_test。项目类型选择设备型。点击右侧的提交按钮,项目就创建好了。

接下来,就要开始创建设备啦!在百度天工云平台中,云端的设备叫做物影子,其实就是物理设备在云端的一个实例,包含了设备当前所有的状态信息(比如当前的温度,湿度,开关状态等等)。关于物影子的概念以及创建方法,可以参考官方文档。anyway,如果你不想看文档 = =!也没关系,跟着我一步步来做就行啦:)

进入之前的管理控制台界面,点击我们刚刚创建的项目,之后就进入了设备创建的页面:

《20分钟18块钱搭建简易环境监测站(esp8266(NodeMCU)+DHT11模块+百度天工云平台)》
左侧有几个栏目:物模型 物影子 权限组 OTA远程升级,一步步来,我们先点击物模型,所谓的物模型简单说就是你给设备创建的几个属性的集合。我们的例子中,当然是temperaturehumidity这两个属性啦。于是,点击点击新建物模型之后进入属性的创建页面,名称随便写,比如dht11_model,点击添加属性,添加第一个属性,属性名称填写temperature类型为number单位为,就可以了,同样地,添加humidity属性,最终效果如下图所示:
《20分钟18块钱搭建简易环境监测站(esp8266(NodeMCU)+DHT11模块+百度天工云平台)》

这样物模型就创建好了。

接下来创建物影子,点击左侧的物影子,点击点击新建物影子,名称随便写,比如dht11_device_shadow,之后,选择物模型,就选刚才创建的物模型dht11_model,然后开启存储配置,因为我们有一个折线图,描述温湿度在过去一段时间的变化情况,所以需要把数据存储到百度时序数据库TSDB,看起来还有免费的代金券可以领,点击立即领取,点击开始使用,点击创建数据库,就进入到创建数据库的界面,如下图:
《20分钟18块钱搭建简易环境监测站(esp8266(NodeMCU)+DHT11模块+百度天工云平台)》

数据库名称随便写,比如dht11tsdb。下面的所有选项默认即可。点击下一步,进入支付界面,选择我们刚才免费领取的代金券,点击支付,这样我们的数据库就创建OK了。

再次返回到之前创建物影子到页面,数据存储到这里选择我们刚才创建的dht11tsdb,最后,点击创建,之后会弹出一个对话框,包含了我们需要的connect信息!!!!!如下图所示:

《20分钟18块钱搭建简易环境监测站(esp8266(NodeMCU)+DHT11模块+百度天工云平台)》

好啦,修改代码main/iotdm_client_sample.c

...
#define ADDRESS "ssl://xxxxxxxxxxxxxxxxxxx.mqtt.iot.gz.baidubce.com:1884"
// The device name you created in device management service.
#define DEVICE "yyyyyyyyyyyyy"
// The username you can find on the device connection configuration web,
// and the format is like "xxxxxx/xxxxx"
#define USERNAME "xxxxxxxxxxxxxxxxxxx/yyyyyyyyyyyyy"
// The key (password) you can find on the device connection configuration web.
#define PASSWORD "xxxxxx"
...

上面的ADDRESS就替换成刚才得到的连接信息中的SSL Address中的值(通讯链路是tls加密的,如果你希望不加密,这里就填写TCP Address中的值)。DEVICE就填写我们物影子的名称dht11_device_shadow,然后USERNAME PASSWORD就填写刚才连接信息中的name key,然后,重新编译,烧写,测试。

注意,关于DHT11与NodeMCU的连接,Demo程序里面选择的是GPIO5,也就是D1,不要搞错了。
《20分钟18块钱搭建简易环境监测站(esp8266(NodeMCU)+DHT11模块+百度天工云平台)》

上电运行,发现连接成功,并且实时数据每隔5s上报一次,我们再看看云端是否能够收到上报的数据呢?进入管理控制台,进入项目,再点击物影子,发现数据上报成功!!

《20分钟18块钱搭建简易环境监测站(esp8266(NodeMCU)+DHT11模块+百度天工云平台)》

到目前为止,接入部分就圆满结束了。咦,你在文章开头不是有一张很好看的监控界面吗?别急,点点鼠标就出来了。

生成监控界面

要生成监控界面,对数据可视化展现,也是非常简单方便的。进入管理控制台,点击左侧的物可视 仪表盘
《20分钟18块钱搭建简易环境监测站(esp8266(NodeMCU)+DHT11模块+百度天工云平台)》

点击新建仪表盘,之后就是一张画布了。我们从左边的控件库中拖入两个仪表盘一个时序面积图。光有图还不行啊,还需要关联我们tsdb里面的数据才行。
《20分钟18块钱搭建简易环境监测站(esp8266(NodeMCU)+DHT11模块+百度天工云平台)》

点击窗口上方的数据表,然后新建数据表,如下图:
《20分钟18块钱搭建简易环境监测站(esp8266(NodeMCU)+DHT11模块+百度天工云平台)》

注意上面用红色标记出来的两种类型,一个是时序数据库类型,个人理解就是如果需要把一段时间存储下来的数据展现的,就需要这种类型,我们的时序面积图就需要这样的类型。另一个是设备影子,就是设备的当前值,那当然就是两个仪表盘需要的类型啦,很简单。所以,我们需要创建两张表。

先创建第一张时序数据库
名称随意,比如dht11_tsdb_table,区域选择广州:
《20分钟18块钱搭建简易环境监测站(esp8266(NodeMCU)+DHT11模块+百度天工云平台)》

点击下一步,设置好如下几个域就可以了。点击确定。:
《20分钟18块钱搭建简易环境监测站(esp8266(NodeMCU)+DHT11模块+百度天工云平台)》

《20分钟18块钱搭建简易环境监测站(esp8266(NodeMCU)+DHT11模块+百度天工云平台)》

下面开始创建第二张数据影子表,名字随意,比如dht11_shadow_table
《20分钟18块钱搭建简易环境监测站(esp8266(NodeMCU)+DHT11模块+百度天工云平台)》

如上图选择我们之前的物影子,点击下一步。勾选涉及到的两个属性,之后确定,这张表也创建完成了。
《20分钟18块钱搭建简易环境监测站(esp8266(NodeMCU)+DHT11模块+百度天工云平台)》

好了,现在我们就可以绑定数据到控件上了,返回仪表盘,选中左边的仪表盘,选择右侧的数据设置菜单,点击指标值右侧的小图标,选择数据源,就是之前我们创建的dht11_shadow_table
《20分钟18块钱搭建简易环境监测站(esp8266(NodeMCU)+DHT11模块+百度天工云平台)》
并且选中temperature(Number)值域,之后点击绑定,这个仪表盘之后就现实温度的实时量了。
同样设置第二个仪表盘:
《20分钟18块钱搭建简易环境监测站(esp8266(NodeMCU)+DHT11模块+百度天工云平台)》
并且在样式设置中把显示的单位改一下,两个仪表盘的最终效果如下:
《20分钟18块钱搭建简易环境监测站(esp8266(NodeMCU)+DHT11模块+百度天工云平台)》

接下来设置折线图:
数据设置中点击数据表下拉中选择之前创建的dht11_tsdb_table时间轴选择timestampY轴中选择两个度量temperature humidity
《20分钟18块钱搭建简易环境监测站(esp8266(NodeMCU)+DHT11模块+百度天工云平台)》

预览一下,效果还可以呢:
《20分钟18块钱搭建简易环境监测站(esp8266(NodeMCU)+DHT11模块+百度天工云平台)》

大功告成!一个简易的环境检测站就好啦。

当然,这些都是最最基本的设置,比如OTA,权限,以及一些美化工作都还没有涉及。有需要可以参考文档,也是非常方便的。

后记

在使用百度天工云平台的过程中,个人感觉还是非常方便的,傻瓜操作,既可以满足一般开发者的基本需求,对于复杂的场景也有很好的覆盖,但就必须好好研读文档了。

这是一套最基础的温湿度采集上报系统。在此基础上,还可以增加其他功能,比如设置温度阀值,温湿度达到一定的阀值就触发红外开关控制空调等等,可以做很多事情。


推荐阅读
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
author-avatar
手机用户2502920971
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有