PCB: step 2

On Monday, I routed the 4×4 PCB I placed on Friday. I choose to put one multiplexer at the top of this cell and another one at the right. So the SDA lines (which come from the STM32, not from the multiplexer) will come from the left and the bottom. I also changed the scheme by removing a pull-up I put between the main multiplexer and the other multiplexers.

I try to use some shortcuts I found such as one that swaps the pins, but after reading the manual, I found that without a change in the part editor, I cannot use it, so I finally change the pins in the scheme

Now, I will copy 16 times this cell and continue routing with the other components

Pretty Animations

These past few days I’ve been working on the animation generator. Here’s a result:

I wrote a generator in C (which will later be the code used on the main board) which has a generate_frame function which will generate the next frame of a procedural animation. The generate_frame function can be called an arbitrary amount of times.

The code can export the frame to a file, which is then read by my animation simulator script I wrote for blender.

The simulator takes a few secondes to read the frames (5 secondes for a 500 frames animation for instance), and can then display the animation in real time (same as in the gif)

The simulator can also render high quality realistic animations as the one you can see in our project presentation , but even a small animation will take a day of rendering

Here’s all the concepts / techniques I have been working on right now (most of them are already implemented) which the generator uses:

Virtual Petals

The virtual petals are the petals you appear to be seeing go down (age) on our phyllo animations.… Read more

PCB: step by step

On Friday, I continued to place components. I spent some time to put the 4×4 coils precisely (in the same way as for the test PCB. I found some keyboard shortcuts that help me to do this quickly, but of course, I found the best shortcuts on Monday, when most of the work was done. I take a look at Alexis’ work he made on our test PCB and found some toolbars that will be very useful for me.

Now, I will try to place the multiplexer and to route it. Then I will copy this 4×4 grid sixteen times to finish the PCB until placing and routing the unique components.

Quick update on the power transmission

Yesterday we put the flexible plastic tube to isolate the inner metallic tube from the axis on our power transmission (see this post ). With the help of Karim, Sibille and me devised a way to test if power gets across our ball bearings using some large resistors. We were able to see that we can transmit 30 amps, but the resistors’s resistance was too low for proper testing, so we could not test the voltage drop.

It is crucial for us to test the voltage drop, since right now we are transmitting 5V through the ball bearings and powering devices that function on 5V on the rotating part.… Read more

Mechanical assembly

With the help of a company we are working with, we made tremendous progress in the choice of our mechanical architecture. Here is what we settled with:

Each “floor” of the structure is being held to its neighbours by three spacers in an equilateral triangle. The spacers and plates are made of metal (most likely aluminium) and carry the ground from the body (it is being pulled from the arm).

The 12V power is carried through the motor axis which is isolated from the bottom plate.

LED band PCBs are simply held by friction and by their connector. Appropriate holes in the hat and the middle plate are made to fit the PCBs properly and hold them in place.… Read more

Ready for a test of PCB?

On Thursday, I went to Telecom for the first time of the week. I took advantage of this journey to print the prototype of our box for the test PCB. But I lack plastic plank for the middle part (in green in other photos), so we need to wait for a week to have it. However, we will have it on time because we won’t have the PCB before.

In the afternoon, I began the final PCB. We found before a component for charging the battery on a USB cable (the LTC4088), that I put in the schemes.

After some hours on it, I finally find how to import a DXF file of our PCB.… Read more

When the bug lies in your debug print function…

Here’s a riddle:

A for loop with index i and stop condition i < x contains a code which prints i and does some non relevant computations. When x is greater than y the code prints i up to x-1 (as you would expect), but when x is smaller than y the code prints i up to 51. The threshold y is slightly random (it hovers around 1120), but the 51 is not. What is happening ?

Well, first here’s more precise information on what actually happens: if x > y the code actually doesn’t print all the values up to y-1, it only prints the first 51 values and the values between y and x-1 .… Read more

Successful print of the PCB holding structure

Today I managed to print the support for the processor PCBs without any major flaws:

I changed the design a little bit in order to ease the printing and make the structure more robust: I removed the openings / holes on the sides and made the whole structure thicker. I also used the Ultimaker 2 printer of the fablab instead of the zortrax since the zortrax are somewhat broken right now. (hopefully it’s not because of all our printings)

I also printed a piece with the same shape and dimensions as our processor PCBs, and it fits perfectly in the structure.… Read more

Uncrossing wires

Today Sibille and I made great strides on the bare-metal code for the led-driving processors.


Yesterday we left off unable to see the PWM outputs on the processor pins. Today we started by remedying an oversight: we set about configuring the clocks. 

On top of that, it turns out that yesterday we didn’t pay enough attention when reading the documentation for the board: the documentation includes pinout information for other boards with other processors, and we were looking at the wrong processor…

We were then able to use a Saleae Logic analyser to observe the PWM output. At first, the frequency was off, and we spent much time looking at our clock configuration before realising that the timer prescaler didn’t behave in the way we expected (it turns out that frequency division ration if the prescaler value plus one, which is a neat way of avoiding a “division by zero” type of situation). … Read more


With Nathan, we work a lot on the creation of the Linux distribution. On my side, I am working on how to add an sd card on an SPI bus and Nathan is working on the driver for the USB WiFi Dongle.

Device tree

An SD card can not be detected and set automatically like a USB device. We have to tell Linux there is a micro SD host on an SPI bus. We have to put a micro SD host on an SPI bus because the eMMC bus is already taken by the Flash. To tell Linux, there is a micro SD host on the SPI bus, the simplest method is to add it in the device tree blob.… Read more