DEV Community

張旭豐
張旭豐

Posted on

碰一下,燈就亮了——用 TTP223 + Arduino 做隱形觸碰開關:當你的指尖成為開關

碰一下,燈就亮了——用 TTP223 + Arduino 做隱形觸碰開關:當你的指尖成為開關


感性開場:觸控面板的神秘感

你只是輕輕碰了一下,燈就亮了

沒有按鈕。

沒有機械結構。

連聲音都沒有。

那一秒,只有你知道開關在哪裡。

這不是魔法。這是 TTP223 電容式觸碰開關——只要你的指尖靠近,它就感應到了。

你可以把這個開關藏在木頭裡、壓克力下方、石材檯面之下,甚至是牆壁裡。沒有人看得到它。但你需要時,它就在那裡等你。

今天這篇文章,要帶你從零開始,用 TTP223 + Arduino 做一個真正的隱形觸碰開關——藏在哪裡,由你決定。


想像幾個畫面

在動手之前,先問自己:

如果開關可以藏在任何地方,你會藏在哪裡?

這些應用,都是真實可以做出來的:

  • 藏在床頭木板裡:深夜起床,手掌輕靠床頭,床頭燈無聲亮起——開關在你指定的那塊木頭裡,沒有人知道它在哪裡。

  • 石材檯面下方:廚房潮濕、滿手食材,把開關埋在石材檯面下,手指濕答答也能精準觸發——再也不怕按鍵進水。

  • 沙發扶手布料下:客廳沙發旁,TTP223 隱在布料下,輕碰扶手就能切換燈光模式,看不到開關,只有你的直覺。

  • 博物館互動牆:觀眾用手指在牆面滑過,畫面隨觸碰位置即時變化,沒有人需要鼓起勇氣去「按」一個按鈕。

  • 科教展啟動開關:學校科教展上,學生碰一下就啟動 Arduino 小車,沒有按鍵磨損問題,作品可以被重複使用一整年。

TTP223 的核心魅力只有一個:看不見,但存在。


上半場:TTP223 為什麼特別?

機械開關的痛

傳統開關需要什麼?

實體按鈕、機械結構、需要露在外面、需要施力按下去——而且,按了十萬次之後,那個機械結構就會疲乏、接觸不良、最終失效。

廚房潮濕不敢按。浴室濕手不敢碰。按鍵「喀喀」聲在安靜的房間裡特別刺耳。

這些,都是機械開關與生俱來的問題。

電容感測的原理

TTP223 是一個電容式觸碰感測晶片。它的工作原理和傳統開關完全不一樣。

你可以把它想像成「地鐵月台的安全門感測」。

傳統機械開關:有人用力推門,月台才知道有人——必須真正物理接觸、施力。

TTP223:月台下方的隱形感測場——人還沒碰到門,只要靠近到一定距離,空氣中的電場變化就被偵測到了。

TTP223 的感測極(相當於月台下的感測天線)與人之間隔著一層非導電材質(木頭、壓克力、玻璃),當手指靠近時,人體本身攜帶的電荷改變了感測極周圍的電場,TTP223 偵測到這個電容值變化,瞬間輸出訊號。

手指不需要真正觸碰導體。只要「接近」到改變電場,TTP223 就感應到了。

TTP223 勝過機械開關的五個優點

1. 沒有機械疲乏
機械開關有按壓次數壽命(通常 10萬~100萬次),TTP223 沒有接點,理論上「永久」使用。按了十萬次之後,它還是和第一次一樣敏銳。

2. 可以藏在任何地方
只要是非導電材質(木頭、壓克力、玻璃、石材、塑膠),都可以放在底下觸發。表面看不到任何按鍵,設計自由度極高。

3. 完全防水
機械開關怕水,TTP223 只要介質表面乾燥即可觸發。廚房、浴室、戶外潮濕環境,它都不怕。

4. 安靜無聲
機械開關有「喀喀」聲,TTP223 完全無聲——開關動作時,房間裡一點聲音都沒有。

5. 訊號乾淨,無彈跳
機械開關按下時會有彈跳(bounce)現象,需要軟體防抖。TTP223 輸出乾淨的數位訊號,接到 Arduino 直接讀取,零 debounce。

