學習目標
- ✓理解熱像陣列與單點溫度的差別。
- ✓以 0x69 初始化並更新 64 個像素。
- ✓讀取指定像素、最高與最低溫度,建立熱分布概念。
SENSOR / AMG8833
AMG8833 是 Panasonic Grid-EYE 8×8 紅外線陣列,透過 I2C 回傳 64 個像素溫度。桃園版 Blockly 提供指定像素、最低與最高溫度,適合做人體熱點與物體表面比較。
先確認這一課要學會什麼,以及桌面上需要哪些材料。
每個紅外線像素接收視野內的熱輻射,形成 8×8 溫度陣列;像素不是可見光影像,也不等同於高解析度熱像攝影機。
以 I2C 位址啟動 AMG8833。
一次讀取 64 個攝氏溫度值。
尋找指定像素、最高與最低溫度。
桃園版積木以第 1–64 格呈現像素;實際方向會隨模組安裝而改變。
AMG8833 是 3.3V I2C 感測器;若使用 UNO,請確認模組是否含穩壓與電平轉換。
| 模組腳位 | 接到控制板 | 訊號方向 | 檢查重點 |
|---|---|---|---|
| VIN/VCC | 依模組規格 | 電源 | 晶片本身為 3.3V。 |
| GND | GND | 地線 | 共地。 |
| SDA | A4 / SDA | I2C 資料 | UNO SDA。 |
| SCL | A5 / SCL | I2C 時脈 | UNO SCL。 |
已將 4 條線路依同一筆資料逐列對齊;電壓仍須依手上模組版本確認。
積木名稱與型別以桃園版 Blockly 現行程式為準,不以通用積木替代。
playrobot_amg8833_setup啟動 0x69 或 0x68 感測器
位置:感測器 → 環境感測器 → AMG8833 熱像儀playrobot_amg8833_update讀取完整熱像陣列
位置:感測器 → 環境感測器 → AMG8833 熱像儀playrobot_amg8833_pixel讀取第 1–64 格像素
位置:感測器 → 環境感測器 → AMG8833 熱像儀playrobot_amg8833_min_temperature取得陣列最低溫
位置:感測器 → 環境感測器 → AMG8833 熱像儀playrobot_amg8833_max_temperature取得陣列最高溫
位置:感測器 → 環境感測器 → AMG8833 熱像儀更新 64 個像素後,列印最高溫與中心像素。
sensor_blockarduino_delaysensor_blocksensor_blockplayrobot_amg8833_pixelarduino_serial_printsensor_blockarduino_delaysensor_blocksensor_blockplayrobot_amg8833_pixelarduino_serial_print讓手掌與模組保持固定距離。
為什麼:視野與距離會影響像素溫度。把 update 放在 pixel/min/max 前。
為什麼:避免讀到上一輪資料。將 64 格分成近、暖、熱三種顏色。
為什麼:把數字轉成空間熱分布。playrobot_amg8833_setup:啟動 0x69 或 0x68 感測器
下載桃園版 Blockly 專案或對應的文字程式。
| 測試情境 | 可能讀值 | 判讀 |
|---|---|---|
| 手掌進入視野 | 部分像素溫度升高 | 人體熱輻射形成熱點。 |
| 暖杯移動 | 最高溫位置跟著移動 | 陣列可提供粗略熱源位置。 |
這段程式把「AMG8833 8×8 紅外線熱像儀」的實體接線、桃園版 Blockly 積木與 Arduino 執行流程接在一起。先對照腳位,再看初始化、讀值、輸出與等待的順序;每一步都可以回到本頁的積木範例實測。
#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);
}#include <Wire.h>函式庫提供桃園版 Blockly 產生器所需的底層功能;若這裡的函式庫或物件名稱不對,後面的 playrobot_amg8833_setup 就算接線正確也無法使用。
// VIN/VCC → 依模組規格、GND → GND、SDA → A4 / SDA、SCL → A5 / SCL本頁接線是 VIN/VCC → 依模組規格、GND → GND、SDA → A4 / SDA、SCL → A5 / SCL。程式常數、積木欄位與實體線材必須使用同一組設定;若改了其中一邊,另外兩邊也要一起改。
void setup() {啟動序列埠、I²C/UART 或感測器初始化通常只需要做一次,所以要放在「初始化」區,不要每一圈重複建立裝置。這也對應範例中的啟動積木。
void loop() {重複執行區先讓感測器更新,再讀取 AMG8833 8×8 熱像儀初始化。若元件有 data ready、可用性或逾時條件,先判斷狀態再使用數值,避免把無效資料當成真實測量。
if (!amg.begin(0x69)) Serial.println("AMG8833 init failed");先把原始值、單位或狀態送到序列埠,才能和預期結果比較;等待時間則決定更新速度。若看到亂碼,先檢查鮑率;若數值跳動,先增加合理的取樣間隔或做校正。
先從「電源、接線、腳位、物體」四個方向檢查,再修改程式。
先檢查:確認 0x69/0x68、供電與 SDA/SCL。
處理方式:依 ADDR 設定選位址,並確認模組的 3.3V 電平。
先檢查:目標物是否太遠或環境溫度均勻。
處理方式:用手掌或暖杯在近距離測試。
先檢查:檢查模組安裝方向。
處理方式:在學習單標示實際 1–64 像素方向。
從顯示數值,逐步走向條件判斷、燈號回饋與雷達專題。
題目:最高像素超過門檻時亮 LED。
這題要延伸「AMG8833 8×8 熱像儀初始化」的基本讀值:先保留已驗證的接線與初始化,再把題目要求的資料處理加在重複執行區。把結果接到題目指定的輸出元件。
題目:將 64 格分成三種溫度區間。
這題要延伸「AMG8833 8×8 熱像儀初始化」的基本讀值:先保留已驗證的接線與初始化,再把題目要求的資料處理加在重複執行區。先把資料整理成可觀察的序列埠或表格結果。
題目:找出最高溫像素的編號並推估位置。
這題要延伸「AMG8833 8×8 熱像儀初始化」的基本讀值:先保留已驗證的接線與初始化,再把題目要求的資料處理加在重複執行區。先把資料整理成可觀察的序列埠或表格結果。
確認 64 像素、3.3V 與 60° 視角。
補充 Arduino library、像素讀取與熱像陣列使用方式。
對照 setup、update、pixel、最低與最高溫積木。