動機:對於空氣品質的感測,是否可以利用 Adafruit Circuit Playground Bluefruit (nRF52840) 這塊好炫的板子及 Adafruit SGP30(VOC) 和 PMSA003 來搭配 MakeCode積木 開發使用呢?!
準備環境:
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.USB PL2303HX/TA USB轉串口模組傳輸線
10.Xshell 6
執行步驟:
1.首先,請依照以下接線圖來連接 SGP(4條線) 及 PMS(3條線) 等 sensor 及 USB PL2303(2條線)與 CPB開發板(6條線)
再輸入 Project name 按下 Create,如下圖再於 Boards 選 CPB,如下圖2.接下來,輸入以下的程式碼//程式開始//
function ctrlLED () { let SerialNum = 0 if (SerialNum >= 0 && SerialNum <= 35) { light.setPixelColor(9, 0x00ff00) } else if (SerialNum >= 36 && SerialNum <= 53) { light.setPixelColor(9, 0xff8000) } else if (SerialNum >= 54 && SerialNum <= 70) { light.setPixelColor(9, 0xff0000) } else { light.setAll(light.rgb(75, 0, 108)) } pause(500) light.clear() } function getSGP (eco2: number) { return (eco2 >> 8) & 0xff } serial.onEvent(SerialEvent.RxBufferFull, function () { pins.LED.digitalWrite(true) pause(200) }) let magicIdentifier = "" let sValue = 0 let pm100 = 0 let buffer: Buffer = null let pm10 = 0 let pm25 = 0 let eco2 = 0 function getPM (buf: Buffer, high: number, low: number) { let pmValue = 0 pmValue = ((buf.getNumber(NumberFormat.UInt16BE, high) << 8) + buf.getNumber(NumberFormat.UInt16BE, low)) / 512 return pmValue } light.setBrightness(20) serial.redirect(pins.TX, pins.RX, BaudRate.BaudRate9600) serial.setRxBufferSize(32) serial.writeLine("Begin PMSA003 testing") forever(function () { pins.LED.digitalWrite(false) pause(200) eco2 = getSGP(pins.i2cReadNumber( 88, NumberFormat.Int8LE, false )) serial.writeValue("sgp30", eco2) buffer = serial.readBuffer() let buflen = buffer.length if (buflen > 0) { magicIdentifier = buffer.toString().substr(0, 2) if (magicIdentifier == "BM") { pm10 = getPM(buffer, 4, 5) serial.writeValue("pm10", pm10) pm25 = getPM(buffer, 6, 7) serial.writeValue("pm25", pm25) pm100 = getPM(buffer, 8, 9) serial.writeValue("pm100", pm100) } } ctrlLED() })
再於編輯區上方按下 Blocks,如下圖,就可以看見 MakeCode 自動生成相關的積木,同時左方的CPB模擬器也開始亮綠燈(#9)
3.最後,為了查看 SERIAL 積木傳送的資料(筆電已插好PL2303HX/TA USB轉串口模組傳輸線),打開 Xshell 6 (或 PuTTY)軟體,新增一個新的連線,設定,如下圖
3.最後,為了查看 SERIAL 積木傳送的資料(筆電已插好PL2303HX/TA USB轉串口模組傳輸線),打開 Xshell 6 (或 PuTTY)軟體,新增一個新的連線,設定,如下圖
請注意上圖的 COMx 需至Win10的 裝置管理員 中查看 連接埠 的 編號,如下圖
心得:
1.若是買 PL2303HX舊款(建議買正品新款)無法在Windows 10使用者,可參攷1.解決之
2.因 SGP30 係以 I2C 傳輸資料,而 MakeCode 的 I2C相關積木沒有更細部的功能,致使無法正常收到數據,尚待解決
3.筆者好奇的是,Adafruit官網(如參攷2.及3.)竟然沒有 MakeCode 的相關說明???
參攷:
1.USB PL2303HX 在 Win8 Win8.1 Win10 無法使用解決辦法, https://www.ez2o.com/Blog/Post/PL2303HX-Win8-Win8.1-Win10
2.Adafruit Circuit Playground Bluefruit Overview, https://learn.adafruit.com/adafruit-circuit-playground-bluefruit?view=all
3.Adafruit SGP30 TVOC/eCO2 Gas Sensor, https://learn.adafruit.com/adafruit-sgp30-gas-tvoc-eco2-mox-sensor/
留言