Pico W × Edge Impulse:打造嵌入式電子鼻系統Part1 --- 系統建置篇
專案資訊
撰寫 / 攝影
許鈺莨
前情提要
—
時間
1小時內
成本
—
難度
★★☆☆☆
材料表
前言
利用 Raspberry Pi Pico W (以下簡稱 Pico W) 搭配多通道感測器和 MQ5, 並透過 Edge Impulse (以下簡稱 EI) AI 訓練模型網站, 來實作電子鼻氣體辨識系統。
本專案可以成功辨識出 空氣、精油、瓦斯(打火機)、威士忌(你沒看錯!!!)氣體。
會從開發環境開始,到 EI 下載模型並部署到 Pico W。 本篇作為前哨站,先完成 IDE 安裝與 OLED 顯示感測器數值。
開始實作
1️⃣ 使用 Arduino IDE 開發環境
- 下載 Arduino IDE
- 開啟 Arduino IDE
[註] 若出現 Windows 安全性警示,請按允許存取。
2️⃣ 手動匯入函式庫
新版 Arduino IDE 未包含感測器函式庫,需手動下載並放入 libraries 目錄。- 下載函式庫
- 確認 Sketchbook 路徑
函式庫需放在 libraries 資料夾內。
注意:libraries 中不可再多一層「Libraries」資料夾,否則編譯會找不到函式庫。
3️⃣ 感測器資料輸出
在 Edge Impulse 收資料時無法即時觀察,因此需在 OLED 顯示數值。- 接上 Micro USB 傳輸線
- 上傳程式碼 multigas_to_el.ino
#include <Wire.h>
#include <Multichannel_Gas_GMXXX.h>
#include <U8g2lib.h>
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE);
#define GAS_I2C_ADDR 0x08
#define MQ5_PIN 26
GAS_GMXXX<TwoWire> gas;
const float SAMPLE_RATE_HZ = 10.0f;
unsigned long lastMs = 0;
unsigned long dtMs = (unsigned long)(1000.0f / SAMPLE_RATE_HZ);
void setup() {
Serial.begin(115200);
delay(2000);
analogReadResolution(12);
Wire.setClock(100000);
Wire.begin();
u8g2.begin();
u8g2.enableUTF8Print();
u8g2.setFont(u8g2_font_unifont_t_chinese1);
gas.begin(Wire, GAS_I2C_ADDR);
pinMode(MQ5_PIN, INPUT);
Serial.println("NO2,C2H5OH,VOC,CO,MQ5");
lastMs = millis();
}
void loop() {
unsigned long now = millis();
if (now - lastMs < dtMs) return;
lastMs = now;
int v_no2 = gas.measure_NO2();
int v_c2h5oh = gas.measure_C2H5OH();
int v_voc = gas.measure_VOC();
int v_co = gas.measure_CO();
int v_mq5 = analogRead(MQ5_PIN);
Serial.print(v_no2); Serial.print(',');
Serial.print(v_c2h5oh); Serial.print(',');
Serial.print(v_voc); Serial.print(',');
Serial.print(v_co); Serial.print(',');
Serial.println(v_mq5);
u8g2.clearBuffer();
u8g2.setCursor(0,14); u8g2.print("NO2:"); u8g2.print(v_no2);
u8g2.setCursor(0,28); u8g2.print("C2H5OH:"); u8g2.print(v_c2h5oh);
u8g2.setCursor(0,40); u8g2.print("VOC:"); u8g2.print(v_voc);
u8g2.setCursor(0,52); u8g2.print("MQ5:"); u8g2.print(v_mq5);
u8g2.sendBuffer();
}
確認 Board 選擇 Raspberry Pi Pico W:
先確認開發板是否為 PICO W,到 Tools > Board > Raspberry Pi Pico/RP2040 > Raspberry Pi Pico W
選擇 COM Port:
到 Tools > Port >COM XX (Degz Robotics Suibo RP2040, EVN Alpha, Generic RP2040, Generic Sea-Picro, Raspberry Pi Pico W)
【註】COM XX號是電腦選的
上傳程式,按綠色箭頭圖示:
上傳程式完畢訊息,會顯示在下方紅框處:
【註】在上傳/燒錄程式的過程中,有些電腦會突然會跑出磁碟槽視窗,如G: (PRI-RP2),屬於正常現象,這是因為當電腦編譯程式完畢後,會產生UF2 的檔案,會再上傳到 G 槽 (也就是 PICO W磁碟) 的過程。
完成後 OLED 即可顯示數值:
結語
下一篇將說明如何透過 Raspberry Pi Pico W 建立微型伺服器,並將感測器數值顯示於網頁端。
留言 💬 (0)
還沒有留言,來當第一個。