ESP32 造一把键盘,望有大佬指点 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Gav1nw
V2EX    硬件

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

  •  
  •   Gav1nw 2023-03-03 01:43:48 +08:00 2936 次点击
    这是一个创建于 1030 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    剩余的主要问题:

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

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

    12 条回复    2023-03-19 23:44:07 +08:00
    zhujinliang
        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
    duke807
        2
    duke807  
       2023-03-03 09:12:09 +08:00 via Android
    1. 不会 -> 学,建议用 kicad 画板

    2. 不管什么 mcu ,不建议 arduino ,建议用 c 语言开发,最好 gcc + makefile ,譬如 stm32cube 可以直接生成 makefile 工程,make 一下固件就出来了
    duke807
        3
    duke807  
       2023-03-03 09:15:03 +08:00 via Android
    不用数据库,配置文件直接把 struct 对象写入 mcu flash 最后一个 page 就行
    Halry
        4
    Halry  
       2023-03-03 09:19:20 +08:00 via iPhone
    esp32 耗电太多,用 nrf
    t0iletb0mber
        5
    t0iletb0mber  
       2023-03-03 09:23:40 +08:00
    esp32 Arduino 有现成的轮子,至于外围电路直接买个板子就好了。
    amwyyyy
        6
    amwyyyy  
       2023-03-03 09:40:53 +08:00
    Arduino 好上手,工具库好找。ESP-IDF 编译快,排查问题便捷。我也是 javaer 比较喜欢用 idf
    MHPSY
        7
    MHPSY  
       2023-03-03 11:57:26 +08:00
    我也想尝试自己弄一把键盘也是从零开始自己焊接芯片电容电阻之类的 但是一直都没开始
    vjspdhpp
        8
    vjspdhpp  
       2023-03-03 16:54:06 +08:00   1
    1.外围电路设计在芯片的手册里面有参考,或者可以直接参考其他同芯片开发板的原理图,他们用了什么元件你就用什么.
    如果使用模块来做的话外围电路会更加简单,ESP32-S3 的话内置了 USB-Serial,还可以剩下一个转串口芯片.
    2.如果可以换芯片的话,不如看看 QMK 方案.
    systemcall
        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 的好几十
    Gav1nw
        10
    Gav1nw  
    OP
       2023-03-03 23:38:02 +08:00
    @systemcall 之前算了一下,esp32s3 的 GPIO 数量倒是可以 cover 住,鬼键的处理我记得是在对头上放一颗二极管。
    Gav1nw
        11
    Gav1nw  
    OP
       2023-03-03 23:46:25 +08:00
    @vjspdhpp 我当时看中的就是 ESP32-S3 内置蓝牙模块,并且内置 usb ,GPIO 端口数量也足够,不用过多的折腾硬件电路,
    1.只是现在用的开发板,最终键盘肯定不能用开发板,那就涉及到嘉立创 EDA 画板,比如为什么正负极之间串一个电容就能降压等电路知识,以及电阻要串多少欧的等等我是懵逼的,我大学学的 STM51 最多也就是写个灯的控制
    linuxgo
        12
    linuxgo  
       2023-03-19 23:44:07 +08:00
    如果只是几个按键,直接用几个 io 一一对应每个按键就可以了,如果是 10 个以上按键,就最好做成矩阵形式,节省 io ,比如 4x4,就只需要 8 个 io ,另外 ESP32 支持触摸按键,只需要 io 外接一小块金属箔就可以,我试过接一块锡箔纸都可以用
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2771 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 21ms UTC 02:15 PVG 10:15 LAX 18:15 JFK 21:15
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86