Monday, January 25, 2016

MultiNav FeatherWing for Adafruit Feather

This post will serve as documentation for the MultiNav FeatherWing for Adafruit Feather.

GPS + 9DOF for your Adafruit Feather!

Introduction

The MultiNav FeatherWing is an add-on board for Adafruit Feather. It incorporates a U-Blox NEO-6M GPS module as well as an InvenSense MPU-9250 9 Degrees of Freedom (9DOF) sensor.

The board includes the following additional features:
  • Micro USB connector to connect to the U-Blox GPS. It is accessible using the free U-blox u-center application for configuration and monitoring.
  • u.FL connector for the GPS antenna (supports active antennas, 3.3V or 5V)
  • EEPROM for storing U-Blox configuration between power cycles
  • Power and GPS Pulse-per-second (PPS) LEDs
  • Interrupts broken out for GPS PPS and MPU-9250 interrupt pin

Compatibility

The MultiNav FeatherWing is compatible with Feather M0, 32U4, and HUZZAH. However, the MPU-9250 interrupt pin and GPS PPS interrupt are only accessible with Feather M0 as hardware interrupts.

This FeatherWing may be compatible with other official FeatherWing boards that only use the I2C bus. The MPU-9250 uses I2C with the fixed address 0x68. For FeatherWings that also use GPIO, check the pin usage on the schematic of both FeatherWings to determine compatibility.

For example, the OLED FeatherWing is compatible for simultaneous use with the MultiNav FeatherWing as long as the interrupt solder jumpers are left disconnected.

Shared Files

OSHPark Shared Project - Order PCBs!

Eagle Files: Shared on Github
MultiNav FeatherWing Schematic

MultiNav FeatherWing Board Layout

Assembly

Assembling the MultiNav FeatherWing will require good SMT soldering skills, including having to solder a fine-pitched QFN and castellations.

All part values are shown on the schematic. Most of the passives are 0603. The only exception is L1, which is an 0402 inductor. A handful of parts have specific requirements:
  • GPS Module: U-Blox NEO-6M (Should also be compatible with NEO-7M, but I have not tested this yet)
  • 9DOF: InvenSense MPU-9250 
  • EEPROM: MicroChip 24AA32ASN 8-SOIC or ST M24C32 8-SOIC
  • L1 Inductor: Murata LQG15HS27NJ02D (any substitute must have similar specs)
  • Micro USB: FCI 10103594-0001LF

Datasheets


Usage

The U-Blox GPS on the MultiNav FeatherWing is accessible via UART serial. Before use, you must configure solder jumper JP3 on the underside of the board based on your chosen Feather.

  • For 32U4, bridge Option A and use Software Serial. Pin D10 is Tx, and Pin D11 is Rx.
  • For HUZZAH, bridge Option A and use SoftwareSerial. Pin D10 is Tx, and Pin D12 is Rx.
    • Note: SoftwareSerial for ESP8266 is still largely under development. Here's a good library I used, but it is Receive only.
  • For M0, bridge Option B and use SERCOM1 as shown in the provided example program.

The MPU-9250 is accessible via I2C. It uses the standard SDA and SCL pins, so it is usable on any Feather board. Pull-up resistors for I2C are included in the design of this board.

Two interrupt signals are available when using this board with Feather M0:
  • The interrupt pin from the MPU-9250 goes to pin D5 on M0. If you want to use this interrupt, you must bridge the JP1 solder jumper on the underside of the board. Unfortunately, this pin is not usable with attachInterrupt on the 32U4 and HUZZAH. For HUZZAH, leave JP1 disconnected to prevent boot loading issues.
  • The GPS PPS goes to pin D6 on M0. If you want to use this interrupt, you must bridge the JP2 solder jumper on the underside of the board. Unfortunately, this pin is not usable with attachInterrupt on the 32U4 and HUZZAH. For HUZZAH, leave JP2 disconnected to prevent boot loading issues.