TTP223 觸控開關模組

圖說:TTP223 觸控開關模組,體積極小,僅需三條線就能與 Arduino 連接(Source: Wikimedia Commons)


下半場:動手做

材料清單

材料 規格建議 用途
TTP223 觸控模組 有小板(TTP223-BA6) 核心感測元件
Arduino Uno 或 Nano 含 USB 供電 控制核心
**LED(藍色) 5mm 觸發後的輸出回饋
220Ω 電阻 1/4W 限制 LED 電流
杜邦線 母對公、公對公 各數條 連接線
麵包板 400 孔 快速搭建原型
觸控感測片 10mm×10mm 銅片或鋁片 實際觸控區域(可用PCB空板代替)
100nF 濾波電容 陶瓷電容 電源去耦,降低雜訊
壓克力板(可選) 3~5mm 厚 覆蓋在感測片上測試

淘寶關鍵字TTP223 觸控模組Arduino Nano ATmega328PTTP223 BA6 觸碰開關

Arduino 電路連接

圖說:Arduino 與外部元件的連接方式參考圖。TTP223 的 VCC 接 5V,GND 接 GND,OUT 接 Arduino 的數位腳位(Source: Wikimedia Commons)


電路接線

TTP223 模組只需要三條線:

TTP223 腳位 連接到
VCC 5V(支援 2.0V~5.5V)
GND GND
OUT/DOUT Arduino 任意數位腳(如 D2)

觸控感測片:用杜邦線連接到 TTP223 模組的 CS 感測腳。感測片面積建議 10mm×10mm 以上,太小會讓靈敏度不足。


電路安全提醒

⚠️ 供電要注意:

TTP223 支援 2.0V~5.5V,與 Arduino 5V 或 3.3V 系統皆可相容。與 Arduino 共用 5V 電源時,直接連接 VCC 即可。

⚠️ 電源去耦(重要):

在 TTP223 的 VCC 與 GND 之間加一顆 100nF 陶瓷電容(靠近模組本體),可以濾除電源雜訊,避免誤觸發。如果與馬達、LED 等元件共用電源,這點特別重要。

⚠️ 感測片佈局:

  • 感測片周圍不要有金屬結構(太靠近 PCB 邊緣、金屬機殼),否則寄生電容變大,會造成固定誤觸發。
  • 感測片的引線越短越好,超過 20cm 可能容易受到干擾。

⚠️ ESD 防護(重要):

  • 人體隨時帶有靜電,觸摸感測片時可能產生瞬間高電壓。TTP223 對 ESD 敏感,操作時可先觸碰金屬水管或接地放電,避免損壞晶片。

⚠️ 防止接線錯誤:

  • TTP223 的 VCC 和 GND 千萬不要接反,一旦反接會立即燒毀模組,無法恢復。建議在通電前用三用電表確認極性。

兩種觸摸模式

TTP223 有兩種工作模式,切換方式非常簡單:

模式一:直接模式(Direct Mode)——預設模式

  • TOG 腳(Toggle 腳)接地
  • 觸碰時:輸出 HIGH;放開:輸出 LOW
  • 適合:感應燈(手靠近持續亮起,離開自動熄滅)

模式二:觸發模式(Toggle Mode)

  • TOG 腳接 VCC
  • 第一次觸碰:輸出 HIGH 並維持;第二次觸碰:輸出 LOW
  • 適合:開關(碰一下亮,再碰一下滅,狀態維持)

💡 小技巧:AHLB 腳位可以反轉輸出極性——接 VCC 輸出 normal(觸發 HIGH),接地輸出 inverted(觸發 LOW)。出廠預設是 normal 模式。


程式碼

// TTP223 觸控開關 — 基本應用
// 觸碰感測片,LED 亮起;放開,LED 熄滅

const int touchPin = 2;   // TTP223 OUT 腳位
const int ledPin = 13;    // Arduino 內建 LED

void setup() {
  Serial.begin(9600);
  pinMode(touchPin, INPUT);
  pinMode(ledPin, OUTPUT);
  Serial.println("TTP223 觸控開關已啟動");
}

