Address
304 North Cardinal
St. Dorchester Center, MA 02124
Work Hours
Monday to Friday: 7AM - 7PM
Weekend: 10AM - 5PM
Address
304 North Cardinal
St. Dorchester Center, MA 02124
Work Hours
Monday to Friday: 7AM - 7PM
Weekend: 10AM - 5PM
1. Sharp GP2Y10說明
GP2Y1014或GP2Y1010這顆感測器算是偵測空氣品質中較為便宜的版本,可以偵測空氣中的懸浮微粒,但不能區分微粒大小,售價大概都不會超過200,不過使用上不是那麼方便及準確,另一個系列GY2Y1051則是內建MCU,用TX直接提供數值,就不用在哪邊使用電壓換算,不過呢?台灣幾乎都沒有賣家再販售就是了。
GP2Y10產品除了本體之外,還有6P連接線、一個150歐姆電阻及220uF電容,

如果需要更精確的,那非常推薦攀藤系列的產品,例如PMS9003M,目前已經出到第七代的樣子,不僅也是直接產生數據,也能將PM10、PM2.5等不同大小的顆粒數據分別提供,售價則是七八百左右。

GP2Y10偵測的原理是在中間的圓洞處以光線(下圖的IRED)照到空氣中的懸浮粒子就會產生散射,然後透過光感(下圖的PD)來收集散射的強度,就可以知道顆粒的大約數量,如果收集到的光線越強,那麼就代表顆粒越多,當PD收集的光線越多,也會反應更高的電壓,而到時候我們就可以利用電壓來估計空氣中的懸浮粒子有多少了。

根據規格書所列的電壓與粒子的相關圖可以發現幾個重點

雖然GP2Y10屬於便宜貨,但也沒那麼不堪,某網友測試的結果其實與氣象局的實際數據非常接近,再加上Sharp也算日本知名品牌啦,因此應該也算是可以信任的產品。關於本產品的其他規格可以參考官方規格書

2. 電路安裝
本次實驗使用小霸王ESP32進行實驗,GP2Y10我測試了GP2Y1014與GP2Y1010,其線路與程式完全相同,都可以參考以下線路接法。
GP2Y10一共六條線,分別代表意義如下

實際接好可能會長這樣,哈哈,亂得一塌糊塗。

由於包裝內付的連接線頭為1.25mm並沒有做杜邦頭,因此接麵包版非常容易脫落,建議另外購買1.25 6P轉2.54杜邦線,這樣會比較容易操作,如果只是先做實驗,可以像上圖這樣,把末端電路直接插在麵包版上,然後先用膠帶或橡皮筋稍微固定,當然實際應用還是要注意接線強度問題。
3. 程式撰寫
程式部份就是控制IRED在規定的時間亮暗,並在Vo檢查輸出的電壓後,對Vo進行電壓與懸浮微粒之間的換算,程式並不算難,請參考以下,程式中的等候時間是參考網路教學的寫法,為何等候這些時間我也不清楚了。
int Vopin=39; //Vo接到IO39
int IREDpin=5; //IRED接到IO5
float Vo = 0; //用以紀錄電壓
void setup() {
Serial.begin(115200);
pinMode(Vopin, INPUT); //讀取電壓腳位
pinMode(IREDpin, OUTPUT);//控制IRED腳位
}
void loop() {
digitalWrite(IREDpin, LOW); //開啟IRED
delayMicroseconds(280); //等候280微秒
Vo = analogRead(Vopin); //讀取39腳的數值(0~4095之間)
Vo = (Vo / 4095) * 3.3; //換算成3.3V電壓
delayMicroseconds(40); //等候40微秒
digitalWrite(IREDpin, HIGH); //關閉IRED
delayMicroseconds(9680); //等候9680微秒
Serial.println(String("電壓:")+String(Vo )); //輸出電壓值,此用以除錯檢查
if (Vo >= 0.6) { //超過0.6才需要計算
Vo =(((0.172 * Vo) - 0.1) * 1000); //依照公式將電壓Vo換算成懸浮微粒ug
Serial.println(String("懸浮:")+String(Vo )); //顯示結果
} else {
Serial.println(String("懸浮:")+String(0)); //小於0.6,都當成0懸浮微粒
}
delay(1000); //一秒一次
}
4. 實驗結果
程式燒錄後,就可以開始偵測了,實驗時可以利用衛生紙在感測圓洞處摩擦使其掉落纖維,就可以看到數值的變化,其結果如下圖。


最後總結一下