600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 《ESP32 学习笔记》 之 ESP32 模拟 蓝牙键盘-Keyboard

《ESP32 学习笔记》 之 ESP32 模拟 蓝牙键盘-Keyboard

时间:2021-05-21 08:26:27

相关推荐

《ESP32 学习笔记》 之 ESP32 模拟 蓝牙键盘-Keyboard

目录

1.简介

2.硬件平台

3.软件平台

4.库文件

4.1ESP32_BLE_Arduino

4.2ESP32-BLE-Keyboard

5.示例程序

6.配对&测试

7.提升部分

1.简介

这两天一直看见各种客制化键盘的制作视频,搞得我也想做一个玩玩,芯片我有四种选择:

(1)Atmega32U4(USB)

(2)STM32F4(USB)

(3)ESP32(蓝牙)

(4)NRF51822(蓝牙)

现在乐鑫已经推出了 ESP32-S3,此款芯片支持了USB模拟功能,再加上它的蓝牙键盘模拟功能,我们很容易只做一款蓝牙+USB+WIFI的客制化键盘,但这些都等待 ESP32-S3开发环境的完善之后再玩吧~

2.硬件平台

安信可NODEMCU-32S开发板:

3.软件平台

Arduino (1.8.10)VScode环境下PlatformIO插件

4.库文件

4.1ESP32_BLE_Arduino

ESP蓝牙驱动库,地址:GitHub - nkolban/ESP32_BLE_Arduino: The library source for the ESP32 BLE support for Arduino.

4.2ESP32-BLE-Keyboard

ESP32键盘模拟库,依赖于ESP32_BLE_Arduino这个库,地址:GitHub - T-vK/ESP32-BLE-Keyboard: Bluetooth LE Keyboard library for the ESP32 (Arduino IDE compatible)

5.示例程序

代码:

/*** 时间:/5/18* 作者:刘泽文* 功能:使用ESP32的蓝牙功能模拟蓝牙键盘*/#include <BleKeyboard.h>#include <WiFi.h>BleKeyboard bleKeyboard("ESP32蓝牙键盘","Espressif",100);//其中“ESP32蓝牙键盘”为键盘名称;"Espressif"为制造商void setup() {Serial.begin(115200);Serial.println("Starting BLE work!");bleKeyboard.begin();}void loop() {if(bleKeyboard.isConnected()) {//多媒体测试Serial.println("Sending Play/Pause media key...");bleKeyboard.write(KEY_MEDIA_PLAY_PAUSE);delay(1000);//Ctrl+Alt+Delete任务管理器,并进行锁屏操作Serial.println("Sending Ctrl+Alt+Delete...");bleKeyboard.press(KEY_LEFT_CTRL);bleKeyboard.press(KEY_LEFT_ALT);bleKeyboard.press(KEY_DELETE);delay(100);bleKeyboard.releaseAll();//输入密码并开机Serial.println("下面填入你的开机密码↓");bleKeyboard.print("--你的开机密码,注意大小写--");delay(100);Serial.println("Enter");bleKeyboard.write(KEY_RETURN);}Serial.println("Waiting 5 seconds...");delay(5000);}

6.配对&测试

给你的ESP32开发板插上电,打开你的笔记本电脑->打开蓝牙->添加蓝牙或设备->鼠标、键盘类,你将会看到名为“ESP32蓝牙键盘”的设备,点击即可连接。然后打开你电脑上的音乐软件播放歌曲。

接下来,你的笔记本将会一直重复 停止播放音乐+锁屏+解锁+开始播放音乐 的操作~,如果想停下,请直接关闭笔记本的蓝牙,或拔掉开发板。

7.提升部分

使用旋转编码器控制电脑、手机、平板的音量

#include <ESP32Encoder.h>#include <BleKeyboard.h>#include <Wire.h>//按键配置#define EC11_A_PIN 13#define EC11_B_PIN 14#define EC11_K_PIN 27BleKeyboard bleKeyboard;ESP32Encoder encoder;void setup(){Serial.begin(115200);ESP32Encoder::useInternalWeakPullResistors = UP;encoder.attachSingleEdge(EC11_A_PIN, EC11_B_PIN);bleKeyboard.begin();pinMode(EC11_K_PIN, INPUT_PULLUP);}int lastEncoderValue = 0;void loop(){if (lastEncoderValue != encoder.getCount()){int now_count = encoder.getCount();if (bleKeyboard.isConnected()){if (now_count > lastEncoderValue){bleKeyboard.write(KEY_MEDIA_VOLUME_DOWN);}else{bleKeyboard.write(KEY_MEDIA_VOLUME_UP);}}lastEncoderValue = now_count;Serial.print("Encoder value: ");Serial.println(lastEncoderValue);}if (digitalRead(EC11_K_PIN) == LOW){delay(5);if (digitalRead(EC11_K_PIN) == LOW){if (bleKeyboard.isConnected()){bleKeyboard.write(KEY_MEDIA_PLAY_PAUSE);}}while (digitalRead(EC11_K_PIN) == LOW);}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。