ESP32 造一把键盘,望有大佬指点

2023-03-03 01:43:48 +08:00
 Gav1nw

我工作是做 JAVA Web 开发的,平常喜欢捣鼓嵌入式,也略会 Openwrt ( Linux-like )编译

键盘布局图、PCB 电路板,已经通过国外的网站实现了

剩余的主要问题:

  1. 不大会硬件,键盘的 PCB 线路连接 ESP32S3 的外围电路 如:电容电阻等
  2. 纠结到底是使用 Arduino 还是 ESP-IDF ,因为都得重新学,因为 JAVA 脱离底层更偏向业务代码,而且参考 Github 的其他项目,整体工作量非常大,甚至要自己实现数据库在 SPI-PSROM 上

感觉面前两座大山,有谁能出出主意

2200 次点击
所在节点    硬件
12 条回复
zhujinliang
2023-03-03 02:11:12 +08:00
可以参考稚晖君的翰文键盘项目,使用 74HC165 扩展 IO ,使用 SPI 接口读取按键状态
https://oshwhub.com/pengzhihui/b11afae464c54a3e8d0f77e1f92dc7b7
你可能还需要了解的:USB 协议、HID 协议、BLE 协议
建议先用 Arduino 跑一个模拟键盘,就是不连接按键,一连上就向主机发送按键的那种,搞懂这部分,再做按键的读取、去抖、键码映射表之类的
电路部分 ESP32 建议用带 NOR- Flash 的模块,可以节省一些布线的精力,也不用处理天线,通常模块接上电和串口就可以跑起来了,再加上按键扫描部分的电路、LED 指示灯之类的就可以了
你说的用 PSRAM 做数据库应该用不到,单片机上一般用数组做查找表就够用了,ESP32 对于键盘这种应用内存是足够的,存配置有专门的 filesystem
duke807
2023-03-03 09:12:09 +08:00
1. 不会 -> 学,建议用 kicad 画板

2. 不管什么 mcu ,不建议 arduino ,建议用 c 语言开发,最好 gcc + makefile ,譬如 stm32cube 可以直接生成 makefile 工程,make 一下固件就出来了
duke807
2023-03-03 09:15:03 +08:00
不用数据库,配置文件直接把 struct 对象写入 mcu flash 最后一个 page 就行
Halry
2023-03-03 09:19:20 +08:00
esp32 耗电太多,用 nrf
t0iletb0mber
2023-03-03 09:23:40 +08:00
esp32 Arduino 有现成的轮子,至于外围电路直接买个板子就好了。
amwyyyy
2023-03-03 09:40:53 +08:00
Arduino 好上手,工具库好找。ESP-IDF 编译快,排查问题便捷。我也是 javaer 比较喜欢用 idf
MHPSY
2023-03-03 11:57:26 +08:00
我也想尝试自己弄一把键盘也是从零开始自己焊接芯片电容电阻之类的 但是一直都没开始
vjspdhpp
2023-03-03 16:54:06 +08:00
1.外围电路设计在芯片的手册里面有参考,或者可以直接参考其他同芯片开发板的原理图,他们用了什么元件你就用什么.
如果使用模块来做的话外围电路会更加简单,ESP32-S3 的话内置了 USB-Serial,还可以剩下一个转串口芯片.
2.如果可以换芯片的话,不如看看 QMK 方案.
systemcall
2023-03-03 23:27:08 +08:00
1. 键盘要做矩阵扫描,一般要用各种 74HC 来做,比如 38 译码器、移位寄存器之类的东西,不然要占用非常多的、宝贵的 I/O ,扫描线不够多容易有鬼键,还有触发延时的问题。这个可以多看一下单片机相关的课程,建议从 STM32 开始学
2. 随便。ESP32 都是需要配一颗 NOR Flash 的,不知道你是不是买的模块,模块都会有 NOR Flash 。如果是直接买的芯片,天线的 layout 够你喝一壶
数据库一般用不到,就那点数据量而已。倒是你要做均衡磨损,虽然一般的 NOR Flash 上万次擦写寿命,也有一些文件系统,但是文件系统很重,自己直接操作闪存的话没有做均衡磨损,闪存很容易有坏块
PSRAM 断电就会丢数据。要一直能保存数据,又可以像内存那样直接往里面写,寿命还长,可以考虑 F-RAM ,不过那玩意拆机的都是天价了,512K 的好几十
Gav1nw
2023-03-03 23:38:02 +08:00
@systemcall 之前算了一下,esp32s3 的 GPIO 数量倒是可以 cover 住,鬼键的处理我记得是在对头上放一颗二极管。
Gav1nw
2023-03-03 23:46:25 +08:00
@vjspdhpp 我当时看中的就是 ESP32-S3 内置蓝牙模块,并且内置 usb ,GPIO 端口数量也足够,不用过多的折腾硬件电路,
1.只是现在用的开发板,最终键盘肯定不能用开发板,那就涉及到嘉立创 EDA 画板,比如为什么正负极之间串一个电容就能降压等电路知识,以及电阻要串多少欧的等等我是懵逼的,我大学学的 STM51 最多也就是写个灯的控制
linuxgo
2023-03-19 23:44:07 +08:00
如果只是几个按键,直接用几个 io 一一对应每个按键就可以了,如果是 10 个以上按键,就最好做成矩阵形式,节省 io ,比如 4x4,就只需要 8 个 io ,另外 ESP32 支持触摸按键,只需要 io 外接一小块金属箔就可以,我试过接一块锡箔纸都可以用

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/920679

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX