Last updated on: October 10, 2022

Icarus SoM DK (nRF9160)
Icarus SoM DK (nRF9160)


The Icarus SoM DK is a single board development kit for evaluation and development on the Icarus SoM. The Icarus SoM DK features the nRF9160 SiP from Nordic Semiconductor which provides low-power LTE-M and NB-IoT connectivity, GPS, a low-power 3-axis accelerometer and an on-board eSIM. The development kit provides interfacing to the SoM through USB-C, a set of user LEDs, a reset and user button, battery charging, power management, and a external nano SIM connector. The board is also Arduino Uno Rev3 compatible which makes using external shields possible.


  • Icarus System on Module
  • Application processor:
    • ARM® Cortex M33 with 1 MB Flash and 256 kB RAM
    • ARM® Trustzone®, ARM® Cryptocell 310
  • Connectivity:
    • LTE Cat-M1, LTE CAT-NB1 (NB-IoT) with Global Coverage
    • SSL / TLS & Secure FOTA support
    • PSM and eDRX support
    • On-board eSIM & SIM switching circuit for external SIM
    • GPS (L1 C/A)
  • Sensors, devices, and buttons:
    • LIS2DH12 3-axis low-power accelerometer
    • 64 Mbit SPI NOR flash
    • WS2812 / NeoPixel addressable RGB LED
    • Blue user LED
    • General Purpose button
    • Reset button
    • FTDI USB to serial converter
  • Power:
    • Battery voltage measurement circuit
    • Current measurement connector connected directly to the battery
    • LiPo Charger with MPPT
    • Under-voltage and over-voltage protection
    • USB-C connector
    • VIN pin for powering directly from a battery or to separately power the radio.
  • Peripherals:
    • I2C / UART / SPI / I2S with EasyDMA
    • up to 22 GPIO
    • up to 8 12-bit, 200ksps ADC with EasyDMA
    • up to 4 PWM Units
    • SWD 10-pin JTAG programming connector
    • SWD 6-pin TagConnect programming connector
  • Compatible with the Arduino Uno Rev3

Block Diagram

Icarus SoM DK Block Diagram
Icarus SoM DK Block Diagram

Pin description

External pins available to user

#LabelDescriptionDevice-tree node
1NCNot Connected-
2IOREFI/O reference, connected to 3.3V-
3RSTReset of the nRF9160-
43.3V3.3V Power output-
54.4VPower output between Vbat and 4.4V-
6GNDGround pin-
7GNDGround pin-
8VINPower input pin (4.35V to 10.5V)-
9A2AIN2 / nRF9160 P0.15gpio0
10A3AIN3 / nRF9160 P0.16gpio0
11A4AIN4 / nRF9160 P0.17gpio0
12A5AIN5 / nRF9160 P0.18gpio0
13A6AIN6 / nRF9160 P0.19gpio0
14A7AIN7 / nRF9160 P0.20gpio0
15P4nRF9160 P0.04gpio0
16P5nRF9160 P0.05gpio0
17P2nRF9160 P0.02gpio0
18P1nRF9160 P0.01gpio0
19P23nRF9160 P0.23gpio0
20P0nRF9160 P0.00gpio0
21P26nRF9160 P0.26gpio0
22P27nRF9160 P0.27gpio0
23P30nRF9160 P0.30gpio0
24P31nRF9160 P0.31gpio0
25P7nRF9160 P0.07gpio0
26P13nRF9160 P0.13 or NC (Jumper-dependent)gpio0
27P14nRF9160 P0.14 or NC (Jumper-dependent)gpio0
28P3nRF9160 P0.03gpio0
29GNDGround pin-
30AREFNC or AIN1 (Jumper-dependent)gpio0
31SDAI2C SDA pini2c2
32SCLI2C SCL pini2c2
-TSPin for optional battery thermistor-
-CHGPin for battery charging indication-
-CEPin for enabling/disabling charging-

nRF9160 pins connected on the Icarus SoM DK internally

