使用 Adafruit Circuit Playground Bluefruit 連接 PMSA003 及 SGP30 做空氣品質感測(Arduino版本)

動機:對於空氣品質的感測,是否可以利用 Adafruit Circuit Playground Bluefruit (nRF52840) 這塊好炫的板子及 Adafruit SGP30(VOC) 和 PMSA003 來搭配 Arduino 開發使用呢?!


準備環境
1.Adafruit Circuit Playground Bluefruit 開發板(以下簡稱CPB)
2.Adafruit SGP30 感測板(以下簡稱 VOC)
3.Plantower PMSA003 傳測器(以下簡稱 PMS)
4.PMSA003 轉接板 及 專用連接線 1.25mm 轉 2.54mm(杜邦頭)
5.麵包板專用電源模塊 5V、3.3V 輸出
6.數條杜邦線
7.麵包板
8.Windows 10
9.Arduino 1.8.13


執行步驟
1.請至 Arduino 官網(https://www.arduino.cc/en/Main/Software)下載 Windows app 並安裝之
2.再請至 Adafruit 官網(https://learn.adafruit.com/adafruit-circuit-playground-bluefruit/arduino-support-setup) 並依照其步驟指示設定及安裝 (請注意看板子上標示的晶片編號, 筆者是 nRF52840)
3.接著,請依照以下接線圖來連接 SGP(4條線) 及 PMS(4條線) 等 sensor 與 CPB開發板(5條線)
請注意PMS的[TX]是連結到CPB的[RX],相對地,PMS的[RX]是連接到CPB的[TX]接腳(這條線可以不用接,因為CPB並未傳送serial資料給PMS)喔!!
4.接續,檢查 CPB Arduino 的功能選單Tools設定是否正常(其中的 Port 會因Windows10自動流水號而不同,筆者的是 COM5),如下圖
5.最後,在 Arduino 功能中選File、開啟新檔案New(Ctrl+N),輸入以下程式碼(分享於此... https://github.com/dvsseed/CPB_SGP30_PMSA003/blob/master/SGP30_PMSA003_ok.ino),然後開啟 Serial Monitor 就可以看到空氣檢測數據(如下圖)


心得
1.本篇程式碼係參攷原廠的程式編寫而成,在此先行感謝許多幕後辛苦的研發人員
2.經測試若將 SGP PMS 電源部分直接連自 CPB板,會造成數據傳輸一段時間後即沒有訊號,若連結 麵包板專用電源模塊 並穩定輸出 5V 時,則數據會正常顯示
3.在Arduino程式部分,因為 SGP 係以 I2C bus介面傳輸 而 PMS 係以 UART介面的序列埠RX, TX傳輸,因此彼此不會干擾,不需要 delay(ms) 來延遲
4.因為 Arduino 的程式語法係類似 C++,親和力較差,下次將改寫成 MakeCode 積木來快樂使用


參攷
2.PMSA003 - Digital Laser Dust Sensor datasheet, https://github.com/pinetum/pms-A003/blob/master/doc/PMSA003_cn.pdf

留言