IOTA (ARTIC R2) Satellite Communication Module Hookup Guide

Pages
Contributors: PaulZC
Favorited Favorite 1

Introduction

SparkFun IOTA - Satellite Communication Module (ARTIC R2)

SPX-17984

Looking for a satellite communication board for your next project? This could be the one!

We offer three ARGOS ARTIC R2 satellite transceiver products:

SparkFun IOTA - Satellite Communication Module (ARTIC R2)

SPX-17984
ARGOS Satellite Transceiver Shield - ARTIC R2

ARGOS Satellite Transceiver Shield - ARTIC R2

SPX-17236
$199.95

smôl ARTIC R2

SPX-18618

This board, the IOTA - the Integrated Open source Transceiver for ARGOS - is ideal if you are ready to incorporate an ARGOS transceiver into your design. Its castellated pads can be reflowed or hand-soldered as required. It also has slots for an RF screening can, should your certification process require one. The antenna connection is available on both a castellated pad and a u.FL connector. You will find an Eagle symbol and footprint for IOTA in the SparkFun Eagle Libraries RF Library.

The ARGOS Satellite Transceiver Shield - ARTIC R2, is the biggest of the three and the easiest to get your fingers around. It has the same footprint as our Feather-compatible Thing Plus boards and is designed to stack directly on top of a Thing Plus for easy development. If you are looking for a board to allow you to get to know how ARGOS satellite communication works, or are just starting out on your product development, or want a board you can plug into breadboard, or are not worried about making your tracking system as compact as possible, then this is the board for you.

The smôl ARTIC R2 is the baby of the three, but it still packs the same punch as its larger siblings. If you are developing a compact dart for whale tracking, or a small backpack for avian tracking, or a very discrete satellite tracker, then the smôl ARTIC R2 is the one for you.

Pictured are the three Spark Fun satellite boards
Having a hard time seeing? Click the image for a closer look.

Pictured are the dimensions of the three Spark Fun satellite boards

All three boards use the same ARTIC R2 satellite transceiver chip. All three have the same power amplifier, with the same maximum output power and adjustable gain. All three have the same receive sensitivity. All three have on-board flash memory containing the ARTIC R2 firmware and Platform ID. All three are supported by our comprehensive Arduino Library which includes a full set of tried-and-tested examples.

If you would like to know more about the ARGOS satellite network itself, head on over to our ARGOS (ARTIC R2) Satellite Communication Guide:

ARGOS & ARTIC R2

The ARGOS satellite system has been around for quite a while. It was created in 1978 by the French Space Agency (CNES), the National Aeronautics and Space Administration (NASA) and the National Oceanic and Atmospheric Administration (NOAA), originally as a scientific tool for collecting and relaying meteorological and oceanographic data around the world. Today, ARGOS is revolutionising satellite communication, adding a constellation of 25 nanosatellites to complement the 7 traditional satellites carrying ARGOS instrumentation. The first of these, ANGELS, is already in operation and SparkFun were among the first users to transmit data to ANGELS in October 2020. When the constellation is complete, there will be a maximum of 10-15 minutes between satellite passes.

The ARTIC R2 is an integrated, low-power, small-size ARGOS 2/3/4 single chip transceiver. ARTIC implements a message based wireless interface. For satellite uplink communication, ARTIC will encode, modulate and transmit provided user messages. For downlink communication, ARTIC will lock to the downstream, demodulate and decode and extract the satellite messages. The ARTIC can transmit signals in frequency bands around 400MHz and receive signals in the bands around 466MHz, in accordance with the ARGOS satellite system specifications.

The IOTA has been tested and certified by Kinéis. Compared to other satellite communication systems, the ARTIC R2 has a much lower current draw and will work with a very simple, very lightweight quarter-wave wire antenna. The ARTIC R2 chipset on IOTA operates from 3.3V and the on-board flash memory enables fast boot times. If you don’t need the full transmit power, or want to conserve your battery life, you can transmit at reduced power too thanks to opto-isolated gain control.

Our Arduino Library makes it really easy to get up and running with ARGOS. We’ve provided a full set of examples which will let you: configure the ARTIC R2 chipset; predict the next satellite pass; receive allcast and individually-coded messages; transmit messages using ARGOS 2, 3 and 4 encoding.


The ARGOS satellite system is currently restricted to specific programs and applications. Please check that your project meets these requirements before buying hardware. CLS (France) and the Woods Hole Group (America) will be able to advise if your project meets the requirements. "To meet system use requirements, all programs using Argos have to be related in some way or other to environmental protection, awareness or study, or to protecting human life." Please see our ARGOS ARTIC R2 Communication Guide for more details.

