Feasibility of Arduino based fitness tracker?

Hi,

I watched a very interesting TV documentary on one local channels here in Australia about the large number of fitness tracker products emerging (Here is the link http://www.sbs.com.au/ondemand/video/317265475815/Monitor-Me-1 but I don't suppose its available for viewing outside of Australia)

Anyway, it got me thinking about whether it would be possible use an Arduino for this.

Not a regular board, it would need to be something that consumed very little power, probably running at low clock rates when collecting data

As far as I can see the basic devices just monitor movement and log the time and duration.

Further up the scale are devices that monitor number of paces walked, or run, and possibly the speed of walking

Then it goes on to more complex, like heart rate, blood oxygen, breathing rate etc etc

However I was just thinking about the most basic function, i.e movement, or the next level up i.e how much movement and if walking, the number of paces

However the problem would appear to be

  1. Power. I guess low clock speeds and sleeping would probably allow several weeks on a single butt cell.
  2. Time tracking. External RTC would be needed unless the Arduino was on all the time, or perhaps micro sleeping for a known period of time
  3. Movement detection that didn't take much power. Using one of the fancy new 9 axis gyro / accelerometer chips
    Their spec claims

Accel low power mode operating current: 10µA at 1Hz, 20µA at 5Hz, 70µA at 20Hz, 140µA at 40Hz

I have a MPU-9150 module on order, so I guess it would be interesting to see what they can with at these very low power features.

Perhaps as a start I should try running a bare ATMega328 on the 32Khz clock output from an RTC module and hook it up to teh MPU9150 and see where that takes me

But, does anyone else have any ideas or suggestions..

BTW. Yes. I know I can buy one of these devices for $50, but (a) I'm interested in an open source solution
(b) a lot of these devices that you can buy require you to register and upload data to their website, rather than to be able to load and view it locally (and this is a deal breaker for me)

rogerClark:
But, does anyone else have any ideas or suggestions..

BTW. Yes. I know I can buy one of these devices for $50, but (a) I'm interested in an open source solution
(b) a lot of these devices that you can buy require you to register and upload data to their website, rather than to be able to load and view it locally (and this is a deal breaker for me)

I always thought a (deflection) piezoelectric strap in a shoe could power this. If you had a small device that when bends, produces a (albeit small) voltage, you may be able to harvest that energy, measure its intensity (total deflection is greater if you are running) and store the instances from which you could recall your data.

there are still other ways to skin that cat!

Yes.

Interesting concept to power via the movement.

The other way to power this could be kinetic movement I.e as used in some watches, but it would require the unit to contain a weight.

I just realised I have an old broken pedometer in the cupboard, so I will try to extract its sensor, which I suspect is something simple and mechanical, as I'm still waiting for my MPU module to arrive in the post.

Edit.

I took an old pedometer to pieces, but it wont be that useful, as it mainly contained a small pendulum with a magnet at the end and a reed switch, which was sensing the passage of the magnet.

I think using the MPU 9150 will be a much more useful device, as it should show the force (acceleration) for each step taken.

I'll update this thread when my MPU9150's finally arrive in the post

rogerClark:
But, does anyone else have any ideas or suggestions..

I have a post on low power consumption:

Also here about using an asynchronous timer running at 32.768 kHz.

The pendulum and magnet idea doesn't sound too daft, as it could generate an interrupt (perhaps) when the pendulum swings.

However I note that the MPU9150 can can generate an interrupt signal so that is probably the way to go. You could keep power to a minimum until an interrupt occurs.

  1. Power. I guess low clock speeds and sleeping would probably allow several weeks on a single butt cell.

A button cell might be more appropriate. :wink:

A real-time clock chip has minimal power consumption until powered up.

I used one in that mode here: Gammon Forum : Electronics : Microprocessors : Temperature and humidity sensor - battery powered

The device described there, which reads various sensors, keeps track of the time, and logs to an SD card, used 6 µA of current while asleep, and another 36 µA (average) taking into account doing stuff.

However I note that the MPU9150 can can generate an interrupt signal

Thanks Nick, I hadn't noticed that.

The spec seems to imply that it can operate on 50uA when running its accelerometers, so perhaps that's what generates the interrupt.

A real-time clock chip has minimal power consumption until powered up.

I have some RTC modules in my box of spares, so I can give that a try.

Just had the idea this morning that I could store the data e.g. time and movement etc, onto a micro SD card, but I'm not sure if they operate at low clock speeds I'll need to do some testing or use a higher clock rate.
Then I can just pull out the SD card to look at the data and don't need to worry about how to transfer the data to the PC etc either by serial or by bluetooth etc

Anyway, I'll post again when my MPU modules arrive and I have made some progress

Cheers

Roger

Then I can just pull out the SD card to look at the data and don't need to worry about how to transfer the data to the PC etc either by serial or by bluetooth etc

That's what I do.

I'm not sure if you gain a heap by running at low clock speeds. The CPU doesn't use much power anyway in "power down" sleep mode (that is, the clock isn't running - so it doesn't matter what speed it runs at). At low clock speeds, when it is awake it takes longer to do things, so it uses the "power on" power for longer.

I'm not sure if you gain a heap by running at low clock speeds.

I initially thought I could perhaps perform the RTC stuff by just running the Arduino all the time on 32Khz and not use an external RTC.

But I think for testing, that its probably more hassle. So I'll initially run it at full speed (8Mhz on 3.3V as I have a pro mini with an 8mhz oscillator)

But sleep if no interrupt from data has occurred for a given period of time e.g. 5 seconds.