動機:對於空氣品質的感測,是否可以利用 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/












留言