目录

1.简介

2.硬件平台

3.软件平台

4.库文件

4.1 ESP32_BLE_Arduino

4.2 ESP32-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.1 ESP32_BLE_Arduino

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

4.2 ESP32-BLE-Keyboard

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

5.示例程序

代码:

/*** 时间:2020/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);}
}

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

  1. 关于esp32蓝牙模块的使用——esp32学习笔记

    关于esp32蓝牙模块的使用--esp32学习笔记 关于esp32蓝牙模块的使用--esp32学习笔记 关于esp32蓝牙模块的使用--esp32学习笔记 零.前言 一.经典蓝牙BT 二.低功耗蓝牙B ...

  2. [ESP32]学习笔记03

    今天我们使用ESP32自带的LEDC外设制作一个LED呼吸灯 目录 前言 一.呼吸灯是什么 二.首先我们在Blink实例的基础上建立工程 1.引入库添加宏定义 2.修改主函数 最后我们看一下呼吸灯的效 ...

  3. 《ESP32 学习笔记》 之Arduino环境下 使用DAC模拟输出(是真的DAC哦!)完成两路呼吸灯

    在 Arduino 环境下经常使用的 analogWrite(PIN, arg) 语法并不是真正的DAC模拟输出,也只是1kHZ的PWM 波模拟而成! 支持DAC功能的引脚请查看:引脚定义 本次ESP ...

  4. ESP32学习笔记(1)——搭建环境、编译烧写(Windows+VS Code)

    Espressif-IDE 环境搭建参看 ESP32学习笔记(50)--搭建环境.编译烧写(Windows+Espressif-IDE) 一.搭建环境 1.1 官方资料 ESP-IDF 编程指南 1. ...

  5. ESP32学习笔记(9)——TCP服务端

    一.TCP与UDP优缺点 1.TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接. 2.TCP提供可靠的服务.也就是说,通过TCP连接传送的数据,无差错,不丢失 ...

  6. ESP32学习笔记(27)——BLE GAP主机端扫描

    一.背景 1.1 低功耗蓝牙(BLE)协议栈 链路层(LL) 控制设备的射频状态,有五个设备状态:待机.广播.扫描.初始化和连接. 广播 为广播数据包,而 扫描 则是监听广播. GAP通信中角色,中心 ...

  7. ESP32学习笔记(七) 复位和时钟

    ESP32学习笔记(七) 复位和时钟 目录: ESP32学习笔记(一) 芯片型号介绍 ESP32学习笔记(二) 开发环境搭建 VSCode+platformio ESP32学习笔记(三) 硬件资源介绍 ...

  8. ESP32学习笔记(49)——RFID RC522使用

    一.简介 MF RC522 是应用于 13.56MHz 非接触式通信中高集成度读写卡系列芯片中的一员.是 NXP 公司针对"三表"应用推出的一款低电压.低成本.体积小的非接触式读写 ...

  9. ESP32学习笔记(20)——SPI(从机)接口使用

    一.SPI简介 SPI(Serial Peripheral Interface) 协议是由摩托罗拉公司提出的通讯协议,即串行外围设备接口,是一种高速全双工的通信总线.它被广泛地使用在 ADC.LCD ...

  10. ESP32学习笔记(一) 芯片型号介绍

    ESP32学习笔记(一) 芯片型号介绍 目录: ESP32学习笔记(一) 芯片型号介绍 ESP32学习笔记(二) 开发环境搭建 VSCode+platformio ESP32学习笔记(三) 硬件资源介 ...

最新文章

  1. CICC科普栏目|颠覆认知!看完这些图,你的世界观还好吗?
  2. 颜宁分享干货:给实验室博士的一些忠告
  3. apache pdfbox_Apache PDFBox命令行工具:无需Java编码
  4. leetcode 599. 两个列表的最小索引总和(Minimum Index Sum of Two Lists)
  5. 作者:孟磊,山东省农业信息中心助理农经师。
  6. Visio中如何绘制黑白图像
  7. 全局路径规划:图搜索算法介绍6(A star)Matlab算法实现
  8. lvds传输距离标准_如何正确看待POE交换机150米、长距离250米传输
  9. 基于SSD的存储IO优化解决方案
  10. 【网络安全工程师面试】—SSRF服务端请求伪造漏洞及利用方法
  11. jenkins 下载插件 一直失败_实用测试技能分享:jmeter+Jenkins性能测试自动化搭建...
  12. Tensorflow2.0入门教程(一)
  13. 170319 剑指offer 1.把一个字符串转化成整数(简单问题的全面性考虑)
  14. ASCII码常用范围
  15. 非功能测试之界面测试和易用性测试
  16. 修复计算机系统还原,怎么给电脑系统做一键恢复
  17. 使用Contect.Handler显示提交过来的“编辑成功”的信息
  18. php网站制作(6)-php 学习摘记
  19. 【bzoj 3680】吊打XXX
  20. Python3.x爬虫下载网页图片

热门文章

  1. IBM收购企业搜索软件公司Vivisimo
  2. 怎么根据矩阵判断极大无关组_什么是极大无关组?怎么判别?
  3. 基于传统ECS和K8S的运维平台设计思路
  4. 华乾服显示无法连接服务器,唯满侠攻防战最精彩,华乾土豪最多,剑三各服务器特点你知道么...
  5. 图片滚动插件jquery bxslider
  6. 率土之滨鸿蒙之初,率土之滨黑科技第5期:上阵姐妹花,S1赛季大小乔吊打大汉弓...
  7. 食品分类图标_食品标识大全
  8. Layui 时间戳转日期格式
  9. 乐鑫各系列芯片规格对比与主打市场分析,ESP8266/ESP32/ESP32-S2/ESP32-S3/ESP32-C3
  10. 金牛座--最懂感情的星座