我工作是做 JAVA Web 开发的,平常喜欢捣鼓嵌入式,也略会 Openwrt ( Linux-like )编译
键盘布局图、PCB 电路板,已经通过国外的网站实现了
剩余的主要问题:
感觉面前两座大山,有谁能出出主意
1
zhujinliang 2023-03-03 02:11:12 +08:00 via iPhone 2
可以参考稚晖君的翰文键盘项目,使用 74HC165 扩展 IO ,使用 SPI 接口读取按键状态
https://oshwhub.com/pengzhihui/b11afae464c54a3e8d0f77e1f92dc7b7 你可能还需要了解的:USB 协议、HID 协议、BLE 协议 建议先用 Arduino 跑一个模拟键盘,就是不连接按键,一连上就向主机发送按键的那种,搞懂这部分,再做按键的读取、去抖、键码映射表之类的 电路部分 ESP32 建议用带 NOR- Flash 的模块,可以节省一些布线的精力,也不用处理天线,通常模块接上电和串口就可以跑起来了,再加上按键扫描部分的电路、LED 指示灯之类的就可以了 你说的用 PSRAM 做数据库应该用不到,单片机上一般用数组做查找表就够用了,ESP32 对于键盘这种应用内存是足够的,存配置有专门的 filesystem |
2
duke807 2023-03-03 09:12:09 +08:00 via Android
1. 不会 -> 学,建议用 kicad 画板
2. 不管什么 mcu ,不建议 arduino ,建议用 c 语言开发,最好 gcc + makefile ,譬如 stm32cube 可以直接生成 makefile 工程,make 一下固件就出来了 |
3
duke807 2023-03-03 09:15:03 +08:00 via Android
不用数据库,配置文件直接把 struct 对象写入 mcu flash 最后一个 page 就行
|
4
Halry 2023-03-03 09:19:20 +08:00 via iPhone
esp32 耗电太多,用 nrf
|
5
t0iletb0mber 2023-03-03 09:23:40 +08:00
esp32 Arduino 有现成的轮子,至于外围电路直接买个板子就好了。
|
6
amwyyyy 2023-03-03 09:40:53 +08:00
Arduino 好上手,工具库好找。ESP-IDF 编译快,排查问题便捷。我也是 javaer 比较喜欢用 idf
|
7
MHPSY 2023-03-03 11:57:26 +08:00
我也想尝试自己弄一把键盘也是从零开始自己焊接芯片电容电阻之类的 但是一直都没开始
|
8
vjspdhpp 2023-03-03 16:54:06 +08:00 1
1.外围电路设计在芯片的手册里面有参考,或者可以直接参考其他同芯片开发板的原理图,他们用了什么元件你就用什么.
如果使用模块来做的话外围电路会更加简单,ESP32-S3 的话内置了 USB-Serial,还可以剩下一个转串口芯片. 2.如果可以换芯片的话,不如看看 QMK 方案. |
9
systemcall 2023-03-03 23:27:08 +08:00 1
1. 键盘要做矩阵扫描,一般要用各种 74HC 来做,比如 38 译码器、移位寄存器之类的东西,不然要占用非常多的、宝贵的 I/O ,扫描线不够多容易有鬼键,还有触发延时的问题。这个可以多看一下单片机相关的课程,建议从 STM32 开始学
2. 随便。ESP32 都是需要配一颗 NOR Flash 的,不知道你是不是买的模块,模块都会有 NOR Flash 。如果是直接买的芯片,天线的 layout 够你喝一壶 数据库一般用不到,就那点数据量而已。倒是你要做均衡磨损,虽然一般的 NOR Flash 上万次擦写寿命,也有一些文件系统,但是文件系统很重,自己直接操作闪存的话没有做均衡磨损,闪存很容易有坏块 PSRAM 断电就会丢数据。要一直能保存数据,又可以像内存那样直接往里面写,寿命还长,可以考虑 F-RAM ,不过那玩意拆机的都是天价了,512K 的好几十 |
10
Gav1nw OP @systemcall 之前算了一下,esp32s3 的 GPIO 数量倒是可以 cover 住,鬼键的处理我记得是在对头上放一颗二极管。
|
11
Gav1nw OP @vjspdhpp 我当时看中的就是 ESP32-S3 内置蓝牙模块,并且内置 usb ,GPIO 端口数量也足够,不用过多的折腾硬件电路,
1.只是现在用的开发板,最终键盘肯定不能用开发板,那就涉及到嘉立创 EDA 画板,比如为什么正负极之间串一个电容就能降压等电路知识,以及电阻要串多少欧的等等我是懵逼的,我大学学的 STM51 最多也就是写个灯的控制 |
12
linuxgo 2023-03-19 23:44:07 +08:00
如果只是几个按键,直接用几个 io 一一对应每个按键就可以了,如果是 10 个以上按键,就最好做成矩阵形式,节省 io ,比如 4x4,就只需要 8 个 io ,另外 ESP32 支持触摸按键,只需要 io 外接一小块金属箔就可以,我试过接一块锡箔纸都可以用
|