Electrical – Detect movement in a very power efficient way

accelerometeresp8266low-powermovementwifi

I am working on a device i can strap on to an expensive electronics instrument, and when someone moves the instrument, the device detects it and sends its position from a GPS to a server, via WiFi, where people can do a look-up on the instruments last known location.

The device will need to run on a battery, so the whole setup needs to be as power efficient as possible.

The WiFi chip i am using is the ESP8266. Not a big surprise, i know, but it has a decent range, doesn't consume much power in sleep mode (around 20uA if memory serves me right) and is cheap as wood.

Next challenge. I need a way to detect movement in a "as low power as possible" way, so i went digging, and found a couple of ways. There is a kind of switches that can detect movement, either by rolling a ball to make contact or by moving a spring to make contact (Spring switch), but i want it to be omni directional, so no "rolling ball switch", and i want it to be sensitive enough to detect when the instrument is moved, and i haven't been able to find a "spring switch" with enough sensitivity.

There is also the possibility to use an accelerometer to detect movement, but that consumes a lot of power. At least, that's what i believe.

But! I found an accelerometer which i think gives a power saving way to wake the ESP8266 when movement is detected.
The accelerometer is a MMA7660FC, made by NXP (Datasheet). In the datasheet on page 13, under "Auto-Wake/Sleep", i interpret what they write as the accelerometer can sleep until a directional change is detected and provide an interrupt signal, which i can use to wake up the ESP8266!

So, here comes the two questions i have:

  1. Is what i am saying about the MMA7660FC true? Its not the ideal solution because of the current it will draw, even if it is sleeping, but it is better having to change the battery a little more than having a failed project.
  2. Is there a way to detect movement that i have missed and is useful for my application?

Thanks in advance 🙂

Best Answer

  1. Your assumption about the MMA7660FC is correct. It can generate an interrupt for your controller in its "Active Mode". In this configuration the device draws 47 μA.
  2. A better solution would be using this 3-axis accelerometer from ST LIS3DH. It does exactly the same thing, but using 2 μA instead.

I would say this is the most low-power solution for what you are describing. Hope it helps you.