TY桃園智造感測器教學庫
感測器教學庫/環境感測器/FS3000 風速
BATCH 02 · 已發布

SENSOR / FS3000

FS3000 數位風速感測器用 I2C 讀取風速,觀察空氣流動的快慢

FS3000 是以 MEMS 熱電堆量測空氣流速的數位感測器,透過 I2C 回傳 12 位元資料。本篇以 FS3000-1005 為例,帶學生分辨原始值、m/s 與 mph。

入門45 分鐘Arduino UNO(I2C,SparkFun FS3000 Library)
READYDATA
SIGNAL STABLE
FS3000 數位風速感測器
3.3V/VCC / 3.3V 或轉接板規格GND / GND
01 / PREPARE

課前準備

先確認這一課要學會什麼,以及桌面上需要哪些材料。

學習目標

  1. 理解熱式風速感測與風向箭頭的意義。
  2. 使用固定 I2C 位址 0x28 初始化 FS3000。
  3. 比較原始值、公尺/秒與英里/小時三種輸出。

材料清單

1 個FS3000-1005 Qwiic 風速模組確認模組版本與氣流箭頭方向。
1 組Arduino UNO 與 I2C 轉接線UNO 使用 A4/SDA、A5/SCL;模組以 3.3V 為主。
1 個小風扇或紙扇保持距離,避免氣流過強或直接碰撞感測元件。
適用對象國中生活科技與 Arduino 初學者
建議課時45 分鐘
示範平台Arduino UNO(I2C,SparkFun FS3000 Library)
02 / HOW IT WORKS

熱量被風吹走,資料就會改變

FS3000 使用 MEMS 熱電堆感測空氣流速,資料以數位方式透過 I2C 輸出;它量的是流速,不是風向。

01

建立 I2C

將電源、地線、SDA 與 SCL 接妥。

02

讀取原始資料

感測器回傳 12 位元的風速相關 count。

03

轉換單位

函式庫將資料轉成 m/s 或 mph,方便比較。

DISTANCE FORMULAwindSpeed_mps = readMetersPerSecond()

本篇以 FS3000-1005 的 0–7.23 m/s 範圍為例;FS3000-1015 的上限不同。

03 / WIRING

接線配置

FS3000 是 3.3V I2C 模組,不要直接把裸晶片當成 5V 模組使用;請依所用轉接板的電平規格接線。

MODULEFS3000 數位風速感測器3.3V/VCCGNDSDASCL
CONTROLArduino UNO(I2C,SparkFun FS3000 Library)3.3V 或轉接板規格GNDA4 / SDAA5 / SCL
模組腳位接到控制板訊號方向檢查重點
3.3V/VCC3.3V 或轉接板規格電源先確認 Qwiic 或轉接板是否含電平轉換。
GNDGND地線I2C 裝置共地。
SDAA4 / SDAI2C 資料UNO 的 SDA。
SCLA5 / SCLI2C 時脈UNO 的 SCL。
✓ WIRING ROWS ALIGNED

已將 4 條線路依同一筆資料逐列對齊;電壓仍須依手上模組版本確認。

04 / BLOCK GUIDE

本課會用到的積木

積木名稱與型別以桃園版 Blockly 現行程式為準,不以通用積木替代。

FS3000 初始化
BLOCK 01playrobot_fs3000_setup

FS3000 初始化

啟動固定 I2C 位址 0x28 的風速模組

位置:感測器 → 環境感測器 → FS3000 風速
FS3000 更新資料
BLOCK 02playrobot_fs3000_update

FS3000 更新資料

讀取最新風速資料

位置:感測器 → 環境感測器 → FS3000 風速
FS3000 風速(m/s)
BLOCK 03playrobot_fs3000_meters_per_second

FS3000 風速(m/s)

取得公尺/秒風速

位置:感測器 → 環境感測器 → FS3000 風速
FS3000 原始值
BLOCK 04playrobot_fs3000_raw

FS3000 原始值

觀察 12 位元原始 count

位置:感測器 → 環境感測器 → FS3000 風速
05 / BLOCK EXAMPLE

測量紙扇造成的風速變化

更新 FS3000 後,把風速以 m/s 列印到序列埠。