Hardware Overview

In this section we'll cover what's included on the IOTA (ARTIC R2) Satellite Communication Module.

ARTIC R2

The heart of IOTA is, of course, the ARTIC R2 transceiver itself. This is a clever chip containing a Digital Signal Processor (DSP) which modulates transmit messages and demodulates received messages. The DSP can boot from on-board flash memory or from an external microcontroller via SPI. When transmitting, it produces a 1mW (0dBm) output signal which is fed to a separate power amplifier.

Pictured is the ARTIC R2 chip

Our Arduino Library does all of the heavy lifting for you. By default, the library will tell the ARTIC R2 DSP to boot from the on-board flash memory. However, by changing one line of code, you can instead boot via SPI with your microcontroller providing the firmware for the DSP.

RF Amplifier

During transmit, the RFPA0133 power amplifier boosts the 0dBm (1mW) signal from the ARTIC R2.

Pictured is the RFPA0133 amplifier chip

Using full gain, the amplifier boosts the signal to approximately 25.7dBm (370mW). If you are using ARGOS 2 or 3 modulation and are transmitting from a 'noisy' environment, like a city, then you are probably going to need to use full power to ensure your messages get through. However, if you are using ARGOS 4 modulation and/or are transmitting from a 'quiet' environment, like the tundra or the ocean, then you will be able to transmit at reduced power.

Gain Control

You can adjust the transmit gain through software and the on-board opto-isolated gain control circuit.

Pictured is the opto-isolated gain control

Our Arduino Library can reduce the gain for you. If you call:

language:c
myARTIC.attenuateTXgain(true);

from inside your code, the opto-isolator will pull the RFPA0133's G8 pin low, reducing the gain by approximately 5dB. This also has the advantage of reducing the transmit current by approximately 80mA.

Flash Memory

By default, the DSP inside the ARTIC R2 will boot from the on-board flash memory. (But, as mentioned above, you also have the option of booting via SPI.)

Pictured is the flash memory chip

During production testing at SparkFun, we program the flash memory with the ARTIC R2 firmware (ARTIC006) and a Platform ID allocated by CLS. You will need to register the Platform ID on your ARGOS account to activate it. The Arduino Library reads the Platform ID from memory and uses it in the transmissions.

Antenna

On IOTA, you have a choice of antenna connection: u.FL; or a castellated pad.

Pictured are the two antenna connections


Warning: Always connect a 401MHz antenna to your IOTA before connecting the power. Transmitting with no antenna attached will damage the RF power amplifier.

Check out our tutorial if you haven't used u.FL before:

Three Quick Tips About Using U.FL

Quick tips regarding how to connect, protect, and disconnect U.FL connectors.

Power Circuit

The IOTA requires a 3.3V ±0.1V DC power supply able to cope with the maximum transmit current of 230mA.

The power circuit comprises: in-rush and over-current protection; 3.0V and 1.8V regulators.

Pictured are the components of the power circuit

Screening Can

IOTA has slots and ground pads for an RF screening can, should your certification process require one.

You can find the design for the screening can on onshape. You can right-click on the onshape document tabs and select Export... to export the design in a variety of formats.

Pictured are the screening can slots and pads - click to go to the onshape design

Pictured is the design of the screening can - click to go to the onshape design

Castellated Pads

The IOTA has 24 castellated pads. It can be reflowed or hand-soldered onto a PCB depending on your needs.

You will find an Eagle symbol and footprint for IOTA in the SparkFun Eagle Libraries RF Library.

The photo below shows the bottom of IOTA. Pad 1 is top right.

Pictured are the I O T A castellated pads

The table below describes the function of each of the IOTA's castellated pads. Looking at IOTA from the top, pad 1 is top left. Pad numbering is counter-clockwise.

Pictured is pad 1

