FastBond2阶段2-基于ESP32C3的简易蓝牙小键盘的电路与系统设计
基于ESP32-C3的蓝牙小键盘,支持一键复制或黏贴。已经完成实物制作。
标签
Funpack活动
ESP32
fyjh2023
更新2023-10-23
1618

 

展示部分在真实课堂上录制,有他人说话的噪音确实很正常  : (

页面上方的视频已按要求删除展示部分的背景声。

 

一键复制、一键粘贴,开学抢课快人一步。

本项目的电路真的很简单,很容易复现。

 

一、项目与功能应用介绍

一个能够一键复制,一键粘贴的外置宏键盘,在一些文字编辑场合中发挥重要作用,例如编辑实验报告,或网上选课系统抢热门课时高速复制黏贴课程名称。鉴于笔记本电脑USB接口数量有线,我非常需要一个能够实现相关功能的蓝牙CV键盘。

CV小键盘的主控是ESP32-C3-WROOM-02/02U。该键盘有2个机械按键,一个滑动开关,可以实现一键ctrl-c和一键ctrl-v,或一键回车和鼠标连点的功能,带背光灯。此外,还有两个轻触开关用于主控复位和烧录模式配置。笔记本电脑通过蓝牙连接至小键盘,不占用USB接口。小键盘外接5v电源供电。

CV小键盘可以用于智慧家用电器(计算机外设),或者用于电子创意制作教育等领域。

基于蓝牙的无线键盘有不占用USB接口、(理论上)可以在安卓平板电脑上使用,无需额外的OTG数据线,优于传统的有线键盘。ESP32系列处理器在国内外拥有众多开发者,开源资料丰富,是不少新手入门的选择。本项目在完善后,也可以作为电子创意制作的入门内容,以焊接练习或者Arduino实战开发的形式提供给感兴趣的爱好者。

 

二、规定厂商器件介绍

2.1 乐鑫科技

为了实现无线功能,本项目选择乐鑫科技的ESP32-C3作为主控。ESP32-C3 是一款安全稳定、低功耗、低成本的物联网芯片,搭载 RISC-V 32 位单核处理器,支持 2.4 GHz Wi-Fi 和 Bluetooth 5 (LE),为物联网产品提供行业领先的射频性能、完善的安全机制和丰富的内存资源。ESP32-C3 对 Wi-Fi 和 Bluetooth 5 (LE) 的双重支持降低了设备配网难度,适用于广泛的物联网应用场景。

ESP32-C3拥有良好的生态环境,支持ESP-IDF和Arduino平台开发。它的例程众多,网站博客资料数不胜数。这些资料为我进行开发工作提供了宝贵的参考。ESP32系列处理器的开发难度不高,容易在短时间内实现产品功能。

本项目为了提高设计的可靠性,围绕ESP32-C3-WROOM-02/02U模组进行开发。它以半孔的形式引出部分芯片引脚,手工焊接的难度低,有助于提高焊接成功率。由于某些不合理的原因(ECCN 5A002A ESP)该模组在digikey上暂时无法购买。

2.2 Texas Instruments

TLV1117LV33DCYR是一款静态电流比传统 1117 稳压器低 500 倍的超低功耗器件,可提供出色的线路与负载瞬态性能,从而可在负载电流要求由不足 1mA 变为超过 500mA 时产生幅值极低的下冲与过冲输出电压。该芯片输入电压范围2~5.5V,输出电压3.3V,输出电流1A时压降455mV。

 

三、设计思路与方案介绍

3.1 整体思路

确定项目需求,选定处理器种类后,我前往乐鑫官网找到相关芯片模组的手册,并参考原厂手册上的推荐设计以及官方开发板的电路,使用KiCad 7.0展开原理图与PCB设计。嵌入式软件使用Arduino平台开发。

3.2 方案框图

Fq7f2_B1iN4glSR0ecEeime38cy6

使用ESP32-C3采集按键信息,将其转化为对应的蓝牙指令,实现所需按键功能。机械开关采用机械键盘轴体,提供极佳的手感和声音反馈(青轴)。

供电暂时采用外接5V的方式供电,经由TLV1117LV33DCYR芯片转换为ESP32-C3所需的3.3V电源。本项目暂未考虑电池供电的方案,理由是ESP32-C3开启蓝牙后的功耗较大,约为80mA(5V供电),目前尚未找到从软件角度降低功耗的手段。CV小键盘推荐使用充电宝供电。

3.3 原理图说明

FpaZ6am1PYtRvYc9QpDwo9I_HAUT

CV小键盘通过USB-Micro接口供电和烧录程序。因为USB-Micro接口的焊接难度远低于16-pin USB Type-C接口,可以承受键盘的工作电流,而且器件单价低于充电专用的6-pin USB Type-C接口。两个机械按键(SW3、SW4)、滑动开关(SW5)和复位按键(SW2)全部上拉至3.3V,而且机械按键采用100nF电容硬件滤波。如有必要,除了复位按键外,两个机械按键和滑动开关的上拉电阻可不焊,通过编程配置GPIO引脚上拉。原理图的电路设计可以进一步精简。

另外,使用ESP32-C3-WROOM-02U或ESP32-C3-WROOM-02都可以。使用前者请自备1个I-PEX 1代接口的2.4GHz天线。所有主要元件首先在立创EDA中找到对应封装,然后用插件转换成KiCad的封装导入使用。

 

四、硬件制作

使用KiCad设计PCB,ESP32-C3模组的PCB天线下方区域不铺铜。导出Gerber文件交由嘉立创打样。随后手工焊接。焊接按照从低到高的顺序焊接,背面的TLV1117芯片使用热风枪焊接。ESP32-C3模组背面的散热焊盘可以不焊,不影响正常使用。机械轴体用胶带固定在PCB后焊接,有助于对准位置。

这是成品正面。图中,左侧的USB接口用于烧录程序,右侧的USB接口仅用于系统供电。MODE开关可以切换以下两个按键功能组合:一键复制/黏贴,和鼠标连点/键盘回车。EN按键用于系统复位,BOOT按键配置系统运行模式(正常/烧录)同视控制背光灯。

FpOuZOsXEKm5m2EFnv9rqKh00dAZ

成品背面。预留3.3V和5V供电测试点。可以利用这些测试点,增加外置的锂电池供电模块,提高CV小键盘的便携性。但是,系统功耗(约80mA)较大,外置大容量电池体积和成本较高,在改装供电模块时需要加以考虑。

FvxnCFeoarQZyPiLIwBlugP0GIKf

 

五、关键代码及说明

本项目使用Arduino平台的 ESP32 BLE Combo Keyboard Mouse库完成开发工作,在https://github.com/blackketter/ESP32-BLE-Combo手动下载库文件安装。这个库已实现蓝牙HID复合设备的功能。如果只要蓝牙键盘或鼠标的功能,也可以使用其他的Arduino库。

FmoOybyWZPNLrijWiEuB_SxLFY32

系统初始化包括初始化串口和蓝牙鼠标、键盘,然后初始化GPIO,最后根据滑动开关的位置,选择两个机械按键的宏定义组合(MODE_A或MODE_B)。一种宏定义组合为复制黏贴,另一种为回车和鼠标连点,可以在代码中按需更改。

void setup() {
  Serial.begin(115200);
  Serial.println("Starting BLE work!");
  Mouse.begin();
  Keyboard.begin();

  pinMode(ledpin1,OUTPUT);
  pinMode(ledpin2,OUTPUT);
  pinMode(ledL,OUTPUT);
  pinMode(ledR,OUTPUT);
  pinMode(key_left,INPUT);
  pinMode(key_right,INPUT);
  pinMode(key_sw,INPUT);
  pinMode(key_btn,INPUT_PULLUP);
  digitalWrite(ledpin1,0);
  digitalWrite(ledpin2,0);
  key_btn_prev=digitalRead(key_btn);

  digitalWrite(ledpin1,ledpin1_val);
  if(digitalRead(key_sw)==0){
    sys_mode=MODE_A;
  }
  else{
    sys_mode=MODE_B;
  }
}

按下轻触开关改变背光灯状态:

key_btn_stat=digitalRead(key_btn);
if(key_btn_stat!=key_btn_prev){
    delay(10);
    key_btn_flag++;
    Serial.print(key_btn_flag);
}
key_btn_prev=key_btn_stat;
if(key_btn_flag==2){
    ledpin1_val=!ledpin1_val;
    ledpin2_val=!ledpin2_val;
    digitalWrite(ledpin1,ledpin1_val);
    digitalWrite(ledpin2,ledpin2_val);
    key_btn_flag=0;
}

模拟ctrl-c组合键:

if(digitalRead(key_left)==LOW){
   Keyboard.press(KEY_LEFT_CTRL);
   Keyboard.write('c');
   Keyboard.releaseAll();
   while(digitalRead(key_left)==LOW);
}

模拟鼠标点击:

if(digitalRead(key_left)==LOW){
   Mouse.click(MOUSE_LEFT);
   delay(1);
}

 

六、功能展示

鼠标连点功能测试。此处的测试值与计算机性能有关,仅供参考。

Fu_W072PL4cr9OgV2InTfFCyUTEP

其他功能请看页面上方视频。

 

七、心得体会

这次fastbond2活动提供了自由发挥创造的机会,让我有了收获。之后我还会继续用KiCad设计些有意思的小作品,解决生活中的实际问题。通过这次活动我接触到元器件采购平台:DigiKey。

这是我做的第二个“复制黏贴小键盘”方案,之后应该还会再做几套不同的方案吧,因为STM32F103等一系列常见的处理器都配备了USB控制器。

 

软硬件
电路图
附件下载
SendKeyStrokes.rar
Arduino程序
ESP32C3_v0_PCB.rar
原理图和PCB线路图
团队介绍
就我自己
团队成员
fyjh2023
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号