Inspiration
This project was heavily inspired by CANBus and its unique network arbitration method for devices on the network. However while CANBus requires a specialised circuit to be a part of the network, Monopoly Bus does not, and moreover only requires a single wire.
What it does
Monopoly Bus allows devices to broadcast messages, commands and data onto a single wire asynchronous network without any specialized peripherals. Thus, it is built for DIYers and hobbyists and will allow them to build large device networks without any extra parts or lots of wiring.
How we built it
The protocol uses a "virtual clock" which is essentially a timer that the GPIO uses to send or receive a value every time the timer ticks. The clock is activated once the line has been pulled down, synchronizing all nodes. Thus, the clock translates the digital signal into a stream of bits.
Challenges we ran into
Currently the protocol is only capable of sending 1 byte in a single frame. It is also quite error prone at higher tick rates/frequencies. A major issue initially was syncing devices on the network together itself.
Accomplishments that we're proud of
Randomness based networks have been built before (in fact the first wireless packet data network utilized randomness for network arbitration) but I am proud to have developed something unique that hobbyists could use for their projects.
What we learned
Low level signal processing and synchronization Network Arbitration Mechanisms Decimal - Binary Conversions and vice versa
What's next for Monopoly Bus!
I hope to see this project bloom into a popular open source framework. I also plan on porting this to other MCUs.
Built With
- c
- esp-idf
- esp32
- platformio

Log in or sign up for Devpost to join the conversation.