我们在InfluxDB,Grafana,Docker和Raspberry Pi上创建空气质量控制传感器

是否曾想过监视房屋内外的空气质量:您在哪里生活和工作? 我们将这个项目命名balenaSense ,是一个用于测量温度,湿度,大气压力和空气质量的单元,以及一个仪表板,您可以从任何地方访问该仪表板以查看摘要统计信息并跟踪趋势。



目录内容



引言


为了控制空气和气象站的质量,需要使用许多电线和各种传感器,但是在将所有读数组合在一块好的小板上的传感器出现之后,情况就变得更加容易了。



考虑使用直接连接到Raspberry Pi的多合一传感器而无需其他组件来监视温度,湿度,大气压力和空气质量。 您不需要任何电子方面的经验,但是欢迎使用烙铁(尽管它也是可选的)。 该项目实现了一个用于存储历史读数的数据库以及用于查看当前读数并立即查看趋势的图形界面。





必要的设备


这是您需要为此项目购买的。 根据您是否要使用烙铁,我们选择了一块传感器板:有些可以立即工作,有些需要少量焊接。



我不想焊接


如果您不想焊接,则需要:


我想焊接-给我!


如果您乐于拿起烙铁,那么您将需要:


其他传感器


如果您已经有了某种传感器,那么该项目将为Sense HAT提供额外的好处:LED矩阵上的笑脸(当然取决于空气质量)!



带有提升管的Bosch BME680可以从不同的供应商以不同的价格订购。


注意事项 在本文中,我们使用Pimoroni:该板还有一个额外的优势,即可以按正确的顺序断开Raspberry Pi GPIO的触点。 使用其他电路板时,您需要验证电源,接地和I2C总线引脚(SDA和SCL)是否匹配-稍后在手册中对此进行说明。

软体类


我们在GitHub上打开了balena-sense项目,其中包含工作系统所需的所有软件,配置和代码。 我们将在一个免费的balenaCloud帐户上部署该项目,以分发Raspberry Pi的所有软件,并提供远程访问。 因此,您将需要:


设备组装


该项目在硬件方面的工作很少。 我们的目标是将传感器板连接到Raspberry Pi的GPIO引脚。

BME680通过称为I2C(眼见方)的总线与Raspberry Pi进行通信,该总线是具有两根线的串行总线。 这两条线称为同步线(SCK)和数据线(SDA)。 除了两根线外,还必须为传感器供电(3.3V或3V3)并将其接地。

如果您选择的选项没有从Pimoroni或Sparkfun焊接或使用Sense HAT,只需将闪亮的新组件连接到Raspberry Pi,即可完成所有连接:继续下一步!

如果您决定使用Pimoroni或其他转接卡将传感器直接连接到Raspberry Pi,则主要是确保上述触点(SDA,SCK,3V3和GND)的正确连接。



pinout.xyz是在Raspberry Pi上使用GPIO的有用站点; 它清楚地表明我们需要引脚1(3V3电源),3(SDA),5(SCL)和9(接地)。 在Pi 2和更高版本上,标准配置为40引脚GPIO。 如果使用Pimoroni板,则触点的连接顺序正确,无法连接板。 注意板上的铭文与上面的引脚图匹配。



