技術文件

所有類型的產品技術文件

Raspberry Pi 新版相機指令 libcamera 快速上手 (含舊版指令對照表)

 

作者
台灣物聯科技技術團隊
|
2025 技術專欄
為什麼這篇文章很重要?
如果您剛入手最新的 Raspberry Pi Camera Module 3,或者將樹莓派系統更新到了 Bullseye / Bookworm 版本,您會發現以前熟悉的 raspistill 指令失效了!
別驚慌,這是因為樹莓派全面轉向了更強大的開源相機堆疊——libcamera。本文將帶您快速掌握新指令。

1. 快速對照表:舊指令 vs 新指令

對於老玩家來說,最快的學習方式就是直接看對照。新版指令在命名邏輯上非常直觀:

功能 舊版指令 (Legacy) 新版指令 (libcamera)
純預覽 (不存檔) raspistill -f libcamera-hello
拍照 (JPG) raspistill libcamera-still
錄影 (H264) raspivid libcamera-vid
原始數據 (Raw) raspiyuv libcamera-raw

*註:在最新的 Raspberry Pi OS (Bookworm) 中,指令別名可能為 rpicam-stillrpicam-vid,但功能完全相同。


2. 實戰演練:常用指令範例

拍照指令 (libcamera-still)

這是最常用的指令,基本用法與舊版非常相似。

# 拍攝一張照片並儲存為 test.jpg
libcamera-still -o test.jpg

# 延遲 5 秒後拍攝 (單位為毫秒)
libcamera-still -t 5000 -o test.jpg

# 指定解析度為 1920×1080
libcamera-still –width 1920 –height 1080 -o test.jpg

錄影指令 (libcamera-vid)

新版錄影功能支援更靈活的檔案格式。

# 錄製 10 秒影片 (H.264 格式)
libcamera-vid -t 10000 -o test.h264

# 直接錄製為 mjpeg (方便某些播放器觀看)
libcamera-vid -t 10000 –codec mjpeg -o test.mjpeg

即時預覽 (libcamera-hello)

用來測試鏡頭是否安裝成功,或是單純想當作電子鏡子使用。

# 開啟預覽視窗,直到按下 Ctrl+C 結束 (-t 0 代表無限時)
libcamera-hello -t 0

3. 進階功能:解放 Camera Module 3 的潛力

如果您購買的是支援自動對焦 (Auto Focus)Camera Module 3,舊指令是完全無法驅動這個功能的。唯有 libcamera 能讓它火力全開。

啟用連續自動對焦

libcamera-hello -t 0 --autofocus-mode continuous

加上這個參數後,您會發現畫面中的物體移動時,鏡頭會自動重新對焦,就像手機一樣!

手動控制對焦

您也可以指定對焦距離(單位為 Dioptres 屈光度,數值 0 代表無限遠,數值越大代表對焦距離越近): 例如:10.0 大約對焦在 10公分處

libcamera-still -o focus_test.jpg --lens-position 5.0

4. 常見問題 Troubleshooting

Q: 執行指令出現 command not found
A: 請確認您的作業系統是否為 Raspberry Pi OS Bullseye 或更新版本。如果是舊版 Buster,請先升級系統。

Q: 出現 no cameras available 錯誤?
A:
1. 檢查排線是否接反(藍色膠帶應朝向網路孔/USB座,若是 Pi Zero 則相反)。
2. 如果您使用的是舊款 Pi Camera V1 (OmniVision),新系統可能支援度有限,建議升級至 Camera V2Camera V3

Q: 我還能切換回舊版指令嗎?
A: 在舊版 Bullseye 中可以透過 sudo raspi-config -> Interface Options -> Legacy Camera 啟用舊版支援,但在最新的 Bookworm 系統中,舊版堆疊已被大幅移除,建議盡早適應 libcamera。

官方權威資源參考

想要體驗最新的 AIoT 視覺應用?

台灣物聯科技提供最完整的樹莓派原廠鏡頭選擇,現貨供應中。

IoT
台灣物聯科技技術團隊

專注於 Raspberry Pi 與 AIoT 技術教學,我們致力於讓開發者能更輕鬆地使用最新的硬體技術。

 什麼是嵌入式系統 (Embedded System)?一篇給新手的白話文終極指南

您是否想過,為什麼智慧手錶能偵測心率?為什麼洗衣機能自動選擇洗衣模式?為什麼汽車的倒車雷達會發出警示聲?這些智慧功能的背後,都藏著一個強大而精巧的大腦——那就是「嵌入式系統 (Embedded System)」。

