xjjak / LapCal

Building gloves that enable typing on a 34-key keyboard without an actual physical keyboard using IMUs and machine learning.
Other
2 stars 0 forks source link

[IDEA] Dongle for keyboard emulation and interfacing with the target device #18

Open xjjak opened 9 months ago

xjjak commented 9 months ago

Describe the vision. What is to be achieved? What does the end-result look like? Is it a specific feature?

By creating a dongle with a USB-C connector, there would be a quite universal way to interface with most machines using the gloves. The gloves would both establish a BLE connection to the dongle, acting as the server unifying the inputs, emulating the keyboard. Depending on BLE speeds and performance of the motherboard MCU, it may be worth it to choose a more powerful chip like an STM32F2 to offload the neural network processing on. The ESPs would then only stream new sensor data as fast as possible.

Another consideration to make would be the place where the last readings are buffered. If the ESP32s are powerful enough to do the keystroke processing and only send the press and release events of the 17 keys on each hand, it should be looked into letting multiple data packets be stored in the FIFO buffer and reading and sending them together.

Share possible solutions or ideas and approaches. The design is relatively simple, just requiring a male USB-C plug, a USB driver IC and an MCU. That could be another ESP32 with an custom onboard antenna or like previously mentioned a more powerful processor, like a Cortex-M3, which would require an external IC for wireless communication. The footprint should not exceed that of a small USB-C flash drive.

Are there alternative "solutions" that achieve the same? Are there drawbacks to this plan? What would not be possible if this path is chosen?

There would be another part to carry, and a free port in the target device has to be free. This is negligible to the hassle of possibly installing drivers and reduces complexity trying to use one of the hands as both a server for the other hand and a client connected to the target device.

Additional context Add any other context or screenshots about the feature request here.