《ESP32 学习笔记》 之 ESP32 模拟 蓝牙键盘-Keyboard
目录
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相关推荐
- 关于esp32蓝牙模块的使用——esp32学习笔记
关于esp32蓝牙模块的使用--esp32学习笔记 关于esp32蓝牙模块的使用--esp32学习笔记 关于esp32蓝牙模块的使用--esp32学习笔记 零.前言 一.经典蓝牙BT 二.低功耗蓝牙B ...
- [ESP32]学习笔记03
今天我们使用ESP32自带的LEDC外设制作一个LED呼吸灯 目录 前言 一.呼吸灯是什么 二.首先我们在Blink实例的基础上建立工程 1.引入库添加宏定义 2.修改主函数 最后我们看一下呼吸灯的效 ...
- 《ESP32 学习笔记》 之Arduino环境下 使用DAC模拟输出(是真的DAC哦!)完成两路呼吸灯
在 Arduino 环境下经常使用的 analogWrite(PIN, arg) 语法并不是真正的DAC模拟输出,也只是1kHZ的PWM 波模拟而成! 支持DAC功能的引脚请查看:引脚定义 本次ESP ...
- ESP32学习笔记(1)——搭建环境、编译烧写(Windows+VS Code)
Espressif-IDE 环境搭建参看 ESP32学习笔记(50)--搭建环境.编译烧写(Windows+Espressif-IDE) 一.搭建环境 1.1 官方资料 ESP-IDF 编程指南 1. ...
- ESP32学习笔记(9)——TCP服务端
一.TCP与UDP优缺点 1.TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接. 2.TCP提供可靠的服务.也就是说,通过TCP连接传送的数据,无差错,不丢失 ...
- ESP32学习笔记(27)——BLE GAP主机端扫描
一.背景 1.1 低功耗蓝牙(BLE)协议栈 链路层(LL) 控制设备的射频状态,有五个设备状态:待机.广播.扫描.初始化和连接. 广播 为广播数据包,而 扫描 则是监听广播. GAP通信中角色,中心 ...
- ESP32学习笔记(七) 复位和时钟
ESP32学习笔记(七) 复位和时钟 目录: ESP32学习笔记(一) 芯片型号介绍 ESP32学习笔记(二) 开发环境搭建 VSCode+platformio ESP32学习笔记(三) 硬件资源介绍 ...
- ESP32学习笔记(49)——RFID RC522使用
一.简介 MF RC522 是应用于 13.56MHz 非接触式通信中高集成度读写卡系列芯片中的一员.是 NXP 公司针对"三表"应用推出的一款低电压.低成本.体积小的非接触式读写 ...
- ESP32学习笔记(20)——SPI(从机)接口使用
一.SPI简介 SPI(Serial Peripheral Interface) 协议是由摩托罗拉公司提出的通讯协议,即串行外围设备接口,是一种高速全双工的通信总线.它被广泛地使用在 ADC.LCD ...
- ESP32学习笔记(一) 芯片型号介绍
ESP32学习笔记(一) 芯片型号介绍 目录: ESP32学习笔记(一) 芯片型号介绍 ESP32学习笔记(二) 开发环境搭建 VSCode+platformio ESP32学习笔记(三) 硬件资源介 ...
最新文章
- CICC科普栏目|颠覆认知!看完这些图,你的世界观还好吗?
- 颜宁分享干货:给实验室博士的一些忠告
- apache pdfbox_Apache PDFBox命令行工具:无需Java编码
- leetcode 599. 两个列表的最小索引总和(Minimum Index Sum of Two Lists)
- 作者:孟磊,山东省农业信息中心助理农经师。
- Visio中如何绘制黑白图像
- 全局路径规划:图搜索算法介绍6(A star)Matlab算法实现
- lvds传输距离标准_如何正确看待POE交换机150米、长距离250米传输
- 基于SSD的存储IO优化解决方案
- 【网络安全工程师面试】—SSRF服务端请求伪造漏洞及利用方法
- jenkins 下载插件 一直失败_实用测试技能分享:jmeter+Jenkins性能测试自动化搭建...
- Tensorflow2.0入门教程(一)
- 170319 剑指offer 1.把一个字符串转化成整数(简单问题的全面性考虑)
- ASCII码常用范围
- 非功能测试之界面测试和易用性测试
- 修复计算机系统还原,怎么给电脑系统做一键恢复
- 使用Contect.Handler显示提交过来的“编辑成功”的信息
- php网站制作(6)-php 学习摘记
- 【bzoj 3680】吊打XXX
- Python3.x爬虫下载网页图片
热门文章
- IBM收购企业搜索软件公司Vivisimo
- 怎么根据矩阵判断极大无关组_什么是极大无关组?怎么判别?
- 基于传统ECS和K8S的运维平台设计思路
- 华乾服显示无法连接服务器,唯满侠攻防战最精彩,华乾土豪最多,剑三各服务器特点你知道么...
- 图片滚动插件jquery bxslider
- 率土之滨鸿蒙之初,率土之滨黑科技第5期:上阵姐妹花,S1赛季大小乔吊打大汉弓...
- 食品分类图标_食品标识大全
- Layui 时间戳转日期格式
- 乐鑫各系列芯片规格对比与主打市场分析,ESP8266/ESP32/ESP32-S2/ESP32-S3/ESP32-C3
- 金牛座--最懂感情的星座