Channel counts:
Looking at the actual arrays in config.h:
- bluetooth_channels[] = 21 channels (classic Bluetooth)
Loop speed:
In RfClown.ino:358-406, the channel-hopping block has no delay(), so it runs as fast as the ESP32 can iterate. Each iteration does:
- random() — microseconds
- 3x RadioA/B/C.setChannel() — each is an SPI transaction, ~10-50μs
Rough estimate: ~100-300μs per loop iteration, so roughly 3,000-10,000 hops/second.
All 3 radios on the same channel
At line 361-363:
RadioA.setChannel(channel);
RadioB.setChannel(channel);
RadioC.setChannel(channel);
All three radios are set to the same random channel each iteration.
- Bluetooth Classic: BT hops at 1,600 hops/sec across 79 channels. Randomly hopping 3 radios (on the same channel!) across 21 of those channels is very sparse coverage.
- WiFi: WiFi channels are wide (~22MHz) and the nRF24 carrier is narrow (~1MHz), so even hitting the right channel number provides limited disruption.
Would it not be better to assign each radio to a different channel instead of the same one?
Channel counts:
Looking at the actual arrays in
config.h:Loop speed:
In RfClown.ino:358-406, the channel-hopping block has no delay(), so it runs as fast as the ESP32 can iterate. Each iteration does:
Rough estimate: ~100-300μs per loop iteration, so roughly 3,000-10,000 hops/second.
All 3 radios on the same channel
At line 361-363:
All three radios are set to the same random channel each iteration.
Would it not be better to assign each radio to a different channel instead of the same one?