這篇文章就是一篇為您準備的白話文懶人包,將帶您深入淺出地了解這個無所不在卻又充滿神秘感的科技核心。

一、什麼是嵌入式系統?一個隱藏的專家

簡單來說,嵌入式系統就是一個「為了特定任務而生,被『嵌入』到大型裝置中的微型專用電腦」。

它和我們桌上的個人電腦 (PC) 最大的不同在於:個人電腦是「通用」的,可以用來上網、打遊戲、做報告;而嵌入式系統是「專用」的,它的生命中通常只有一項或幾項特定任務,例如冷氣的嵌入式系統只負責控制溫度,汽車的嵌入式系統只負責處理引擎數據。


二、嵌入式系統的三大核心組成

一個完整的嵌入式系統,主要由三個部分組成,就像一個人的「身體、靈魂與神經」:

  • 🧠 硬體 (Hardware):身體
    核心是一顆被稱為「微控制器 (Microcontroller, MCU)」的晶片,它整合了 CPU、記憶體和各種輸出入接口。這就是系統的「大腦與四肢」。我們熟悉的 ArduinoESP32 開發板,其核心就是一顆微控制器。
  • 💻 軟體 (Software):靈魂
    這是在硬體上運行的程式,也稱為「韌體 (Firmware)」。它定義了嵌入式系統的所有行為和邏輯,告訴硬體在什麼情況下該做什麼事。
  • ⚡ 即時作業系統 (RTOS):神經系統 (選配)
    對於更複雜的系統(例如汽車或工業機器人),還會運行一個 即時作業系統 (Real-Time Operating System)。它負責管理多個任務,並確保最重要的指令能在規定的時間內(例如 0.001 秒內)被執行,就像我們的神經系統能讓我們瞬間做出反應一樣。

三、生活中有哪些嵌入式系統?

事實上,我們每天都被數十個甚至上百個嵌入式系統所包圍:

🏠 消費性電子

智慧手錶、藍牙耳機、數位相機、洗衣機、微波爐、電視遙控器。

🚗 汽車工業

引擎控制單元 (ECU)、防鎖死煞車系統 (ABS)、GPS 導航、倒車雷達。

🏭 工業控制

工廠產線上的機器手臂、CNC 工具機、自動化倉儲系統。

❤️ 醫療設備

心律調節器、血糖監測儀、自動注射泵。


四、如何開始學習嵌入式系統?

學習嵌入式系統最快的方式,就是「動手做」!您完全不需要從打造一顆 CPU 開始。透過像 Arduino 或 Raspberry Pi 這樣的開發平台,您可以直接跳到最有趣的「軟體與應用」層面。

  • 第一步:選擇一塊入門開發板
    我們強烈建議新手從 Arduino Uno 開始。它的社群最大、教學資源最豐富,能讓您在幾小時內就完成第一個專案(例如:點亮一顆 LED),建立巨大的成就感。
  • 第二步:連接感測器與致動器
    為您的開發板裝上「五官」(感測器) 和「手腳」(馬達、繼電器),讓它能與真實世界互動。
  • 第三步:撰寫程式碼
    透過簡單的 Arduino IDE,將您的邏輯寫成程式碼,上傳到開發板中,看著您的想法變成現實!

為了讓您無痛入門,我們也準備了包含所有必需品的「學習教學套件組」,是您踏出第一步的最佳選擇。


五、常見問題 (FAQ)

Q1: Arduino 或 Raspberry Pi 算是嵌入式系統嗎?

A: 是的,它們都是典型的嵌入式系統開發平台。Arduino 是一個微控制器系統,更接近傳統的嵌入式;而 Raspberry Pi 則是一個更強大的微處理器系統,能運行完整的作業系統,屬於高階的嵌入式應用。

Q2: 學習嵌入式系統需要用什麼程式語言?

A: C 和 C++ 是最傳統、最主流的語言。但現在,越來越多的平台(如 ESP32、Raspberry Pi)也支援使用 MicroPython 或 Python,大大降低了學習門檻。

Q3: 嵌入式系統的處理器架構是什麼?

A: 目前絕大多數的嵌入式系統,其核心都採用了 Arm 架構(例如 Cortex-M 系列),以其高效能與低功耗的特性著稱。


本文由 台灣物聯科技 技術團隊,根據多年產業知識與實測經驗分析彙整。

延伸閱讀

心跳脈搏脈衝感測器套件 Arduino Pulse sensor

