1.. zephyr:board:: octopus_io_board
2
3Overview
4********
5
6Octopus IO-Board is an expansion to the Octopus SoM, which is built around the nRF9160 SiP
7offering NB-IoT and LTE-M connectivity, GPS and accelerometer. Octopus IO-Board expands
8the capabilities of the Octopus SoM by providing additional peripherals and interfaces for
9development and prototyping of low-power IoT applications.
10
11nRF9160 SiP contains ARM Cortex-M33 application processor and the
12following devices:
13
14* :abbr:`ADC (Analog to Digital Converter)`
15* CLOCK
16* FLASH
17* :abbr:`GPIO (General Purpose Input Output)`
18* :abbr:`I2C (Inter-Integrated Circuit)`
19* :abbr:`MPU (Memory Protection Unit)`
20* :abbr:`NVIC (Nested Vectored Interrupt Controller)`
21* :abbr:`PWM (Pulse Width Modulation)`
22* :abbr:`RTC (nRF RTC System Clock)`
23* Segger RTT (RTT Console)
24* :abbr:`SPI (Serial Peripheral Interface)`
25* :abbr:`UARTE (Universal asynchronous receiver-transmitter with EasyDMA)`
26* :abbr:`WDT (Watchdog Timer)`
27* :abbr:`IDAU (Implementation Defined Attribution Unit)`
28
29Octopus IO-Board offers the following features:
30
31* Battery charger
32* USB-C for power
33* Solar charger
34* Alkaline battery input
35* LDO regulator to power Octopus SoM and peripherals
36* Battery monitoring using ADC
37* 64 Mbit SPI NOR flash
38* Dedicated ADC, GPIO, I2C, SPI and UARTE pins for expansion
39* Exposed headers for current measurements
40* Nano SIM connector
41* Tag-Connect TC2030-IDC 6-pin connector for SWD programming and debugging
42* 2x3 pinheader for SWD programming and debugging
43
44More information about the board can be found at the `Octopus IO-Board Product Page`_
45and in the `Octopus IO-Board Documentation`_.
46
47Hardware
48********
49
50Connections and IOs
51===================
52
53The Octopus IO-Board features multiple dedicated pin headers for peripherals:
54
55* 3x I2C0 bus
56* 2x SPI0 bus
57* 3x I2C1/SPI1 bus (selectable)
58* 1x UARTE0 bus
59* 1x Analog input (5 input pins)
60* 1x GPIO (7 I/O pins)
61
62The I2C1/SPI1 bus is selectable by the user by cutting/soldering SB8 and SB9 solder bridges and configuring the bus in the device tree.
63
64The GPIO pin header provides 7 I/O pins, which can be used as digital input/output. Some of them also serve as chip selects for SPI peripherals.
65
66Power supply
67============
68
69The Octopus IO-Board can be powered from the following sources:
70
71* USB-C connector
72* Solar cell
73* Alkaline battery
74* Li-Po battery
75
76When powered from USB-C or solar cell, the board can charge the Li-Po battery. The battery voltage can be monitored using ADC which can
77provide information about the battery State of charge (SOC).
78
79When powered from alkaline battery, the user needs to set switch SW1 to ALK position. This ensures that the Li-Ion battery is not charged from the alkaline battery.
80
81The board has a built-in LDO regulator that is used to power the Octopus SoM and peripherals. The EN2 pin can be used to enable/disable output 2 of the LDO regulator.
82This can be used to power off peripherals to save power when they are not needed.
83
84The board also has multiple built-in test points for measuring current consumption of the board, which enables the user to measure and optimize the power consumption of the board.
85
86Programming and Debugging
87*************************
88
89Norik Octopus IO-Board can be programmed and debugged using the Tag-Connect TC2030-IDC 6-pin connector or 6-pin SWD pinheader.
90
91Building an application
92=======================
93
94In most case you'll need to use ``octopus_io_board/nrf9160/ns`` board target for building examples.
95Some examples don't require non secure mode and can be built with ``octopus_io_board/nrf9160`` board target.
96
97Flashing
98========
99Refer to the instruction in the :ref:`nordic_segger` page to install and
100configure all the necessary software.
101
102Here is an example for the Hello World application.
103
104First, run your favorite terminal program to listen for output.
105
106.. code-block:: console
107
108   $ minicom /dev/<tty_device> 115200
109
110Replace <tty_device> with the port where the Octopus IO-Board can be found. For example, under Linux, /dev/ttyACM0.
111
112Then build and flash the application in the usual way.
113
114.. zephyr-app-commands::
115   :zephyr-app: samples/hello_world
116   :board: octopus_io_board/nrf9160
117   :goals: build flash
118
119To build and flash the application in non-secure mode, use the following command:
120
121.. zephyr-app-commands::
122   :zephyr-app: samples/hello_world
123   :board: octopus_io_board/nrf9160/ns
124   :goals: build flash
125
126Debugging
127=========
128Refer to the instruction in the :ref:`nordic_segger` page for information on
129debugging.
130
131Testing the on-board LED
132========================
133Use the :zephyr:code-sample:`blinky` to test the on-board LED. Build and flash the example to make sure Zephyr is running correctly on your board.
134
135.. zephyr-app-commands::
136   :zephyr-app: samples/basic/blinky
137   :board: octopus_io_board/nrf9160
138   :goals: build flash
139
140References
141**********
142
143.. target-notes::
144
145.. _Octopus IO-Board Product Page: https://www.norik.com/octopus-io-board/
146.. _Octopus IO-Board Documentation: https://www.norik.com/wp-content/uploads/2024/09/Octopus_IO-Board_Datasheet.pdf
147