LYNXware / cat_esp32s3_rust

Apache License 2.0
0 stars 0 forks source link

Thoughts on hardware architecture #22

Open Ben-PH opened 1 year ago

Ben-PH commented 1 year ago

This issue is to explore our thinking about arranging our micro-controllers

Core design

[!IMPORTANT] The pain, both to developer and end-user, of bluetooth is not worth it.

also see: https://www.lynxware.org/

Context

I'm fine when it comes to writing rust, and I'm starting to get a feel for writing basic firmware. I have no frame of reference, though, for how to think about how to sort out hardware architecture in the physical world, beyond how it relates to the code I'd need to write. To put it another way: In my head, the physical micro-controllers are a purely abstract concept, where cost doesn't exist, power consumption is just code-style guide, and multiple devices are just esp-now code.

Previous approaches

Our first idea was to work with two splits, one designated primary, the other secondary. The primary would be the link to the host, the secondary would feed input events to the primary:

Because we want wireless, and BT/BLE is mostly considered deprecated to us, we decide to go with the "esp-now to a USB adapter". This put me on the path of: "Why not make the more than just an adapter? Let's make it the central hub?"

Current/Proposed design approach

But I'm not confident in my ability to consider trade-offs...

pros:

cons:

Thinking:

Ben-PH commented 1 year ago

Additonal thought:

securing data will be an issue, especially when it comes to keyboard usage. Will have to be put through the ringer. From what I gather, c3 is more feature-complete for security compared to c2

https://thingpulse.com/esp32-ultra-long-battery-life-with-espnow/ : deep-sleep latency is unacceptable: half a second. User could configure the rules for a module entering deep-sleep.

...don't write of bluetooth connectivity. Consider USB connection a "must-have" and bluetooth a "nice to have". This implies there will need to be thought given to it. Brass-tax, though, is that it will only be relevant to the core device, and interfacing via usb-hid or a ble-hid wouldn't be mutually exclusive.

...research and testing will need to be done with respect to latency of going from light-sleep to input event received.