Close
0%
0%

Vegemite Sandwich Keyboard

Will ESP32-S3 work in a keyboard?

Similar projects worth following

The ESP32-S3 is the first Espressif board that has both true USB and Bluetooth, so naturally you have to wonder if it's any good for keyboards. I decided to try and see.

I'm using @Unexpected Maker's TinyS3 boards that just arrived from Australia, hence the board's name. And the fact it's shaped a little bit like a sandwich, if you squint a little.

It's also my first board where I'm using switch sockets, so you can rearrange and replace the switches on it as you like.

  • Wired Mode

    deʃhipu03/03/2022 at 09:51 0 comments

    For starters, I decided to do something I already have well rehearsed: a wired keyboard. There is already support for the TinyS3 in CircuitPython, so I thought it would be easy. Just use my ukeeb library, with the small modification for UART communication between the halves, and I'm done. Well, not quite.

    I got the first half to work pretty quickly — the only snag was that I didn't rotate the diodes when I moved them to the other side of the PCB, so now they were all in the wrong direction — but that is easily fixed in software. Then I moved on to get the other half to work, and that's where I wasted several hours of debugging time before giving up for a week. Long story short, the UART communication was broken on the ESP32-S3 with that version of CircuitPython, and I basically received random bytes. I gave the project a pause, and today, I flashed version 7.2.0, which seems to have this issue solved (I just had to add clearing the input buffer).

    So I have a working keyboard now. One more modification I had to do is adding a sleep in the main loop, to limit the polling speed — without that the chip was getting noticeably warm.

    Now, about wireless. While there is some basic BLE support in CircuitPython for this chip right now, the services are not implemented yet. And I need services for the HID. However, I decided to be lazy and just take my time and wait for this to be implemented by people who know what they are doing (hopefully), instead of rushing head-first myself. So there is going to be another pause here.

View project log

Enjoy this project?

Share

Discussions

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates