久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 樹莓派項(xiàng)目:空氣質(zhì)量監(jiān)測(cè)儀

樹莓派項(xiàng)目:空氣質(zhì)量監(jiān)測(cè)儀

作者: 時(shí)間:2025-10-28 來源: 收藏

如果您生活在擁擠甚至污染嚴(yán)重的城市,空氣質(zhì)量確實(shí)是值得考慮的問題。得益于 David Gherghita 和 Ioan Herisanu 的一個(gè)項(xiàng)目,帶有 Sensirion SPS30 傳感器的 可以測(cè)量室內(nèi)和室外的空氣質(zhì)量。

只需將顆粒物傳感器連接到 ,即可根據(jù)讀取的數(shù)據(jù)獲得易于閱讀的圖表。

使用 4、SPS30 和 Azure 的空氣質(zhì)量監(jiān)測(cè)器

將顆粒物傳感器連接到 Raspberry Pi,并使用 Microsoft Azure 根據(jù)讀取的數(shù)據(jù)獲得易于閱讀的圖形。


使用 Raspberry Pi 4、SPS30 和 Azure 的空氣質(zhì)量監(jiān)測(cè)器

本項(xiàng)目使用的東西

硬件組件


感靈 SPS30×1

樹莓派 4 B 型 4 B 型×1

面包板(通用)面包板(通用)×1

跳線(通用)跳線(通用)×1

軟件應(yīng)用程序和在線服務(wù)


Rust 編程語言


Microsoft AzureMicrosoft Azure


Yocto 項(xiàng)目Yocto 項(xiàng)目


故事

構(gòu)建作系統(tǒng)

將 Raspberry Pi 4 用于此項(xiàng)目的第一步是使用 Yocto 項(xiàng)目構(gòu)建一個(gè)最小的 Linux 發(fā)行版。

從 https://github.com/agherzan/meta-raspberrypi 克隆 Raspberry Pi BSP 并簽出 提交。還要使用 https://github.com/openembedded/meta-openembedded 的提交 和 https://git.yoctoproject.org/git/poky 的提交。 使用存儲(chǔ)庫中的說明生成映像并將其復(fù)制到 SD 卡并進(jìn)行測(cè)試。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"

通過添加 (從代碼部分) 添加到 的路徑來進(jìn)一步修改圖像,從而添加以下配方:1. 獲取確切時(shí)間;2. 將 Rust 語言安裝腳本復(fù)制到 rootfs;3. 復(fù)制并初始化連接到 Wi-Fi 并啟動(dòng) ntp 服務(wù)的啟動(dòng)腳本;4. 以設(shè)置時(shí)區(qū)。您必須根據(jù)您所在的位置修改此文件;5. 以配置 Wi-Fi 網(wǎng)絡(luò)。您必須為您的網(wǎng)絡(luò)修改此文件。meta-mylayerBBLAYERSrpi-build/conf/bblayers.confntprustupstartup-scripttzdatawpa_supplicant

重建映像并將其復(fù)制到 SD 卡。

連接傳感器

使用面包板和兩個(gè) 4 kΩ 電阻器將傳感器連接到 Raspberry Pi 10,如傳感器數(shù)據(jù)表所示,第 16 頁:https://www.sensirion.com/fileadmin/user_upload/customers/sensirion/Dokumente/9.6_Particulate_Matter/Datasheets/Sensirion_PM_Sensors_SPS30_Datasheet.pdf

另請(qǐng)查看 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 上運(yùn)行并檢查是否檢測(cè)到具有地址的設(shè)備來驗(yàn)證連接 。i2cdetect -y 10x69

讀取數(shù)據(jù)

使用 Raspberry Pi 上的 Rustup 腳本安裝 Rust 語言。

git clone https://github.com/david-gherghita/sps30-i2c-rs.git下載傳感器的驅(qū)動(dòng)程序。

通過運(yùn)行 檢查它是否正確運(yùn)行。cargo run --example linux


將數(shù)據(jù)發(fā)送到云端

在 Microsoft Azure 平臺(tái)上創(chuàng)建帳戶。

在“Azure 服務(wù)”選項(xiàng)卡中,創(chuàng)建新的資源組。

在資源組中添加新的 IoT 中心,然后導(dǎo)航到其頁面。

在資源管理器部分中 ,單擊 IoT 設(shè)備并添加新設(shè)備。請(qǐng)注意主連接字符串,因?yàn)槟鷮⑹褂盟鼘㈦娐钒暹B接到云。

通過使用和設(shè)置項(xiàng)目的依賴項(xiàng),從代碼部分編譯并運(yùn)行 Rust 程序,如下所示。cargo

linux-embedded-hal = "0.3.0"
sps30-i2c = "0.1.0"

填寫主連接字符串,檢查 Rust 程序的路徑,然后 從代碼部分運(yùn)行 Python 程序。

如果一切正常,則 IoT 中心應(yīng)接收數(shù)據(jù)。

返回到 Azure,創(chuàng)建新的流分析作業(yè),并從 IoT 中心添加新的流輸入,確保所選事件序列化格式為 JSON。

在 輸入預(yù)覽(Input Preview) 選項(xiàng)卡中,應(yīng)該有接收到的值。

若要以圖形的形式獲取更直觀的值視圖,請(qǐng)將輸出添加到 Power Bi 類型的流分析作業(yè)。 請(qǐng)務(wù)必選擇“用戶令牌”作為“身份驗(yàn)證模式”, 以便能夠?qū)⒆约旱墓ぷ鲄^(qū)用作“組”工作區(qū)。

修改查詢函數(shù)以將數(shù)據(jù)發(fā)送到 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 中的數(shù)據(jù),請(qǐng)導(dǎo)航到其網(wǎng)頁,訪問工作區(qū),然后 使用簡(jiǎn)單的拖放界面根據(jù)流分析作業(yè)中的數(shù)據(jù)集創(chuàng)建報(bào)表。


圖表

電路

面包板上的電路照片。



評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