我的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」
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″」三個動作
是不是很有趣呢?
五、注意事項
不過要注意幾個問題
- 每個鍵盤指令之間要加上一些延遲時間,例如開啟瀏覽器到輸入關鍵字及ENTER,因為沒有留足夠的延遲時間,會導致瀏覽器還沒開啟,關鍵字就輸入到桌面了,變成開啟某些特定檔案。
- 輸入法問題,鍵盤目前似乎不支援中文,因此輸入文字資料必須先將系統切到英文輸入法,避免文字輸入錯亂。