資料介紹
描述
什么
本指南介紹了一種 Raspberry Pi 設備,該設備可確定大氣顆粒物(空氣污染的主要成分)在給定環境中的存在水平。
這里使用的傳感器足夠精確,可以根據公認的機構報告生成測量值。它還包括一個集成環境傳感器,可以測量溫度、濕度和氣壓 (T/H/P)。
該設備運行以 Python 編寫的以傳感器為中心的定制數據流平臺,可輕松用于任何類似 Debian 的 Linux 發行版。
該平臺包括一個庫和工具,用于配置和管理傳感器并發布它們的數據,以及在數據基礎設施的其他地方(即不在傳感器設備上)使用的工具,以有用的方式轉換、解釋和保存生成的傳感器數據流.
如何:硬件
我不會詳細介紹如何設置 Raspberry Pi 、在其上安裝 Raspbian 、啟用 I2C 接口、在首次啟動時啟用 WiFi 或在首次啟動時啟用 SSH,因為其他人已經很好地完成了這項工作的確。但是,在本指南的其余部分,您將需要所有這些。
Sensirion SPS30顆粒物傳感器使用 JST 的ZH 型 1.5 毫米間距連接器(數據表),為此在美國采購預制電纜組件被證明是一項重大挑戰!
Sensirion 的支持團隊竭盡全力提供幫助,但他們的建議只讓我找到了裸露的母連接器,我既沒有專業知識也沒有材料可以將其變成可用的組件。幸運的是,我最終能夠找到我需要的東西。
我還想在設備中加入環境感應功能,最近我剛好在漂亮的分線板上訂購了一些BME280傳感器。
為了促進設備之間的模塊化和易用性,我更喜歡非永久性連接方法,例如公/母杜邦式接頭和連接器,這就是我在這里使用的方法。
所需的大部分結構非常簡單:我將 BME280 焊接到一個小型永久原型板上,Raspberry Pi 的跳線進入該板 - 攜帶 3V3 和 5V 分別滿足 BME280 和 SPS30 - 以及 ZH -5 組件(當然只攜帶 5V 電源)連接到 SPS30。
(請注意上面標題中的重要更正:非常感謝ti-tipakorn提醒我!有時間我會更新 Fritzing 圖。)
I2C 總線的主要優點之一是設備尋址,它允許許多設備共享同一條物理總線,在這里我只需要為這兩個設備將五個引線(5V
、3V3
、GND
、SDA
& SCL
)帶到我的板上。
以防圖表沒有完全清楚,Pi 的引腳連接如下(指向pinout.xyz的鏈接更多信息):
-
5V
從引腳 2 -
3V3
從引腳 1 -
SDA
來自引腳 3(Broadcom 引腳 2) -
SCL
來自引腳 5(Broadcom 引腳 3) -
GND
從任何接地引腳。上圖顯示為引腳 14 以更好地適應圖表,但“zed”實際上使用引腳 6,因為它最接近 I2C 引腳。
請務必注意,SPS30 是一種雙模式設備,因此可以在UART (串行)或 I2C 模式下運行。因此,必須注意注意接口規范中突出顯示的注釋,正如我在上面通過將引腳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次下載 | 免費
評論
查看更多