做為一個現代上班族要出門,以前可能只要注意溫度,決定要穿多少衣服,現在可能都要多注意兩個因子:紫外線與空氣品質,以決定要不要戴帽子/陽傘+防曬液+太陽眼鏡與口罩等。
太陽是地球上所有生物的能量來源,太陽光根據波長由短而長可概分為紫外線、可見光及紅外線等,其中看不見的紫外線在通過大氣層時,由於臭氧等氣體的吸收,使得到達地面的強度不致造成人類健康不良影響。但由於高空臭氧層受到人為排放污染物的破壞而減少,導致地面紫外線強度的增加,因而在晴朗無雲的天氣時,過度曝曬可能對人體有不良影響。(環保署網站的說明)
紫外線對皮膚的影響(下圖為網路上找的)
關於空氣品質,到環保署空氣品質監網可以看到主要是監控PM2.5(細懸浮微粒指標)與PSI(空氣污染指標)
PM2.5是最近很紅的話題,Particulate Matter細懸浮微粒(簡稱PM2.5),是指懸浮在空氣中氣動粒徑小於2.5μm的粒子,PM2.5主要來源是人為排放,其中直接排放主要來自燃燒過程;另外在空氣中轉化成PM2.5的氣體污染物主要有二氧化硫、氮氧化物、氨氣、揮發性有機物,除此之外還有各種灰塵、花粉等。(網路上的說有,下圖來自科工館)
哈哈哈,今天這篇文章的開場白特長,這個範例中會出現三個以前沒用過的感測器:Borch BMP180數位氣壓感測模組(氣壓、溫度)、ML8511紫外線光感測器、SHARP GP2Y1010AU0F PM2.5空氣品質感測器,主要是用來感測溫度、紫外線與PM2.5。
Borch BMP180
與Arduino的接法如下圖(圖是網路上找的)
記得去底下的網址下載Library,解開後改目錄名稱為SFE_BMP180,放到Arduino的libraries,範例裡面就會有可用範例
https://github.com/sparkfun/BMP180_Breakout_Arduino_Library/archive/master.zip
ML8511紫外線光感測器
與Arduino的接法如下圖(圖是網路上找的)
為了接多個感測器,我的接線修改如下(程式中也要做相對應的修改)
VIN = 3.3V(5v)
OUT = A2
GND = GND
EN = 3.3V
3.3V = A3
SHARP GP2Y1010AU0F PM2.5空氣品質感測器
與Arduino的接法如下圖(圖是網路上找的)
一個一個依序接到Arduino上,寫程式測試,非常地順利,分開的每一個程式都OK
Borch BMP180
ML8511紫外線光感測器
SHARP空氣品質感測器
搞定感測器的程式後,跟我之前所寫的每一個物聯網應用相同,我會在我的伺服器SQL Server上建立專用的資料庫與資料表,然後再寫一個接收資料寫入資料庫的ASP.NET程式
測試OK,接上WiFi(ESP8286)(可參考實作UART型WiFi上傳感測值至伺服器),三兩下就把它接好
把包括WiFi所有程式碼結合在一起,但是。。。
我一直都很傻很天真的認為只要能夠錯開感測器的PIN,我可以在同一張Arduino上裝上N個感測器,但是沒想到記憶體的使用也是一個致命的關卡。
由於它是顯示"可能"會不穩定,抱著僥幸的心情,我白白浪費了兩天的空閒時間去做測試硬體,結果不是連不上AP,就是傳兩三筆資料就傳不出去了。嘿嘿嘿,所以做人是不可以太鐵齒的。
今天早上決定改行方案B,利用藍牙來接收Arduino傳回的資訊,拆下WiFi,接上藍牙晶片(接法與程式可參考由手機透過藍牙接收設備的類比資料)
既然是用藍牙接收資料,變成我也要寫行動裝置的APP,原本使用WiFi就是想稍微偷懶一下,沒想到後來更累
由於是想做成行動的PM2.5與紫外線偵測裝置所以使用6顆電池做行動電源
執行程式,吔,可以正確地收到資料
根據PM2.5的指標,我的辦公室狀況還不錯(5.41 ug/m3),紫外線幾乎沒有(0.01mW/cm^2)
走到辦公室外,到三樓前棟與後棟的連接天橋上稍微測試一下數值
在天橋上的溫度約是32度,氣壓約是1008mb,測到PM2.5(ug/m3),最小23.68、最大133.25、平均60.02,對照上表,感覺空氣品質不是很優,呵呵呵。紫外線(mW/cm^2),最小1.81、最大2.76、平均2.17,在我測的時候是陰天,我猜若直接出現太陽光的話這個數值應該會大很多。
做完了,覺得累!