心跳感測模組實驗:Arduino 入門醫療科技應用

午休結束的生物課,老師讓同學把食指放在小小的感測頭上,幾秒後螢幕出現一條起伏的曲線。那不是擺設,而是每個人當下的心跳訊號。从智慧手环到临床监护,心率监测早已走入日常;而对学习者来说,只要一块 Arduino Uno 和一颗心跳感测模组,就能把「生命征象」化成能分析与应用的资料。

這篇文章會帶你做到什麼?

  • 了解兩類常用心跳感測器:類比式 Pulse Sensor、I²C 介面的 MAX30100
  • 完成 Arduino 讀值與即時監看,並給出可用的程式碼
  • 知道何時該選進階的 MAX30101/MAX32664 模組,以及常見問題與校正重點

感測原理,用白話說清楚:

多數心跳模組採用 PPG(光體積描記法)。發光元件照到手指(或耳垂),血液因心臟收縮與舒張而改變吸光量,回到感光元件的光強度就會呈現週期性的起伏,轉成電訊號後,便可計算心率(BPM)。

選哪一顆?依專案分級:

  • 入門與課堂展示:Pulse Sensor(類比輸出,接 A0 就能看波形)
  • 入門+想要心率/血氧數值:GY-MAX30100(I²C,搭配程式庫可算 HR/SpO₂)
  • 進階研究或更穩定算法:MAX30101 / MAX32664(Qwiic/SparkFun 板,演算法更完整)

提示:本文程式碼示範 Pulse SensorMAX30100;MAX30101/MAX32664 建議依供應商程式庫範例實作。

硬體接線:

Pulse Sensor(類比)

  • VCC → 5V 或 3.3V(依模組標示)
  • GND → GND
  • SIGNAL → A0(Arduino 類比輸入)

GY-MAX30100(I²C)

  • VIN → 3.3V(多數板可 3.3V;若標示可 5V 再接 5V)
  • GND → GND
  • SDA → A4(UNO)/ 21(ESP32)
  • SCL → A5(UNO)/ 22(ESP32)

程式碼範例:先看得到,再談計算

1)Pulse Sensor:先把波形讀出來(Arduino UNO)


// 讀取 Pulse Sensor 類比波形並輸出到序列監視器
const int SENSOR_PIN = A0;
void setup() {
 Serial.begin(9600);
}
void loop() {
 int v = analogRead(SENSOR_PIN);
 Serial.println(v);   // 在序列監視器用「繪圖」查看波形
 delay(10);           // 取樣間隔約 100 Hz
}
 

想要直接得到 BPM,建議安裝 PulseSensor 官方 PulseSensor Playground 程式庫,內含去雜訊與峰值偵測邏輯,比自行手刻更穩定。

2)GY-MAX30100:以程式庫計算 HR/SpO₂

安裝 MAX30100 專用程式庫(常見名稱:MAX30100_PulseOximeter)。以下為常用的穩定範例,能每秒輸出心率與血氧:


#include <Wire.h>
#include "MAX30100_PulseOximeter.h"
#define REPORTING_PERIOD_MS 1000
PulseOximeter pox;
uint32_t tsLastReport = 0;
void onBeatDetected() {
 Serial.println("Beat!");
}
void setup() {
 Serial.begin(115200);
 Wire.begin();
 if (!pox.begin()) {
   Serial.println("MAX30100 init FAILED");
   while (1); // 停在這裡方便排錯(接線/電源)
 }
 // 視板子/手指狀況可調整 LED 電流,過大會飽和、過小雜訊高
 pox.setIRLedCurrent(MAX30100_LED_CURR_7_6MA);
 pox.setOnBeatDetectedCallback(onBeatDetected);
}
void loop() {
 pox.update(); // 必須持續呼叫以更新內部濾波與偵測
 if (millis() - tsLastReport > REPORTING_PERIOD_MS) {
   Serial.print("HR: ");
   Serial.print(pox.getHeartRate(), 0);
   Serial.print(" bpm    SpO2: ");
   Serial.print(pox.getSpO2(), 0);
   Serial.println(" %");
   tsLastReport = millis();
 }
}
 

若數值不穩定,檢查電源是否雜訊大(改用 3.3V、加電源去耦),並嘗試不同 LED 電流或更穩定的手指姿勢。

