LEDzep – getting angles and tap detection


These days I worked a lot on our mpu9150, a 9axes motion sensor embeded on our cards. We had to adapt the SDK provided by the constructor Invensence and adapt it to our STM (it was originally intended for TI processors). Then we used it to configure the mpu and the dmp processor. The mpu transmit to the dmp raw datas throught a fifo. The dmp will then put in the same fifo the filtered datas.

Here is what we get in this fifo when the system is balanced, when a tap is simulated with the ball or when we rotate along z.
test valeurs au reposLEDzep - tap capture

LEDzep - test valeurs angle

We note first of all that there is no drift.
Then I used the values ​​of the accelerometer to determine the duration and the threshold adapted for the tap detection. It now appears to be effective as shown in these videos. There is still a small porblem: each shocks, the dmp detects up to 3 taps. So that’s why the zeplin flashes when touching the ceiling.

After that, I projected the quaternions datas in order to recover euler angles and especialy the Heading angle that we’re going to use for the servo control.

We now get a precise angle measurement as shown in this graph.

LEDzep - récupération angles en degré

So now we are able to recover datas from all our sensors (altitude, angle, tap) and we can use all of our actuators. Thomas began a first height servo control code. I will now start the angular one. Both servo control threads will then be alternated with regular time intervals.

good evening!

LEDzep – mpu and shell


These days I worked especially on our motion tracking device. We use the nine-axis MPU-9150 that can measure gyro, accelerometer and compass datas. The range we have chosen has a characteristic, it embeds a digital motion processor. By accessing to its registers, we can retrieve measures that have already been filtered and analyzed. I decided to use the motion driver SDK provided by Invensence, the manufacturer.

The code now, recover a FIFO on which the measures filtered by the DMP processor are set to the string. A callback is also called each time the DMP detect a collision and the function send back the direction from which came the collision and the number of these impacts. It will be very usefull because we will be capable after a collision to round and drove off in the opposite direction. We should now work on the i2c communication functions that must be defined for the Invensence platform.

We will soon need a quick data return for altitude and direction servo-control. We purposely left an uart output on our PCB. So i used it in order to implement a small shell in order to have first the mpu data returns.

We also finished the other evening the assembly of PCBs. They have been tested today and connections are all good 🙂

LEDzep - PCBs













Finaly I also Worked on the architecture of the futur android App. I made a first mock-up in order to think about what it might look like and to help to encode faster once we will have tested all the android features.

here is the link.

If you want to see what happens directly on your smartphone, you can download the app “Fluid Player” and flash the following code:

LEDzep - flash code



LEDzep – Architecture


I’m thinking about the architecture of our program. It must first define how the user will program the different choreographies through the android app. Here is a first glimpse into what this application could look like.
We would find three tabs:
1) The first one allows the user to choose an mp3. An algorithm will then recognize the tempo.
2) The second one allows the user to choose the order in which the various movements proposed will be executed.
3) The third one allows to choose light transition movement.

When the user have set everything, he clicks on the load button and the app will send successively to all the balloon connected the different triplets composed of the time before the next beat, the movement to perform and the light transition that matches it.
LEDzep - App architecture
At the reception, the NRF will handle the BLE layer and transmit through his uart connection the different triplets to the STM that will store it in his FIFO. Once the connection is completed. All balloons wait to capture a clap with their integrated microphone. Soon as they receive it, they initialize their timer and read the FIFO. After the clap, the app start playing music and all balloons are synchronize.


LEDzep – awaiting PCB

These days we tried to finalize everything that did not depend on PCB. As you can see in the video below, we have a structure for the chassis. Motors, servos and LEDs are placed. The next major step for our project, once we will receive and sold the PCB, will be the position control. It will probably be a very time-consuming process because of the inertia of the object.

Here is a short video showing our progress and giving an idea of what our project could look like.

I am currently working on a script that advertise in ble the value of the ground pressure. It is in order to measure a more accurate value on the embeded barometers and to reduce drift phenomena.

Thank you for watching this video, We will show you soon the moving balloons.


LEDzep – MPU & Production costs


Lately I worked on two aspect of the project. First I tried to recover datas from an IMU device throught and I2c connection in order to filter then accelerations, angular accelerationand and compass angles of our zeppelin. Indeed, We want to use the acceleration datas in order to detect collision. Angular acceleration will help us projecting the compass angles. And we will be able then to accès to the absolute angle of our balloon. Thus said, I have not able to properly configure the right MPU registers. And I realized that I had forgotten a key element present in my model that I must also configure: our mpu-9150 is already aquiped with a Digital Motion processor hardware accelerator engine. It’s a good point, this means that we will not have to filtre 🙂
We decided today to resume a tutorial proposed on the InvenSense forum. It seems to configure well the DMP processor.

