How to distribute traffic

In one Phyllo, we have two ESP32. Let’s call them main_esp and bottom_esp to match main_pcb and bottom_pcb. As far as WiFi communication is concerned, there are three types of possible data flows:

  • main_esp ↔ client (typically a computer, for shell connection on the main_stm)
  • main_esp ↔ main_esp (to play shared animations)
  • main_esp ↔ bottom_esp (the two ESP32 from the same Phyllo to provide target rotation speed or maybe also turn off main_pcb)

For each flow, there must be a protocol to discover the IP addresses. One solution is to broadcast a request for a specific Phyllo IP address. This solution is especially useful for the shell client.… Read more

IRksome AGC

IR for neighbours detection

The past few days, Xavier and I did some more IR tests. 

The first thing we wanted to measure is the reaction time of the receiver.

By logging the times the emitter was turned on and off, we realised the receiver’s reaction to toggling the emitter was systematically delayed between 150 and 250µs. This is not surprising as it perfectly matches the datasheet specification. In any case it’s not a problem because it is short enough and also consistent.

Then, we set out to see whether adding 3D-printed materials between the emitter and the receiver would introduce a delay, and if so, measure this delay.… Read more

IR Update

Today Sibille and I made some additional tests with the IR receptors, like we talked about in this recent post.

We used the AGC2 TSOP4856 receptor, as well as a LTE-R38381S-ZF-U emitter, with the same circuit setup for our previous tests described in this post.

The first thing we tested was whether we could overwhelm the receptor’s AGC by exposing it to an IR burst longer than the maximum burst length, which is 1.8ms for our receptor. 

With bursts of 3ms (on) and 100ms gaps (off), the receptor tended to be 10 or 20ms late in reacting to the end of the burst.… Read more

Lots of IRons on the fire

Since Friday, Xavier and I have worked on the placement and routing of the main rotating PCB. We have a lot of constraints to place the components of this PCB, notably for the IR which is used for the detection of other Phyllos and the reception of the common time reference, and the IrDA, used to communicate between the fixed and mobile parts.


The IrDA would be used to send speed commands from the rotating part to the fixed PCB below, which controls the motor. This fixed PCB will handle the feedback control of the motor, so we really only need to send it a target speed with the IRdA.… Read more

IRoning out the Phyllo detection

Back to school after the holidays, we ran tests to validate our idea for detecting other Phyllos with IR radiations. Quick reminder, we had ordered two powerful IR transmitters (LTE-R38381S-ZF-U and SFH 4441) and several receivers, some in AGC2 (TSOP2256 and TSOP4856) and others in AGC4 (TSOP4456). Signal management is a little different depending on the type of gain control (AGC): some receivers are more suitable for noise reduction and other lower detection times.


We will briefly go through the IR detection protocol once again. 

First of all, Phyllos give themselves a unique identifier by communicating via Wifi.… Read more

New Year, new skin

Happy New Year everyone, hope you enjoyed the holidays !!

Today we are going to talk about the latest trends of our hardware architecture.

New PCB disposition to drive the petals

We used to try to drive each LED with its own processor. However we could not manage to get every component to fit on the PCB petals. Moreover, the processors were underused as we barely needed half of their timer outputs. Therefore, further inside the Phyllo, we decided to add a layer with slightly bigger PCBs (let’s call them the petal controllers). They have a STM32F207VIT6 which can drive up to 10 LEDs.… Read more

Ruling the colony of Phyllos

Yesterday we mostly worked out the detail of how we’ll be detecting neighbouring Phyllos.

Without further ado, here it is :

Step 1 : Discovery and identifier attribution

The first step for the Phyllos is to establish collectively which other Phyllos are present. Each Phyllo must therefore broadcast its presence and be given an identifier. 

This step must be repeated regularly in case Phyllos are switched on/off. 

As described in this post, we plan to base the protocol on wifi broadcast: a Phyllo regularly broadcasts its IP over wifi to signal that it is still on. The others register this IP address in a local running Phyllos table.… Read more

The magnet strikes back

In a previous post we discussed several ideas on how to detect the direction of neighbouring Phyllos relative to a given Phyllo. Our favourite idea in this post was based on a mix of Wifi and IR : the Phyllos would cooperate using Wifi to turn their IR emitters on one at a time to allow the others to detect it using IR detectors.

But this idea raises several problems. The most notable is IR reflections : they could spoof the Phyllos into detecting neighbours in the wrong directions. We thought we would be able to differentiate an IR reflection from a direct emission by comparing the amplitudes, but according to Alexis, we will have too much trouble.… Read more

Communicating between Phyllos : Who’s Who ?

In order to display animations that flow back and forth between several Phyllo, the Phyllos need first to be able to know each other’s position. 

For now, we have reduced this problem to this : to display animations in the proper orientation relative to its neighbours, each Phyllo needs to know the direction of each neighboring Phyllo. They have no real need to know exactly how far they are from each other.

Associating detection and communication

It is not enough to merely detect Phyllos if the detection method doesn’t allow us to distinguish one Phyllo from another. We have to be able to both talk to a specific Phyllo AND know where it is physically located.… Read more