實驗步驟與觀察

  • 先用 Pulse Sensor 看波形有無規律起伏;若雜訊高,放穩手指、避開強光。
  • 改用 MAX30100 程式庫,觀察每秒輸出的 HR/SpO₂ 是否在合理範圍。
  • 做一次「前後對照」:安靜坐著 2 分鐘量測,再做 20 次深蹲後量測,觀察 HR 的變化。

常見問題與校正建議

  • 波形亂跳:降低環境光、穩定手部、加上移動平均或低通濾波。
  • BPM 偏低/偏高:Pulse Sensor 請用官方程式庫;MAX30100 調整 LED 電流、確認 I²C 連線與取樣率。
  • 不同人體差異:血流弱、手指溫度低都會影響反射光;可改量耳垂或換手指。

何時改用 MAX30101 / MAX32664?

若你的專題需要更穩定演算法、更多參數(如 HRV)或長期連續記錄,推薦改用 MAX30101/MAX32664 的模組。它們的優勢在於光學路徑與演算法設計更成熟,適合研究或長照情境。不過請記得:這些仍屬開發與教學用途,非醫療認證設備。

把專題做漂亮:三個實作方向

  • 即時可視化:用 Arduino 串 OLED/LCD 顯示 HR 與波形
  • IoT 上雲:ESP32 透過 Wi-Fi 把心率資料送到雲端平台(MQTT/ThingSpeak)
  • 安全提示:心率超出門檻時,蜂鳴器/LED 提醒,並推播到手機

把手指放上感測頭,看著波形與數字同步跳動,是學習醫療科技的最佳起點。Pulse Sensor 讓你立刻看到訊號,MAX30100 協助你取得 HR/SpO₂,而 MAX30101/MAX32664 則支援更進階的研究需求。從這個小專案開始,你就能把「生理訊號」連上 Arduino、資料與應用,做出真正有價值的健康科技作品。

特別提醒:

1. MAX30100 與 MAX30102/01 差異

• MAX30100 已算舊款,部分使用者反應血氧數值不太穩。
• 對「血氧精準度」要求高的讀者,建議用 MAX30101 或 MAX30102。

2. Pulse Sensor 精度

• Pulse Sensor 本身容易受到雜訊干擾,用官方 Library,比較穩定。
• 在科展/專題時,建議加 RC 濾波器或用 Arduino 的 Moving Average。

延伸閱讀:為您的專案挑選最佳「心」:

SCD41 氣體感測器模組 檢測CO2二氧化碳、溫濕度二合一 I2C通訊

智慧教室必備:二氧化碳感測器的應用與數據監測

在教室裡待久了,學生會覺得昏昏欲睡,其實原因往往不是課程內容,而是空氣品質。當二氧化碳濃度逐漸升高,注意力與學習效率都會受到影響。這時候,二氧化碳感測器(CO₂ Sensor)就能發揮作用,透過即時數據監測,協助打造更健康的智慧教室環境,讓老師與學生都能維持最佳狀態。

為什麼智慧教室需要 CO2 感測器?

  • 學習效率研究顯示,教室內 CO₂ 濃度過高會導致專注力下降與學習表現不佳。
  • 健康安全:長時間處於高濃度 CO₂ 的環境,可能造成頭暈與疲倦。
  • 智慧通風:透過即時監測,能自動控制空調或通風系統,確保空氣流通。

常見的 CO₂ 感測器模組

  • SCD41:體積小巧,高精度,適合智慧教室與教育套件。
  • MH-Z19:廣泛使用,支援 UART 與 PWM 輸出。
  • 其他CO₂感測器:專業級產品,適合長期監測與工業環境。

應用場景

智慧教室

結合 CO2感測器與顯示面板,教師能即時觀察教室空氣品質,提醒學生開窗或啟動通風。

教育專題與科展

學生可透過 Arduino 或 ESP32 開發板,搭配 二氧化碳感測模組,進行數據蒐集與分析,作為物聯網或環境科學專題的一部分。

學校後勤管理

校方可集中收集各教室的 CO₂ 數據,建立校園空氣品質監測平台,優化能源與通風管理。

材料清單

  • CO₂ 感測器模組(推薦使用 SCD41)
  • Arduino Uno 或 ESP32 開發板
  • OLED 或 LCD 顯示器(選配)
  • 杜邦線與麵包板

接線方式

  • SCD41 使用 I²C 通訊:SDA → Arduino A4,SCL → A5(ESP32 可接 D21/D22)
  • VCC → 3.3V 或 5V(依模組規格)
  • GND → GND

範例程式碼(SCD41 + Arduino)

