TY桃園智造感測器教學庫
感測器教學庫/環境感測器/AMG8833 8×8 熱像儀
BATCH 02 · 已發布

SENSOR / AMG8833

AMG8833 8×8 紅外線熱像儀把 64 個溫度像素變成一張熱分布圖

AMG8833 是 Panasonic Grid-EYE 8×8 紅外線陣列,透過 I2C 回傳 64 個像素溫度。桃園版 Blockly 提供指定像素、最低與最高溫度,適合做人體熱點與物體表面比較。

入門45 分鐘Arduino UNO(I2C,Adafruit AMG88xx Library)
READYDATA
SIGNAL STABLE
AMG8833 8×8 紅外線熱
VIN/VCC / 依模組規格GND / GND
01 / PREPARE

課前準備

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

學習目標

  1. 理解熱像陣列與單點溫度的差別。
  2. 以 0x69 初始化並更新 64 個像素。
  3. 讀取指定像素、最高與最低溫度,建立熱分布概念。

材料清單

1 個AMG8833 8×8 熱像模組預設 I2C 位址通常為 0x69。
1 組Arduino UNO 與 USB 線UNO 使用 A4/A5 I2C。
數個手掌、暖杯與冷物體不接觸感測器,保持固定距離。
適用對象國中生活科技與 Arduino 初學者
建議課時45 分鐘
示範平台Arduino UNO(I2C,Adafruit AMG88xx Library)
02 / HOW IT WORKS

64 個像素拼成溫度分布

每個紅外線像素接收視野內的熱輻射,形成 8×8 溫度陣列;像素不是可見光影像,也不等同於高解析度熱像攝影機。

01

初始化陣列

以 I2C 位址啟動 AMG8833。

02

更新像素

一次讀取 64 個攝氏溫度值。

03

比較熱點

尋找指定像素、最高與最低溫度。

DISTANCE FORMULApixelIndex = row × 8 + column

桃園版積木以第 1–64 格呈現像素;實際方向會隨模組安裝而改變。

03 / WIRING

接線配置

AMG8833 是 3.3V I2C 感測器;若使用 UNO,請確認模組是否含穩壓與電平轉換。

MODULEAMG8833 8×8 紅外線熱VIN/VCCGNDSDASCL
CONTROLArduino UNO(I2C,Adafruit AMG88xx Library)依模組規格GNDA4 / SDAA5 / SCL
模組腳位接到控制板訊號方向檢查重點
VIN/VCC依模組規格電源晶片本身為 3.3V。
GNDGND地線共地。
SDAA4 / SDAI2C 資料UNO SDA。
SCLA5 / SCLI2C 時脈UNO SCL。
✓ WIRING ROWS ALIGNED

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

04 / BLOCK GUIDE

本課會用到的積木

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

AMG8833 8×8 熱像儀初始化I2C_ADDR 0x69
BLOCK 01playrobot_amg8833_setup

AMG8833 8×8 熱像儀初始化

啟動 0x69 或 0x68 感測器

位置:感測器 → 環境感測器 → AMG8833 熱像儀
I2C_ADDR
0x69依 ADDR 腳位與模組設定選擇。
AMG8833 更新 64 個溫度像素
BLOCK 02playrobot_amg8833_update

AMG8833 更新 64 個溫度像素

讀取完整熱像陣列

位置:感測器 → 環境感測器 → AMG8833 熱像儀
指定像素溫度(°C)
BLOCK 03playrobot_amg8833_pixel

指定像素溫度(°C)

讀取第 1–64 格像素

位置:感測器 → 環境感測器 → AMG8833 熱像儀
最低像素溫度(°C)
BLOCK 04playrobot_amg8833_min_temperature

最低像素溫度(°C)

取得陣列最低溫

位置:感測器 → 環境感測器 → AMG8833 熱像儀
最高像素溫度(°C)
BLOCK 05playrobot_amg8833_max_temperature

最高像素溫度(°C)

取得陣列最高溫

位置:感測器 → 環境感測器 → AMG8833 熱像儀
05 / BLOCK EXAMPLE

找出手掌熱點