Pad No.NameFunctionDescription
1G8INPUTPull up to 3.3V to set the RFPA0133 transmit power to maximum. The transmit power will be reduced by _approximately_ 5dB if this pin is pulled low or left open.
23.0V OutOUTPUTThis pad allows measurement of the module's internal 3.0V rail.
3BOOTINPUTConnected to the ARTIC BOOT pin. Pulled up to 3.3V via a 100k resistor. When high, the ARTIC boots from the external flash memory. Pull low if the ARTIC firmware will be downloaded by the MCU via SPI.
4INT1OUTPUTConnected to the ARTIC INT1 pin. Will be pulled up to 3.3V by the ARTIC to indicate (e.g.) an RX_VALID_MESSAGE.
5INT2OUTPUTConnected to the ARTIC INT2 pin. Will be pulled up to 3.3V by the ARTIC to indicate (e.g.) an RX_BUFFER_OVERFLOW.
6RESETBINPUTConnected to the ARTIC reset pin. Pulled up to 3.3V via a 100k resistor. Pull low to reset the ARTIC.
7CSINPUTSPI interface Chip Select. 3.3V. Active low.
8SCLKINPUTSPI interface clock signal. Typically 1MHz. 3.3V. See the ARTIC R2 datasheet for the permitted clock speeds.
9COPIINPUTSPI interface: Controller Out Peripheral In. 3.3V.
10CIPOOUTPUTSPI interface: Controller In Peripheral Out. 3.3V.
111.8V OutOUTPUTThis pad allows measurement of the module's internal 1.8V rail.
12GNDPower ground / 0V.
13GNDPower ground / 0V.
14VININPUT3.3V power supply for the module. Voltage must be: 3.3V +/- 0.1V. Current limit: 500mA.
15PWR ENINPUTPulled low via a 10k resistor. Pull up to 3.3V to enable power for the ARTIC R2.
16FLASH_PWRINPUT3.3V power supply for the internal flash memory. Connect to Pin 17 (3.3V Out).
173.3V OutOUTPUTConnected to the module's internal 3.3V rail (switched) and provides power for the internal flash memory. Connect to Pin 16 (FLASH PWR).
18FLSH SCLKClock signal for the internal SST25VF020B 2-Mbit SPI Serial Flash. Used when programming the internal flash memory. Leave unconnected.
19FLSH SISerial Data In for internal SST25VF020B 2-Mbit SPI Serial Flash. Used when programming the internal flash memory. Leave unconnected.
20FLSH SOSerial Data Out for internal SST25VF020B 2-Mbit SPI Serial Flash. Used when programming the internal flash memory. Leave unconnected.
21FLSH CENChip Enable for internal SST25VF020B 2-Mbit SPI Serial Flash. Used when programming the internal flash memory. Leave unconnected.
22GNDPower ground / 0V.
23ANTENNARFAntenna connection (50 Ohm). Connected internally to the center pin of the u.FL connector.
24GNDPower ground / 0V.

Arduino Example: Satellite Detection


Warning: Always connect a 401MHz antenna to your IOTA before connecting the power. Transmitting with no antenna attached will damage the RF power amplifier.

The SparkFun ARGOS ARTIC R2 Arduino Library contains a full set of tried and tested examples which will run on any Arduino board, but you will need to change the pin definitions in the code to match your board.

This guide assumes you already have the Arduino IDE and the ARGOS ARTIC R2 Library installed, and have selected the correct Arduino Board. If you need help with any of that, please check out the ARGOS ARTIC R2 Shield Hookup Guide.

The code below is a stripped-down version of Example4_SatelliteDetection. Copy and paste the code into a new window in the Arduino IDE:

language:c
#include <SPI.h>
#include "SparkFun_ARGOS_ARTIC_R2_Arduino_Library.h" // http://librarymanager/All#SparkFun_ARGOS_ARTIC_R2
ARTIC_R2 myARTIC;

// Pin assignments - change these if required
int CS_Pin = 24;
int GAIN8_Pin = 3;
int BOOT_Pin = 4;
int INT1_Pin = 5;
int INT2_Pin = 6;
int RESET_Pin = 7;
int IOTA_PWR_EN_Pin = 8;

void setup()
{
  Serial.begin(115200);
  Serial.println(F("ARGOS ARTIC R2 Example"));

  Serial.println(F("ARTIC R2 is booting..."));

  SPI.begin();

  //myARTIC.enableDebugging(); // Uncomment this line to enable debug messages on Serial

  // Begin the ARTIC: enable power and boot from flash
  if (myARTIC.beginIOTA(CS_Pin, RESET_Pin, BOOT_Pin, IOTA_PWR_EN_Pin, INT1_Pin, INT2_Pin, GAIN8_Pin) == false)
  {
    Serial.println("ARTIC R2 not detected. Freezing...");
    while (1)
      ; // Do nothing more
  }

  Serial.println(F("ARTIC R2 boot was successful."));

  // Read the Platform ID from flash memory
  uint32_t platformID = myARTIC.readPlatformID();
  if (platformID == 0)
  {
    Serial.println(F("You appear to have an early version of the SparkFun board."));
    Serial.println(F("For the transmit examples, you will need to use the Library Manager to select version 1.0.9 of this library."));
  }
  else
  {
    Serial.print(F("Your Platform ID is: 0x"));
    Serial.println(platformID, HEX);
  }

  myARTIC.setTCXOControl(1.8, true); // Set the TCXO voltage to 1.8V and autoDisable to 1

  myARTIC.setSatelliteDetectionTimeout(600); // Set the satellite detection timeout to 600 seconds

  Serial.println(F("Starting satellite detection..."));

  // Start satellite detection
  // The ARTIC will start looking for a satellite for the specified amount of time.
  myARTIC.sendMCUinstruction(INST_SATELLITE_DETECTION);
}