要驅動 SCD41,我們需要安裝對應的函式庫。本範例採用由 SparkFun 維護的 SCD4x Arduino Library,請先透過 Arduino IDE 的程式庫管理員安裝它。


// SCD41 CO₂ 感測器範例
#include 
#include "SparkFun_SCD4x_Arduino_Library.h"
SCD4x mySensor;
void setup() {
  Serial.begin(115200);
  Wire.begin();
  if (mySensor.begin() == false) {
    Serial.println("未找到 SCD41 感測器!");
    while (1);
  }
}
void loop() {
  if (mySensor.readMeasurement()) {
    Serial.print("CO2: ");
    Serial.print(mySensor.getCO2());
    Serial.print(" ppm, Temp: ");
    Serial.print(mySensor.getTemperature(), 1);
    Serial.print(" °C, Humidity: ");
    Serial.print(mySensor.getHumidity(), 1);
    Serial.println(" %");
  }
  delay(5000);
}

未來發展與整合

  • 結合校園 IoT 平台,集中管理全校教室的空氣品質數據。
  • 與 AI 演算法整合,根據課表與學生人數預測 CO₂ 上升趨勢,主動調整通風。
  • 搭配其他感測器(PM2.5VOC溫濕度)打造完整智慧校園解決方案。

CO₂ 感測器是智慧教室不可或缺的元件,能保障師生健康,提升學習效率,並協助校方實現智慧化管理。在教育專題、科展實驗或智慧校園建設,CO₂ 感測器都能發揮重要作用。

開始打造您的智慧教室感測專案

VOC 空氣品質感測器

VOC 空氣品質感測器教學:如何檢測甲醛與室內污染

生活品質提升後,大家越來越關注室內空氣污染問題。揮發性有機化合物(VOC, Volatile Organic Compounds),例如甲醛、苯、甲苯等,常見於裝潢建材、傢俱與清潔劑中,長期暴露可能造成頭痛、呼吸道疾病或者健康隱憂。接下來介紹如何利用 VOC 空氣品質感測器,進行室內污染檢測,並提供 Arduino 入門實驗教學。

什麼是 VOC 空氣品質感測器?

VOC 感測器能偵測空氣中揮發性有機氣體的濃度,部分模組也可延伸檢測 CO₂、CO 或煙霧。常見的 VOC 感測器包括:

  • MQ 系列感測器(如 MQ-135):價格低廉,適合教育用途。
  • 專業型 VOC 感測模組:靈敏度更高,適合科研與空氣品質監測系統。
  • 複合式環境感測器:同時支援溫濕度、VOC 與 PM2.5 偵測

應用場景

家庭空氣監測

檢測裝潢後的甲醛釋放,或廚房、客廳的揮發性氣體,提醒是否需要開窗通風。

學校與公共空間

教室內若空氣不流通,VOC 濃度會升高,搭配 CO₂ 感測器能完整反映室內環境品質。

科研與實驗室

提供基礎數據,用於研究室內空污源與健康影響。

所需材料

接線方式

  • VOC 感測器訊號腳 → Arduino A0(類比輸入)
  • VCC → 5V
  • GND → GND
  • (若有數位輸出腳,亦可接至數位輸入 D2)

Arduino 範例程式


// VOC 感測器 (MQ-135) 入門實驗
const int sensorPin = A0;
int value = 0;
void setup() {
 Serial.begin(9600);
}
void loop() {
 value = analogRead(sensorPin);
 Serial.print("VOC sensor value: ");
 Serial.println(value);
 
 if (value > 400) {
   Serial.println("空氣品質不佳,建議通風!");
 } else {
   Serial.println("空氣品質正常");
 }
 
 delay(1000);
}

數據解讀與校正

  • 不同感測器的數值範圍不同,需依模組規格書調整。
  • 建議進行「基線校正」:在新鮮空氣環境下讀取基準值,並以此作為比較依據。
  • 若要換算成 ppm,需要參考感測器特性曲線或搭配校正氣體。

未來延伸應用

  • 搭配 Wi-Fi/LoRa/NB-IoT,將數據上傳雲端。
  • 與 CO₂、PM2.5 感測器整合,打造完整智慧教室或家庭空氣品質監測系統。
  • 結合 AI 演算法,預測室內空氣污染趨勢,主動提醒開窗或啟動空氣清淨機。

VOC 空氣品質感測器不僅能幫助我們檢測甲醛與有害氣體,更能提升家庭與學校的健康保障。對教育單位而言,這也是結合 Arduino、IoT 與環境科學的絕佳教材。

相關產品