2024-09-29

維修 Pro Micro 並改裝為 USB HID 腳踏按鈕

在下有幾塊 損壞的微控制器開發板,已經廢棄了一段時間,但掉棄又覺得很浪費
最近尋找資料時發現網上有一些 USB腳踏按鈕 可以自訂按鍵功能,但價錢差不多 10 至 20美金
而且自訂按鍵功能還需要使用專用的軟件,而這些專用軟件並不支持 Linux
因此才想到將其中一塊 損壞的 Pro Micro 安置到腳踏按鈕,將 腳踏按鈕 改裝成 USB HID 裝置

損壞的 Pro Micro

一塊 Micro USB Type-B 接口脫落的的 Pro Micro 兼容開發板

GND ID D+ D- VCC

Micro USB Type-B 總共有 5支引腳,接口大部分焊墊都脫落
只剩下 VCCD-GND 3支引腳,但 D+ID 則脫落
由於 Pro Micro 不需要成為 宿主裝置 ,因此 ID引腳 不需要連接,但 D+引腳 則是必須連接

但由於 D+引腳 的焊墊已經脫落,無法重新焊接,因此在下追蹤 D+引腳 線路
所以即使焊墊已經脫落,仍然可以將使用線路或借用焊接到線路的另一端的零件來連接到 D+引腳
而 GND引腳 可以使用開發板的 GND引腳 亦可

除了需要重新焊接 Micro USB Type-B 的線路,在下還將 Pro Micro 上已經焊接的引腳除焊及移除

腳踏按鈕

在下從廢棄的兒童玩具車拆除 FS-01 腳踏按鈕

腳踏按鈕 的內部

V7 微型開關

腳踏按鈕 的核心使用 V7系列微型開關(Micro Switch)

腳踏按鈕使用 單軸雙切(Single Pole Double Throw, SPDT) ,因此會有 3個終端

  • COM 為 共通終端(Common)
  • NC 為 常關終端(Normally Close),表示按鈕未被按下時會與 COM 連接
  • NO 為 常開終端(Normally Open),表示按鈕未被按下時不會與 COM 連接

由於原本的電線妨礙改裝,因此在下將電線除焊及移除

外殼改裝

腳踏按鈕 的 底殼

在下想將 Pro Micro 安置在底殼,但底殼的結構,無法令 Pro Micro 貼在底殼

在下將底殼稍作修改,將部分結構削走,令 Pro Micro 剛好能平放安置在底殼

電線孔同樣需要擴張來讓 USB Type-C 的接口通過

測試削走的情況

Pro Micro 還需要測試會否影響 V7微型開關 的安置位置

維修 Pro Micro

確認 Pro Micro 及 USB Type-C 測試板 能安置在底殼,便要維修 Pro Micro

在下使用與 USB引腳 相同配色的 跳線 焊接到 Pro Micro 剩餘的焊墊上
而 D+引腳 的跳線 則 焊接到與 D+引腳焊墊 相連的 電阻器

在下將跳線焊接到 D+引腳 並順著角度繞回 Pro Micro 原本 USB 的方向,並根據 USB引腳的次序 排列跳線
檢查線路正確及沒有短路後,使用 UV膠 固定及保護 跳線 ,避免 跳線脫落

以相同方法便將 跳線 焊接在 USB Type-C 測試板 對應功能的 焊點 上
同樣使用 UV膠 固定及保護 跳線

連接到 電腦USB,電腦系統 偵測到 Pro Micro ,並將 Sketch 寫入到 Pro Micro 測試
結果 Pro Micro 能正常運作

改裝腳踏安裝

測試將已經焊接 跳線 及連接 測試電路板 的 Pro Micro 安置到 腳踏按鈕 的 底蓋

將 V7微型開關 的 COM接點 及 NO接點 分別焊接到 Pro Micro 的 GND引腳 及 D2引腳
(不一定使用 D2引腳 , 任意一支具備 輸入訊號GPIO 即可)

將焊接完成的 Pro Micro 開發板 、 USB Type-C 測試板 、 V7微型開關 安置到 腳踏按鈕 的 底蓋

改裝後的 腳踏按鈕 外觀基本上與原來沒有分別
只在接駁電源後, Pro Micro 的 LED 亮著時才發現內有乾坤

測試效果

測試下按下腳踏按鈕的效果

總結

網上有很多 Micro USB Type-B 接口脫落的資訊,主要都是因為表面黏著方式焊接
因此所有承受力都在焊墊上,稍微施加壓力,除了接口,會連同焊墊都會脫落

GND ID D+ D- VCC 3mm 1.6mm 0.4mm 0.25mm

這個改裝最困難是維修 Pro Micro 的 USB接口
由於 Micro USB Type-B 每支引腳的焊墊闊度只有 0.4毫米 ,焊墊之間只有 0.25毫米
要將跳線焊接到焊墊上是非常困難,還有其中一條跳線由於沒有焊墊需要焊接到電阻器
所有需要維修及焊接的範圍及空間都非常微細,最後奇蹟地大約只需要20分鐘左右完成焊接、檢查、固定

由於 Pro Micro 使用 ATmega32u4 , 即是可以使用 Arduino IDE 編寫程式
對在下而言, Arduino IDE 能夠跨平台使用,比專用軟件設定按鍵內容更方便,而且還可以製作更複雜的按鍵組合

PROGMEM const byte PIN = 2;
bool isPressed = false;
void onIdle() {
	delay(2);
}
void onPress() {
	isPressed = true;
	delay(2);
}
void onHold() {
	delay(2);
}
void onRelease() {
	isPressed = false;
	delay(2);
}
void setup() {
	pinMode(PIN, INPUT_PULLUP);
}
void loop() {
	bool buttonSignal = digitalRead(PIN);
	if (!isPressed && buttonSignal) {
		onIdle();
	} else if (!isPressed && !buttonSignal) {
		onPress();
	} else if (isPressed && !buttonSignal) {
		onHold();
	} else if (isPressed && buttonSignal) {
		onRelease();
	}
}

在下將 閒置(Idle)按下(Press)按著(Hold)釋放(Release) 的 狀態分開,方便開發指定狀態時的操作

另外在下認為 Pro Micro 的速度太快,能捕捉到按下 腳踏按鈕 多次 回彈
因此使用 邏輯分析儀(Logic Analyzer) 配合 PulseView 捕捉 按下 及 釋放 的訊號
(按此下載 PulseView)

由 按下 至 釋放 整個操作時間大約 112毫秒

按下 的操作時間大約 742微秒

釋放 的操作時間大約 1289微秒

因此為了避免,在下將操作延遲 2毫秒 來避免回彈,結果沒有再發生回彈

參考資料

沒有留言 :

張貼留言