但是,如果您以这种方式连接传感器,那么来自Raspberry Pi处理器的热量将影响读数。 为了收集更准确的读数,您需要从板上卸下传感器: 使用杜邦的母对母(或Jumper Jerky电缆来完成此操作 ,如下所示:



同样,如果您使用另一个传感器,但其引脚排列图不完全匹配,则可以使用相同的方法将这些板连接到Pi。 最主要的是确保符合3V3,SDA,SCL和GND。 如果开发板上有用于SDI,SDO,CS的触点-您可以忽略它们,因为它们用于备用SPI接口,我们在此项目中不使用它们。

在上面的照片中,我们有Raspberry Pi 3A +,但Pi Zero也适合作为更便宜的解决方案。

配置Raspberry Pi


我们将使用balenaOS操作系统来刷新SD卡,附加到balenaCloud云,在此处添加设备并配置项目,以便以后可以轻松更新。

首先,您需要设置一个balenaCloud帐户。 这意味着注册,添加应用程序和添加设备。

步骤1.注册balenaCloud


如果您已经拥有GitHub或Google帐户,则可以使用它登录而无需完成注册过程。

步骤2.创建应用程序


通过选择正确的设备类型和Starter作为应用程序类型来添加应用程序,然后单击Create New Application 。 此类型支持所有微服务,最多可免费使用十个设备。

接下来,将带您到新创建的应用程序的仪表板,在其中可以进行下一步并添加设备。 您可以为应用程序指定一个任意的名称,但是在编写代码时,稍后将需要使用它。

步骤3.添加设备并启动操作系统


创建应用程序后,您可以通过单击绿色的“ 添加设备”按钮将设备添加到此应用程序。 添加设备时,请指定正确的设备类型。 如果要连接到无线网络,则可以设置WiFI SSID和密码。

注意:动画中指示了Raspberry Pi 3,请不要忘记选择正确的设备类型!



此过程将为应用程序和设备类型创建一个自定义映像,其中包括网络设置(如果已指定)。

注意:对于初学者来说,最好选择一个开发映像来进行一些测试和故障排除。 有关显影和生产图像之间差异的更多信息,请参见此处 。 如果您确定可以立即开始部​​署生产映像-请。

步骤4.记录SD卡和启动设备


加载OS映像后,就该刷新SD卡了。 您可以为此使用balenaEtcher



该过程完成后,将SD卡插入Raspberry Pi中并连接电源。



设备首次启动时,它会连接到balenaCloud仪表板,然后您可以在联机列表中看到它并转到下一步。



故障排除:设备应在几分钟后出现在面板上。 如果未出现,则出了点问题。 该文档提供了详尽的故障排除指南,其中包含有关可能发生这种情况的大量信息。 如果文档没有帮助,请联系论坛

软件部署


准备好Raspberry Pi,下载并连接到balenaCloud后,就可以在设备上安装应用程序代码了。

在工作站上安装Balena CLI工具


BalenaCloud允许您将应用程序软件/代码远程传输到Raspberry Pi和其他设备。 为此,您的工作站(不是Raspberry Pi)必须满足一些最低软件要求。 注意:要成功部署此项目,您不需要通过SSH或从balenaCloud仪表板在设备本身上运行任何命令。 一切都是远程完成的!

如果您的计算机上已经有(或可以配置) npm ,则这是运行CLI工具的最快方法。 还有用于Windows,macOS和Linux的二进制文件注意:如果您已经为我们的其他项目安装了这些工具,则可以跳过此部分,直接进入下一步。

CLI工具的文档描述了npm软件包的安装和配置以及二进制文件。

在安装并运行CLI后,第一步是通过运行balena login命令balena login





如果该帐户中注册了有效的CLI,则可以在Raspberry Pi上安装程序了。

从GitHub下载项目


下一步是从GitHub下载该项目的代码

蓝色按钮将加载项目zip文件,但是如果您已经熟悉Git,则可以git clone常规方式使用git clone

在Raspberry Pi上安装


由于已安装CLI和最新代码,因此您可以使用一个命令在balenaCloud上运行此代码。 在那里,将收集并配置Docker映像,该映像将在您的设备上运行。

balena push <appName>后,从项目目录运行balena push <appName> ,其中appName是在手册开头指定的应用程序名称。 例如, balena push balenaSense

如果一切都正确完成,则几分钟后,控制面板上设备的信息屏幕应显示正在运行的服务,每个软件组件都应有一个,如下所示:



第一次下载可能需要几分钟(取决于您的Internet连接速度),但随后只下载容器中的更改,因此一切都快得多。

注意:当应用程序首次启动时(并且您使用的是BME680,而不是Sense HAT),传感器将执行大约5分钟的“老化”。 在此期间, 不会读取读数并将其插入数据库。 该应用程序将记录倒计时,该倒计时显示在balenaCloud面板中:



当计数达到零时,您将看到消息“正在启动循环...”。 之后,将每10秒钟读取一次读数并将其插入数据库中。

查看仪表板


我希望您已刷新设备,连接到网络并且可以正常启动。 使用免费的balenaCloud帐户的一大好处是Public Device URL功能。



激活此开关,然后单击蓝色箭头图标以访问仪表板。 您可以共享此链接,也可以在手机或其他设备上为其添加书签。 连接balenaSense设备并正常工作后,您可以从任何地方查看仪表板!



如果您不想启用公共访问,仍然可以通过IP地址从您自己的本地网络查看仪表板,如上面的屏幕截图所示。 您的设备将有所不同,但是只要在浏览器中输入http://<ip-> ,并且与设备位于同一网络上,您仍然可以访问仪表板。 例如,要访问我的设备,我将输入http://10.1.231.36

如果要登录Grafana并使用设置,则默认凭据为adminadmin

如何运作?


该项目具有三个主要组成部分,三个服务。 这些名称在balenaCloud仪表板上:

  • InfluxDB-用于存储传感器读数的数据库
  • 传感器-用于访问传感器,获取读数并将其保存到数据库的Python库和代码
  • Grafana-用于创建带有图形和报告的仪表板

博世的BME680传感器可检测温度,湿度,压力和气体电阻。 温度,湿度和压力传感器开箱即用,但是仅气体电阻读数不是很有用。 这些是空气成分变化的指标。 传感器启动时,它将设置基准,然后监视变化。 空气质量的指示性指标以百分比表示,并考虑了湿度和耐气体性的影响。

如果使用没有气体电阻传感器的Sense HAT,我们将根据目标温度和湿度值估算空气质量读数。

接下来是什么?


我希望现在您已经完全启动了该项目,可以访问仪表板,可以读取数据并开始填写数据库。 提到一些更重要的事情。

修改密码


如果打开设备以供公众访问,建议更改Grafana的密码。



我们使用用户名和默认密码admin admin设置系统。 要更改它们,请使用面板左下角的按钮登录到Grafana。 首次登录时,系统将提示您更改密码。

客制化


用于仪表板和报告的Grafana程序具有许多配置参数和设置。 我们创建了一个基本面板,显示四个计量选项中每个选项的图表。



您可以将鼠标悬停在标题上并继续进行编辑,从而自定义每个Grafana面板。 我建议您使用这些设置-仪表盘中的更改不会自动保存,因此,如果您输入有误,只需重新加载页面,一切便会恢复为原始形式。 如果要保存更改,请单击控制面板顶部的保存 ,所有设置将保存在设备上。



您也可以配置传感器。 例如,在压力表图上,我们设置了几个基本范围和文本值而不是数字。 所有这些改变了您的品味!

房屋


这种传感器非常适合放置在气象亭中 ,以保护传感器免受阳光和辐射热的影响。 如果您控制房间内的环境,这并不是很重要,但是如果传感器安装在室外,则其位置和保护对于获得准确的读数很重要。

天气摊位有售 ,但价格可能非常昂贵,因此请考虑选择DIY

Thingiverse拥有多个BME680建筑物气象站

最后的想法


感谢您的阅读! 如果您决定建立自己的具有空气质量控制功能的气象站,请告诉我们一切进展如何,出现了什么问题。 有关我们项目开发的想法可以在论坛上表达。

Source: https://habr.com/ru/post/zh-CN449484/


All Articles