dorfmap was a fully-featured remote control for lights, power switches, text displays and other stuff, used between 2013 and 2020 at the Chaosdorf hackspace. It utilized a web frontend and an I²C-like unidirectional bus with a Raspberry Pi coordinator and ATTiny2313 clients. Thanks to optically isolated data lines, client devices could use their own power supply without having to worry about ground potentials.
I found it to be a good way to learn about bus structures, firmware, and PCB design. It evolved quite a bit over the years.
Rolling your own protocol sure is fun and instructive. Still, next time I'll probably use a well-known protocol such as I²C, CAN, or Modbus. I don't recommend using SI2C for anything productive.
- Each SDA/SCL input draws up to 4mA when receiving a 1-bit due to optical isolation. The number of devices on a bus (without a repeater in-between) is therefore limited to four (Raspberry Pi controller, 16 mA maximum) or five (ATTiny repeater, 20 mA recommended, 40 mA absolute maximum).
- With unidirectional communication, the controller has no way of telling whether its commands were received and executed correctly.