更新 64 個像素後,列印最高溫與中心像素。

桃園版 BLOCKLY / WORKSPACE● BLOCK STYLE
Arduino 程式
初始化
AMG8833 初始化(0x69)sensor_block
重複執行arduino_delay
AMG8833 更新 64 個像素sensor_block
AMG8833 最高像素溫度sensor_block
指定像素溫度playrobot_amg8833_pixel
序列埠列印arduino_serial_print
重複執行
AMG8833 初始化(0x69)sensor_block
重複執行arduino_delay
AMG8833 更新 64 個像素sensor_block
AMG8833 最高像素溫度sensor_block
指定像素溫度playrobot_amg8833_pixel
序列埠列印arduino_serial_print
X / 010Y / 024

組合步驟

01
固定距離

讓手掌與模組保持固定距離。

為什麼:視野與距離會影響像素溫度。
02
先更新再讀取

把 update 放在 pixel/min/max 前。

為什麼:避免讀到上一輪資料。
03
畫出 8×8

將 64 格分成近、暖、熱三種顏色。

為什麼:把數字轉成空間熱分布。
積木使用重點先辨認積木是「回傳值」還是「執行動作」,再放到正確的拼接位置。

playrobot_amg8833_setup啟動 0x69 或 0x68 感測器

預期觀察結果

測試情境可能讀值判讀
手掌進入視野部分像素溫度升高人體熱輻射形成熱點。
暖杯移動最高溫位置跟著移動陣列可提供粗略熱源位置。
06 / CODE EXPLAINED

範例程式逐段解說

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

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

Adafruit_AMG88xx amg;
float pixels[64];

void setup() {
  Serial.begin(115200);
  Wire.begin();
  if (!amg.begin(0x69)) Serial.println("AMG8833 init failed");
}

void loop() {
  amg.readPixels(pixels);
  Serial.println(pixels[27]);
  delay(250);
}
SELF STUDY GUIDE先看哪一段、為什麼?
01
先載入函式庫與建立裝置#include <Wire.h>

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

02
把程式腳位對回接線表// VIN/VCC → 依模組規格、GND → GND、SDA → A4 / SDA、SCL → A5 / SCL

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

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

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

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

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

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

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

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

常見問題與故障排除

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

ERR 01

初始化失敗

先檢查:確認 0x69/0x68、供電與 SDA/SCL。

處理方式:依 ADDR 設定選位址,並確認模組的 3.3V 電平。

ERR 02

所有像素很接近

先檢查:目標物是否太遠或環境溫度均勻。

處理方式:用手掌或暖杯在近距離測試。

ERR 03

熱點位置相反

先檢查:檢查模組安裝方向。

處理方式:在學習單標示實際 1–64 像素方向。

08 / NEXT MISSION

延伸挑戰

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

L1

最高溫提示

題目:最高像素超過門檻時亮 LED。

解題方向

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

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

像素溫度表

題目:將 64 格分成三種溫度區間。

解題方向

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

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

熱點追蹤

題目:找出最高溫像素的編號並推估位置。

解題方向

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

  1. 先匯入本頁 Blockly 範例,確認感測器在沒有加入挑戰功能時能穩定讀值。
  2. 保留 playrobot_amg8833_setup,先把讀值送到序列埠,建立正常範圍或基準值。
  3. 依題目「找出最高溫像素的編號並推估位置。」加入比較、分類、累計或時間判斷;門檻要用實測資料決定,不要直接猜一個數字。
  4. 用至少三種不同情境測試,記錄輸入、程式判斷與輸出結果,再修正門檻或取樣間隔。
完成檢核:完成後應能指出:哪一個積木取得資料、哪一段負責判斷或換算、先把資料整理成可觀察的序列埠或表格結果是否在所有測試情境都正確反應。
教師快速檢核4 POINT CHECK
  • 能說明 8×8 熱像陣列與單點感測的差異。
  • 能正確設定 I2C 位址與更新流程。
  • 能用最高/最低溫與指定像素進行分析。
09 / EVIDENCE資料來源與版本展開查看 +
LAST REVIEWED / 2026-08-13

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

返回教學庫 →