Miscellaneous
  • The PPS LED will blink at the beginning of each UTC second. This signal is generated by the U-Blox GPS module. It's a good way to know when you have GPS signal, as the LED will not blink when signal is lost, or the GPS module is still acquiring satellites. Because this signal is also available as an interrupt on M0, it is a very powerful feature for synchronized and time-critical tasks.
  • An EEPROM is provided on the board for storing U-Blox configuration between power cycles. No backup battery is available on the MultiNav FeatherWing, as the Feather boards have built-in Li-Po battery connections and charging.
  • The USB connector on the MultiNav FeatherWing will also provide power to the Feather (VBUS).
  • The orientations of the various axes on the MPU-9250 are printed in the silk screen of the board.
  • The I2C address of the MPU-9250 is fixed as 0x68.


The MultiNav FeatherWing is released as Open Source Hardware (OSHW) under Creative Commons 2.5 Share-Alike / Attribution license. The same license as Adafruit Feather. Build it, modify it, use it and enjoy!

Thanks for reading!

- Dan W.

8 comments:

  1. hi Dan
    you made a great job!
    could you imagine extending the board with a LoRa chip (e.g. RFM95W), protruding at the right side?
    with tha we would have a great TTN node (thethingsnetwork.org)

    ReplyDelete
    Replies
    1. Hi,

      Picturing what this would look like, I'd have to extend the board out one of the long sides. That module uses SPI, so it would have to be targeted at one specific Feather due to GPIO limitations. Probably ESP8266 to keep Wi-Fi. The board would look awkward when mounted, but the space under the overhang could be used for a narrow Li-Po battery or antenna. 3D print a case and it would make for an interesting node...

      Dan

      Delete
  2. hi Dan
    here my "wishlist" for a heavy sensor system:
    1. Feather M0 Basic Proto - ATSAMD21 Cortex M0 (some sensors added on the proto part)
    base system with LMIC 1.5
    2. Adalogger FeatherWing - RTC + SD Add-on For All Feather Boards
    logs all data so they could be used when later retrieved
    3. FeatherWing OLED - 128x32 OLED Add-on For All Feather Boards
    shows status and actual sensor data / position
    stacked on Adalogger
    4. --> your RFM/GPS Board <-- ;)
    stacked on M0 Basic
    5. FeatherWing Doubler - Prototyping Add-on For All Feather Boards
    holds everything together
    for the moment I've no idea if that could be combined together or if
    there will be problems with GPIO, buses and interrupts.

    ReplyDelete
    Replies
    1. Hi, that should be doable. I'd have to test having the SD card and RFM module on the SPI bus at the same time. Things might be a bit hairy when receiving large amount of data and trying to get it onto the SD card. Also some decisions would have to be made about which pins to use for interrupts and DIO from the RFM module. It's possible to leave one or two pins configurable by the user with a solder jumper, but all of the DIO needed for LMIC plus a couple interrupts would have to be wired to a set pinout.

      That's partly why I am releasing the breakout board now, I hope to get feedback from people that use it on what they want and which libraries they use. Thanks for your input.

      Dan

      Delete
    2. This is what I made a while ago for a camera hotshoe GPS-IMU using FFC connectors and modules. http://1.bp.blogspot.com/-j4c9i2D4WF0/Vjdh-FkQHiI/AAAAAAAAOgA/-HcMg4-h9PU/s1600/20151022_004759.jpg

      Delete
  3. hi Dan
    with LoRa there a very small amounts of data being transmittet. a couple of bytes.
    so the speed is no criteria, but as you mentioned all the interactions of the different players.
    look at my program
    https://github.com/urs8000/LoRa-Gateway-Locator/tree/master/Version-02

    urs

    ReplyDelete
  4. I am building a version from the board on OSHPark. Do you mind publishing the .sch file or the BOM.

    ReplyDelete
    Replies
    1. Hi, a link to the Eagle files on Github has been added:
      https://github.com/SyncChannel/MultiNav_FeatherWing

      Be sure to tweet me @sync_channel with a picture of your cool board when you finish it!

      Dan

      Delete