Giter Site home page Giter Site logo

ogrenet's Introduction

Open GNSS Research Equipment :: A low-power, low-cost GNSS data logger for monitoring the cryosphere.

Overview

Originally designed for easily logging multi-GNSS data in remote regions of the Arctic, this instruments incorporates low power, low cost components onto a single circuit board and features a Ublox ZED-F9P GNSS module and Sparkfun Artemis MCU (Ambiq Apollo3 MCU, Cortex-M4).

  • Logs binary (.ubx) GPS, GLONASS, BEIDOU, GALILEO & Satellite Nav Messages to a microSD.
  • Nominal data rate under open sky conditions 2000-3000 bytes, equivalent to 5 GB of data for logging all constellations at 15 second interval for a year.
  • Nominal current consumption with a 12V supply is 45-65mA (.5-.8W) awake, and 0.07mA (.8mW) asleep.
  • Features on-board battery measurement circuit and temperature sensor.
  • Additional pins & peripherals include RX/TX for serial programming, 3-Wire Temperature sensor, secondary I2C bus, secondary UART bus, secondary SPI bus, several GPIO pins and I/O pins for streaming or receiving RTCM messages for RTK operation.
  • Simple 2 layer PCB with SMD components totaling ~$260, including patch antenna. PCB inside enclosure measures 7x6.5x2.5cm.

Project Organization

Software: Contains Arduino Code and Test Scripts

Hardware: Hardware & Manufacturing Files

Getting Started

V1.1.1 of the OGRE has 7 modes of operation:

  • (1) Daily Fixed Mode: Log GNSS data same time every day, starting & ending during USER-defined start/stop hours, OR
  • (2) Continous Mode: Log GNSS data continously (single file!), OR
  • (3) Monthly Mode: Log GNSS data for 24 hours on a USER-specified day (1-28) each month, OR
  • (4) Interval Mode: Each 24-hour log session is spaced by a USER-defined interval (e.g., log every 3 days for 24 hours), OR
  • (5) Log GNSS data for 24 hours on USER specified dates/times read from a .txt file. Defaults to mode 4 after last user-provided date.
  • (6) Log GNSS data for 24 hours; During winter once every 9 days; During summer daily. "Summer" is May-August.
  • (99) Test Mode: Used for development. Log GNSS data for 50 second interval, sleep for 50 second and repeat.

OUTPUTs: With all modes, GNSS data (phase, doppler, SNR, nav message etc.) are logged to a uSD card in .ubx (UBLOX) proprietary format. Under open sky conditions, we found that an epoch of data (1s) is ~2000-3000 bytes. If logging at 15 seconds for a year, this equates to 6GB of data. A debug file is also generated after each log session is closed, reporting the health of the system (temperature, battery voltage, logging errors, etc.).

INPUTs: USERS specify settings in the CONFIG.txt file, which, if uploaded to the SD card, will be read into the software. Otherwise, software will default to hardcoded configuration. USER may also upload a EPOCH.txt file, which allows the user to specify up to 16 log dates (unix epoch format) for logging in Mode 5.

The CONFIG.TXT file is formatted as follows:

