Motor control over Wifi

Yesterday, I used Marc’s UART server to connect the ESP32 to the Olimex E407 devboard which we use to test our bottom PCB code. 

After a few adjustments, it works and we are know able to turn on the motor and choose its speed by sending a speed target from a computer to the bottom ESP32, which transmit it to the dev board over UART, which translate it in DShot frames and transmit it to the ESC.

As the majority of the bottom PCB code is written and functional under ChibiOS, we will of course keep this OS for this PCB and use FreeRTOS only on the main board.… Read more

From ChibiOS to FreeRTOS

While Marc and Xavier are stuck in a tedious FH class, Vlaya and I have decided to work on the SD card. Our goal is to upload animations to the SD card (the same animations on each Phyllo). The Phyllos agree thanks to a discussion over Wifi on an animation identifiant and to start the animation at a chosen time (as you may remember, the Phyllos have a common time reference). Then each Phyllo will search the SD card for the desired animation and send it to the LEDs.

We started to read ChibiOS and STM32H7 documentation about SD card and SDC Driver, but soon, we discovered that on the last ChibiOS stable version (19.1.3)… Read more

Phyllo effects taxonomy

Following the Phyllo demonstration video we recently shot, Xavier and I started thinking about the impact of the flash frequency on the Phyllo effects. The first step being to list the effects we want.

There is a variety of effects that depend on the flash frequency; they all boil down to what we’ll call the “apparent rotation speed” of the Phyllo. Here’s a well-rounded selection of effects to give you a better idea of this:

Vertical aging / de-aging

We could define this kind of effect as having an “apparent speed of zero”: the petals only age or de-age along a top-down line, but don’t move left or right spinwise.… Read more

Another Brick in the Wall

I recently built the first version of the LitSpin Linux but also the MCVEVK Linux if we need it. I first tested the MCVEVK version and it worked perfectly. However, when I tried with the LitSpin one, I had some trouble: the MCV didn’t boot anymore or nothing was sent on the UART which is also a problem.


To recover the SOM I tried to follow the different steps given by ARIES. The first problem was to get the Recovery Sof which is not available online. So, I sent ARIES an email to ask for it. They send me back the recovery file 20 minutes after.… Read more

New 3D printed support for the petal PCB

Recently I printed a new support for the petal PCB:

I made it thicker than before, which will allow the PCBs to be more pressed in the structure, and thus easier to attach.

Although it is thicker, it is actually lighter than the previous one (which is good so that we don’t put too much strain on the motor), because this time I made it less dense, except for the part around the inserts which need to be very dense. I used the same technique for this than here

Here’s the result with the dummy PCBs I printed:

They fit very well 🙂

Time for testing

On Wednesday, I have corrected some more bugs in the PCB. I saw that I have route some nets between the bottom and the top of the PCB, so I route them again.

After a Skype with Alexis, I clean the git repository, and begin to prepare the folders for the tests on the PCB. Alexis asks us to make our tests on the STM of the iot_node before implementing them on the test_PCB. We receive it today, so we just need to wait for some soldering and then we can begin our tests of the H-bridge and other codes.

Here is the test PCB, we need to solder the coils on it

Now, I will begin to code the test code for the H-bridge and check if the code for the sensor works for the Iot_node.

More fixes on the PCB

On Tuesday, I check again the PCB and clean it a little. I found that some capacitors disappear during my cleaning, and I change the scheme a little. Because of the system of copy-paste of mentor and the way we put the decoupling capacitors, they are not linked with the same components. So I need to put again the capacitor near the component to check if I have all the capacitors I need.

Now, we receive the PCB, so we can begin the tests on it and I need to check with some documents Alexis give that all is ok with the HAL

Spring is coming

Now that the speed control finally works, we promptly decided to test it out with a actual Phyllo.

Here’s a video of a Phyllo spinning at 11.45 RPS and then 18.54 RPS filmed with a 30 FPS phone camera.

In order to shorten the exposition time to reduce motion blur, the Phyllo needs to be as illuminated as possible. Since today was not sunny (just another day in Saclay…), we borrowed a spotlight from the design studio next door.

We really like the transition effects when changing speeds, so we’ll try to incorporate them in our panel of animations 🙂

PID tuning

As explained in the last article on PID control, the aim of the PID regulator is to compute a correction according to the error (the difference between the target speed and the actual speed), its integral and derivative, and 3 chosen coefficients : KP (for proportional correction), KD (for derivative correction) and KI (for integral correction). This week, Xavier and I made some corrections on the software (presented in this article) and choose the coefficients.

Tuning KP

This coefficient was the easiest to choose by following the steps indicated in this article

We took the smallest KP for which the system oscillates (called critical KP) and multiplied it by ⅔.… Read more

Speed control from every angle

Since our previous post last Thursday, Sibille and I have kept working on speed control. It has taken us much longer than we originally thought, but we’re happy with the result. Now that we have a working product, we’ll go back over what all went into making it work:

As mentioned previously we use a Proportional, Integral, Derivative (PID) control scheme to regulate the throttle command given to our ESC so that the motor speed matches the desired speed.

Speed feedback and speed format

If you’ll recall, Vlaya had previously written code to capture the edges of a once-a-rotation interruption (the “period interruption”) from a Hall sensor or an optical sensor and deduce the elapsed time during the rotation, and from there the speed.… Read more