Pico W × Edge Impulse:打造嵌入式電子舌系統Part1 --- 系統建置篇
專案資訊
撰寫 / 攝影
許鈺莨
前情提要
—
時間
1小時內
成本
—
難度
★★☆☆☆
材料表
前言
本專案利用Raspberry Pi Pico W (以下簡稱Pico W)搭配水濁度和總溶解固體 (TDS) 感測器,並在 Edge Impulse (以下簡稱EI),來製作電子舌。 可以辨識出運動飲料、柳橙汁、咖啡、一般自來水,除自來水外,其他可以到便利商店購得。本專案會從開發環境,到 EI 下載模型並部屬到Pico W,會分成多篇文章,所以本篇是打造嵌入式電子舌系統的前哨站,說明如何安裝程式撰寫軟體,和在 OLED 中顯示感測器的數值,將來使用EL收資料時可以透過 OLED 來觀測。
開始實作
1️⃣ 使用 Arduino IDE 開發環境
- 下載 Arduino IDE
- 開啟 Arduino IDE
[註] 若出現 Windows 安全性警示,請按允許存取。
2️⃣ 手動匯入函式庫
新版 Arduino IDE 未包含感測器函式庫,需手動下載並放入 libraries 目錄。- 下載函式庫
- 確認 Sketchbook 路徑
函式庫需放在 libraries 資料夾內。
注意:libraries 中不可再多一層「Libraries」資料夾,否則編譯會找不到函式庫。
3️⃣ 感測器資料輸出
在 Edge Impulse 收資料時無法即時觀察,因此需在 OLED 顯示數值。- 接上 Micro USB 傳輸線
- 上傳程式碼 (liquid_uploadtoEI_OLED.ino)
#include <Wire.h>
#include <U8g2lib.h>
#define PIN_TURB A1
#define PIN_TDS A2
#define INTERVAL_MS 100
unsigned long last_ms = 0;
// OLED 設定
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE);
void setup() {
Serial.begin(115200);
delay(1000);
// === 明確指定 ADC 解析度 ===
analogReadResolution(12);
// I2C 設定
Wire.setClock(100000);
Wire.begin();
// 初始化 OLED
u8g2.begin();
u8g2.enableUTF8Print();
u8g2.setFont(u8g2_font_unifont_t_chinese1);
u8g2.clearBuffer();
u8g2.drawUTF8(0, 16, "Booting...");
u8g2.sendBuffer();
Serial.println("# ei_data");
Serial.println("# columns: turbidity_adc,tds_adc");
}
void loop() {
unsigned long now = millis();
if (now - last_ms >= INTERVAL_MS) { // 10 Hz
last_ms = now;
int turb = analogRead(PIN_TURB);
int tds = analogRead(PIN_TDS);
// === CSV 輸出 ===
Serial.print(turb);
Serial.print(",");
Serial.println(tds);
// === OLED 顯示 ===
u8g2.clearBuffer();
u8g2.setCursor(0, 14); u8g2.print("Turb:"); u8g2.print(turb);
u8g2.setCursor(0, 40); u8g2.print("TDS:"); u8g2.print(tds);
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)
還沒有留言,來當第一個。