LOG_MODE(1: daily hr, 2: cont, 3: mon, 4: 24 roll, 5: date, 6: season, 99: test)=6
LOG_START_HOUR_UTC(only if using mode 1)=17
LOG_END_HOUR_UTC(only if using mode 1)=23
LOG_START_DAY(only if using mode 3, 0-28)=25
LOG_EPOCH_SLEEP(only if using mode 4/5, seconds)=3600
LED_INDICATORS(0-false, 1-true)=1
MEASURE_BATTERY(0-false, 1-true)=1
ENABLE_GPS(0-false, 1-true)=1
ENABLE_GLO(0-false, 1-true)=1
ENABLE_GAL(0-false, 1-true)=1
ENABLE_BDS(0-false, 1-true)=1
ENABLE_QZSS(0-false, 1-true)=0
ENABLE_NAV_SFRBX((0-false, 1-true)=0
STATION_NAME(0000)=0001
MEASURE_RATE=1
BAT_SHUTDOWN_V=10.9
WINTER_INTERVAL(seconds, mode 6)=777601
break;
  • If the USER selects LOG_MODE=1, then LOG_START_HOUR_UTC and LOG_END_HOUR_UTC must be specified.
  • If the USER selects LOG_MODE=3, then LOG_START_DAY must also be specified (day of each month GNSS data is logged).
  • If the USER selects LOG_MODE=5, then unix epoch dates for logging are specified in EPOCH.txt. If no dates are specified or if all dates have elapsed, then log interval defaults to LOG_MODE 4, where LOG_EPOCH_SLEEP must be defined.
  • If the USER selects LOG_MODE=6, note that the months that are considered summer (May - Aug) and winter are hardcoded. Furthermore, the duration between logging during winter is set by WINTER_INTERVAL. Note: log sessions are 24 hours, and files start/end based on when the reciever first wakes up, rather dilineated at 00-UTC.
  • LED_INDICATORS, if false, will disable all LEDs, excluding those present during initialization.
  • MEASURE_BATTERY, if true, battery voltage is measured/monitored, and the instrument will be put to sleep when voltage dips below 10.9V (OR as defined by user in BAT_SHUTDOWN). System will restart when voltage measured above ~11.2V.
  • STATION_NAME is a number between 0001 and 9999, and will be appended to the timestamped file names for each GNSS file.
  • MEASURE_RATE is frequency of epoch solutions logged to SD card: 1 = 1 per second, 15 = 1 per 15 seconds.

OPERATION:
Insert the uSD card (with or without CONFIG & EPOCH files), then connect battery to +/- sides of the screw terminal. The system will attempt to initialize and following LED indicators will flash:

  • 1 Hz Blinks: System acquiring GPS time and attempting to sync real time clock (RTC).
  • 10 rapid Blinks: System Configuration Complete!

The following indicate failure of initialization:

  • 2 Blink Pattern: uSD initialization failed (is the SD card seated properly?) - system awaiting automatic reset to try again (60 seconds).
  • 3 Blink Pattern: Ublox/antenna initialization failed (is the antenna properly connected?) - system awaiting automatic reset to try again (60 seconds).
  • 5 Blink Pattern: RTC failed to sync with GNSS time (are you outside?) - system awaiting automatic reset to try again (60 seconds).
  • 5 Rapid Blinks: uSD failed to read CONFIG settings (did you intend to not include the CONFIG file?).

Once the system is initialized, it will either sleep or begin logging data, depending on the specified log mode. If the USER has enabled LED_INDICATORS, the following additional lights will flash:

  • Flashes at measurement rate: System logging GNSS data
  • 1 Blink every 12 seconds: System sleeping

Software Upload

A pre-compiled binary is avialable with each release. V1.0.6 here. This binary file can be uploaded to the Apollo MCU with a usb-to-serial cable connected to the PCB header pins using the Sparkfun Apollo3 Uploader here.

You can also compile this code with the Arduino IDE, ensuring that the code and board libraries match the proper versions defined in the header of OGRENet.ino.

Hardware Notes

MATERIALS Cost of PCB and all components totals ~$200. Detailed list of components found here.

POWER REQUIREMENTS: In standard configuration, this system is powered by a 12V lead-acid battery.

While this system is optimized for 12V batteries, input voltage can range from 5.2V to 20V with the following considerations/customizations:

  • The DC-DC converter minimum input is 5.2V and maximum input is 50V, although aditional power filtering at high voltages is required.
  • The Battery Measurement circuit features a voltage divider circuit that must scale max voltage to 3.3V for the ADC pin. Standard dividers for a 12V battery use 68kOhm and 10kOhm resistors. USER must adjust gain/offset of ADC battery measurement conversion in software if using different power configuration (i.e., different resistor dividers and/or a non-12V battery).
  • The reverse polarity protection MOSFET has a limit of 20V. Do not exeed 20V without either removing this part or finding an appropriate substitute component.

License & Credits

This project is open source! OGRENet software is released under the MIT License.

Some code for this project is adapted from Sparkfun, released under the same license.

ogrenet's People

Contributors

derekpickell avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.