资料介绍
描述
什么
本指南介绍了一种 Raspberry Pi 设备,该设备可确定大气颗粒物(空气污染的主要成分)在给定环境中的存在水平。
这里使用的传感器足够精确,可以根据公认的机构报告生成测量值。它还包括一个集成环境传感器,可以测量温度、湿度和气压 (T/H/P)。
该设备运行以 Python 编写的以传感器为中心的定制数据流平台,可轻松用于任何类似 Debian 的 Linux 发行版。
该平台包括一个库和工具,用于配置和管理传感器并发布它们的数据,以及在数据基础设施的其他地方(即不在传感器设备上)使用的工具,以有用的方式转换、解释和保存生成的传感器数据流.
如何:硬件
我不会详细介绍如何设置 Raspberry Pi 、在其上安装 Raspbian 、启用 I²C 接口、在首次启动时启用 WiFi 或在首次启动时启用 SSH,因为其他人已经很好地完成了这项工作的确。但是,在本指南的其余部分,您将需要所有这些。
Sensirion SPS30颗粒物传感器使用 JST 的ZH 型 1.5 毫米间距连接器(数据表),为此在美国采购预制电缆组件被证明是一项重大挑战!
Sensirion 的支持团队竭尽全力提供帮助,但他们的建议只让我找到了裸露的母连接器,我既没有专业知识也没有材料可以将其变成可用的组件。幸运的是,我最终能够找到我需要的东西。
我还想在设备中加入环境感应功能,最近我刚好在漂亮的分线板上订购了一些BME280传感器。
为了促进设备之间的模块化和易用性,我更喜欢非永久性连接方法,例如公/母杜邦式接头和连接器,这就是我在这里使用的方法。
所需的大部分结构非常简单:我将 BME280 焊接到一个小型永久原型板上,Raspberry Pi 的跳线进入该板 - 携带 3V3 和 5V 分别满足 BME280 和 SPS30 - 以及 ZH -5 组件(当然只携带 5V 电源)连接到 SPS30。
(请注意上面标题中的重要更正:非常感谢ti-tipakorn提醒我!有时间我会更新 Fritzing 图。)
I²C 总线的主要优点之一是设备寻址,它允许许多设备共享同一条物理总线,在这里我只需要为这两个设备将五个引线(5V
、3V3
、GND
、SDA
& SCL
)带到我的板上。
以防图表没有完全清楚,Pi 的引脚连接如下(指向pinout.xyz的链接更多信息):
-
5V
从引脚 2 -
3V3
从引脚 1 -
SDA
来自引脚 3(Broadcom 引脚 2) -
SCL
来自引脚 5(Broadcom 引脚 3) -
GND
从任何接地引脚。上图显示为引脚 14 以更好地适应图表,但“zed”实际上使用引脚 6,因为它最接近 I²C 引脚。
请务必注意,SPS30 是一种双模式设备,因此可以在UART (串行)或 I²C 模式下运行。因此,必须注意注意接口规范中突出显示的注释,正如我在上面通过将引脚4和5 连接到GND
:
我使用这块直接暴露 MicroUSB 电源和接地的小板,这样我就可以避免在 RPi 本身上使用 MicroUSB 电源连接器,这不会让它以所需的方向安装在外壳中。
(精明的读者可能会注意到这是一个更新:最初的构造使用的是 Adafruit Powerboost 1000C,因为我还没有可用的 MicroUSB 分线板。项目照片确实显示了“zed”,而是使用了 Powerboost 1000C。好眼力!)
说到外壳:我发现我当地五金店的户外电器部分类似于制造商的糖果店:每次我在那个过道上徘徊时都能找到灵感。
在这种情况下,我选择了一个2 出口防风雨电气导管盒,两个出口彼此相对(180 度):我希望这会产生通过外壳的被动气流。我还沿着两个出口之间的轴安装了 SPS30,直接沿着气流的路径(SPS30 的入口是绿色部分中的白色小矩形,就在黑色风扇罩下方)。
所有东西都塞进了外壳,用一点管道和大猩猩胶带“固定”,并挂在天花板平面以下几英寸(或:“头部水平”以上几英尺)的墙上。
这种安装策略以及外壳有助于确保传感器尽可能少地受到外部环境短期变化的影响。
如何:软件
作为一名接触过大量硬件的软件工程师,我一直很欣赏硬件,但我自己从来没有做过太多的事情。今年,我开始着手改变这种状况,从我闲置多年的备用 RPi 开始。
那次小小的探索逐渐失控,哪里有软件可写,我自然而然地倾向于写它。这就是RPJiOS的由来。
您可能会注意到,我已经省略了有关软件本身的许多细节:我正在雄心勃勃地计划一个完全基于此的单独项目指南!请继续关注(祝我好运)...
进入设置。以下所有命令都必须在 Raspberry Pi 本身上运行。在首次启动时启用WiFi和SSH很容易。
以下内容已经过测试可以正常工作 - 在William R确定并详细说明了对过程的关键修复之后,非常感谢!- 在 Pi Zero W 上全新安装Raspbian Stretch Lite 2018-11-13 。
-
你需要
git
这个,所以如果你还没有安装它,请务必先安装它:
$ sudo apt install -y git
- 克隆存储库:
$ git clone https://github.com/rpj/rpi.git
-
在克隆创建的新目录中,运行:
rpi
setup.sh
$ cd rpi/
$ ./setup.sh
请不要以超级用户 (root) 身份调用。setup.sh
该脚本可能会请求sudo
您访问所需实用程序的特定安装,但总的来说您不想以超级用户身份运行该脚本。
安装脚本可能需要一段时间,具体取决于安装的干净程度和设备的速度:在全新安装操作系统的零 W 上大约需要 20 分钟(标准住宅互联网连接)。
一旦设置成功(如果不成功,请联系并告诉我!):
-
创建一个
config.json
启用 SPS30@0.5Hz 和 BME280@1Hz 的文件,如下所示:
{
"redis_config": { "host": "localhost" },
"sensors": [
{
"name": "BME280",
"config": { "frequency" : 1 }
},
{
"name": "SPS30",
"config": {
"frequency": 0.5,
"shared_object_path": "CHECKOUT_PATH/rpi/env/lib/python2.7/site-packages/rpjios/devices/libsps30.so"
}
}
]
}
(重要:您必须替换为您最初将 git 存储库克隆到CHECKOUT_PATH
的封闭路径,例如。总有一天我会解决这个问题。) /home/pi
(config.json
还有许多未说明的其他选项,请参见此处的示例。)
如果您在查找libsps30.so
驱动程序库时遇到问题(我听说它可能没有像应该的那样由setup.sh构建),我已经为最近的 Raspbian 操作系统发布了二进制文件的预构建版本。只需下载该文件并将其放置在您如上配置的目录中(如果按照此示例进行操作),您就大功告成了!shared_object_path
/home/pi/rpi/env/lib/python2.7/site-packages/rpjios/devices/
$ source env/bin/activate
(rpjios venv) $ export REDIS_URL="redis://localhost"
(rpjios venv) $ ./bin/sensors-src config.json
* Loading configuration from config.json
* Using Redis configuration: {u'host': u'localhost'}
* Configured sensors: BME280, DS18S20 (disabled), NetInfo (disabled), SysInfo (disabled), TEPT5700 (disabled), LM335 (disabled), LM335 (disabled), Soil (disabled), DHTXX (disabled), SPS30
* Loaded 'BME280' type=BME280 channel=zed:sensor:BME280>:
{'name': 'BME280', 'hostname': 'zed', 'frequency': '1Hz', 'location': None, 'calibration_data': {'dig_H1': 75, 'dig_H3': 0, 'dig_H2': 332, 'dig_H5': 50, 'dig_H4': 400, 'dig_H6': 30, 'dig_P9': 5000, 'dig_P8': -12000, 'dig_T1': 27678, 'dig_T3': 50, 'dig_T2': 26477, 'dig_P1': 37060, 'dig_P3': 3024, 'dig_P2': -10666, 'dig_P5': -2, 'dig_P4': 6811, 'dig_P7': 12300, 'dig_P6': -7}, 'channel': 'zed:sensor:BME280', 'description': 'Bosch I2C low power pressure, temperature & humidity sensor'}
* Loaded 'SPS30' type=SPS30 channel=zed:sensor:SPS30>:
{'name': 'SPS30', 'hostname': 'zed', 'driver_version': '1.0.0-6-g836d5fc', 'frequency': '0.5Hz', 'location': None, 'serial_number': "'7B4242424242D1'", 'channel': 'zed:sensor:SPS30', 'description': 'Sensiron SPS30 particulate matter sensor'}
...
-
要轻松验证数据是否按预期流动,请
redis-cli
在本地使用:
$ redis-cli
127.0.0.1:6379> PSUBSCRIBE *
Reading messages... (press Ctrl-C to quit)
1) "psubscribe"
2) "*"
3) (integer) 1
1) "pmessage"
2) "*"
3) "zed:sensor:BME280"
4) "{\"source\": \"zed:sensor:BME280\", \"type\": \"VALUE\", \"ts\": 1546035881.156941, \"value\": {\"temperature\": 82.04924976702895, \"timestamp\": 1546035881.0, \"humidity\": 35.60792598092815, \"pressure\": 1018.030467350658}}"
...
(您会在这里看到 RPJiOS 使用命名空间约定“ hostname:type:sensorname
”作为它发布的键名。)
-
要轻松地将发出的传感器数据转换和/或转发到另一个
redis
实例,请使用该downsample
工具。 -
此示例仅将本地(选项)SPS30 传感器 ( ) 中的所有内容转发到
-i
名为“ frank” ( ) 的主机上,频率为传感器发送数据 ( ) 的十分之一:-p
-o
-r
(rpjios venv) $ ./bin/downsample -i "redis://localhost" -o "redis://frank" -r 10 -p "*SPS30*"
(downsample
非常灵活,有多种使用模式,更多示例可以在 中找到README
。但最终,来源是您最好的信息来源。绝对是双关语。)
- 当然,您可能希望在虚拟环境之外运行这些命令,例如在启动时。没问题!虚拟环境中包含的 python 二进制文件使这变得简单:
(rpjios venv) $ which python
/home/pi/rpi/env/bin/python
使用此路径而不是系统 python 来调用上面讨论的任何工具,您将准备就绪。
守护进程留给读者作为另一个练习,因为根据您的需要,有多种方法可以实现它。
最后,稍后您会看到这些数据通过管道传输到ThingSpeak以进行聚合、可视化、分析和操作。
实现此目的的工具非常简单,并且在大约一个小时内完成编写,说明了将新功能附加到数据流的轻松程度。
要运行它,请确保您处于虚拟环境中(或使用适当的 python 二进制文件)并使用通道 ID 和写入 API 密钥作为仅有的两个命令行参数:
(rpjios venv) $ ./bin/thingspeak CHANNEL_ID WRITE_API_KEY
您可能已经注意到, RPJiOS 还支持许多其他传感器类型,包括一些不需要额外硬件的“虚拟”传感器,例如Sys和Net 。试试看吧!
教训
- SPS30 非常灵敏!尽管我尽最大努力将它与日常人类活动隔离开来,但它非常清楚地知道我们何时忙碌和走动,无论我们在房子的哪个位置。非常令人印象深刻!
- 在我多年单独使用 python 和 C 的过程中,我以前从未尝试过直接将 C 共享库与 python 集成。这非常容易!另一个喜欢 python 的原因。
- 您可能需要的一切都可以在 eBay 或 AliExpress 上以非常便宜的价格获得,但您必须提前计划!运输几乎总是最便宜和最慢的品种,所以虽然它(到目前为止)对我来说非常可靠,但它们也与较长的运输时间相当一致。
结果
RPJiOS.com将带您到 ThingSpeak 仪表板,获取由集成MATLAB 分析引擎生成的派生空气质量指数(基于此公式)。
此外,这是原始 SPS30 数据的通道和原始 BME280 环境数据的通道。
MATLAB 与 ThingSpeak 的集成还允许人们生成引人注目但有用的仪表板:
(别担心,我已经知道我的时间戳已关闭。)
此外,ThingSpeak 的 React 引擎支持触发操作,例如当空气质量达到阈值水平时在 Twitter 上发出警告。整洁的!
回馈
受到欢迎和鼓励!请在这里发表评论或给我发消息,在 Twitter 上(也在这里)与我联系或在 GitHub 上提交问题。社区让创客变得如此有趣!感谢您的关注!
- 光子空气颗粒物监测仪
- 颗粒物传感器开源分享
- 通过Raspberry Pi的物联网有源蜂鸣器
- 从Alexa控制Raspberry Pi(Linux设备)
- 通过Raspberry Pi的简单物联网按钮教程
- 可视频直播的Raspberry Pi网络控制机器人 14次下载
- 数字式通用颗粒物浓度传感器PMS7003的数据手册免费下载 12次下载
- PMS5XXXST颗粒物传感器中文数据手册详细资料免费下载 15次下载
- 《爱上Raspberry Pi》中译版-电子书籍.pdf 0次下载
- Instant Raspberry Pi Gaming 6次下载
- Raspberry_Pi详解 15次下载
- 含有颗粒物混合液体密度计设计与实现_贺洪江 2次下载
- raspberry_pi各版本差别 0次下载
- 柴油发动机尾气颗粒物研究进展
- 利用振动原理实时检测大气颗粒物浓度的方法研究
- 基于Raspberry Pi 5的蜂窝物联网项目 1027次阅读
- 使用Raspberry Pi Pico W和MicroPython开发物联网应用 1673次阅读
- 用于测试项目的4个最佳树莓派Raspberry Pi模拟器 5985次阅读
- 树莓派之路:Arduino和Raspberry-Pi 1815次阅读
- 基于树莓派产品 Raspberry Pi微控制器板的优缺点 2710次阅读
- 基于Raspberry Pi Pico开发先进的家庭自动化系统 2849次阅读
- 基于FONA通过UART与Raspberry Pi进行通讯的方案介绍 2122次阅读
- 微雪电子ZeroW| Raspberry Pi ZeroW主板简介 2429次阅读
- 微雪电子Raspberry Pi 3 Model主板简介 2873次阅读
- 微雪电子Raspberry Pi 3 Model扩展板简介 1512次阅读
- 利用Raspberry Pi构建存储和虚拟化时间序列数据 884次阅读
- 一文了解Raspberry Pi 4各项性能跑分 2.9w次阅读
- 浅析空气质量监测对气体和颗粒物传感器市场的影响 5702次阅读
- 智慧工地扬尘检测设备,及自动降尘喷淋设备原理介绍 6549次阅读
- 使用树莓派测定颗粒物的技巧分享 1054次阅读
下载排行
本周
- 1山景DSP芯片AP8248A2数据手册
- 1.06 MB | 532次下载 | 免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB | 339次下载 | 免费
- 3TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 4DFM软件使用教程
- 0.84 MB | 295次下载 | 免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 227次下载 | 免费
- 6迪文DGUS开发指南
- 31.67 MB | 194次下载 | 免费
- 7元宇宙底层硬件系列报告
- 13.42 MB | 182次下载 | 免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB | 178次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537798次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191187次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多