void loop()
{
  delay(1000);

  // Read the ARTIC R2 status register
  ARTIC_R2_Firmware_Status status;
  myARTIC.readStatusRegister(&status);

  // Check the interrupt 2 flag. This will go high if satellite detection times out
  if (status.STATUS_REGISTER_BITS.DSP2MCU_INT2)
  {
    Serial.println(F("INT2 pin is high. Satellite detection has timed out!"));
  }
  // Check the interrupt 1 flag. This will go high when a satellite is detected
  else if (status.STATUS_REGISTER_BITS.DSP2MCU_INT1)
  {
    Serial.println(F("INT1 pin is high. Satellite detected!"));
  }

  // Check the instruction progress
  // checkMCUinstructionProgress will return true if the instruction is complete
  ARTIC_R2_MCU_Instruction_Progress progress;
  boolean instructionComplete = myARTIC.checkMCUinstructionProgress(&progress);

  if (instructionComplete)
  {
    Serial.println(F("Satellite detection is complete! Freezing..."));
    while (1)
      ; // Do nothing more
  }
}

Save the file and click on the Upload button to upload the example onto your Arduino board. Open Tools\Serial Monitor to see the serial messages. Check that the baud rate is set to 115200:

Pictured is the Arduino I D E serial monitor

Once the ARTIC R2 has booted, the code will read the pre-programmed Platform ID from flash memory. If it does not find one, you will see a message reminding you to install v1.0.9 of the ARTIC R2 library.

The ARTIC R2 will try to detect a satellite for up to 10 minutes. You may wish to log into the ARGOS website and predict when the next satellite pass will take place before running this example.

Current Draw

Knowing the current drawn by the IOTA is of course very important when calculating your battery life.

We measured the ARTIC R2 Shield's current draw using the fantastic Otii Arc Power Analyzer. IOTA is functionally identical to the Shield and the current draw is the same. The Otii Arc was configured to output 3.6V and we connected it to the Shield's VBATT pin to replicate a LiPo battery.

  • Current Draw:
    • Sleep (PWR EN and RF EN low): 51µA
    • Idle (power LEDs enabled): 7.2mA (AVG)
    • Receive: 32.9mA
    • Transmit (full power, G8 pin high): 226mA
    • Transmit (reduced gain, G8 pin low): 170mA

Here is the data captured by Otii Arc when transmitting ARGOS 3 ZE data at full power:

Pictured is the current draw at full power
Having a hard time seeing? Click the image for a closer look.

And here is the current draw when transmitting ARGOS 3 ZE data at reduced power:

Pictured is the current draw at reduced power
Having a hard time seeing? Click the image for a closer look.

Certification

IOTA has been tested and certified by Kinéis, who are responsible for the operation of the ARGOS system. You can find copies of the test certificates below.

We are very grateful for the time and effort Kinéis have spent testing the SparkFun ARTIC R2 products.

Troubleshooting

Incorrect Platform ID: We learned recently that some ARTIC R2 boards had been incorrectly programmed with the wrong Platform ID. Each board has two IDs: a decimal one which you use to access your data on ArgosWeb; and a hexadecimal one which is embedded in each satellite uplink message. These boards had been incorrectly programmed with the decimal ID instead of the hexadecimal one. You can tell if your board is affected by calling readPlatformID(). If the true hexadecimal ID is returned, all is well. If the value is the decimal ID - expressed in hexadecimal - then your board requires reprogramming as your messages will not be delivered. Please return your board. We will reprogram it and return it to you quickly. If your project is time-critical, please contact us via the SparkX forum and we will provide a software work-around. We apologise for the error and the inconvenience.

Not working as expected and need help? SparkX products are rapidly produced to bring you the most cutting edge technology as it becomes available. These products are tested but come with no guarantees. Live technical support is not available for SparkX products. Head on over to our forum for support or to ask a question and we will get back to you as soon as we can.

Resources and Going Further

For more information about IOTA, check out the following links:

IOTA Documentation:

ARGOS ARTIC R2 Documentation:


Thanks! The ARTIC R2 circuit is a remix of the reference design kindly provided by the Arribada Initiative and Icoteq Ltd.