Plume – PCB emitter

There you are !


The H bridge looks like to work normally.
However I can’t make the USB port work. Since my code works with an other board, I think there is a problem with the hardware.

PLUME – Software of the Receiver


This week, I’m currently working on the software of the receiver. I finished all the configuration and initialization of our board. Moreover, I finished to work on the communication between our STM and  the nRF and also work on a serial bus to help to debug.

Now, I will work on the communication between the STM and the Audio Codec and study how to configure and use this chip. Hopefully, I’m working with Virgile on that part.

Moreover we received our emitter, with Olivier and Alexis we are welding the component. I hope, we will finish this afternoon and be able to use the emitter.

To be continued…


PLUME – Getting started on the software part

Hi everyone !

As I said last time, we have finished designing our PCBs, so from now on we will spend all our time on the software !

This last week-end, we all worked on the presentation that should have occurred on Monday,  so we haven’t had much time to start fully working on the software, but now that it is finished, we need to coordinate ourselves to work efficiently on each part of the project.

Yesterday, with Benjamin and Olivier, we argued on the structure of the computing part of the system. We finally decided that we will use a Node.js block to communicate using Bluetooth low energy, and a C++ block for the computation of the position, the two blocks will exchange data using sockets (probably with the 0mq library).

I also have started thinking about the way the receiver software should be structured, to be correctly synchronized with the emitter and to keep information on the phase of the signal and find every information we need to calculate a good position. Unfortunately, it brought me doubts about the method we chose to eliminate the symmetry problems. I will need to verify that…

See you next time !

Plume – Pcb and stuffsss.

Good evening !

We got our first PCB today, it’s awesome !!

This weekend, team and I worked on our Monday’s presentation.

I’m still working on BLE, and my nrf51822 is finally bending to my will and my efforts weren’t in vain. It won’t be long before this part of the software will be done. Over the weekend I’ve looked through a library I found for implementing our central. Weirdly its mainly written in Javascript, but it seems quite complete.

The name is Noble and it is used with Nodejs. (There is an equivalent for a peripheral see Bleno) I’ve looked through javascript quite a bit and it is not so hard to use it, and I’ll use coffeescript for more readability.

Today, we decided to use sockets to exchange data as we desire some degree of modularity in our soft.

See you !


Plume – Assembly of the emitter


Good news, we have received the pcb of the emitter and the software of the emitter is almost finished.
I hope to make the emitter work before the end of the week.

Besides that, I have started to develop one application of our system : the augmented reality.
Using blender, I can add the projection of a 3D model object over an other real object.

Plume – Design


Today, I was working on the packaging of the receptor and the emitter.  I think that design and the aspect of our project is very important, so I made some rendering.

Tell me what you think. 🙂

Emetteur_1 Recepteur_3

Plume – Soft of the receiver


As already explains MarcO we finished to work on the PCB of the receiver. Now, we have to continue on the soft of the receiver. So, I’m currently working on the board.h of the card and all the configuration that need ChibiOS to work with our board. This is not a very funny thing, but, I have to do it.

Moreover, we received an evaluation board for the Audio Codec. It will help us to communicate and create a program to configure the mini-DSP of the chip.

So, there are our next step on the receiver :

  • Configure the STM32
  • Configure the Audio Codec and the mini-DSP
  • Configure the nRF and communicate with the STM
  • Receive and analyze the tension from the receiver coil.

To be continued…

Plume – The receiver PCB is about to be printed !

Finally !

After placing, routing, finding errors, fixing them, finding other ones, fixing them as well, and other last minute changes…, we finally finished designing our PCB. With Guénolé, we spent the whole week working on it so we are happy to have finished it ! You can admire the layout in the pictures below 😉

PCB layout, top traces are in blue, bottom ones in red

PCB layout, top traces are in blue, bottom ones in red

Top layer components

Top layer components

Bottom layer components

Bottom layer components

Aside from that, I also worked on the software architecture to update it and make it work with the new hardware architecture we chose.

After talking with the teachers, we have decided to eliminate the various symmetry problems we had by studying the phase of the signals we sense. By doing this, we can measure the three magnetic fields exactly instead of having 8 possibilities on each measure (±Bx,±By,±Bz). And there is only one symmetry left that we won’t be able to suppress : the three magnetic fields have a central symmetry so they are exactly the same in (x, y, z) and in (-x, -y, -z). Therefore, with this new method, I need to change the software architecture to have a good phase detection, and I think I found a good way of doing it !

And by the way, if you have nothing to do tonight at 9:30, you can come to my improvisation show : !

See you next time !

PLUME – These last few days: Curve Fitting and Kalman Filter

I have done quite a lot of things since the last time i posted something here. I did mainly programming.

I implemented C++ classes for the computational part of the emitter and the receiver. It was a bit straight-forward. The receiver has a method to be set the voltages and a method to get the degrees of freedom. The emitter has a method to retrieve its calibration matrix.

Then we talked among us  and discovered that the symmetry problem would be hard to tackle: Because we have the absolute value of the voltages in the receiver coils, the receiver can be in each one of the each space octants (we only know the absolute values of the coordinates x,y,z).

So I tried to solve it by knowing the initial position and estimating the position in the future. When it is estimated that the receiver will change of octant, the 3-bit sign mask that will be used to compute the next signed position is changed accordingly to estimation. To estimate the position, I fit each of the coordinates with a parabola. the parabola is fitted using the 128 last-known position. Sadly it didn’t work well, there was to much noise in the position and it failed sometimes but enough often to be bad.

Then the group decided to add an IMU to the system to be used to solve the symmetry problem. And around the same time, we discovered that the phase of the measured voltages could be used to solve a part of the symmetry problem. It reduces the problem to a central symmetry. We can get the phases because to measure the voltages we already do a fft on the receiver.

Then I decided to read about kalman filters to see if we could use one to combine the data from the coils and the IMU to get a better precision. I did experiments on an axis combing position data (given by the coils) and accelerometer data assuming that we don’t have the voltage phase. Because the measured position is the absolute value of the real position, I had to use the non linear form of the Kalman filter (the discrete-time extended Kalman filter). Luckily the abs function is a simple non-linear function, so the jacobian matrix was simple (just a sign(x) instead of a 1 ). It works way better than the position estimation method with a parabola. The filter manages to estimate the position given the absolute value of the position and the acceleration, which solves the symmetry problem.

An hour ago, we found out that waiting for the IMU chip will add us a week delay. So we won’t have one.

I hope the phase method will work fine.

Plume – Making some PCB

Hi everyone,

This week, I was working with MarcO on the Schematic and the PCB of the receiver. It is not a easy work because there are so much constraints that we have to respect (signal integrity, symmetry,…) because we have a system which have analogical and digital electronics. However, I like to make PCB because you have to respect all these aspects and think to some physics. Moreover, we want a tiny device (for the moment 40×60 mm) to be able to use it in various situation.

We hope that with our architecture we will be able to do what we want.

To be continued…