看迷片時,老婆忽然來了怎麼辦?迷片救星….藍芽鍵盤模擬

本次我們就假設你正在觀看「日本首都很熱」,或者「澳門賭場」等類型的愛情動作片時,很怕有人發現,那麼就做一個人體感測器在門口,當有人經過時,就讓ESP32送出「暫停影片播放」、「清空桌面」、「開啟瀏覽器搜尋”ESP32″」等三個動作

我的ESP32實做書籍:我出書了 ESP32 物聯網專題
博客來網址:https://www.books.com.tw/products/0010901195


實做準備

ESP32內建WiFi及藍芽,藍芽部份支援2.0的BTSerial及4.0的BLE,關於2.0 BTSerial連線的範例可以參考:六篇 ESP32 藍芽BT連線:即時通訊與語音指令
而4.0 BLE部份功能則更多,可以拿來做Beacon定位偵測(ESP32 Arduino Beacon簡易Bluetooth室內定位),或者BLE Notify(ESP32 BLE線與廣播),今天則是再增加一個功能,就是模擬成藍芽鍵盤。

一、BLE藍芽鍵盤

ESP32與傳統Arduino比較起來雖然大部分都比較強,但是有一個小小的缺憾,就是不能模擬成USB鍵盤,不過還好可以透過BLE模擬成藍芽鍵盤,使用的程式庫則是ESP32-BLE-Keyboard(網址:https://github.com/T-vK/ESP32-BLE-Keyboard),此程式庫尚未被Ardunio IDE收錄,因此請自行下載匯入安裝。除了鍵盤以外,也可以模擬滑鼠及遊戲遙控器,可以參考作者的說明。

根據作者的說明,模擬鍵盤的方式就是送出BLE指令,例如要打「A」,就是送出藍芽指令,其方式為bleKeyboard.print(“A”),除了print之外,也有write、press等指令,差異列表如下

關於所有鍵盤的特殊功能鍵用法,可以參考「BleKeyboard.h」(https://github.com/T-vK/ESP32-BLE-Keyboard/blob/master/BleKeyboard.h)裡面有完整的列表。

二、實做迷片救星,老婆通知器

本次我們就假設你正在觀看「日本首都很熱」,或者「澳門賭場」等類型的愛情動作片時,很怕有人發現,那麼就做一個人體感測器在門口,當有人經過時,就讓ESP32送出「暫停影片播放」、「清空桌面」、「開啟瀏覽器搜尋”ESP32″」等三個動作,假裝我們正在認真找資料,是不是很棒呢?要完成這三個藍芽鍵盤指令,其語法分別為

1.「暫停影片播放」

bleKeyboard.write(KEY_MEDIA_PLAY_PAUSE)

2.「清空桌面視窗」

bleKeyboard.press(KEY_LEFT_GUI);//windows左側按鈕
bleKeyboard.print(“d”);//輸入d,即windows+d=清空桌面
bleKeyboard.releaseAll();//釋放windows按鈕

3.「開啟瀏覽器搜尋”ESP32”」

bleKeyboard.press(KEY_MEDIA_WWW_HOME);//開啟預設瀏覽器
bleKeyboard.print(“ESP32”);//輸入搜尋關鍵字
bleKeyboard.write(KEY_RETURN);//輸入Enter

請依照以下步驟

1.下載程式庫

ESP32-BLE-Keyboard網址:https://github.com/T-vK/ESP32-BLE-Keyboard,點選右側code按鈕,選擇DownloadZIP,下載到你電腦中。名稱為「ESP32-BLE-Keyboard-master.zip」

下載github程式庫

2.在Arduino安裝程式庫

點選功能表 草稿碼/匯入程式庫/加入zip程式庫,就會開啟檔案選擇器。

在檔案選擇器中,找到你剛剛下載的ESP32-BLE-Keyboard-master.zip,然後按下方的「開啟」按鈕即可,此時我們就安裝好程式庫了。

3.撰寫程式

首先我們要準備的ESP32之外,還有一個人體感測器(PIR, SR-501),我們將她接在GPIO 17,關於人體感測器的安裝,SR501相關設定可以參考本文:第五篇 ESP32 來客報知機:錄放音模組(ISD1820)

#include <BleKeyboard.h>
BleKeyboard bleKeyboard;//宣告一個藍芽鍵盤

void setup() {
  Serial.begin(115200);
  pinMode(17, INPUT);//人體感測器接在GPIO 17
  Serial.println("BLE鍵盤準備連線");
  bleKeyboard.setName("小霸王BLEKeyBoard"); //自行設定藍芽鍵盤名稱
  bleKeyboard.begin();
}

void loop() {
  if (bleKeyboard.isConnected()) {
    //PIR是否有人經過
    if (digitalRead(17)) {
      Serial.println("有人經過,執行緊急程序");
      //1.暫停撥放影片
      bleKeyboard.write(KEY_MEDIA_PLAY_PAUSE);

      //2.清空桌面
      bleKeyboard.press(KEY_LEFT_GUI);//windows左側按鈕
      bleKeyboard.print("d");//輸入d,即windows+d=清空桌面
      delay(100);
      bleKeyboard.releaseAll();//釋放windows按鈕

      //3.「開啟瀏覽器搜尋”ESP32”」:
      bleKeyboard.press(KEY_MEDIA_WWW_HOME);//開啟預設瀏覽器
      delay(500);//等候瀏覽器開啟完畢,請依照電腦效能適度調整時間
      bleKeyboard.print("esp32");//輸入搜尋關鍵字
      delay(100);//等候關鍵字輸入完畢
      bleKeyboard.write(KEY_RETURN);//輸入Enter
      delay(10000);
    }
  }
  delay(100);
}

三、電腦連線藍芽鍵盤

完成上面的程式並上傳後,我們就可以利用有藍芽的電腦進行連線,方式如下

1.開啟設定/點選藍芽功能

2.點選新增藍芽或其他裝置,並選擇藍芽

3.找到並選擇自己設定好的裝置名稱

4.連線成功

四、實際測試看看

一開始先假設正在看Youtube影片

發現有人經過後,就會立即觸發三個程序「暫停影片播放」、「清空桌面」、「開啟瀏覽器搜尋”ESP32″」三個動作

是不是很有趣呢?

五、注意事項

不過要注意幾個問題

  1. 每個鍵盤指令之間要加上一些延遲時間,例如開啟瀏覽器到輸入關鍵字及ENTER,因為沒有留足夠的延遲時間,會導致瀏覽器還沒開啟,關鍵字就輸入到桌面了,變成開啟某些特定檔案。
  2. 輸入法問題,鍵盤目前似乎不支援中文,因此輸入文字資料必須先將系統切到英文輸入法,避免文字輸入錯亂。

Leave a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *