UglyBull
UglyBull

Crypto Anarchist, UNIX nerd/geek, FOSS advocate Liberalist, Feminist, ex-NGOer (由于本号非匿名,所以发表的内容不多,不问前程,继续赶路)

民间数据共享系列:自製一個空氣顆粒物質監測儀

——並共享民間數據

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 看到每个参与者发送的數據。

期待你的數據共享!

CC BY-NC-ND 2.0 版权声明

喜欢我的文章吗?
别忘了给点支持与赞赏,让我知道创作的路上有你陪伴。

加载中…

发布评论