Best strategy for communicating with over 1000 ESP32S3 boards?
Posted: Thu Jul 11, 2024 3:43 pm
Hi all,
I’m currently working on a project where we plan to use over 1000 ESP32S3-based sensor boards (possibly Seeed Xiao, or a custom PCB) for a research project. The boards will be configured in a cube-like matrix, of approximately 10m^3, with each vertical ‘column’ suspended by their power supply cabling.
I’d like to be able to communicate with all the boards, to send them basic parameters from a PC - in order to configure the installation. These parameters are still being clarified, but my initial estimate is a packet containing around 25 bytes of parameter data.
I’d like there to be some basic handshaking involved each time a communication is made, and ideally some kind of unique address for each board. Many of the parameters will be global, but I’d like to maintain flexibility to allow certain units to be configured individually, or in sub-blocks.
From my current perspective, latency is not a significant issue, as the data will probably only be sent at the start of each session (several hours). Reliability of communication is more significant, and I need to ensure that every board has been configured. It might be worth noting that the whole installation will be configured in different physical spaces, and the total number of boards might be adjusted for each space. I think it would be useful to be able to ‘ping’ the whole matrix, and get a report on the number of boards that are live. A magic touch would be if the boards could figure out and report where they are in physical space.
I’d like to start by getting a feel for the best communications protocols to achieve this, including the possible benefits and drawbacks of using wired and wireless approaches. I hope someone here might be able to offer some advice and guidance in that regard?
My experience in this is quite limited. I’m very new to ESP32, having developed a few very basic things for it using the Arduino IDE, including using ESP-NOW for comms between boards. I have wider experience of Arduino, MBED, and STM32. I have experience of connecting a handful of Arduino’s together in close proximity, using I2S and RS485 wired comms. Never on this kind of scale, though.
I’d appreciate any feedback. Also apologies if this is in the wrong forum area - please do advise.
I’m currently working on a project where we plan to use over 1000 ESP32S3-based sensor boards (possibly Seeed Xiao, or a custom PCB) for a research project. The boards will be configured in a cube-like matrix, of approximately 10m^3, with each vertical ‘column’ suspended by their power supply cabling.
I’d like to be able to communicate with all the boards, to send them basic parameters from a PC - in order to configure the installation. These parameters are still being clarified, but my initial estimate is a packet containing around 25 bytes of parameter data.
I’d like there to be some basic handshaking involved each time a communication is made, and ideally some kind of unique address for each board. Many of the parameters will be global, but I’d like to maintain flexibility to allow certain units to be configured individually, or in sub-blocks.
From my current perspective, latency is not a significant issue, as the data will probably only be sent at the start of each session (several hours). Reliability of communication is more significant, and I need to ensure that every board has been configured. It might be worth noting that the whole installation will be configured in different physical spaces, and the total number of boards might be adjusted for each space. I think it would be useful to be able to ‘ping’ the whole matrix, and get a report on the number of boards that are live. A magic touch would be if the boards could figure out and report where they are in physical space.
I’d like to start by getting a feel for the best communications protocols to achieve this, including the possible benefits and drawbacks of using wired and wireless approaches. I hope someone here might be able to offer some advice and guidance in that regard?
My experience in this is quite limited. I’m very new to ESP32, having developed a few very basic things for it using the Arduino IDE, including using ESP-NOW for comms between boards. I have wider experience of Arduino, MBED, and STM32. I have experience of connecting a handful of Arduino’s together in close proximity, using I2S and RS485 wired comms. Never on this kind of scale, though.
I’d appreciate any feedback. Also apologies if this is in the wrong forum area - please do advise.