Secondly we also worked on Scénarios and on budget. We tried to find as accurately as possible the unit cost of our balloons. We based it on a 10,000 units order. We evaluate the cost of each componnents, of the plastic for the structure and of the delivery. The total amount is 34,93 euros and it is not including the cost of helium (if we rely on Air Liquid fares, we will need 3,6 euros per balloons of 0.17 m3).LEDZEP - coût de revient

We decided then to possibly offer two commercial proposals: First we will sell the balloon by 10 for little firms that want to acquire for cheaper something to make their own show. Secondly we wan’t to sell a real kinetic art show for bigger firms that want it for a bigger and punctual event.


LEDzep – LED ribbon & battery level check


Today the PCB was finished. We sent it to the production line and we look forward to receive it. I worked Today on two functionnality of our system. First, I completed the code that now allows us to control the ribbon color LEDs. We use a SPI output in order to use the cascading port transmission control. We send by regular intervals, into a single line all RGB codes for the LEDs and a “reset” signal activate ribbon with the colors set. I worked then on ADC input, in order to recover the voltage delivered by the battery, to monitor it continuously and to alert if there is any discharge. Thus, as soon as it crossed a certain threshold we can land the Zeplin and prevent any underload problem with our Lipo battery. We are moving in order to be ready when the PCB will arrive. We want to have the most pieces of codes allowing us to control the devices.

Good evening,


LEDzep – finishing PCB, working on actuators


These days we worked a lot on our PCB. We have fixed a lot of connections that were missing in the latest version. We also determine the other components we needed to complete the architecture. We added two voltage regulators in order to provide the Vcc and the actuator power. We went to the communication and antenna department of Telecom in order to determine our needs, but they afferm that, seeing our short timing, it would have been inappropriate to create our own antenna, we would have spent to many time with waves simulators and it would have been to risky. So we prefered to take an antenna already done, it is saffer. We finished a first Routed version. We will send it to the production line as soon as possible.

In parallel, knowing all the connections, I made the routing table in order to start working on actuators commands with the right PINs.
Today, I made functions that command the two motors through H-bridges with PWM input interface. We can now set their speed, their rotation mode and put them in low power energy. I Worked also on servo comand, we can now enslave it with with a degree accuracy. I just notified that they can consume a lot: 200mA maximum. But it appears only when we apply an important negative moment. No problem therefore for our ballon.

Next days we will implement the other devices and work on the BLE structure.

Good evening,


LEDzep – PCB


After a tiring Athens week in Madrid, I worked today with designView in order to create a first version of our PCB. We choosed all our components so we can now work on connections. We tried to understand all the PIN specifications and how we will use all the devices.
Here is an overview of our work:
Some points are still not finished on this PCB:
– We must meet an expert in order to determine precisely how to make our antenna. In fact, we need a large scope for our balloons, so it will be better to make our own antenna on the PCB rather than taking an already made.
– We will, certainly tomorow, add voltage regulators in order to provide a safe voltage to the STM32.

Than, next step: Expedition PCB!


LEDzep – descovering the ble


I worked on the ble card. With the help of Benjamin, I used a special Makefile that makes easier to flash the dongle and the card. I tried it on a demo which remote control le card leds. This first test seems to use a radio and note a ble protocol to communicate. But the frequency used should be the same. So we tested the characteristics of this communication.

The signal seems to be very good the 5/6 first meters. But then he repetedly go down each 3/4 meters. the card should understand that we move away and increases the power. The signal is lost, or at least unusable when we reach 30 meters. The orientation of the card does not seem to have any impact on communication. Barriers either.

Now we need to implement our algorithm that will command our zeppelins, but we already know how to flash simply the transmitter and receiver.

LEDzep – Distance measurement model based on RSSI


We did our first team presentation on monday showing our PSSC. We spent our entire sunday preparing it and we devided then our tasks. I’m in charge of positioning system. I presented to you a solution with IR technology. It seems to be now a little bit to difficult and unreliable (video processing especialy).

It seems to be better to use the received ble signal to deduce distances. In fact I’ve read at least four articles showing how to use Received Signal Strength Indication (RSSI) of BLE in order to deduce distances. I’ve found also a system that seems to work (but not very precise). It’s made by Apple but it can be use on Android devices. It’s called Ibeacon and Apple said that they are a real good solution for indoor localisation. But many users on youtube shows that the system is not so many precise if the user keeps its phone on his pocket. But could it be a solution for our Ballon?

We can imagine to use something like Ibeacon (Drops could be helpfull dear Drops&Roses 😉 ) in our test rooms. We will then analyse RSSI signals and find our relative position. The formula that we should use here is: “RSSI[dbm] = −(10.n log10(dist) − A)”.  Where A is a particular constant calculated when we receiver is 1 meter away. If we choose this solution, we could also use smartphones as transmitters. And this seems to be very interesting. For example, we would be able to ask ballons to follow the App user…