nRF9160 pinFunctionDevice-tree node
P0.03Blue LEDled0 / pwm-led0
P0.08NeoPixel RGB LEDspi1
P0.12SIM select pingpio0
P0.23Connected to the user buttongpio0 / button0
P0.24SPI NOR Flash chip selectgpio0 / spi3
P0.28Accelerometer Interrupt 2lis2dh12-accel
P0.29Accelerometer Interrupt 1lis2dh12-accel

The connections described in the table above are reserved for the specified functionality and should not be used for other functionalities. Using them can cause some devices on the Icarus SoM DK to stop working correctly.

Operating Temperature-202585°C
Battery Voltage3.23.74.2V
V_USB Voltage4.35510.2V
V_IN Voltage4.3510.2V

Absolute Maximum Ratings

Input Voltage (V_USB or V_IN)28V




The Icarus SoM DK hosts several peripherals that are connected to the nRF9160 internally or on the board. Descriptions of the peripherals and devices can be found below.


The Icarus SoM DK board provides the W25Q64JV with 64 MBit of SPI NOR flash, supported by Zephyr. This allows for storage of larger amounts of data. It also allows to store firmware update images on the flash which are received Over-The-Air (OTA).

The SPI NOR flash hardware connection has been described in the Icarus SoM DK device-tree under the arduino_spi / spi3 node. It has been defined as device w25q64jv@0 with label W25Q64. The flash can be selected using its Chip Select (CS) which is connected on P0.24 of the nRF9160. The SPI NOR flash can be tested using the JEDEC SPI-NOR Sample from Zephyr.


The accelerometer on the board is the LIS2DH12 from ST. This ultra-low-power 3-axis accelerometer is connected to the nRF9160 through I2C (address 0x19) and features two interrupt pins, INT1 and INT2, which are connected to pins P0.28 and P0.29. The interrupt pins can be configured for multiple purposes including free-fall and motion detection (more info on this in the LIS2DH12 datasheet).

The accelerometer hardware connection has been described in the Icarus SoM DK device-tree under the arduino_i2c / i2c2 node. It has been defined as device lis2dh12-accel@19 with label LIS2DH12-ACCEL. For an example on how to read data from the accelerometer, see the Icarus accelerometer sample.


The GPS receiver on the Icarus SoM DK is embedded into the modem of the nRF9160. To successfully get a GPS fix, and receive location data, an active external GPS antenna must be connected (with a u.fl connector). An example of an antenna that can be used is the GNSS active patch antenna from Molex.

Configuring the voltage supply for the GPS antenna:
During operation, the modem inside the nRF9160 will automatically enable/disable the voltage supply for the GPS antenna when the GPS is active. It is doing this through the MAGPIO0 pin. During bootup, it is necessary to configure the modem through an AT command to use the MAGPIO pin. AT commands can be written to the nRF9160 modem using the at_cmd_write() function. This is an example of configuring the MAGPIO0 pin for GPS operation (notice how a specific frequency range for GPS is configured):

at_cmd_write("AT%XMAGPIO=1,0,0,1,1,1547,1577", NULL, 0, NULL);

Initialization and enabling of the GPS takes a few more steps. See the Icarus GPS sample and/or Nordic's nRF Connect SDK documentation for more information on initialization and reading GPS data using the Icarus.

eSIM and external SIM connection

SIM select configuration for nRF SDK v2.0.0 and up:
The SIM on the Icarus SoM must be selected through the device-tree if you are using nRF SDK v2.0.0 and up. Selecting the SIM is done using a device-tree overlay file in your project. Follow these steps to select the SIM through the device-tree:

  1. Create a new directory in your project folder named boards:
$ cd <your-project-directory>
$ mkdir boards
$ cd boards
  1. Create an overlay file with the exact name of the board:
# When building for a non-secure application
$ touch actinius_icarus_som_dk_ns.overlay
  1. Add the following device-tree node to your overlay file:
