温湿度传感器有哪几种
作者:LifeIsKillingMe
之前买了一块基于瑞芯RK3588的Rock 5b国产开发板,配置非常强大,我已经在上面跑了NAS->OpenMediaVault,软路由->OpenWRT,智能家居->Home Assistant等多个应用或者Docker容器,具体实现方法参看以下文章,主要步骤都罗列出来了。运行情况还是非常稳定的,一个月以来就死机了一次,看CPU利用率不到3%,内存(16GB)使用率不到20%,显然还大有潜力可挖。
于是我又翻出了尘封多年的树莓派各个传感器,基本上Rock 5b和树莓派的传感器还是兼容的,都是基于GPIO嘛,但是设置方法有一些差别。几年前我发过一篇文章,是讲树莓派和PowerBI集成温湿度监控平台的。
评论中有值友说除了用PowerBI的Streaming服务,也可以用InfluxDB+Grafana来实现,那么这次我就试验一下这一方案的可行性如何。
什么是Grafana
首先介绍一下Grafana,Grafana是一个监控仪表系统,是由Grafana Labs公司开源的的一个系统监测工具。它可以大大帮助简化监控的复杂度,只需要提供需要监控的数据,就可以帮你生成各种可视化仪表。同时它还有报警功能,可以在系统出现问题时通知你。
开源意味着这一工具完全免费,你也可以自己优化它的功能。同时,它支持多个数据源,如Prometheus,Graphite,OpenTSDB,InfluxDB,MySQL/PostgreSQL,Microsoft SQL Server等等。
构建你的第一个Grafana仪表盘
这里用Docker在Rock 5b上安装Grafana,首先确保5b已经启用了Docker环境,具体方法在前面的文章里有介绍。安装Grafana使用了一个范例,大家可以在后面括号的链接中找到相关代码的下载地址(教程来自这里)。
架构还是很清晰的,在这里我们启动了三个服务:
Prometheus普罗米修斯时序数据库,用来存储和查询你的监控数据
Promethues-exporter一个模拟数据源,用来监控你本机的状态,比如有几个 CPU,CPU 的负载之类
Grafana本尊
使用以下命令启动Docker。
docker-compose up
如果一切正常,三个docker容器将被启动,包括prometheus, service和grafana;其中prometheus是普罗米修斯时序数据库,service是普罗米修斯自带的数据生成器(监控本机 CPU 内存等信息),grafana就是Grafana 服务本身。然后,浏览器访问本地的3000端口,即可打开grafana网站。
初始的用户名是admin,密码也是 admin。输入之后,会要求改密码。
和PowerBI一样,第一步是配置数据源Add Data Source。Grafana 本身并不负责数据层,它只提供了通用的接口,让底层的数据库可以把数据给它。而我们起的另一个服务,叫 Prometheus则是负责存储和查询数据的。也就是说,Grafana 每次要展现一个仪表盘的时候,会向 Prometheus 发送一个查询请求。Prometheus-exporter 这个服务,会查询你的本地电脑的信息,比如内存还有多少、CPU 负载之类,然后将数据导出至普罗米修斯数据库。
可以看到Prometheus已经有了。
这里使用prometheus的域名9090端口来访问,这是之前的docker配置文件设置好的。
保存之后如果看到Data source is working的提示,就说明Grafana已经跟普罗米修斯成功建立了连接。
数据搞定了,下一步就是配置仪表盘了,选择Dashboards -> Import。
在这个网站下载仪表盘模板Json文件,在Grafana中上传。
选择刚才配置好的Prometheus数据源。
就可以生成非常酷炫的人生第一个Grafana仪表盘了,实时监控开发板的资源使用情况。因为我没有配置SWAP,所以有些数据是没有的。
安装InfluxDB 2.0
和prometheus一样,InfluxDB是一个专为时序数据设计的数据库,功能更加强大。docker安装方法如下(教程来自这里):注意InfluxDB已经升级到2.0版本,和之前的版本相比区别比较大,网上的不少教程都已经过期了。
首先启动docker
systemctl start docker
抓取influxdb的docker镜像
docker pull influxdb:2.0.7
写入influxDB配置文件并运行。
docker run --name influxdb -d
-p 8086:8086
--volume `pwd`/influxdb2:/var/lib/influxdb2
--volume `pwd`/config.yml:/etc/influxdb2/config.yml
influxdb:2.0.7
定义相关的账号密码。
docker exec influxdb influx setup
--bucket BUCKET_NAME
--org ORG_NAME
--password PASSWORD
--username USERNAME
--force
这里BUCKET_NAME可以认为是数据库的名字,而ORG_NAME是组织的名字,根据自己情况定义。
如果一切正常,就可以浏览器访问本地的8086端口打开InfluxDB。
如果打算使用InfluxDB 2.0的基本功能而不编写任何软件来写入或查询数据库中的数据,那么到这里就已经完成了。 但是,我这里要将传感器获取的数值传递到InfluxDB中的应用程序,并且要以编程方式获取访问令牌(Token)。
可以使用 influx CLI 使用以下命令检索令牌:
docker exec influxdb influx auth list
返回结果是如下格式:
但我关心的只有Token,用这个命令获取数组中的Token,并把它记录下来:
docker exec influxdb influx auth list | awk '/admin/ {print $4 " "}'
把这些内容整合起来就可以写一个完整的InfluxDB的安装脚本文件,执行后就可以生成完整的InfluxDB环境。
将BME280温湿度传感器连接至Rock 5b
可使用的温湿度传感器其实有不少,比如DT11,DT22,DS18B20等等,淘宝上的价格从几元到几十元不等。我这里是精度较高的BME280,这是一款集成温度、湿度、气压,三位一体的环境传感器。具有高精度,多功能,小尺寸等特点。DFRobot Gravity I2C BME280环境传感器采用Gravity-I2C接口设计,同时预留预留SPI接口,可以方便快捷的搭建产品原型,应用于环境监测,楼层高度检测,物联网控制等各种应用场景。Gravity I2C BME280环境传感器使用BOSCH最新MEMS微机电传感器,具备良好的稳定性。气压测量在整个温区非常稳定的,偏置温度系数1.5 pa/k,当温度变化时,1摄氏度的温度变化导致的误差仅在12.6厘米。这种稳定性,连同其多功能的特点,使得BME280可以适用于各种应用场景。
5b的连线和树莓派一样,因为引脚定义是一致的。
连好引脚是这个样子的。
传感器裸露在外面有点难看,于是我用微积木给它做了个塑料壳。
晚上不开灯甚至能用来做小夜灯。
这里要用到GPIO口的I2C,这里简单介绍一下I2C。
I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。主器件用于启动总线传送数据,并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件.在总线上主和从、发和收的关系不是恒定的,而取决于此时数据传送方向:如果主机要发送数据给从器件,则主机首先寻址从器件,然后主动发送数据至从器件,最后由主机终止数据传送;如果主机要接收从器件的数据,则主机器件寻址从器件.然后主机接收从器件发送的数据,最后由主机终止接收过程。在这种情况下,主机主要是负责产生定时时钟和终止数据传送。
开启5b的I2C的方法是修改config.txt启动文件,这和树莓派不同。
dtoverlay=rk3588-i2c0-m1
dtoverlay=rk3588-i2c1-m0
dtoverlay=rk3588-i2c3-m1
dtoverlay=rk3588-i2c7-m3
dtoverlay=rk3588-i2c8-m4
修改后续执行update_extlinux.sh命令生效。
一开始还是按照老方法查看
sudo apt-get install i2c-tools
sudo i2cdetect -y 1
奇怪的是返回结果是UU不是77。
网上查了很多资料才得知,代码里查询的是1通道的设备,但是同样的接线方式5b接线的是7通道,所以无论如何都无法运行。(来自文章)改成7果然就可以了。
sudo i2cdetect -y 7
使用的还是之前树莓派链接BME280的示例文件。
用文本编辑器打开,将默认地址改成0x77(原来是0x76)
尝试运行发现报错。
这里注意后面也要改成7通道,如smbus.SMBus(7),并用Python3来运行。
这下运行就成功了。
但是目前我只实现了在本地展示传感器实时数据,下面要做的是将数据上传至InfluxDB数据库。(参考了这篇文章)
访问InfluxDB的网站,可以查看到符合自己环境的influxdb客户端的安装配置脚本。通过pip install influxdb-client安装客户端。
张大妈这里输入过多代码会导致文章无法保存,所以这里只展示同步至InfluxDB的关键脚本截图。
在代码开头添加上图中导入InfluxDBClient等模块。
下面是客户端连接脚本。注意要修改用户名,密码和Token以符合你们的环境。
我希望客户端可以每隔五分钟将传感器的数值上传到InfluxDB上,可以通过修改crontab文件实现,命令如下:
自定义Grafana仪表盘
至此如果一切正常,传感器已经再源源不断地将数据传至数据库了。此时我们要做的是在Grafana服务器上连接InfluxDB数据库。
Add data source里选择InfluxDB的数据源。
配置时输入本地对应的Bucket,Organization,Token,和之前的脚本一样。
然后在下方写入Query脚本,使用的是FLUX语言,可以查看官方的介绍文档:
传感器总共检测三个值,温度、湿度和大气压,脚本里定义为temperature, humidity,pressure,可以编写简单的Query脚本如下:
语言很容易理解,读取的Bucket是“home”,时间范围是最近6小时,读取的参数为pressure。
执行后即可看到对应的的点状图,你也可以在右侧面板里对于展示效果做进一步调整。
同理,可以添加针对temperature, humidity的图表,放在同一个仪表盘上。默认视图下,右上角可以设置不同的时间筛选条件,设为自动刷新等等。
通过Garfana仪表盘我就能分析办公场所的环境特点了,办公室里湿度较低较干燥,而下午的温度呈升高趋势,难怪这么多同事喜欢用加湿器,看来我也得多用些保湿化妆品滋养我娇嫩的肌肤。
总结
这次总结了一下如何用Rock 5b开发板 + BME280传感器 + InfluxDB/Grafana打造动态温湿度监控平台的实现方法,不得不说作为一款开源产品Grafana的功能还是相当强大的,还有更多玩法有待我的发掘。
喜欢我的文章请点赞、收藏、评论,谢谢大家的支持!
贲琼世3125温度传感器分类有哪些?
黄雷养19284278065 ______ 温度传感器主要由热敏元件组成.热敏元件品种较多,市场 上销售的有双金属片、铜热电阻、钿热电阻、热电偶及半导体热敏电阻等.以半导体热敏电阻为探测元件的温度传感器应用广 泛,这是因为半导体热敏电阻器具有体积小、灵敏度高、精度高 的特点,而且制造工艺简单、价格低廉.温度传感器被广泛用于 家用电器中的热保护、温度控制中.
贲琼世3125温度传感器到底有哪些分类,智能温度传感器等也属于他打一种吗 -
黄雷养19284278065 ______ 按照温度传感器输出信号的模式,可大致划分为三大类:数字式温度传感器、逻辑输出温度传感器、模拟式温度传感器. 一、模拟温度传感器 传统的模拟温度传感器,如热电偶、热敏电阻和RTDS对温度的监控,在一些温度范围内线性不好,需...
贲琼世3125温度传感器的种类 -
黄雷养19284278065 ______ 感器按照其原理分类: 振动传感器 湿敏传感器 磁敏传感器 气敏传感器 真空度传...
贲琼世3125温度传感器型号有哪些?
黄雷养19284278065 ______ 热敏电阻一般就是利用金属氧化物陶瓷组成,可以说它是低成本灵敏度最高的温度传感器.相关的测温范围一般在-50到200度左右,这个温度传感器型号,是相当多的家用电器都会使用的一种.因为它的体积小而且响应时间快.此外低廉的价格也使得这种传感器型号得到了广泛的应用.
贲琼世3125常用的湿度控制器形式有哪些?
黄雷养19284278065 ______ 毛发湿度计、干湿球湿度计,还有电阻式和电容式湿度传感器与变送器. (1)毛发式湿度控制器的工作原理:人的头发、尼龙丝(或薄膜)在空气相对湿度变化时会产生伸缩....
贲琼世3125热电阻温度传感器的种类有哪些啊? -
黄雷养19284278065 ______[答案] 温度传感器目前有很多种,主流用到的是接触式热电偶和红外传感器,接触式热电偶包括:热电偶,热电阻 ,双金属温度计,热敏电阻,V型温度计.红外传感器有压电加速度传感器、压电速度传感器、压电位移传感器、压电传声器!
贲琼世3125传感器有哪些种类? -
黄雷养19284278065 ______ 你需要哪些了,霍尔传感器,超声波传感器,按用途分速度传感器,水位传感器,压力传感器,光照强度传感器,根据你的需要来选择,温度传感器,按原理有红外传感器,电容式传感器等,微波传感器,湿度传感器,位移传感器等,桥式应变片传感器.
贲琼世3125温度传感器都有哪些分类呢?
黄雷养19284278065 ______ 金属膨胀原理设计的传感器 金属在环境温度变化后会产生一个相应的延伸,因此传感器可以以不同方式对这种反应进行信号转换. 双金属片式传感器 双金属片由两片不同...
贲琼世3125房间温度传感器有哪几种?应用场合?安装位置?具体性能指标? -
黄雷养19284278065 ______ TE700 温度传感器是一种设计新颖、功能齐全的温度传感器.该传感器安装方便,灵活性强.除可以安装在房间内的墙面上,用于测量房间温度之外,还适合安装在室内吊顶里或下方用于测量房间回风温度. 此传感器通常与江森自控上海工厂...
贲琼世3125温湿度传感器与arduino用什么技术传输 -
黄雷养19284278065 ______ 这要看你采用什么型号的温湿度传感器,目前常见的有如下几种: SHT1x系列,其中最常见的是SHT10,这是一款数字式温湿度传感器,这也是Arduino上用的比较多的温湿度传感器,使用类IIC的协议进行传输. Si700x系列,其中最常见的是Si7006,使用IIC的协议进行传输. DS18B20,这是温度传感器,采用了1-Wire总线,一般通过单片机模拟1-Wire协议进行传输 模拟类型的传感器,比如热敏电阻,一般通过AD口进行模拟量采集后进行数据读取</ol>以上几种数字式传感器,Arduino都有对应的库,直接拿来用就可以,模拟类型的传感器,还与你的外围电路有关,读到AD后的数值后,再根据实际外围电路的设计进行数据转换.