Coding4Fun - ESP32 觸控式簡報遙控器 PoC
0 |
無意間逛到線上購物的簡報遙控器區,突發奇想,零件箱有幾塊塵封多時的 ESP32 開發板,ESP32 內建藍牙,要模擬藍牙鍵盤應是小菜一碟,接幾個實體按鍵觸發程式送出左右鍵,就是個陽春版簡報播放器囉,興之所至,決定做一個來玩玩。
靠著強大開源社群的支持,我很快站上巨人的肩膀,找到一個 ESP32 模擬藍牙鍵盤的程式庫 - ESP32 BLE Keyboard library,引用後 ESP32 搖身一變成為藍牙鍵盤,用 bleKeyboard.write(KEY_RETURN);
、bleKeyboard.print("Hello World");
便能模擬按鍵跟打字動作。實體按鈕部分我偷懶,決定借用 ESP32 開發板內建的電容式觸控感應功能,將 32、33 PIN 外接兩個壹圓硬幣當成觸控板。
程式碼超簡單,不到 30 行搞定:
#include <BleKeyboard.h>
#include <Wire.h>
BleKeyboard bleKeyboard;
#define PIN_LEFT 32
#define PIN_RIGHT 33
const unsigned long debounceTime = 200;
unsigned long lastTouch = 0;
void sendKey(int key) {
if (bleKeyboard.isConnected()) {
if (millis() - lastTouch < debounceTime) {
return;
}
bleKeyboard.write(key);
lastTouch = millis();
}
}
void setup() {
touchAttachInterrupt(PIN_LEFT, []{sendKey(KEY_LEFT_ARROW);}, 50);
touchAttachInterrupt(PIN_RIGHT, []{sendKey(KEY_RIGHT_ARROW);}, 50);
bleKeyboard.begin();
}
void loop() {
sleep(1000);
}
ESP32 開發板啟動後,將 ESP32 Keyboard
新增為藍牙裝置:
就這麼簡單,而且真的能用呢~
有趣歸有趣,真的要做到實用,還有不少問題要克服:電池供電、3D 列印外殼(大小要適中、好握不扎手)、觸控回饋感不佳得找好按的微動開關... 嚴格來說,真要簡報用現成產品比較實際,不然關鍵簡報場合遇上土砲簡報器出 Bug,只怕腸子都要悔青了 XD
不過,我有想到一些其他有趣應用,例如:中午吃便當滑臉書沒手滑滑鼠,若有個「腳控器」應該很實用,有時間再來研究。
Comments
Be the first to post a comment