void loop() {
  int touchState = digitalRead(touchPin);
  // TTP223 輸出 HIGH = 有觸碰;LOW = 無觸碰

  if (touchState == HIGH) {
    digitalWrite(ledPin, HIGH);  // 燈亮
    Serial.println("偵測到觸碰 ✓");
  } else {
    digitalWrite(ledPin, LOW);   // 燈滅
  }

  delay(50);  // 小延遲,避免過度頻繁讀取
}
Enter fullscreen mode Exit fullscreen mode

進階應用:觸碰切換模式(Toggle)

如果想要「碰一下亮,再碰一下滅」的切換效果:

// TTP223 Toggle 模式
// 第一次觸碰:LED 亮;第二次觸碰:LED 熄滅

const int touchPin = 2;
const int ledPin = 13;

bool ledState = false;
bool lastTouch = LOW;

void setup() {
  Serial.begin(9600);
  pinMode(touchPin, INPUT);
  pinMode(ledPin, OUTPUT);
}

void loop() {
  int touch = digitalRead(touchPin);

  // 觸碰訊號由 LOW 變 HIGH 時代表一次有效觸碰
  if (touch == HIGH && lastTouch == LOW) {
    delay(50);  // 軟體去抖動
    if (digitalRead(touchPin) == HIGH) {
      ledState = !ledState;
      digitalWrite(ledPin, ledState ? HIGH : LOW);
      Serial.println(ledState ? "LED 亮起" : "LED 熄滅");
    }
  }

  lastTouch = touch;
  delay(50);
}
Enter fullscreen mode Exit fullscreen mode

測試方式

  1. 燒錄第一支程式,打開序列埠監視視窗(9600 baud)
  2. 用手指輕觸感測片(直接觸碰或隔著 3~5mm 壓克力均可)
  3. 觀察:手指靠近時 LED 亮起,離開時熄滅
  4. 若訊號不穩定,檢查:
    • 感測片是否太靠近金屬
    • 供電是否與其他元件共用造成干擾
    • 是否需要加 100nF 濾波電容

做出來之後:你可以藏在哪裡?

這個電路組好之後,你可以把它封裝起來,藏在很多地方:

藏匿位置 觸控介質 效果
木桌/木門下方 木頭(<10mm) 碰一下桌面就能觸發
壓克力展示板後方 壓克力(<5mm) 隱形啟動按鈕
石材檯面下方 石頭(3~5mm) 廚房 / 浴室潮濕環境首選
牆壁布料下 布料(墊子、毛毯) 腳踏墊式觸控開關
3D 列印外殼內 PLA/ABS(<3mm) 自製隱形遙控器按鈕

那一下觸碰,是你的

到這裡,你已經從無到有,做出了一個真正看不見的開關

你知道了 TTP223 怎麼感應你指尖的電場,知道了 Arduino 怎麼讀取那個訊號,知道了電容感測為什麼比機械開關更適合隱藏式安裝。

那個「碰一下,燈就亮了」的瞬間——不是魔法。

是你的指尖,啟動了這一切。


想省時間?直接買套件組

自己湊零件麻煩?

這裡整理了一個清單,讓你收到就能直接開始:

淘寶搜尋關鍵字:

  • TTP223 觸控模組 BA6
  • Arduino Nano ATmega328P
  • Arduino 入門套件 電子零件
  • TTP223 觸控開關 套件

推薦組合:

  1. TTP223 模組 × 3(客廳、臥室、廚房各一)
  2. Arduino Nano × 1
  3. 5mm LED × 3 + 220Ω 電阻 × 3
  4. 麵包板 + 杜邦線

性價比參考: 這組材料在淘寶約 NT$150~250,組好可做三組隱形開關,平均一組不到 NT$100。


也歡迎期待 Part 2——我們會把 TTP223 與藍牙結合,做成一個手機遙控觸發系統,手指碰一下觸控板,手機就收到通知。

那一下觸碰,從此屬於你。


📁 本文電路圖、程式碼均為原創內容,如需轉載請標註出處。

Top comments (0)