Because RuuviTag is open-source and can be used in so many different ways, we decided to add as many user-programmable GPIO (General Purpose Input Output) pins as possible on the bottom of the PCB (Printed Circuit Board).
The brains of RuuviTag is a popular powerful System-on-Chip nRF52832, made by Nordic Semiconductor.
Almost all the nRF52832 chip’s GPIO pins (specified later on this page) are fully configurable, which means that they can be used in various ways.
For example, you can attach:
- Buttons
- LEDs
- I2C sensors
- SPI peripherals
- One-wire sensors
- Etc.
Also, ADC (Analog-to-Digital Converter) is available.
Pin descriptions
- 2 = P0.29 = SPI_SCK
- 3 = P0.28 = SPI_MISO
- 10 = P0.04 = GPIO (can be used as a GPIO / ADC pin)
- 11 = P0.05 = GPIO (can be used as a GPIO / ADC pin)
- 12 = P0.25 = SPI_MOSI
- 13 = P0.19 = LED2 (green) / GPIO (can be used as a GPIO pin but the LED will blink)
- 14 = P0.17 = LED1 (red) / GPIO (can be used as a GPIO pin but the LED will blink)
- 15 = P0.13 = Button / GPIO (can be used as a GPIO pin)
- 16 = GND (Battery’s negative contact)
- 17 = Battery’s positive contact
- 18 = Battery’s positive contact
- 19 = SWDIO
- 20 = SWDCLK
- 21 = P0.18 = SWO / GPIO (can be used as a GPIO pin)
- 22 = P0.21 = Reset / GPIO (can be used as a GPIO pin if no need to reset the device)
- 23 = GND (Battery’s negative contact)
- 24 = P0.31 = GPIO (can be used as a GPIO / ADC pin)
- 25 = P0.30 = GPIO (can be used as a GPIO / ADC pin)
GPIO = General Purpose Input Output pin
P1 = Standard 10-pin ARM Cortex debug connector (on RuuviTag Rev.B1-B5)
- 1 = VDD
- 2 = SWDIO
- 3 = GND (Battery’s negative contact)
- 4 = SWDCLK
- 5 = GND (Battery’s negative contact)
- 6 = SWO
- 7 = No Connect
- 8 = No Connect
- 9 = GND (Battery’s negative contact)
- 10 = Reset
P1 = TC2030 TagConnect (on RuuviTag Rev.B6 and newer)
- 1 = Battery’s positive contact
- 2 = SWDIO
- 3 = Reset
- 4 = SWDCLK
- 5 = GND (Battery’s negative contact)
- 6 = SWO
Note: If you buy a TC2030 cable, please consider carefully the cable connector to programmer board. There is a model with 6 pins, a model with 10 pins and a model with RJ11 connector. If you’re using nRF52DK as a programmer, 10-pin connector (model CTX) is the right choice. Also be sure to pick the “No Legs” -NL version. You might also be interested in TC2030-CLIP to hold the programmer in place.
More info
Nordic Semiconductor Infocenter has all the necessary information about the available GPIO pins.
“The general purpose input/output (GPIO) is organized as one port with up to 32 I/Os (dependent on package) enabling access and control of up to 32 pins through one port. Each GPIO can be accessed individually.”
GPIO has the following user-configurable features:
- Up to 32 GPIO
- 8 GPIO with Analog channels for SAADC, COMP or LPCOMP inputs
- Configurable output drive strength
- Internal pull-up and pull-down resistors
- Wake-up from high or low level triggers on all pins
- Trigger interrupt on state changes on any pin
- All pins can be used by the PPI task/event system
- One or more GPIO outputs can be controlled through PPI and GPIOTE channels
- All pins can be individually mapped to interface blocks for layout flexibility
- GPIO state changes captured on SENSE signal can be stored by LATCH register
Explore the hardware files
RuuviTag is open-source so if you would like to know more, why not go and check the schematics?
Update Feb 2, 2018: Also Rev.B5 and Rev.B6 hardware design files are now available for download.