bme280 环境传感器开发板_自制多功能温湿度传感器节点以及室内温湿度数据可视化系统...

4fed49745acb9d512c239565427abead.png

声明:本人对模仿本文实验造成的人身伤害和财产损失不负责任,请注意安全、佩戴护目镜等防具。本文使用的VPN技术仅作传感器数据加密用途。

本文内容如题。此系统功能有:远程查看当前室内温湿度、屏幕显示当前室内温湿度、远程查看温湿度随时间变化曲线、Siri等语音助手控制空调等。

所需材料如下:

  1. 任意ESP8266开发板或最小系统(不需要SPI、代码支持OTA升级)-10元;
  2. Arduino ESP8266开发环境, 需要的库为EspMQTTClient、Adafruit_AM2320、SSD1306Brzo、IRremoteESP8266 -免费;
  3. AM2320 I2C 温湿度传感器模块(此传感器性价比较高,请自行搜索参数,也可自行选择其他合适传感器)-10元;
  4. SSD1306 128*64 I2C OLED屏幕 -10元;
  5. 5cm*7cm洞洞板,如封面所示 -3元两个;
  6. 跳线若干 -5元一堆;
  7. TSAL6200红外发射二极管 -5元10个;
  8. 22欧电阻,可选同时并联100欧电阻 -10元几百个;
  9. 焊台、松香等拆焊工具耗材 -50~200元
  10. USB数据线 -2元;
  11. Openwrt无线路由器(作为L2TP客户端加密传感器数据);
  12. 运行Linux(Ubuntu)系统的云服务器/局域网服务器;

配置Arduino ESP8266开发环境本文不详述。最后两项的基础知识请自行学习,如不需要加密通讯可不用Openwrt无线路由器,或使用SSL加密代替VPN,具体方法本文不详述。

一、温湿度传感器节点

NodeMCU开发板的引脚编号定义参考此图:

782e3b98b6477232311448b12181198d.png

硬件部分:

将开发板如图所示放置:

de0fc90fa20c5a8b8bfadb4b93a42e12.png
右排针右侧留出两排洞,留给红外LED

AM2320: 电源+ -> 3V3,GND -> GND;信号SDA -> D2,SCL -> D1

屏幕: 电源VCC -> 3V3,GND -> GND;信号SDA -> D3,SCL -> D5

红外部分:并联22欧和100欧电阻,正极方向从开发板下方走线连接D6,红外LED负极连接右侧的GND。阻值为计算所得,仅适用此型号红外LED,若使用其他红外LED可能会过压损坏。

具体走线请自行摸索,建议先在面包板连接后测试,确定元件正常和连接正确后再焊到洞洞板上。

软件部分:

git clone https://gitee.com/cyjason2000/TandH_Node.git

使用带数据传输功能的USB2.0数据线,或者USB转TTL连接电脑与开发板,然后用安装好所需库的Arduino打开SimpleMQTTClient_home_display_IR文件夹中的.ino文件,编辑WiFi SSID与密码,还有等一下介绍的MQTT服务地址端口、账号密码。

在Arduino开发板菜单选中ESP8266通用或自己的开发板。Baud rate 选择115200,编译并写入。写入之后,如果后续要加入新功能,可以通过浏览器访问串口输出的OTA升级Web界面地址,上传编译后的.bin文件升级。

bfc45bf07c977539b97f9556ce3caca9.png
OTA升级Web界面

二、搭建MQTT和数据可视化服务

本部分需要Linux、MySQL、计算机网络相关知识,本文仅提供在Ubuntu18.04 Server搭建方法。

1.L2TP/IPsec服务

声明:此VPN服务仅用于个人隐私保护、敏感数据加密等合法用途。

安装脚本:

https://teddysun.com/448.html​teddysun.com

然后用Openwrt路由器作为客户端,其下的设备都可以通过VPN加密连接到服务器,无需担心传感器数据泄露。具体原理请自行学习计算机网络相关知识。

2.MQTT服务

简单地说,MQTT服务就是在物联网设备间转发消息的服务,详细介绍请自行搜索。

有两种常用的MQTT服务:EMQX和Mosquitto。其功能相似,在本文中使用到的功能几乎相同,区别只在API不同。EMQX按照其官网文档指引下载安装,中英双语。

https://docs.emqx.io/broker/latest/cn/​docs.emqx.io

Mosquitto服务的安装教程满天飞,就不造轮子了。

3、MySQL

安装,新建“mqtt”数据库,添加一个仅有“mqtt”数据库完整权限、可远程访问的账号。请自行学习数据库、MySQL相关知识。

4、Apache2(可选,可用其他Web服务代替)

自己写一个主页,包含有Web界面服务端口的超链接。请自行学习计算机网络、Apache和HTML相关知识。

5、关键步骤:MQTT消息转存MySQL

使用mqtt2sql项目,按照README操作:

https://github.com/curzon01/mqtt2sql​github.com

如果执行mysql.sql报错,可以使用我改写的:

https://gitee.com/cyjason2000/mqtt2sql​gitee.com

操作完成后,修改单片机代码里的账号密码等,编译写入,半分钟后查询mqtt数据库的mqtt表,若查询到类似图中信息则配置成功。

18307f3c5108469fd4703e56655a86bb.png

6、Grafana服务

Grafana是一个数据可视化Web服务,支持多种数据来源,包括MySQL。

Grafana: The open observability platform​grafana.com
d59fa7b142f20b8c3ada37b0af992ebb.png

在Grafana官网按其提供的方法安装。添加dashboard,填写SQL查询。

64267693fc5d226ccefd903f2267a13c.png
温度查询示例

请自行学习SQL查询与函数。

等待一段时间即可绘制出如下图温湿度随时间变化曲线。

48869ae4da45ec886db7195b079531d2.png
这肯定不是变频空调

7、Siri控制格力空调

简单来说就是用“快捷指令”SSH连接到服务器,向Localhost的MQTT服务的home/ctrl主题发送一条"GreeAC_on_26"或者"GreeAC_off",订阅了此主题的开发板收到后通过红外LED发射相应的遥控信号。SSH的具体命令参考EMQX文档的API,或使用Mosquitto自带的Pubclient。

IRremoteESP8266库非常强大,还支持三菱等品牌,也可以录制Raw信号,几乎可以控制一切红外遥控电器。可以自行修改Arduino代码适配自家电器。

三、总结

本文的教程非常不详细,对新手极度不友好,但算是授人以渔。如果不去了解学习,复制粘贴命令做出来的东西没有意义。有的轮子确实没必要重复造,比如文中使用的mqtt2sql项目,但是这个项目的.sql是不适合最新版本MySQL的,如果我不去看源码搞清楚来龙去脉,我还在写自己的mqtt to sql呢。因此,总是要抱着学习的心态去折腾这些没什么实际意义的小东西,虽然结果是useless的,但是过程相当有意思。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值