X-IO TECHNOLOGY NGIMU High Performance Fully Featured IMU User Manual
- June 4, 2024
- X-IO TECHNOLOGY
Table of Contents
NGIMU User Manual
Version 1.6
Public Release
Document updates
This document is continuously being updated to incorporate additional
information requested by users and new features made available in software and
firmware updates. Please check the x-io
Technologies website for the latest version of this document and device
firmware.
Document version history
Date | Document version | Description |
---|---|---|
13 Jan 2022 | 1.6 |
- Correct NTP epoch start date
16 Oct 2019| 1.5|
- Update photos of the board and plastic housing
24 Jul 2019| 1.4|
- Update RSSI sample rate
- Remove altimeter as a future feature
- Add units to linear and earth acceleration descriptions
- Remove the processor from the temperature message
- Add battery low indication to LED behaviour table
07 Nov 2017| 1.3|
- Update the button information
- Add analogue inputs section
- Replace mechanical drawings with links to the website
- Update description of the LED indicating SD card status
10 Jan 2017| 1.2|
- Add send rates, sample rates, and timestamps section
- Describe the OSC time tag in more detail
- Add auxiliary serial interface section
- Add appendix for integration of a GPS module
19 Oct 2016| 1.1|
- Add a description of the LED indicating SD card activity
- Fix footnote error in the overview section
23 Sep 2016| 1.0|
- Indicate that the button must be held for half a second to switch on
- Update description of OSC argument overloading
- Include percentage in RSSI message
- Update plastic housing photo and mechanical drawing
- Add AHRS initialise and zero commands
- Add altitude message
19 May 2016| 0.6|
- Add echo command
- Add RSSI message
- Add magnitudes message
29 Mar 2016| 0.5|
- Add communication protocol section
- Correct analogue input voltage range to 3.1 V
- Update LED section
- Update annotated photo of the board
- Update plastic housing photo
- Update mechanical drawing of the board
19 Nov 2015| 0.4|
- Update photo and mechanical drawing of the latest prototype plastic housing
- Include a mechanical drawing of the board
---|---|---
30 Jun 2015| 0.3|
- Correct serial pinout tables
- Mark pin 1 on an annotated photo of the board
9 Jun 2015| 0.2|
- Include a photo and mechanical drawing of the latest prototype plastic housing
- Small tables are not split across pages
12 May 2015| 0.1|
- An updated photo of the prototype plastic housing
10 May 2015| 0.0|
- Initial release
Overview
The Next Generation IMU (NGIMU) is a compact IMU and data acquisition platform
that combines onboard sensors and data processing algorithms with a broad
range of communication interfaces to create a versatile platform well suited
to both real-time and data-logging applications.
The device communicates using OSC and so is immediately compatible with
many software applications and straightforward to integrate with custom
applications with libraries available for most programming languages.
1.1. On-board sensors & data acquisition
- Triple-axis gyroscope (±2000°/s, 400 Hz sample rate)
- Triple-axis accelerometer (±16g, 400 Hz sample rate)
- Triple-axis magnetometer (±1300 µT)
- Barometric pressure (300-1100 hPa)
- Humidity
- Temperature1
- Battery voltage, current, percentage, and time remaining
- Analogue inputs (8 channels, 0-3.1 V, 10-bit, 1 kHz sample rate)
- Auxiliary serial (RS-232 compatible) for GPS or custom electronics/sensors
- Real-time clock and
1.2. On-board data processing
- All sensors are calibrated
- AHRS fusion algorithm provides a measurement of orientation relative to the Earth as a quaternion, rotation matrix, or Euler angles
- AHRS fusion algorithm provides a measurement of linear acceleration
- All measurements are timestamped
- Synchronisation of timestamps for all devices on a Wi-Fi network2
1.3. Communication interfaces
- USB
- Serial (RS-232 compatible)
- Wi-Fi (802.11n, 5 GHz, built-in or external antennae, AP or client mode)
- SD card (accessible as an external drive via USB)
1.4. Power management
- Power from USB, external supply or battery
- Battery charging via USB or external supply
- Sleep timer
1On-board thermometers are used for calibration and are not intended to
provide an accurate measurement of ambient temperature.
2 Synchronisation requires additional hardware (Wi-Fi router and
synchronisation master).
- Motion trigger wake up
- Wake up timer
- 3.3 V supply for user electronics (500 mA)
1.5. Software features
- Open-source GUI and API (C#) for Windows
- Configure device settings
- Plot real-time data
- Log real-time data to file (CSV file format for use with Excel, MATLAB, etc.)
- Maintenance and calibration tools Error! Bookmark not defined.
Hardware
2.1. Power button
The power button is primarily used to turn the device on and off (sleep mode).
Pressing the button while the device is off will turn it on. Pressing and
holding the button for 2 seconds while it is on will turn it off.
The button can also be used as a data source by the user. The device will send
a timestamped button message each time the button is pressed. This may provide
convenient user input for real-time applications or a useful means of marking
events when logging data. See Section 7.1.1 for more information.
2.2. LEDs
The board features 5 LED indicators. Each LED is a different colour and has a
dedicated role. Table 1 list the role and associated behaviour of each LED.
Colour | Indicates | Behaviour |
---|---|---|
White | Wi-Fi status | Off – Wi-Fi disabled |
Slow flashing (1 Hz) – Not connected
Fast flashing (5 Hz) – Connected and waiting for IP address
Solid – Connected and IP address obtained
Blue| –| –
Green| Device status| Indicates that the device is switched on. It will also
blink each time the button is pressed or a message is received.
Yellow| SD card status| Off – No SD card present
Slow flashing (1 Hz) – SD card present but not in use
Solid – SD card present and logging in progress
Red| Battery charging| Off – Charger not connected
Solid – Charger connected and charging in progress
Flashing (0.3 Hz) – Charger connected and charging complete
Fast flashing (5 Hz) – Charger not connected and battery less than 20%
Table 1: LED behaviour
Sending an identify command to the device will cause all the LEDs to rapidly
flash for 5 seconds.
This may be of use when trying to identify a specific device within a group of
multiple devices. See Section 7.3.6 for more information.
The LEDs may be disabled in the device settings. This may be of use in
applications where light from the LEDs is undesirable. The identify command
may still be used when the LEDs are disabled and the green LED will still
blink each time the button is pressed. This allows the user to check if the
device is switched on while the LEDs are disabled.
2.3. Auxiliary serial pinout
Table 2 lists the auxiliary serial connector pinout. Pin 1 is physically
marked on the connector by a small arrow, see Figure 1.
Pin | Direction | Name |
---|---|---|
1 | N/A | Ground |
2 | Output | RTS |
3 | Output | 3.3 V output |
4 | Input | RX |
5 | Output | TX |
6 | Input | CTS |
Table 2: Auxiliary serial connector pinout
2.4. Serial pinout
Table 3 lists the serial connector pinout. Pin 1 is physically marked on the
connector by a small arrow, see Figure 1.
Pin | Direction | Name |
---|---|---|
1 | N/A | Ground |
2 | Output | RTS |
3 | Input | 5 V input |
4 | Input | RX |
5 | Output | TX |
6 | Input | CTS |
Table 3: Serial connector pinout
2.5. Analogue inputs pinout
Table 4 lists the analogue inputs connector pinout. Pin 1 is physically marked
on the connector by a small arrow, see Figure 1.
Pin | Direction | Name |
---|---|---|
1 | N/A | Ground |
2 | Output | 3.3 V output |
3 | Input | Analogue channel 1 |
4 | Input | Analogue channel 2 |
5 | Input | Analogue channel 3 |
6 | Input | Analogue channel 4 |
7 | Input | Analogue channel 5 |
8 | Input | Analogue channel 6 |
9 | Input | Analogue channel 7 |
10 | Input | Analogue channel 8 |
Table 4: Analogue input connector pinout
2.6. Connector part numbers
All board connectors are 1.25 mm pitch Molex PicoBlade™ Headers. Table 5 lists
each part number used on the board and the recommended part numbers of the
corresponding mating connectors.
Each mating connector is created from a plastic housing part and two or more
crimped wires.
Board connector | Part number | Mating part number |
---|---|---|
Battery | Molex PicoBlade™ Header, Surface Mount, Right-Angle, 2-way, P/N: | |
53261-0271 | Molex PicoBlade™ Housing, Female, 2- way, P/N: 51021-0200 |
Molex Pre-Crimped Lead Single-Ended PicoBlade™ Female, 304mm, 28 AWG, P/N: 06-66-0015 (×2)
Auxiliary serial / Serial| Molex PicoBlade™ Header, Surface Mount, Right-
Angle, 6-way, P/N: 53261-0671| Molex PicoBlade™ Housing, Female, 6- way, P/N:
51021-0600
Molex Pre-Crimped Lead Single-Ended PicoBlade™ Female, 304mm, 28 AWG, P/N:
06-66-0015 (×6)
Analogue inputs| Molex PicoBlade™ Header, Surface Mount, Right-Angle, 10-way,
P/N: 53261-1071| Molex PicoBlade™ Housing, Female, 10- way, P/N: 51021-1000
Molex Pre-Crimped Lead Single-Ended PicoBlade™ Female, 304mm, 28 AWG, P/N:
06-66-0015 (×10)
Table 5: Board connector part numbers
2.7. Board dimensions
A 3D STEP file and mechanical drawing detailing all board dimensions are
available on the x-io
Technologies website.
Plastic housing
The plastic housing encloses the board with a 1000 mAh battery. The housing provides access to all board interfaces and is translucent so that the LED indicators may be seen. Figure 3 shows the board assembled with a 1000 mAh battery in plastic housing.
Figure 3: Board assembled with 1000 mAh battery in a plastic housing
A 3D STEP file and mechanical drawing detailing all housing dimensions are
available on the x-io Technologies website.
Analogue inputs
The analogue inputs interface is used to measure voltages and obtain data from
external sensors that provide measurements as an analogue voltage. For
example, a resistive force sensor can be arranged in a potential divider
circuit to provide measurements of force as an analogue voltage. Voltage
measurements are sent by the device as timestamped analogue inputs messages as
described in Section 7.1.13.
The analogue inputs pinout is described in Section 2.3, and the part numbers
for a mating connector are listed in Section 2.6.
4.1. Analogue inputs specification
- Number of channels: 8
- ADC resolution: 10-bit
- Sample rate : 1000 Hz
- Voltage range : 0 V to 3.1 V
4.2. 3.3 V supply output
The analogue input interface provides a 3.3 V output which may be used to
power external electronics. This output is switched off when the device enters
sleep mode to prevent the external electronics from draining the battery when
the device is not active.
Auxiliary serial interface
The auxiliary serial interface is used to communicate with external
electronics via a serial connection.
For example, Appendix A describes how a GPS module may be connected directly
to the auxiliary serial interface to log and stream GPS data alongside
existing sensor data. Alternatively, a microcontroller connected to the
auxiliary serial interface can be used to add general-purpose input/output
functionality.
The auxiliary serial interface pinout is described in Section 2.3, and the
part numbers for a mating connector are listed in Section 2.6.
5.1. Auxiliary serial specification
- Baud rate: 7 bps to 12 Mbps
- RTS/CTS hardware flow control: enabled/disabled
- Invert data lines (for RS-232 compatibility): enabled/disabled
- Data: 8-bit (no party)
- Stop bits : 1
- Voltage: 3.3 V (inputs are tolerant of RS-232 voltages)
5.2. Sending data
Data is sent from the auxiliary serial interface by sending an auxiliary
serial data message to the
device. See Section 7.1.15 for more information.
5.3. Receiving data
Data received by the auxiliary serial interface is sent by the device as an
auxiliary serial data message as described in Section 7.2.1. Received bytes
are buffered before being sent together in a single message when one of the
following conditions is met:
- The number of bytes stored in the buffer matches the buffer size
- No bytes have been received for more than the timeout period
- Reception of a byte equal to the framing character
The buffer size, timeout, and framing character can be adjusted in the device
settings. An example use of these settings is to set the framing character to
the value of a new-line character (‘\n’, decimal value 10) so that each ASCII
string, terminated by a new-line character, received by an auxiliary serial
interface is sent as a separate time-stamped message.
5.4. OSC passthrough
If OSC passthrough mode is enabled then the auxiliary serial interface will
not send and receive in the way described in Sections 5.2 and 5.3. Instead,
the auxiliary serial interface will send and receive OSC packets encoded as
SLIP packets. OSC content received by the auxiliary serial interface is
forwarded to all active communication channels as a timestamped OSC bundle.
OSC messages received via any active communication channel that is not
recognised will be forwarded to the auxiliary serial interface. This allows
direct communication with third-party and custom serial-based OSC devices
through messages sent and received alongside existing OSC traffic.
The NGIMU Teensy I/O Expansion Example demonstrates how a Teensy (an Arduino-
compatible microcontroller) connected to the auxiliary serial interface can be
used to control LEDs and provide sensor data using OSC passthrough mode.
5.5. RTS/CTS hardware flow control
If RTS/CTS hardware flow control is not enabled in the device settings then
the CTS input and RTS output may be controlled manually. This provides a
general-purpose digital input and output which may be used to interface to
external electronics. For example: to detect the pressing of a button or to
control an LED. The RTS output state is set by sending an auxiliary serial RTS
message to the device as described in Section 7.2.2. A timestamped auxiliary
serial CTS message is sent by the device each time the CTS input states
changes as described in Section 7.1.16.
5.6. 3.3 V supply output
The auxiliary serial interface provides a 3.3 V output which may be used to
power external electronics. This output is switched off when the device enters
sleep mode to prevent the external electronics from draining the battery when
the device is not active.
Send rates, sample rates, and timestamps
The device settings allow the user to specify the send rate of each measurement message type, for example, sensors message (Section 7.1.2), quaternion message (Section 7.1.4), etc. The send rate has no effect on the sample rate of the corresponding measurements. All measurements are acquired internally at the fixed sample rates listed in Table 6. The timestamp for each measurement is created when the sample is acquired. The timestamp is therefore a reliable measurement, independent of the latency or buffering associated with a given commutation channel.
Measurement | Sample Rate |
---|---|
Gyroscope | 400 Hz |
Accelerometer | 400 Hz |
Magnetometer | 20 Hz |
Barometric pressure | 25 Hz |
Humidity | 25 Hz |
Processor temperature | 1 kHz |
Gyroscope and accelerometer temperature | 100 Hz |
Environmental sensor temperature | 25 Hz |
Battery (percentage, time to empty, voltage, current) | 5 Hz |
Analogue inputs | 1 kHz |
RSSI | 2 Hz |
Table 6: Fixed internal sample rates
If a specified send rate is greater than the sample rate of the associate measurement then measurements will be repeated within multiple messages. Repeated measurements can be identified as repeated timestamps. It is possible to specify send rates that exceed the bandwidth of a communication channel. This will result in messages being lost. Timestamps should be used to ensure that the receiving system is robust to lost messages.
Communication protocol
All communication is encoded as OSC. Data sent over UDP uses OSC as per the OSC v1.0 specification. Data set over USB, serial or written to the SD card is OSC encoded as SLIP packets as per the OSC v1.1 specification. The OSC implementation uses the following simplifications:
- OSC messages sent to the device may use numerical argument types (int32, float32, int64, OSC time tag, 64-bit double, character, boolean, nil, or Infinitum) interchangeably, and blob and string argument types interchangeably.
- OSC address patterns sent to the device may not contain any special characters: ‘?’, ‘*’, ‘[]’, or ‘{}’.
- OSC messages sent to the device may be sent within OSC bundles. However, message scheduling will be ignored.
7.1. Data from device
All data sent from the device is sent as a timestamped OSC bundle containing a
single OSC message.
All data messages, with the exception of the button, auxiliary serial and
serial messages, are sent continuously at the send rates specified in the
device settings.
The timestamp of an OSC bundle is an OSC time tag. This is a 64-bit fixed-
point number. The first 32 bits specify the number of seconds since 00:00 on
January 1st, 1900, and the last 32 bits specify fractional parts of a second
to a precision of about 200 picoseconds. This is the representation used by
Internet NTP timestamps. An OSC time tag can be converted to a decimal value
of seconds by first interpreting the value as a 64-bit unsigned integer and
then dividing this value by 2 32. It is important that this calculation is
implemented using a double-precision floating-point type otherwise the lack of
precision will result in significant errors.
7.1.1. Button message
OSC address: /button
The button message is sent each time the power button is pressed. The message
contains no arguments.
7.1.2. Sensors
OSC address: /sensors
The sensor message contains measurements from the gyroscope, accelerometer,
magnetometer, and barometer. The message arguments are summarised in Table 7.
Argument | Type | Description |
---|---|---|
1 | float32 | The gyroscope x-axis in °/s |
2 | float32 | The gyroscope y-axis in °/s |
3 | float32 | Gyroscope z-axis in °/s |
4 | float32 | Accelerometer x-axis in g |
5 | float32 | The accelerometer y-axis in g |
6 | float32 | Accelerometer z-axis in g |
7 | float32 | Magnetometer x axis in µT |
8 | float32 | Magnetometer y axis in µT |
9 | float32 | Magnetometer z axis in µT |
10 | float32 | Barometer in hPa |
Table 7: Sensor message arguments
7.1.3. Magnitudes
OSC address: /magnitudes
The magnitudes message contains measurements of the gyroscope, accelerometer,
and magnetometer magnitudes. The message arguments are summarised in Table 8:
Magnitudes message arguments.
Argument | Type | Description |
---|---|---|
1 | float32 | Gyroscope magnitude in °/s |
2 | float32 | Accelerometer magnitude in g |
3 | float32 | Magnetometer magnitude in µT |
Table 8: Magnitudes message arguments
7.1.4. Quaternion
OSC address: /quaternion
The quaternion message contains the quaternion output of the onboard AHRS
algorithm describing the orientation of the device relative to the Earth (NWU
convention). The message arguments are summarised in Table 9.
Argument | Type | Description |
---|---|---|
1 | float32 | Quaternion w element |
2 | float32 | Quaternion x element |
3 | float32 | Quaternion y element |
4 | float32 | Quaternion z element |
Table 9: Quaternion message arguments
7.1.5. Rotation matrix
OSC address: /matrix
The rotation matrix message contains the rotation matrix output of the onboard
AHRS algorithm describing the orientation of the device relative to the Earth
(NWU convention). The message arguments describe the matrix in row-major
order as summarised in Table 10.
Argument | Type | Description |
---|---|---|
1 | float32 | Rotation matrix xx element |
2 | float32 | Rotation matrix xy element |
3 | float32 | Rotation matrix xz element |
4 | float32 | Rotation matrix yx element |
5 | float32 | Rotation matrix yy element |
6 | float32 | Rotation matrix Yz element |
7 | float32 | Rotation matrix Zx element |
8 | float32 | Rotation matrix zy element |
9 | float32 | Rotation matrix zz element |
Table 10: Rotation matrix message arguments
7.1.6. Euler angles
OSC address: /Euler
The Euler angles message contains the Euler angle output of the onboard AHRS
algorithm describing the orientation of the device relative to the Earth (NWU
convention). The message arguments are summarised in Table 11.
Argument | Type | Description |
---|---|---|
1 | float32 | Roll (x) angle in degrees |
2 | float32 | Pitch (y) angle in degrees |
3 | float32 | Yaw/heading (z) angle in degrees |
7.1.7. Linear acceleration
OSC address: /linear
The linear acceleration message contains the linear acceleration output of the
onboard sensor fusion algorithm describing gravity-free acceleration in the
sensor coordinate frame. The message arguments are summarised in Table 12.
Argument | Type | Description |
---|---|---|
1 | float32 | Acceleration in the sensor x-axis in g |
2 | float32 | Acceleration in the sensor y-axis in g |
3 | float32 | Acceleration in the sensor z-axis in g |
Table 12: Linear acceleration message arguments
7.1.8. Earth acceleration
OSC address: /earth
The Earth acceleration message contains the Earth acceleration output of the
onboard sensor fusion algorithm describing gravity-free acceleration in the
Earth coordinate frame. The message arguments are summarised in Table 13.
Argument | Type | Description |
---|---|---|
1 | float32 | Acceleration in the Earth x-axis in g |
2 | float32 | Acceleration in the Earth y-axis in g |
3 | float32 | Acceleration in the Earth z-axis in g |
Table 13: Earth acceleration message arguments
7.1.9. Altitude
OSC address: /altitude
The altitude message contains the measurement of altitude above sea level. The
message argument is summarised in Table 14.
Argument | Type | Description |
---|---|---|
1 | float32 | Altitude above sea level in m |
Table 14: Altitude message argument
7.1.10. Temperature
OSC address: /temperature
The temperature message contains the measurements from each of the device’s
onboard temperature sensors. The message arguments are summarised in Table 15.
Argument | Type | Description |
---|---|---|
1 | float32 | Gyroscope/accelerometer temperature in °C |
2 | float32 | Barometer temperature in °C |
Table 15: Temperature message arguments
7.1.11. Humidity
OSC address: /humidity
The humidity message contains the relative humidity measurement. The message
argument is summarised in Table 16.
Argument | Type | Description |
---|---|---|
1 | float32 | Relative humidity in % |
Table 16: Humidity message argument
7.1.12. Battery
OSC address: /battery
The battery message contains the battery voltage and current measurements as
well as the states of the fuel gauge algorithm. The message arguments are
summarised in Table 17.
Argument | Type | Description |
---|---|---|
1 | float32 | Battery level in % |
2 | float32 | Time to empty in minutes |
3 | float32 | Battery voltage in V |
4 | float32 | Battery current in mA |
5 | string | Charger state |
Table 17: Battery message arguments
7.1.13. Analogue inputs
OSC address: /analogue
The analogue inputs message contains measurements of the analogue inputs
voltages. The message arguments are summarised in Table 18.
Argument | Type | Description |
---|---|---|
1 | float32 | Channel 1 voltage in V |
2 | float32 | Channel 2 voltage in V |
3 | float32 | Channel 3 voltage in V |
4 | float32 | Channel 4 voltage in V |
5 | float32 | Channel 5 voltage in V |
6 | float32 | Channel 6 voltage in V |
7 | float32 | Channel 7 voltage in V |
8 | float32 | Channel 8 voltage in V |
Table 18: Analogue inputs message arguments
7.1.14. RSSI
OSC address: /RSSI
The RSSI message contains the RSSI (Receive Signal Strength Indicator)
measurement for the wireless connection. This measurement is only valid if the
Wi-Fi module is operating in client mode. The message arguments are summarised
in Table 19.
Argument | Type | Description |
---|---|---|
1 | float32 | RSSI measurement in dBm |
2 | float32 | RSSI measurement as a percentage where 0% to 100% represents the |
range -100 dBm to -50 dBm.
Table 19: RSSI message argument
7.1.15 Auxiliary serial data
OSC address: /aux serial
The auxiliary serial message contains the data received through the auxiliary serial interface. The message argument may be one of two types depending on the device settings as summarised in Table 20.
Argument | Type | Description |
---|---|---|
1 | blob | Data is received through the auxiliary serial interface. |
1 | string | Data received through the auxiliary serial interface with all null |
bytes replaced with the character pair “/0”.
Table 20: Auxiliary serial data message argument
7.1.16 Auxiliary serial CTS input
OSC address: /aux serial/cts
The auxiliary serial CTS input message contains the CTS input state of the auxiliary serial interface when hardware flow control is disabled. This message is sent each time the state of the CTS input changes. The message argument is summarised in Table 21.
Argument | Type | Description |
---|---|---|
1 | boolean | CTS input state. False = low, True = high. |
Table 21: Auxiliary serial CTS input message argument
7.1.17. Serial CTS input
OSC address: /serial/cts
The serial CTS input message contains the CTS input state of the serial
interface when hardware flow control is disabled. This message is sent each
time the state of the CTS input changes. The message argument is summarised
in Table 22.
Argument | Type | Description |
---|---|---|
1 | boolean | CTS input state. False = low, True = high. |
Table 22: Serial CTS input message argument
7.2. Data to device
Data is sent to the device as OSC messages. The device will not send an OSC
message in response.
7.2.1. Auxiliary serial data
OSC address: /auxserial
The auxiliary serial message is used to send data (one or more bytes) from the
auxiliary serial interface. This message may only be sent if the ‘OSC
passthrough’ mode is not enabled. The message argument is summarised in Table
23.
Argument | Type | Description |
---|---|---|
1 | OSC-blob / OSC-string | Data to be transmitted from the auxiliary serial |
interface
Table 23: Auxiliary serial data message arguments
7.2.2. Auxiliary serial RTS output
OSC address: /aux serial/rts
The auxiliary serial RTS message is used to control the RTS output of the
auxiliary serial interface.
This message may only be sent if hardware flow control is disabled. The
message argument is summarised in Table 24.
Argument | Type | Description |
---|---|---|
1 | Int32/float32/boolean | RTS output state. 0 or false = low, non-zero or true |
= high.
Table 24: Auxiliary serial RTS output message arguments
7.2.3. Serial RTS output
OSC address: /serial/rts
The serial RTS message is used to control the RTS output of the serial
interface. This message may only be sent if hardware flow control is disabled.
The message argument is summarised in Table 25.
Argument | Type | Description |
---|---|---|
1 | Int32/float32/boolean | RTS output state. 0 or false = low, non-zero or true |
= high.
Table 25: Serial RTS output message arguments
7.3. Commands
All commands are sent as OSC messages. The device will confirm the reception
of the command by sending an identical OSC message back to the host.
7.3.1. Set time
OSC address: /time
The set time command sets the date and time on the device. The message
argument is an OSCtimetag.
7.3.2. Mute
OSC address: /mute
The mute command inhibits the sending of all data messages listed in Section
7.1. Command confirmation messages and setting read/write response messages
will still be sent. The device will remain muted until an unmute command is
sent.
7.3.3. Unmute
OSC address: /unmute
The unmute command will undo the mute state described in Section 7.3.2.
7.3.4. Reset
OSC address: /reset
The reset command will perform a software reset. This is equivalent to
switching the device off and then on again. The software reset will be
performed 3 seconds after the command is received to ensure that the host is
able to confirm the command before it is executed.
7.3.5. Sleep
OSC address: /sleep
The sleep command will put the device into sleep mode (switched off). The
device will not enter sleep mode until 3 seconds after the command is received
to ensure that the host is able to confirm the command before it is executed.
7.3.6. Identity
OSC address: /identify
The identify command will cause all the LEDs to rapidly flash for 5 seconds.
This may be of use when trying to identify a specific device within a group of
multiple devices.
7.3.7. Apply
OSC address: /apply
The apply command will force the device to immediately apply all pending
settings that have been written but not yet applied. The confirmation of this
command is sent after all settings have been applied.
7.3.8. Restore default
OSC address: /default
The restore default command will reset all device settings to their factory
default values.
7.3.9. AHRS initialise
OSC address: /ahrs/initialise
The AHRS initialise command will reinitialise the AHRS algorithm.
7.3.10. AHRS zero yaw
OSC address: /ahrs/zero
The AHRS zero yaw command will zero the yaw component of the current
orientation of the AHRS algorithm. This command may only be issued if the
magnetometer is ignored in the AHRS settings.
7.3.11. Echo
OSC address: /echo
The echo command may be sent with any arguments and the device will respond
with an identical OSC message.
7.4. Settings
Device settings are read and written using OSC messages. The settings tab of
the device software
provides access to all device settings and includes detailed documentation for
each setting.
7.4.1. Read
Settings are read by sending an OSC message with the corresponding setting OSC
address and no arguments. The device will respond with an OSC message with the
same OSC address and the current setting value as an argument.
7.4.2. Write
Settings are written by sending an OSC message with the corresponding setting
OSC address and an argument value. The device will respond with an OSC message
with the same OSC address and the new setting value as an argument.
Some setting writes are not applied immediately because this may result in
loss of communication with the device if a setting affecting the communication
channel is modified. These settings are applied 3 seconds after the last
write of any setting.
7.5. Errors
The device will send error messages as an OSC message with the OSC address:
/error and a single-string argument.
A. Integrating a GPS module with the NGIMU
This section describes how to integrate an off-the-shelf GPS module with the
NGIMU. The NGIMU is compatible with any serial GPS module, the “Adafruit
Ultimate GPS Breakout – 66 channel w/10 Hz updates – Version 3” was
chosen here for the purposes of demonstration. This module can be purchased
from Adafruit or any other distributor.
A.1. Hardware setup
The CR1220 coin cell battery clip and auxiliary serial interface connecter
wires must be soldered to the GPS module board. The auxiliary serial interface
connector part numbers are detailed in Section 2.6. The required connections
between the auxiliary serial port and the GPS module are described in Table
26. Figure 5 shows the assembled GPS module with a connector for the auxiliary
serial interface.
Auxiliary serial pin | GPS module pin |
---|---|
Ground | “GND” |
RTS | Not connected |
3.3 V output | “3.3V” |
RX | “TX” |
TX | “RX” |
CTS | Not connected |
Table 26: Auxiliary serial interface connections to the GPS module
Figure 4: Assembled GPS module with connector for auxiliary serial interface
The CR1220 coin cell battery is necessary to preserve GPS module settings and to power the real-time clock while external power is not present. The GPS module will lose power each time the NGIMU is switched off. The real-time clock significantly reduces the time required to obtain a GPS lock. The battery can be expected to last approximately 240 days.
A.2. NGIMU settings
The auxiliary serial baud rate setting must be set to 9600. This is the
default baud rate of the GPS module. The GPS module sends data in separate
ASCII packets, each terminated by a new-line character. The auxiliary serial
framing character setting must therefore be set to 10 so that each ASCII
packet is timestamped and transmitted/logged by the NGIMU separately. The
auxiliary serial ‘send as string’ setting must be enabled so that packets are
interpreted as strings by the NGIMU software. All other settings should be
left at default values so that the settings match those shown in Figure 5.
Figure 5: Auxiliary serial
interface settings configured for a GPS module
A.3. Viewing and processing GPS data
Once the NGIMU settings have been configured as described in Section A.2, GPS
data will be received and forwarded to all active communication channels as a
timestamped auxiliary serial data message as described in Section 7.1.15. The
NGIMU GUI can be used to view incoming GPS data using the Auxiliary Serial
Terminal (under the Tools menu). Figure 6 shows incoming GPS data after a GPS
fix has been achieved. The module may take tens of minutes to achieve a fix
when powered for the first time.
Figure 6: In coming GPS data displayed in the Auxiliary Serial Terminal
The default GPS module settings provide GPS data in four NMEA packet types:
GPGGA, GPGSA, GPRMC, and GPVTG. The NMEA Reference Manual provides a
detailed description of the data contained in each of these packets.
The NGIMU software can be used to log real-time data as CSV files or to
convert data logged to the SD card file to CSV files. GPS data is provided in
the auxserial.csv file. The file contains two columns: the first column is the
timestamp of a given NMEA packet generated by the NGIMU when the packet was
received from the GPS module, and the second column is the NMEA packet. The
user must handle the importing and interpretation of this data.
A.4. Configuring for 10 Hz update rate
The GPS module default settings send data with a 1 Hz update rate. The module
can be configured to send data with a 10 Hz update rate. This is achieved by
sending command packets to adjust the settings as described in Sections A.4.1
and A.4.2. Each command packet may be sent using the NGIMU GUI’s Auxiliary
Serial Terminal (under the Tools menu). The GPS module will revert to default
settings if the battery is removed.
The command packets described in this section are created as per the
GlobalTop PMTK command packet documentation with checksums calculated
using an online NMEA checksum calculator.
A.4.1. Step 1 – Change baud rate to 115200
Send the command packet “$PMTK251,115200*1F\r\n” to the GPS module. The
incoming data will then appear as ‘garbage’ data because the current auxiliary
serial baud rate of 9600 does not match the new GPS module baud rate of
115200. The auxiliary serial baud rate setting must then be set to 115200 in
the NGIMU settings before the data appears correctly again.
A.4.2. Step 2 – Change output rate to 10 Hz
Send the command packet “$PMTK220,100*2F\r\n” to the GPS module. The GPS
module will now send data with a 10 Hz update rate.
A.4.3. Saving GPS module settings
The GPS module will save settings automatically. However, the GPS module will
revert to default settings if the battery is removed.
www.x-io.co.uk
© 2022
References
- NMEA MTK checksum calculator
- x-io Technologies – Wireless IMUs and data logging
- NGIMU – x-io Technologies
- Network Time Protocol - Wikipedia
- Row- and column-major order - Wikipedia
- Serial Line Internet Protocol - Wikipedia
- Adafruit Ultimate GPS Breakout - 66 channel w/10 Hz updates [PA1616S] : ID 746 : $29.95 : Adafruit Industries, Unique & fun DIY electronics and kits
Read User Manual Online (PDF format)
Read User Manual Online (PDF format) >>