We are a robotics competition that builds a field for robots to play a game on every year.
This year, the field has many actuators that each contain a couple of sensors (limit switches, light sensors, IR beam break sensors). Each actuator would be considered a node and would have an Arduino board.
There is a master CONTROLLINO board that runs the game logic as well as relays that turn on lights and such.
The nodes need to be able to report the sensor data to the master CONTROLLINO board. We have looked into CANBus however, certain parts of the game require logic that needs to know the exact state of the sensors and compares it with others at a given moment. CANBus reads its data with a priority of ID and not data arrival order hence our problem with it. Is there a way for CanBus to read in order of packet arrival?
Most actuators are 10-20 meters away from the master.
The master needs to either call the slaves and ask for data in a very fast manner, or the slaves report data when a state of an actuator changes, automatically.
The ideal scenario is to have every sensor connected directly to the Master. Makes checking and comparing inputs quite easy, however, running tens of wires to multiple nodes is a no-go. A twisted pair bus or an ethernet cable is much easier to route and organize.
What communication protocol do you guys recommend?