I2C for Central Error Handling

Hi Everyone!

I am hoping to get some more expert opinions to supplement my own.

I am hoping to optimize my system to use I2C to handle all of my error reporting.

My system may be understood by the attached photo.

My system is made up of only UNO's and each of them has their own internal processes, however I want warnings and errors to be reported to the a central error handling UNO as the diagram shows.
The "Worker" UNO's have their own processes and will continue about their individual business as long as the "All Good Flag" is High(A HIGH GPIO read on the "Workers" side) .

If the Central UNO detected a catastrophic error it would shut the entire system down by pulling the "All Good Flag" Low.

I am anticipating the I2C lines to remain decently quiet. I am looking to make use of the I2C on the "Workers" side so that whenever there is an error on one of the "Worker" Processes the "Central" Board catalogs which board sent the error and decides what to do with the said error.

I believe that to best achieve this I would make the "Central Error Handler" as the Master(Listener) and the "Workers" as the Slave(senders), however I am a bit unsure as to how to implement a this sort of system.

Any Guidance is extremely appreciated.

Thank you all in advance,
Carlo Bocatto

I2C is not particularly reliable, especially the Arduino implementations that don't feature timeouts. Communications can simply hang.

Furthermore, I2C was originally intended for chip-to-chip communications on a PCB, and lead lengths generally must be pretty short (certainly less than 1 meter) or you will start to have problems.

RS485 was intended for multidrop situations where there are significant distances between the nodes.

Thanks for the reply jremington!

I will look into using the RS485 Protocol!

On my current application nothing is more than about 2 feet apart. I am using twisted pairs to minimize the noise however, I appreciate that reminder!

Did you have any Ideas on the actual implementation or how you would structure the system? I.e. the "Central Error Handler" role and the "Workers" role?