互動燈光與心跳感測|學習筆記 01
整理:2026-10-22 · 實驗日期:待確認 · 狀態:概念整理與接線待核對
01|先讀:安全與證據範圍
使用者在舊對話表示電源供應器的地端沒有接線。LRS-50-12 的保護接地、金屬外殼接地、端子遮蔽、線材固定與市電配線,必須由合格專業人士確認後才可通電。確認前停止使用這套市電接線。 不要接觸或調整帶電端子,不拆電源外殼;拔插頭不代表內部立即沒有殘留電壓。本文只提供低壓系統的核對架構,不是市電施工指南。
−V 與 Arduino GND 相接,不能補上缺少的 PE;USB 接著電腦也不能當作保護接地。禁止把 L、N 接入 Arduino、麵包板、訊號 WAGO 或直流共地端。不要自行短接 N 與 PE,也不要把 −V 與 FG 任意跨接。
這次讀取舊對話時,只取得五段使用者訊息;先前回答都是引用佔位符,沒有原始程式、接線照片或波形。以下依「可讀描述+本次指定器材+原廠資料」整理,不能宣稱已重建完整對話或驗證現場接線。
| 證據等級 | 目前能說的事 |
|---|---|
| 使用者明確描述 | BI、燈條 GND、電源 −V、Arduino GND 經 WAGO 221 接在一起;電源地端當時沒有接東西 |
| 本次指定整理範圍 | Nano、HW-502/KY-039、WS2815 12V、LRS-50-12、A0、D6、Arduino IDE、FastLED |
| 規格已核對 | 經典 Nano 與其他 Nano 型號不同;LRS-50-12 額定 12V、4.2A、50.4W;WS2815 的供電和資料電壓不可混為一談 |
| 尚待驗證 | 實際板型、感測器腳位、A0/D6 接線、Nano 供電方式、燈珠數量、BI 所在端、所有實測結果 |
02|這個作品怎麼運作
指尖血液容積變化
→ 紅外光受到吸收/散射的程度改變
→ 感光元件的電流改變
→ 模組電路產生變動電壓
→ Nano A0 的 ADC 取樣
→ 程式判斷波形/事件
→ FastLED 編碼數位資料,從 D6 送到燈條 DI
→ 各像素依資料控制顏色與亮度
能量路徑:合格安裝的 12V 電源 → 燈條 +12V / GND
控制路徑:Nano D6 → DI;Nano GND ↔ 燈條 GND
感測器提供的是光學訊號,不是「心臟直接送出一個電壓」;原始數值還混有環境光、手指移動、接觸壓力和電源雜訊。這是藝術互動與學習原型,不能把顯示的數值當作醫療量測。
03|器材各自負責什麼
| 器材 | 角色 | 核對重點 |
|---|---|---|
| Arduino Nano | 讀取感測器、運算、傳送控制訊號 | 本文 5V/10-bit 說明以經典 ATmega328 系列 Nano 為前提;其他 Nano 不可照套 |
| HW-502 / KY-039 | 紅外光發射與感光,輸出類比訊號 | 名稱相近不保證同電路、同腳位;先確認板上 S、+、− 與供電規格,不依線色猜 |
| WS2815 12V LED 燈條 | 可逐像素控制的 RGB 燈條 | 核對 +12V、GND、DI、BI、箭頭方向及完整晶片版本 |
| LRS-50-12 | 把輸入電源轉為標稱 12V DC | 額定 4.2A/50.4W,環境與安裝條件會影響可用負載;不是把 4.2A 強灌進負載 |
| WAGO 221 | 把導線可靠連成同一節點 | 常見 221-412/413/415 同一顆的孔互通;不是降壓器、保險絲或訊號轉換器 |
| Arduino IDE | 編輯、編譯、上傳程式與看序列資料 | 記錄 IDE、板卡套件、處理器與連接埠版本/設定 |
| FastLED | 把顏色陣列轉成符合燈條時序的資料 | 記錄函式庫版本、chipset、色序、顆數、資料腳位 |
原廠規格:Nano、LRS-50、WAGO 221。WAGO 的導線種類、線徑、剝線長度與額定值依具體型號查,不用「221」三個字概括全部。
04|電壓、電流、功率與 AC/DC
電壓 V 是兩個位置的電位差,好比比較兩個高度;單說「這裡 5V」其實省略了「相對哪裡」。電流 I 是每秒通過的電荷量;功率 P 是每秒轉移的能量。在穩定直流條件下,P = V × I。例如假想 12V 負載取用 2A,功率是 24W;這不是本次實測。
定電壓電源提供合適電壓,負載依自身電路取用電流。電源額定電流是能力上限,不是保證每條細線都能承受的安全電流。短路時,即使 12V 也可能讓線材過熱,需依支路線徑設計保護。
AC 交流:指定兩點間的電壓極性隨時間交替。對純電阻負載,傳統電流方向也隨之反轉;有電感、電容或電子電路時,電流與電壓的時間關係會不同。不是電流繞圈的幾何方向變了,也不是孔數決定 AC/DC。
DC 直流:通常保持固定極性,可以有漣波或大小變化,不一定每一瞬間都完全平坦。USB 插座裡有多個接點;一般電源轉換器內部經轉換與濾波才輸出 DC,並非因為「只有一個插孔」就是 DC。
傳統電流方向定義為正電荷移動方向;金屬中的電子漂移方向相反。理解電路時先固定用傳統電流方向即可。
L 火線、N 中性線、PE 保護導體功能不同。N 在正常運作可流過負載電流,不能當作安全可碰的線;PE 在正常情況不作為負載回路。插頭孔數與線色不能代替專業檢查。
05|GND、−V、FG、PE:不是同一件事
| 名稱 | 在這個系統的意思 | 不能推論成什麼 |
|---|---|---|
| GND | 某段電路選定的 0V 基準及常見回流節點 | 不代表相對大地永遠是 0V,也不保證可觸摸 |
| −V | LRS 直流輸出的負端;+V 相對它約為 +12V | 不代表它是「−12V」,也不等於保護地 |
| FG | 機殼/框架接地;此電源需依安裝要求處理保護接地 | 不能用 Arduino GND 或 USB 線代替 |
| PE | 供電系統的保護接地導體,供故障保護使用 | 不是資料訊號的普通回線 |
「把 GND 當作 0」像選一個共同的高度基準,這個比喻有用,但 GND 不是主動命令電壓歸零的元件。兩點用導線相連後會趨於相同電位,實際導線仍有電阻與電感,大電流會造成地電位差。
在這套非隔離、單端數位訊號連接中,Nano 和燈條需要共同訊號參考。假設 Nano 的 D6 比自己的 GND 高 5V,燈條是拿 DI 與自己的 GND 比較;共地後才有一致的比較基準。12V 是燈條的能量供應,D6 是資料輸入,兩者不是同一個端子。
共地只解決參考基準,不會降壓,也不保證相容或不燒毀。 還要核對訊號最大允許電壓、HIGH/LOW 門檻、供電狀態、協定、時序與電流回路。5V 訊號接進只容許 3.3V 的輸入,依然可能損壞。不同未知電源、隔離系統或市電回路,不可套用「全部 GND 接起來」。
WS2815B-V1 的一份原廠資料列出 HIGH 輸入範圍 2.7–5.7V,說明供電 12V 不等於資料用 12V;實際燈條版本仍須核對。絕不可把 +12V 送到 DI、BI、A0、D6 或 Nano 5V。參考:Worldsemi 規格書,第 2–3 頁。
06|接線複習:描述、目標、驗證分開
下表是低壓核對表,不是已驗收接線圖。只有 WAGO 共地與未接地端兩件事有可讀的使用者描述。
| 起點 | 終點/用途 | 目前狀態 |
|---|---|---|
| LRS +V | 燈條 +12V,走適當線徑與支路保護 | 合理目標;現場待核對 |
| LRS −V | 燈條 GND、Nano GND 的共同節點 | 使用者描述已接;尚未量測 |
| Nano D6 | 燈條輸入端 DI | 本次指定腳位;實際接線待核對 |
| 燈條首端 BI | 依該燈條製造商圖處理;常見接 GND | 使用者描述接同一共地 WAGO;需確認是首端與正確版本 |
| 感測器 S | Nano A0 | 合理目標;實際腳位待核對 |
| 感測器 + | 相容的穩壓電源,常見為 Nano 5V | 先驗證模組與 Nano 型號;未確認實際供電 |
| 感測器 − | Nano GND | 合理目標;現場待核對 |
| Nano USB | 電腦供電/上傳/序列資料 | 可用的獨立測試方式;原供電狀態未知 |
| LRS FG/接地端 | 由專業人士確認 PE 與機殼保護連接 | 使用者曾說未接;禁止當成已安全 |
低壓概念圖(市電端不在圖中;電源安裝先經專業確認)
LRS +V ── 適當支路保護 ─────────── LED +12V
LRS −V ── 共地節點 ────────────── LED GND
├────────────── Nano GND
└─ 首端 BI(只在該型號接法確認後)
Nano D6 ───────────────────────── LED DI → 箭頭向後續像素
Nano A0 ← 感測器 S
Nano 合適電源 → 感測器 +;Nano GND → 感測器 −
燈條大電流的去回路直接走電源與燈條間的合適導線,不要讓燈條負載電流穿過 Nano、USB 線或麵包板。共地是訊號參考線,不是讓 Arduino 幫整條燈條供電。正電源分接使用另一顆連接器;同一顆互通的 WAGO 絕不混接 +12V 和 GND。每孔夾持方式依原廠說明,避免裸銅外露與鬆脫。
Nano 本次可先用 USB 做獨立測試;不要同時任意接入外部 5V,以免回灌。VIN 是另一種供電路徑,有穩壓與散熱限制;本文不把 LRS 12V 接 VIN 當作目前既定方案。
07|WS2815 的 BI 到底做什麼
DI 是主要資料輸入,BI 是備援資料輸入,DO 是送往後續像素的資料輸出。資料沿燈條方向前進,BI 並不是雙向通訊或另一條電源。
常見 WS2815 燈條把備援資料跨過相鄰像素傳送,使某些單點資料轉送故障時,後續像素仍有機會收到資料。首顆沒有前面的備援來源,因此常見原廠應用圖將首端 BI 接 GND,避免輸入浮動;必須對照所購燈條說明。不是把整條每個 BI 全部接地,也不是故障時從 GND 產生備援資料。 拼接燈段要按原廠串接圖延續資料路徑。
備援不能修好壞掉的發光元件,也不能保證供電斷線、短路或多顆連續故障仍然運作。使用者目前把 BI 接地的描述,尚不足以確認是正確的首端 BI。
參考:Worldsemi WS2815 原廠資料之典型應用圖(轉載)。晶片版本與成品燈條佈線可能不同,應優先取得購買型號對應文件。
08|為什麼感測用 A0、燈條用 D6
類比訊號的電壓會連續變化,ADC(類比轉數位轉換器)把它分成數值。經典 Nano 的 analogRead(A0) 一般回傳 0–1023(10-bit,共 1024 階)。預設參考電壓通常跟板上供電相關;以理想 5V 估算,每階約 5/1024 ≈ 4.88mV,粗略換算可用 raw × Vref / 1023。實際 USB 電壓、雜訊及 ADC 誤差會影響結果。
0 或 1023 不一定代表「沒有心跳」:可能是接錯、飽和、供電問題或感測光線不合適。輸入不得超出板子允許範圍;ADC 不是能安全量 12V 的萬用表。
D6 傳的是具有精確脈寬的數位序列。FastLED 負責產生時序,燈條內部再控制 RGB 亮度;不是對 D6 使用一般 analogWrite() 就會得到 WS2815 顏色。D6 是此設計選用的腳位,不是唯一能用的腳位;A0 也不是只能接這顆感測器。參考:Arduino analogRead、FastLED 文件。
09|光學脈搏與資料判斷
KY-039 類模組常含紅外 LED 與光電晶體,血液容積變化會改變感光量。模組與手指擺放不同,可涉及透射、反射與散射;未看到 HW-502 實物,不能指定它與某版 KY-039 完全相同。Joy-IT 模組說明 只能證明該廠模組的設計,不能代替手上模組腳位表。
先觀察原始波形,再做移動平均、去基線、門檻與防重複觸發。手指要穩定而非用力壓住,減少環境光變動;先單獨測感測器,避免燈條閃爍造成光學或電源干擾。
如果已可靠辨識相鄰脈搏時間差 Δt 毫秒,才可算 BPM = 60000 / Δt。一次雜訊尖峰不能算一次心跳;需要多週期一致性、合理間距及失去手指時的無效狀態。將「目前沒有可信訊號」顯示出來,比編出一個穩定數字好。
10|Arduino IDE 與最小測試
- 先確認板型,再在 IDE 選相符的板卡套件、開發板與連接埠;經典 Nano 通常使用 Arduino AVR Boards。
- 用能傳資料的 USB 線,先驗證內建 Blink。相容板的 USB 晶片/驅動與 bootloader 可能不同;只有遇到上傳問題且型號吻合時才檢查 ATmega328P(Old Bootloader)選項。
- 感測器獨立接妥後,使用下列新建測試程式;這不是舊對話成功程式,也尚未在使用者硬體執行。
void setup() {
Serial.begin(115200);
}
void loop() {
Serial.println(analogRead(A0));
delay(10); // 約每 10ms 取樣;實際還有執行時間
}
序列監控視窗/繪圖器設為 115200。觀察空載、手指穩定、移動手指三種情況;保存資料,不只寫「有動」。
- 安裝 FastLED,記下版本。只在供電安全、顆數與接線確認後,做小範圍低亮度的紅、綠、藍測試。
DATA_PIN=6、NUM_LEDS=實際數量,chipset 與 GRB/RGB 色序按燈條規格和函式庫版本設定,不盲抄其他燈種。 - 感測與燈條各自通過後,再串接邏輯。LED 更新可能影響取樣時間;長時間
delay()與密集序列輸出也會改變節奏,後續可改成millis()排程。
11|Debug:一次只改一件事
以下是建議流程,並非已完成的除錯紀錄。
| 順序/現象 | 先查什麼 | 留下什麼證據 |
|---|---|---|
| 0 安全門檻 | PE、端子遮蔽、固定、絕緣、低壓極性及支路保護 | 專業確認紀錄;不通過就停止市電測試 |
| 1 無法上傳 | 資料 USB 線、連接埠、板型、驅動、bootloader | 完整錯誤文字與設定 |
| 2 A0 固定 0/1023 | 感測器腳位、供電、飽和、接觸及光線 | 原始序列數據;不先調演算法 |
| 3 A0 雜亂 | 手指移動、環境光、供電、線長及接地回路 | 同條件分別開/關燈條比較 |
| 4 燈條全不亮 | 安全確認後查低壓輸出、箭頭、DI、共地、D6 與程式 | 實際電壓、接線圖、最小程式 |
| 5 顏色錯誤 | GRB/RGB 色序設定 | 紅綠藍分別測試結果 |
| 6 隨機閃爍 | 壓降、回流路徑、接點、訊號幅度、線長、時序 | 低亮度/少量像素與原設定比較 |
| 7 波形有動但 BPM 不合理 | 誤把動作雜訊當峰、重複觸發、基線漂移 | 多週期波形及峰值時間 |
| 8 整合才失敗 | 電源/光學干擾、刷新阻塞、共地導線壓降 | 兩子系統單測與整合差異 |
改線前移除所有電源(含 USB),不帶電插拔訊號與地線。低壓量測也只在市電端已安全封裝的條件下進行;不熟悉萬用表時請人示範。不要用電流檔直接跨接電源正負端,也不要在帶電電路測電阻/導通。 本筆記不引導新手量測裸露市電。
12|供電常見誤解與下一步
「換成 5V 燈條就能由 Arduino 供電」不成立。電壓相同只是一個條件,還要算電流;大量 LED 通常要由足夠容量的獨立穩壓電源供電。也不能把 5V 燈條換上原本 12V 端。
WS2815 各版本功耗不同,不能套用另一種燈珠的「每顆幾 mA」。先取得每米功率或實際最大負載,再算 總功率 = 每米功率 × 長度、所需電流 ≈ 總功率 / 12V,加上設計餘裕並核對降額曲線。軟體限亮不是保險絲,FastLED 的估算也不等於實測電源限制。
下一步先完成 待驗證清單,再增加心跳偵測與視覺效果。未取得板型、燈條數量、照片和程式前,不補寫「全部正常」「成功測得心跳」或可承載顆數。