桃園版 BLOCKLY / WORKSPACE● BLOCK STYLE
Arduino 程式
初始化
FS3000 初始化playrobot_fs3000_setup
重複執行arduino_delay
FS3000 更新資料playrobot_fs3000_update
FS3000 風速(m/s)playrobot_fs3000_meters_per_second
序列埠列印風速arduino_serial_print
重複執行
FS3000 初始化playrobot_fs3000_setup
重複執行arduino_delay
FS3000 更新資料playrobot_fs3000_update
FS3000 風速(m/s)playrobot_fs3000_meters_per_second
序列埠列印風速arduino_serial_print
X / 010Y / 024

組合步驟

01
先讀取靜止值

沒有風時記錄原始值與 m/s。

為什麼:確認接線與感測器初始化成功。
02
改變氣流方向

依模組箭頭從正面送風,再從側面送風。

為什麼:觀察安裝方向對量測的影響。
03
比較兩種輸出

同時列印 raw 與 m/s。

為什麼:理解原始資料與有單位資料的差別。
積木使用重點先辨認積木是「回傳值」還是「執行動作」,再放到正確的拼接位置。

playrobot_fs3000_setup啟動固定 I2C 位址 0x28 的風速模組

EXAMPLE DOWNLOAD下載後即可練習

下載桃園版 Blockly 專案或對應的文字程式。

預期觀察結果

測試情境可能讀值判讀
紙扇靠近且方向正確m/s 數值通常上升氣流讓熱式感測元件的熱平衡改變。
模組方向轉 90 度讀值可能改變氣流方向與模組結構會影響結果。
06 / CODE EXPLAINED

範例程式逐段解說

這段程式把「FS3000 數位風速感測器」的實體接線、桃園版 Blockly 積木與 Arduino 執行流程接在一起。先對照腳位,再看初始化、讀值、輸出與等待的順序;每一步都可以回到本頁的積木範例實測。

GENERATED LOGIC / EXCERPT積木背後的程式碼收合程式碼 −
TAOYUAN BLOCKLY / ARDUINO C++READ ONLY
#include <Wire.h>
#include <SparkFun_FS3000_Arduino_Library.h>

FS3000 fs3000;

void setup() {
  Serial.begin(115200);
  Wire.begin();
  if (!fs3000.begin()) Serial.println("FS3000 init failed");
}

void loop() {
  Serial.print(fs3000.readMetersPerSecond());
  Serial.println(" m/s");
  delay(200);
}
SELF STUDY GUIDE先看哪一段、為什麼?
01
先載入函式庫與建立裝置#include <Wire.h>

函式庫提供桃園版 Blockly 產生器所需的底層功能;若這裡的函式庫或物件名稱不對,後面的 playrobot_fs3000_setup 就算接線正確也無法使用。

02
把程式腳位對回接線表// 3.3V/VCC → 3.3V 或轉接板規格、GND → GND、SDA → A4 / SDA、SCL → A5 / SCL

本頁接線是 3.3V/VCC → 3.3V 或轉接板規格、GND → GND、SDA → A4 / SDA、SCL → A5 / SCL。程式常數、積木欄位與實體線材必須使用同一組設定;若改了其中一邊,另外兩邊也要一起改。

