~derf / projects / dorfmap
dark mode

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.

It is no longer in use (or under development). The source code has been archived, see web frontend and bus clients and web backend and bus coordinator.

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.

Lessons Learned

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.

Further resources (German)