工程筆記本 / 科技觀點/快訊/報導

科技觀點/快訊/報導

Pico W × Edge Impulse:打造嵌入式電子舌系統Part1 --- 系統建置篇

鈺莨📅 2026-02-11👁 26

專案資訊

撰寫 / 攝影
許鈺莨
前情提要
時間
1小時內
成本
難度
★★☆☆☆
材料表

前言

本專案利用Raspberry Pi Pico W (以下簡稱Pico W)搭配水濁度和總溶解固體 (TDS) 感測器,並在 Edge Impulse (以下簡稱EI),來製作電子舌。 可以辨識出運動飲料、柳橙汁、咖啡、一般自來水,除自來水外,其他可以到便利商店購得。

本專案會從開發環境,到 EI 下載模型並部屬到Pico W,會分成多篇文章,所以本篇是打造嵌入式電子舌系統的前哨站,說明如何安裝程式撰寫軟體,和在 OLED 中顯示感測器的數值,將來使用EL收資料時可以透過 OLED 來觀測。

開始實作

1️⃣ 使用 Arduino IDE 開發環境

  • 下載 Arduino IDE
本文使用 Arduino IDE 2.3.7,請至下列連結下載: https://github.com/arduino/arduino-ide/releases/tag/2.3.7 建議下載壓縮檔版本並解壓縮至電腦。
  • 開啟 Arduino IDE
進入 arduino-ide_2.3.7_Windows_64bit 資料夾並執行 Arduino.exe。

[註] 若出現 Windows 安全性警示,請按允許存取。

2️⃣ 手動匯入函式庫

新版 Arduino IDE 未包含感測器函式庫,需手動下載並放入 libraries 目錄。
  • 下載函式庫
點我下載函式庫
  • 確認 Sketchbook 路徑
函式庫需放在 libraries 資料夾內。

注意:libraries 中不可再多一層「Libraries」資料夾,否則編譯會找不到函式庫。

   

3️⃣ 感測器資料輸出

在 Edge Impulse 收資料時無法即時觀察,因此需在 OLED 顯示數值。
  • 接上 Micro USB 傳輸線
將 Micro USB 連接線,一頭接到PICO W USB 連接埠,在OLED螢幕右側(見下方橘圈處),另一頭請接電腦。
#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 建立微型伺服器,並將感測器數值顯示於網頁端。

相關文章

Pico W × Edge Impulse:打造嵌入式電子鼻系統Part1--- 系統建置篇 【tinyML系列專題】使用 wio terminal 與氣體感測器收集咖啡氣味資料!

相關文章 📎

留言 💬 (0)

還沒有留言,來當第一個。