03
在 setup 只做一次初始化void setup() {

啟動序列埠、I²C/UART 或感測器初始化通常只需要做一次,所以要放在「初始化」區,不要每一圈重複建立裝置。這也對應範例中的啟動積木。

04
在 loop 更新並取得資料void loop() {

重複執行區先讓感測器更新,再讀取 FS3000 初始化。若元件有 data ready、可用性或逾時條件,先判斷狀態再使用數值,避免把無效資料當成真實測量。

05
輸出結果並控制取樣速度if (!fs3000.begin()) Serial.println("FS3000 init failed");

先把原始值、單位或狀態送到序列埠,才能和預期結果比較;等待時間則決定更新速度。若看到亂碼,先檢查鮑率;若數值跳動,先增加合理的取樣間隔或做校正。

自學檢查
  • 實體接線:3.3V/VCC → 3.3V 或轉接板規格、GND → GND、SDA → A4 / SDA、SCL → A5 / SCL。
  • 主要積木:playrobot_fs3000_setup;先確認它是回傳值還是執行動作。
  • 本課板子:Arduino UNO(I2C,SparkFun FS3000 Library);更換控制板或模組版本時,電壓、腳位與函式庫都要重新確認。
07 / DEBUG

常見問題與故障排除

先從「電源、接線、腳位、物體」四個方向檢查,再修改程式。

ERR 01

初始化失敗

先檢查:確認 3.3V、共地、SDA/SCL 與 I2C 位址。

處理方式:檢查轉接板電平與 0x28 位址,必要時使用 I2C 掃描器。

ERR 02

讀值很小或不變

先檢查:確認氣流方向是否對準箭頭。

處理方式:改變風扇距離與方向,先用紙扇做明顯氣流測試。

ERR 03

Arduino 重置

先檢查:觀察供電是否不足或誤接 5V。

處理方式:使用穩定 3.3V 供電,不要從不適合的腳位拉取大電流。

08 / NEXT MISSION

延伸挑戰

從顯示數值,逐步走向條件判斷、燈號回饋與雷達專題。

L1

紙扇風速表

題目:比較無風、慢扇、快扇的 m/s。

解題方向

這題要延伸「FS3000 初始化」的基本讀值:先保留已驗證的接線與初始化,再把題目要求的資料處理加在重複執行區。先把資料整理成可觀察的序列埠或表格結果。

  1. 先匯入本頁 Blockly 範例,確認感測器在沒有加入挑戰功能時能穩定讀值。
  2. 保留 playrobot_fs3000_setup,先把讀值送到序列埠,建立正常範圍或基準值。
  3. 依題目「比較無風、慢扇、快扇的 m/s。」加入比較、分類、累計或時間判斷;門檻要用實測資料決定,不要直接猜一個數字。
  4. 用至少三種不同情境測試,記錄輸入、程式判斷與輸出結果,再修正門檻或取樣間隔。
完成檢核:完成後應能指出:哪一個積木取得資料、哪一段負責判斷或換算、先把資料整理成可觀察的序列埠或表格結果是否在所有測試情境都正確反應。
L2

風速警示

題目:風速超過門檻時點亮 LED。

解題方向

這題要延伸「FS3000 初始化」的基本讀值:先保留已驗證的接線與初始化,再把題目要求的資料處理加在重複執行區。把結果接到題目指定的輸出元件。

  1. 先匯入本頁 Blockly 範例,確認感測器在沒有加入挑戰功能時能穩定讀值。
  2. 保留 playrobot_fs3000_setup,先把讀值送到序列埠,建立正常範圍或基準值。
  3. 依題目「風速超過門檻時點亮 LED。」加入比較、分類、累計或時間判斷;門檻要用實測資料決定,不要直接猜一個數字。
  4. 用至少三種不同情境測試,記錄輸入、程式判斷與輸出結果,再修正門檻或取樣間隔。
完成檢核:完成後應能指出:哪一個積木取得資料、哪一段負責判斷或換算、把結果接到題目指定的輸出元件是否在所有測試情境都正確反應。
L3

風道比較

題目:比較直管、彎管與開放空間中的風速。

解題方向

這題要延伸「FS3000 初始化」的基本讀值:先保留已驗證的接線與初始化,再把題目要求的資料處理加在重複執行區。先把資料整理成可觀察的序列埠或表格結果。

  1. 先匯入本頁 Blockly 範例,確認感測器在沒有加入挑戰功能時能穩定讀值。
  2. 保留 playrobot_fs3000_setup,先把讀值送到序列埠,建立正常範圍或基準值。
  3. 依題目「比較直管、彎管與開放空間中的風速。」加入比較、分類、累計或時間判斷;門檻要用實測資料決定,不要直接猜一個數字。
  4. 用至少三種不同情境測試,記錄輸入、程式判斷與輸出結果,再修正門檻或取樣間隔。
完成檢核:完成後應能指出:哪一個積木取得資料、哪一段負責判斷或換算、先把資料整理成可觀察的序列埠或表格結果是否在所有測試情境都正確反應。
教師快速檢核4 POINT CHECK
  • 能說明 FS3000 是數位 I2C 風速感測器。
  • 能正確完成 3.3V I2C 接線。
  • 能分辨 raw、m/s 與 mph。
09 / EVIDENCE資料來源與版本展開查看 +
LAST REVIEWED / 2026-08-13

本頁使用零件圖鑑標準範本,內容可由網站編輯模式持續維護。

返回教學庫 →