I currently have a 24 sensor network setup with a Raspberry Pi, but it uses I²C as the communication method (GASP, I know) and so is definitely not scalable in any way shape or form.
My question is around what would be the industry recommended protocol for communicating between the sensors and the main controller. Ideally, the main controller will not be required to poll all of the sensors to check if they have more data, but rather each node would push this data to the main controller. My current thoughts are leaning towards CAN. However, would this decision be future-proof?
I am going to give a brief overview of why I was thinking CAN. If you could please correct any of my misconceptions, or add more information it would be much appreciated. I also will add my thoughts on using other wired/wireless networks and why I don't think they will work:.
- Built-in collision detection
- Multi-master built in
- ISO protocol
- Fast (1 Mbit/s)
- Future-proof due to its prevalent usage in industry.
- Expandable (no extra hardware required to add a node)
All sensors to have power of Ethernet capability.
- Lightning quick
- All sensor modules would require more expensive hardware for the Ethernet stack
- Would require a large switch infrastructure for many bays
- Every new module would require running of more cable
- Distance may be a problem for Ethernet
Each sensor has its own Bluetooth connection.
- Range is too limited. We could create a mesh network, but the close sensors would have a large throughput of data.
- Limited number of connections to the main controller (20 max)
Each sensor has its own Wi-Fi chip.
- Increases cost of the sensor hardware
- Require a power router to have that many connections
- Setup becomes an issue as there are no inputs on the sensors
- Range of the Wi-Fi is usually not up to 100 m.
A multidrop; however, this is just a simpler version of CAN in reality.
I think this would be a joke trying to use this, but I am open to suggestions.