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

pmmccorkell wrote 10/17/2023 at 12:05 point

I just wasted a whole day trying to track that Not Implemented error. Trying to roll back firmwares guessing at when Adafruit's "Deep Dive w/Scott" when he allegedly had it working.

Was convinced they just broke something in _bleio, but nope. It's never worked ig.

At least now I know I'm not insane and can just buy an nrf.

  Are you sure? yes | no

Rashid Abdulrahman wrote 08/09/2023 at 10:01 point

hello there,

Any update on this or did you manage to find a working code to send keystrokes using Bluetooth? I was thinking about doing the same thing and also have it connected to more than 1 device and switch between them. Any help will be appreciated by anyone  

  Are you sure? yes | no

deʃhipu wrote 08/09/2023 at 10:36 point

Since I want to use CircuitPython, I am blocked by this issue: https://github.com/adafruit/circuitpython/issues/5926 – as soon as this is fixed, I can implement a HID keyboard on bluetooth. However, it doesn't look like this is a high priority thing, so I'm just taking my time working on other things in the mean time.

  Are you sure? yes | no

Rashid Abdulrahman wrote 08/09/2023 at 16:31 point

that's a bit disappointing for now! I am still new to this keyboard  shenanigans atm but what is the best micro-controller (atmel , stm etc) with/combine  Bluetooth that can be used for wireless keyboard? basically I have got 2 work laptops and my own pc on my desk and i want a wireless keyboard that i can use to switch quickly between devices!  power not an issue as it`ll be plugged-in mostly but i don't want to run multiple cables to each device

  Are you sure? yes | no

deʃhipu wrote 08/10/2023 at 00:27 point

nRF52840 is the most popular choice for wireless keyboards right now

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

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