民间数据共享系列:自製一個空氣顆粒物質監測儀
——並共享民間數據
Posted on April 6, 2018
0x00
本文深度參考了 這篇文章(英文),並由本文作者親自動手操作成功,隨寫成中文的教程,鼓勵更多的極(宅)客(男/女)、關注社會/環境人士/倡導者、行動者,收集真實準確的數據,以在環境問題上更有話語權。
0x01
這裏作者從深圳華強北買了兩樣東西:
- 樹莓派3 (Raspberry Pi 3)(任何型號都行,但有無線網卡的更方便些)
- PM(顆粒物質)sensor(傳感器),型號:SDS011 (有圖見上面文章鏈接)
以上兩樣在中國強大的電商網站都能買到,不貴,加起來 ¥300~400 左右。
其實還可以使用比樹莓派(等單板電腦)更小巧的衆多開發板/單片機(但性能感人了),以及其工作原理可以參考 這篇文章(中文)。
0x02
給樹莓派安裝操作系統(通常是 Raspbian 或其他任何一種 Linux),這方面教程很多就不贅述了。 安裝好後,用root身份登錄並執行以下操作(用root要小心不要敲錯咯,你是被提醒過的)。
設置WIFI熱點
用 NetworkManager 或 hostapd 把機器上的無線設置爲 AP 模式(即熱點),這樣是爲了在戶外時無需連互聯網也能獲取到機器上的數據。(本步驟爲可選,配置方法網上也比較容易搜到)
安裝必要的軟件包
(若是Debian系的Linux系統)
apt install git-core python-serial python-enum nginx
把傳感器通過USB轉換線連接到樹莓派
連接前先在樹莓派上把內核日誌打開:
dmesg -w
連接後應該可以在終端屏幕上看到:
[19518.196577] usbserial: USB Serial support registered for generic [19518.205879] usbcore: registered new interface driver ch341 [19518.205986] usbserial: USB Serial support registered for ch341-uart [19518.206065] ch341 1-1.2:1.0: ch341-uart converter detected [19518.212417] usb 1-1.2: ch341-uart converter now attached to ttyUSB0
可以看到樹莓派識別到了傳感器。ttyUSB0
表示儀器的數據能傳送到樹莓派的這個接口上。這個代號下面還會用上。
接下來我們就可以用幾段小小的代碼來接受數據,並呈現出來了。
0x03
接下來就是從著名的 GitHub 上下載代碼,到樹莓派上(該命令會下載代碼倉庫到當前目錄;這裏的代碼在任何位置運行都可以;建議在 ~):
cd ~
git clone https://github.com/mdrights/aqi-share.git
運行 aqi 倉庫裏 python 文件夾下的 aqi.py:
cd ~/aqi-share/python/
./aqi.py
如果出現如下顯示就說明能工作咯:
PM2.5: 7.8 , PM10: 26.4 PM2.5: 7.7 , PM10: 26.0 PM2.5: 7.6 , PM10: 25.7 PM2.5: 7.6 , PM10: 26.0 Going to sleep for 1 hour...
該腳本默認每小時讀取一次數據(每次15組數據)。當然這是可以改的(在腳本的最後面)。(注意:該傳感器是有使用壽命的,約8000小時)
現在可以用手按下 Ctrl + C 把腳本退出。
如沒遇到問題,讓 aqi.py 開機自啓動:
echo "/root/aqi-share/python/aqi.py > /dev/null" >> /etc/rc.local
(各發行版略有不同。如以上行不通請自行解決)
0x04 呈現數據
- 用 web 網頁的形式 這裏我們用 nginx,有了它才能生成網頁(然後我們可以從電腦/手機上去查看)。
- 把剛才下載 aqi 倉庫裏的靜態網頁和 javascript腳本放進 web 根目錄下:
-
cp ~/aqi-share/html/\* /var/www/html/
做些準備工作:
echo [] > /var/www/html/aqi.json chown www-data:www-data /var/www/html
啓動 nginx:
service nginx start
update-rc.d nginx defaults
- 用bot(機器人)發送數據 也就是把數據定時/不定時發送到一些通訊/聊天平臺,如 Telegram,Matrix/Riot.im,IRC,QQ 等。
- 剛才下載的 aqi-share 倉庫裏的 irc-client.py 腳本即爲此用(目前僅用於 IRC 平臺)。
- 执行这个脚本,就发送一次最新的数据:
-
cd ~/aqi-share && ./aqi-start.sh
可以設爲定時任務,定時發送數據到 Matrix 上的特定羣組(网址见下面)。
0x05 查看數據
- web 方式:
- 如果樹莓派開啓了WIFI熱點,則直接連接到該熱點下,用瀏覽器訪問樹莓派的IP,即可;
- 如果樹莓派連接了其他路由器(自己是終端),則須在同一內網訪問樹莓派的IP(獲知樹莓派IP的方法請搜索)。
- bot 方式:
- 目前筆者採用的平臺是 Matrix,任何人可以免註冊訪問 這個羣組: #aqi-data-share 看到每个参与者发送的數據。
期待你的數據共享!
喜欢我的作品吗?别忘了给予支持与赞赏,让我知道在创作的路上有你陪伴,一起延续这份热忱!
- 来自作者
- 相关推荐