This beginning was quite unproductive… We did a lot of acquisitions on Monday morning as we were with Laurent. We succeeded in finding good settings for the ADS1298 but with
mixed results. There were a lot of reasons: first there weren’t any EMG information before Monday but now the EMG is hidden behind ECG and artefacts. I modified our filtering part to eliminate these artefacts.
As I wasn’t sure about what I did and about what I was tryiing to eliminate, I asked one of signal processing teachers of Telecom. The artefacts are due to electric problems, with Alexandre and Xavier, we knew it but we are note sure about the reason : we think this is due to a lake of electric supply.
We will keep investigating on it while trying to upgrade our acquisition and qualification.
Stay tuned !
This week, I worked on integrating the acquisition part, I made the acquisition routine with the sd card, the ads and the IMU. My work isn’t finished yet but I will do as soon as the acquisition will be reliable. Indeed this is,by far, the most important point. On Thursday, Alexandre made a new configuration of the ADS and it permited it us to acquire some signals that make us think about ECG and EMG. On Friday, we did a lot of acquisition and we processed its. As far as I’m concern, I made some script to help analyzing the different acquisition and we saw that there isn’t any breathing signals in what we acquired even if there are a lot of heart information !
So by the end of the next week, I will keep working on acquisition with Alexandre, I will end with acquisition routine and I will clean our code !
Stay tuned for the last week !
PS: on the left, you can see the ECG and on the right the breathing EMG (for the moment nothing…)
Such important improvements this week, I resolved my writing problem ! In fact there were not any problems at all, I was writing but It just took so much time… So I decided to reduce the number of writing and increase the length of what was writing. It speeded up the task from 10 minutes down to 30 seconds.
Thus, I ended with implementing the filters on our PCB, it worked fine ! I tested it and compared with what we obtained on the computer: exactly the same. I didn’t try to determine filters speed, but it was enough faster to appear immediate. But this tests need to be perform so I will try to do it during the next ultimate week.
After that, I decided to integrate the whole code and with Xavier, we realized that both LoRa and SD card couldn’t work at the same time, we supposed that it was because of some DMA’s channel… So that Xavier and Samuel wrote a new SPI driver without DMA and now LoRa and SD card can both worked together again !
I also integrated, with Xavier, his job on qualification, we tested it and we had the same results as on the computer too.
Eventually, I worked with Xavier to weld our electrode connectors and we helped Alexandre to merge his work on the ADC with what we have done recently. We performed some tests: we are able to read the ADC output but we can’t read as fast as the ADC write and also, we don’t manage well the data. We always read zeros.. So we have one week to deal with that and to fix some details: it seems that the project will be done soon!
Stay tuned during the last week !
Benjamin for BreathUp 😉
God kveld !
During the beginning of the week I was supposed to work on the filtering integration with sd card and with the qualifying part on our board.
But on monday, I realized that I wasn’t able to write correctly on the card. Having some issues with buffers, eventually, it was a problem of variable allocation that was on the stack and not on the heap. I’m still a little bit confused about the reason which isn’t really clear ! But it’s working, so I cleaned a lot my sd code and made the interface with the filtering part. I tested it but I faced new problems, indeed, I succeeded in writing the first 5800 filtering results but after that it seemed it bugged, yet, I didn’t catch any error and when I stopped the running session, the processors was in the idle thread like if there wasn’t any problems…
So I’m still working on it !
benjamin for BreathUp 😉
This week, I keep working on the SD card and the file system (FatFS) and it ran quite well on the stm32E407 so on Friday, I decided to switch on our own board.
Unfortunately after integrated my code, I had the same problem with the SD card as on the STM32P407 board, that is to say, I wasn’t able to communicate with the card… Eventually, after comparing our board and E407 board, I find that our schematic wasn’t the same concerning the SD card. That is to say, on the E407, there are some hardware pull up on the SDIO ports that we didn’t have on our board, so I had to activate the interne pull up and after that it all worked fine !
So now, I’m integrating all our stuff on the filtering chain: that is to say the filtering and the qualifying parts ! I made some progress but I still didn’t test it yet. So this is what I must do until the end of the half-week.
Stay tuned !
Ni hao !
As expected, I ended with the C implementation of our algorithms. I suceeded in reducing our filters orders from five hundred to forty and also to convert its into infinite impulse response filters. It works fine !
Now I must implement the classification part. But, first, we want to know the battery life time with our algorithms so I’m first working on the SD driver and the folder management of ChibiOS. Indeed, as we don’t have our PCB and the ADC yet, we have to put our database on a SD card in order to test the filters on it!
I’m not sure to have enough time to work on it before the return from holidays. So it’s certainly my last post before a long time, if someone reads me, I swear you a Merry Christmas and a Happy New Year !
Over the week-end, I was supposed to end with the algorithm part but I think it was a little bit aspiring. However, I ended with the C implementation of our algorithms. I succeed in compiling my code and test run well but the result isn’t the one expected… Indeed, the filter didn’t do what it ‘s designed for, the output isn’t converging… There are two possible reasons : the first one, the coefficients of my filter are not the same as the one on Matlab and the second one my implementation isn’t the good one. I’m considering the two solutions and I’m trying to test its ! I also asked a signal processing teacher from Telecom but I’m waiting for his answers.
I will keep going on this week, I hope I will end it before the half-week !
Stay tuned !
Anyoung haseyo !
This week, I’m back in the game ! Indeed, I started to work anew on our project !
I made two different things: first, Alexis asked us to look at distributor code for our PCB and to update them for resistors and capacitors. Xavier did it but I was in charged of verifying his work ! So did I this morning !
Then my only current task is to port our matlab algorithms into C code ! As I already chose the CMSIS/DSP library for our embedded system but I had to do some reducing complexity. Our algorithms were made with some finite impulse response filters with five hundred orders, so I implemented its with infinite impulse response filters. I decided to use butterworth filters for their stability in the bandpass, so I made a new algorithm on Matlab to see if the new output was right for what we need ! Of course, I made some modifications but it seems to be quite satisfactory right now ! Thus, our filters have orders included between twenty and one hundred twenty five (only for one filter!) and thanks to Matlab, I reached to calculate the filter coefficients.
As a consequence, by the end of the week, I now have to write the C code corresponding to our filters and to test them on our data base !
Stay tuned !
Tonight, it will only be: Bonjour !
This week, I continued working on the PCB, I quite finished it yet, I did a total new placing and I’m waiting for a new review of Alexis. Indeed, there were some problem with noise in my last work. Indeed the Lora part was too close from the Analog to Digital Converter part so I decided to take its away each other.
Thus concerning algorithms, on Friday, we had quite an important meeting with E-respi about processing signal part because they were supposed to give us all algorithm but they didn’t and I was in charge to do new ones. However, as this is not my job and it was not supposed to be like that, on Friday, we came to an agreement that they have to provide us what we need ! And today, they sent it to us, unfortunately, I spent two hours at least, trying to implement it and make it work. But I was forced to send them back an email to ask them to work on it.
Eventually, I’m also supposed to implement our matlab algorithms in C. I decided to use the CMSIS/DSP library and more precisely some IIR filters (biquad direct form 2), so I began to calculate the different coefficients of our filters. I chose some Butterworth filters because its are able to have a constant gain in the bandpass and that’s pretty necessary for our signals.
For the next week, I will continue on the same topic !
Benjamin for BreathUp
Sin chow !
A good beginning of the week ! So, on Monday, we had an oral presentation of our working progress of the last two months. It was quite important because it allows us to take stuck of the situation.
After that with Alexandre, we ended with acquiring a lot of curves to test my new algorithm in many different situations with different parameters. The filtering was strong enough to present our results to the firm and at this moment, their feedbacks were positive.
On the other hand, Alexis gave me a PCB review with some things to change: the battery connector wasn’t well placed and the analog supply power of our Analog-to-Digital Converter (ADC) was too close of the numeric supply power… I had to replace a lot of things to take away the numeric supply power. I ended it earlier this afternoon and I’m waiting a new review from Alexis.
Thus, this week, I will focus on our PCB and do the routing as soon as Alexis allows me. At the same time, I have an optimisation job to achieve on algorithms and to implement it in C.
Stay tuned, I will give you some news from now until Sunday.
Benjamin for BreathUp!