Skip to content

Group assignment

Here’s the link to the group assignment

While many network protocols exist, we narrowed down to the most supported in most modern chips like the Xiao format. These chips have dedicated pins for such protocols and existing libraries are well supported for all. The most common wired are these:

Feature UART **I2C ** SPI
Full Name Universal Asynchronous Receiver/Transmitter Inter-Integrated Circuit Serial Peripheral Interface
Type Asynchronous Synchronous Synchronous
Max Speed Slow (typically <1 Mbps) Medium (100 kbps - 3.4 Mbps) Fast (10 Mbps+)
Wiring 2 wires (TX, RX) 2 wires (SDA, SCL) 4 wires (MOSI, MISO, SCK, SS)
Topology Point-to-Point (1-to-1) Multi-node (Addressable) Multi-node (via Select lines)
Complexity Very Low Moderate Moderate/High
Distance Short (can be extended) Very Short (Bus capacitance) Short

Initially we thought about using I2C as it is very popular, but this kind of bus requires pull up resistors which we didn’t have at hand, so we went for UART which doesn’t require them.
Whatever you send on the serial is up for the receiver to interpret.
Interestingly enough, I found out that there’s a technique to create a Asynchronous Serial Bus: basically you have one master controller and all other are slaves.
The master’s TX connects to all RX in the the slaves, and the RX connects to all TX in the slaves.
So, basically all slaves receive all messages, and the content the message should include some form of addressing so they don’t all execute the command (unless it’s intended).
Care must be had because this does not prevent multiple slaves trying to talk at the same time to the master.