树莓派项目:空气质量监测仪
如果您生活在拥挤甚至污染严重的城市,空气质量确实是值得考虑的问题。得益于 David Gherghita 和 Ioan Herisanu 的一个项目,带有 Sensirion SPS30 传感器的 Raspberry Pi 可以测量室内和室外的空气质量。
只需将颗粒物传感器连接到 Raspberry Pi,即可根据读取的数据获得易于阅读的图表。
使用 Raspberry Pi 4、SPS30 和 Azure 的空气质量监测器
将颗粒物传感器连接到 Raspberry Pi,并使用 Microsoft Azure 根据读取的数据获得易于阅读的图形。
硬件组件 | |||||
| 感灵 SPS30 | × | 1 | |||
![]() | 树莓派 4 B 型 | × | 1 | ||
![]() | 面包板(通用) | × | 1 | ||
![]() | 跳线(通用) | × | 1 | ||
软件应用程序和在线服务 | |||||
| Rust 编程语言 | |||||
![]() | Microsoft Azure | ||||
![]() | Yocto 项目 | ||||
将 Raspberry Pi 4 用于此项目的第一步是使用 Yocto 项目构建一个最小的 Linux 发行版。
从 https://github.com/agherzan/meta-raspberrypi 克隆 Raspberry Pi BSP 并签出 提交。还要使用 https://github.com/openembedded/meta-openembedded 的提交 和 https://git.yoctoproject.org/git/poky 的提交。 使用存储库中的说明生成映像并将其复制到 SD 卡并进行测试。497a90a35364c0ceca701cb92d
通过添加 :
1 来修改图像。以获得额外的空间;
2. 并 启用 I2C;
3. 添加额外的包。rpi-build/conf/local.confIMAGE_ROOTFS_EXTRA_SPACE = "8388608"ENABLE_I2C = "1"KERNEL_MODULE_AUTOLOAD_rpi += "i2c-dev i2c-bcm2708" CORE_IMAGE_EXTRA_INSTALL += "bash nano tar zip openssh curl ca-certificates ntp tzdata packagegroup-core-buildessential python3 python3-pip i2c-tools git startup-script rustup"
通过添加 (从代码部分) 添加到 的路径来进一步修改图像,从而添加以下配方:1. 获取确切时间;2. 将 Rust 语言安装脚本复制到 rootfs;3. 复制并初始化连接到 Wi-Fi 并启动 ntp 服务的启动脚本;4. 以设置时区。您必须根据您所在的位置修改此文件;5. 以配置 Wi-Fi 网络。您必须为您的网络修改此文件。meta-mylayerBBLAYERSrpi-build/conf/bblayers.confntprustupstartup-scripttzdatawpa_supplicant
重建映像并将其复制到 SD 卡。
连接传感器
使用面包板和两个 4 kΩ 电阻器将传感器连接到 Raspberry Pi 10,如传感器数据表所示,第 16 页:https://www.sensirion.com/fileadmin/user_upload/customers/sensirion/Dokumente/9.6_Particulate_Matter/Datasheets/Sensirion_PM_Sensors_SPS30_Datasheet.pdf
另请查看 Raspberry Pi 4 GPIO 引脚 https://www.raspberrypi.org/documentation/usage/gpio/
连接:1.SPS30 引脚 VDD (1) 至 Raspberry Pi 引脚 4(5V 电源);2.SPS30引脚SDA(2)至Raspberry Pi引脚3(GPIO 2(SDA));3。SPS30 引脚 SCL (3) 到 Raspberry Pi 引脚 5 (GPIO 3 (SCL));SPS30 引脚 SEL (4) 到 Raspberry Pi 引脚 6(接地);5.SPS30 引脚 GND (5) 至 Raspberry Pi 引脚 6(接地)。
通过在 Raspberry Pi 上运行并检查是否检测到具有地址的设备来验证连接 。i2cdetect -y 10x69
读取数据
使用 Raspberry Pi 上的 Rustup 脚本安装 Rust 语言。
git clone https://github.com/david-gherghita/sps30-i2c-rs.git下载传感器的驱动程序。
通过运行 检查它是否正确运行。cargo run --example linux
将数据发送到云端
在 Microsoft Azure 平台上创建帐户。
在“Azure 服务”选项卡中,创建新的资源组。
在资源组中添加新的 IoT 中心,然后导航到其页面。
在资源管理器部分中 ,单击 IoT 设备并添加新设备。请注意主连接字符串,因为您将使用它将电路板连接到云。
通过使用和设置项目的依赖项,从代码部分编译并运行 Rust 程序,如下所示。cargo
linux-embedded-hal = "0.3.0" sps30-i2c = "0.1.0"
填写主连接字符串,检查 Rust 程序的路径,然后 从代码部分运行 Python 程序。
如果一切正常,则 IoT 中心应接收数据。
返回到 Azure,创建新的流分析作业,并从 IoT 中心添加新的流输入,确保所选事件序列化格式为 JSON。
在 输入预览(Input Preview) 选项卡中,应该有接收到的值。
若要以图形的形式获取更直观的值视图,请将输出添加到 Power Bi 类型的流分析作业。 请务必选择“用户令牌”作为“身份验证模式”, 以便能够将自己的工作区用作“组”工作区。
修改查询函数以将数据发送到 Power Bi,如下所示:
SELECT
"mass_pm1.0",
"mass_pm2.5",
"mass_pm4.0",
"mass_pm10",
"number_pm0.5",
"number_pm1.0",
"number_pm2.5",
"number_pm4.0",
"number_pm10",
"typical_size",
CAST ("sensor_time" AS datetime) "sensor_time"
INTO
"AQS-PowerBI"
FROM
IoT若要最终使用 Power BI 中的数据,请导航到其网页,访问工作区,然后 使用简单的拖放界面根据流分析作业中的数据集创建报表。










评论