A Motion Coprocessor Without The Proprietary Layer

When you have a complex task that would sap the time and energy of your microprocessor, it makes sense to offload it to another piece of hardware. We are all used to this in the form of the graphics chipsets our computers use — specialised processors whose computing power in that specific task easily outshines that of our main CPU. This offloading of tasks is just as relevant at the microcontroller level too. One example is the EM Microelectronics EM7180 motion co-processor. It takes input from a 3-axis gyroscope/accelerometer and magnetometer, acting for all intents and purposes as a fit-and-forget component. Given an EM7810, your host can determine its heading and speed at a simple command, with no need for any hard work.

[Kris Winer] used the EM7810, but frustrated at its shortcomings decided to create a more versatile alternative. The result is a small PCB holding a Maxim MAX32660 ARM Cortex M4F microcontroller and the relevant sensors, with the MAX32660’s increased power and integrated flash easily eclipsing the EM7810.

As a design exercise it’s an interesting read even if you have no need for one. His write-up goes into detail on the state of the motion coprocessor art, and then looks carefully at pushing the limits of what is possible using an inexpensive PCB fabrication house such as OSH Park — you can get this chip as a Wafer-Level Package (WLP) which is definitely off-limits. Even with the TQFN-24 he picked though, the result is a tiny board and we’re happy to see it as an entry in the Return of the Square Inch Project!

It is perhaps surprising how few projects like this one make it into our sphere, as a community we tend to focus upon making one processor do all the hard work. But with the ready availability of inexpensive and powerful devices, perhaps this is an approach that we should reconsider.

17 thoughts on “A Motion Coprocessor Without The Proprietary Layer

    1. It is too early to ask about a target price?
      I was playing with a BNO055 board from Ada Fruit with the intent of using an esp8266 to make a “wireless IMU”. I was always a bit put off by the cost of the sensor as I had some ideas that would have required multiple units. At $35 a pop my ideas got pretty expensive quickly.
      This projects sounds like it might be a great alternative and restart some of the ideas I was considering.

      1. The price should be the same $35.95 as the existing BNO055 breakout board or EM7180-based breakout board with ST sensors both available on Tindie. If you want the lowest cost I would recommend designing and assembling your own pcbs. There are open-source hardware designs avalable on Adafruit and Tindie for these boards, and you can order all of my pcbs directly from OSH Park and assemble them yourself if you want to save a few dollars.
        It takes a lot of time, money, and effort to make these products and the breakout board price is set to compensate for these. Yes, it is more than the component costs; but the components don’t design and assemble and test themselves!

    1. The BNO055 uses an embedded Cortex M0 processor, runs the fusion at a fixed 100 Hz, uses 12 mA in normal mode, and is capable of 7 degree rms heading accuracy. This solution uses a Cortex M4F processor (MAX32660), runs the fusion at the rate of the gyro up to 6600 Hz, uses 1 mA in normal mode, is capable of 1 degree rms heading accuracy.

      Other than that, they are pretty much the same…

        1. Thanks Luke! I hope things are going well with you and yours. Yes, if Maxim doesn’t shut down the line before we can make use of it I have high hopes for the MAX32660, especially the TQFN-16 package at 1.6 mm x 1.6 mm. This will enable a whole range of tiny, inexpensive sensor co-processors.

          Unfortunately, Maxim designed the I2S peripheral to use 16-bit data targeting audio output to CODECs I assume. I was hoping we could use the MAX32660 as an audio co-processor reading sound via digital I2S microphones like the ICS43434, processing with FFT, and delivering audio power spectra to the host. Still might be able to do this somehow (with PDM?) but not with standard 24-bit I2S.

          Still, plenty of interesting applications beyond accurate absolute orientation estimation.

  1. Looking forward to being able to buy these – also a good example of how a tindie ‘notify me when purcaseable’ feature would be useful. Is it possible for you to run a mailing list? I’d sign up. Shut up and take my money.

    1. You can order the pcbs from OSH Park and assemble your own now, but the firmware is the value-added product here and this will take us some time. I hope to have some version of this board for sale at Tindie by the end of the year. In the meantime, you can buy a similar board using the EM7180 co-processor on Tindie: https://www.tindie.com/products/onehorse/ultimate-sensor-fusion-solution-lsm6dsm–lis2md/. There is also an MPU9250 version. These work almost as well as we expect the MAX32660 version to do but without the expected flexibility and enhanced speed. Still, these are a whole lot better (< 2 degree heading accuracy) than the BNO055 IMHO.

      And they are available now.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.