無意間逛到線上購物的簡報遙控器區,突發奇想,零件箱有幾塊塵封多時的 ESP32 開發板,ESP32 內建藍牙,要模擬藍牙鍵盤應是小菜一碟,接幾個實體按鍵觸發程式送出左右鍵,就是個陽春版簡報播放器囉,興之所至,決定做一個來玩玩。

靠著強大開源社群的支持,我很快站上巨人的肩膀,找到一個 ESP32 模擬藍牙鍵盤的程式庫 - ESP32 BLE Keyboard library,引用後 ESP32 搖身一變成為藍牙鍵盤,用 bleKeyboard.write(KEY_RETURN);bleKeyboard.print("Hello World"); 便能模擬按鍵跟打字動作。實體按鈕部分我偷懶,決定借用 ESP32 開發板內建的電容式觸控感應功能,將 32、33 PIN 外接兩個壹圓硬幣當成觸控板。

thumbnail

程式碼超簡單,不到 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 新增為藍牙裝置:

就這麼簡單,而且真的能用呢~

ESP32 簡報遙控器測試

有趣歸有趣,真的要做到實用,還有不少問題要克服:電池供電、3D 列印外殼(大小要適中、好握不扎手)、觸控回饋感不佳得找好按的微動開關... 嚴格來說,真要簡報用現成產品比較實際,不然關鍵簡報場合遇上土砲簡報器出 Bug,只怕腸子都要悔青了 XD

不過,我有想到一些其他有趣應用,例如:中午吃便當滑臉書沒手滑滑鼠,若有個「腳控器」應該很實用,有時間再來研究。


Comments

Be the first to post a comment

Post a comment