樹莓派項目:空氣質量監測儀
如果您生活在擁擠甚至污染嚴重的城市,空氣質量確實是值得考慮的問題。得益于 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 發行版。
從 //github.com/agherzan/meta-raspberrypi 克隆 Raspberry Pi BSP 并簽出 提交。還要使用 //github.com/openembedded/meta-openembedded 的提交 和 //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 頁://www.sensirion.com/fileadmin/user_upload/customers/sensirion/Dokumente/9.6_Particulate_Matter/Datasheets/Sensirion_PM_Sensors_SPS30_Datasheet.pdf
另請查看 Raspberry Pi 4 GPIO 引腳 //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 //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 中的數據,請導航到其網頁,訪問工作區,然后 使用簡單的拖放界面根據流分析作業中的數據集創建報表。
圖表
電路

相關推薦
-
-
| 2013-01-11
-
| 2015-07-19
-
| 2013-12-21
-
| 2012-07-30
-
| 2007-04-20
-
| 2009-05-08
-
| 2015-08-19
-
-
-
| 2015-08-12
-
| 2013-11-25
-
| 2015-08-19
-
-
| 2013-08-18
-
| 2008-04-07
-
-
| 2010-04-20
-
-
| 2012-06-14
-
| 2015-08-19
-
| 2007-10-12
-
| 2015-07-30
-
-
| 2015-08-19
-
| 2007-02-16
-
| 2015-08-19







評論