Today was day of the test. It was actually quite different from what I planned, in this post especially.
First of all, I did not manage to make an ESP32 receive its own broadcasted packet. Apparently, it is not natural for a device to receive a packet sent by itself. I still have some leads to follow about it so I will maybe continue to look for a solution. In this test, there was simply an ESP32 which did not received packets. It is also possible to accept that. Indeed, we will have 2 ESP32 on each Phyllo. One on the main_pcb and another on the bottom_pcb. Moreover, only the one on main_pcb needs the time reference. Thus, we can have an ESP32 on a bottom_pcb send the synchronization message.
The second difference with what I had planned was a big simplification. Instead of programming an STM32 to gather the relevant information, I used a logical analyzer. It was the same setup, however, from the viewpoint of the ESP32s: one master sending packets and slaves toggling a GPIO output as they received the packets. The master also did a toggle when sending the packet.
For this test, two measures were relevant. First, the reception timing of the packets in the different ESP32. As a reminder, we must synchronize to never be farther than one complete rotation of the Phyllo. The fastest the Phyllo rotates is 30RPS so one rotation is slower than 30ms. I found out that it was pretty much negligible: never more than 0.2ms and most of the time only several microseconds.
The second measure was added in hope that I could easily bypass the problem of not receiving one’s own broadcast, namely the timing between emission and reception of a packet. I found out that it is around 200ms which is far too much. However, I realized afterwards that the relevant information in this case is not average but the stability of this measure. However I did not pay attention to this today so we’ll see later on.