I am working on a mediumly complex art project that will require that multiple microcontrollers collaborate. Currently thinking about a PyPortal for the control user interface, a couple of Feather Express M4 to drive neo-pixels strings and a few I2C sensors, one or two Matrix Portal M4 for, well, LED matrixes and maybe a Circuit Playground Express. Probably 7-8 I2C sensors that will be connected to the Feathers to detect presence, movement and participant's height.
Need the controllers to be loosely connected, with messages flowing from the main controller (the PyPortal, probably) to the other devices, and messages from the other devices to the main controller. The controllers (and sensors) will be in relative close proximity, but there will be 2m cable runs between some controllers. Plan on programming in CircuitPython.
Thinking how these microcontrollers will communicate with each other, I am thinking of two alternatives:
- one UART TX/RX loop linking all microcontrollers in one loop. I2C sensors on one or two I2C buses attached to the Feather Express M4s
- or one I2C bus driven by the PyPortal, where the I2C devices and the other microcontrollers are set up as devices
- or one I2C bus that links the microcontrollers and one or two independant I2C busses for the devices
Should I expect any issues with using both the UART and one or two I2C busses on the Feather Express M4s? Should I expect issues with running multiple I2C busses on a Feather Express M4 (one as device and one or two as host)?
Thoughts, suggestions and ideas are welcome!