&sim_select {
sim = "external";

By changing the value of sim to "external" you select the external SIM. By changing the value of sim to "esim" you select the on-board eSIM. And what's left to do is to re-build your project (use a pristine build).

If the pin is left uninitialized, the modem will use the on-board eSIM.

Warning: Only change the SIM Select pin before enabling the modem. E.g. before writing the `"AT+CFUN=1"` AT command.

The Icarus SoM DK also provides the BOARD_SELECT_SIM_EXTERNAL configuration option to automatically select the external SIM on the SIM connector instead of the eSIM. This option can be enabled through the prj.conf of an application project.


Power output:
The Icarus SoM DK uses a power management device in combination with a DC/DC converter to supply the board with power. The board can be powered using a LiPo battery, USB, or the VIN pin. The DC/DC converter can output a maximum current of 400 mA and provide a stable 3.3 V voltage rail.

Power supply limits:
As mentioned in the mechanical and electrical specifications, the maximum external input voltage (VIN) can be 10.2 V. The over-voltage protection of the Icarus SoM DK will be triggered at a external input voltage higher than 10.2 V. Inputs up to 28 V are permitted, however voltages over this limit can damage the board. The USB-port is also protected from voltage spikes.


Charging output:
The charger is able to charge a LiPo battery using the USB-port or any other power source connected to the VIN pin (e.g. a solar cell). The charger can provide 445 mA of fast charge current. The power management device on the DK also ensures that the USB and/or other VIN power source is not overloaded with charging.

Charging LED:
Battery charging is indicated by a yellow charging LED on the DK. The board provides a jumper which can be used to disconnect the LED and save power. Simply cut the trace in between the jumper to disconnect the LED. The pin that indicates that the battery is charging is also exposed and labeled with CHG on the board. The CHG pin can be connected to one of the pins of the nRF9160 to check whether the battery is charging.

Enable/disable charger:
The DK provides a jumper and pin labeled CE that can be used to enable/disable the charger. The Charger Enable (CE) pin is normally connected to ground to enable charging (active-low). Cutting the trace in between the jumper and connecting the CE pin to 3.3 V will disable the charging circuit. This means that the battery can still be used to power the board, it will just not be charged anymore.

Connecting a battery thermistor:
The charging circuitry on the Icarus SoM DK provides a TS pin which can be used to connect a 10kΩ NTC thermistor for reading the battery temperature. The TS pin is normally grounded through a 10kΩ pull-down resistor. This resistor should be disconnected by cutting the trace of the jumper that is next to the TS pin.

Icarus SoM DK charger functionality pins
Icarus SoM DK charger functionality pins

Battery voltage measurement

The Icarus SoM DK provides the user with the ability to read the battery voltage level through one of the nRF9160 ADC pins. The battery voltage is measured through a voltage divider which can be seen in the image below. This circuit connects VBAT to the AIN0 pin of the nRF9160 (P0.13):

Voltage divider on AIN0 for battery voltage measurement
Voltage divider on AIN0 for battery voltage measurement

Before reading the battery voltage level on the nRF9160, the voltage divider circuit must be connected. On the DK board, there is a jumper labeled with VBATT and P13. The jumper is normally connected to the P13 side (right) and goes to the external connector on the right. If the jumper is cut, it can be soldered to the VBATT side (left) which connects P0.13 / AIN0 to the battery voltage measurement circuit (See the image below for more clearification). This renders the external pin unusable.

Battery measurement jumper connecting to P0.013 of the nRF9160
Battery measurement jumper connecting to P0.013 of the nRF9160

Battery voltage measurement example:
See the ADC battery voltage measurement sample for more information of how to use the ADC as well as the conversion for the voltage divider.

SoM current consumption measurement

The DK provides a way to measure the current consumption of the Icarus SoM by using the 2-pin header next to the battery connector. The pins can be connected to a multimeter or e.g. an OTII measurement device. The use of the 2-pin header to measure current requires you to cut the jumper next to it. When done measuring the current consumption, this jumper should be resoldered to ensure that the SoM gets powered.

Icarus SoM DK current measurement header and jumper
Icarus SoM DK current measurement header and jumper