Skip to content

MSB-IoT

Support for the MSB-IoT board

Support for the MSB-IoT board

Overview

The MSB-IoT was developed at FU Berlin and is based on a STM32F415RG MCU.

MSB-IoT

Hardware

MCU

The centerpiece of the MSB-IoT is the STM32F415RG MCU. With a maximum frequency of 168 MHz it offers high performance for a microcontroller of its category. The STM32F415RG comes with a huge set of accessible communication interfaces and features that are listed here.

MCUSTM32F415RG
FamilyARM Cortex-M4
VendorST Microelectronics
RAM192KiB (128KiB RAM + 64KiB CCMRAM)
Flash1024KiB
Frequencyup to 168MHz
FPUyes
Timers14 (12x 16bit, 2x 32bit [TIM2 + TIM5])
ADCs3x 12-bit (16 channel)
UARTs6 (4 USART, 2 UART)
SPIs3
I2Cs3
Vcc1.8V - 3.6V
DatasheetDatasheet
Reference ManualReference Manual
Programming ManualProgramming Manual

GPIO Pins

The following picture shows the easily accessible pins of the board:

MSB-IoT Pinout

User Interface

3 Buttons

NAMEUser Button T1User Button T2T RESET
PinPB13PA0NRST

The user buttons are mapped to GPIO_0 (Button T2) and GPIO_8 (Button T1) in the board’s default configuration file for RIOT. To configure and use the buttons, you can use RIOT’s drivers_periph_gpio.

Pushing the reset button will always reset the board and restart your application.

3 user controllable LEDs

NAMELED_REDLED_YELLOWLED_GREEN
Colorredyellowgreen
PinPB8PB14PB15
Pin AliasLED0_PINLED1_PINLED2_PIN
MacrosLED0_ON, …LED1_ON, …LED2_ON, …

The LEDs can be controlled inside your RIOT application by using the LED macros LED0_ON, LED0_OFF, and LED0_TOGGLE for the red LED, LED1_ON, LED1_OFF, and LED1_TOGGLE for the yellow LED, and LED2_ON, LED2_OFF, and LED2_TOGGLE for the green LED. See our API documentation for more information about the standard LED macros.

There is also a yellow charge LED on the board indicating the charging process of the battery.

1 Beeper

NAMEBeeper
PinPB09

The board’s beeper allows for acoustic feedback. It needs a PWM signal between 1-5 kHz and is connected to pin PB9 and mapped to PWM_0 in RIOT. To configure and use the beeper inside your application, you can use RIOT’s drivers_periph_pwm.

CC1101 Sub-1GHz RF Transceiver

The board has an integrated CC1101 Sub-1GHz RF Transceiver which is connected to the MCU using the SPI. The transceiver allows for energy-efficient local communication in the frequency band below 1 GHz. The driver for the CC1101 automatically loaded when the pseudo module netdev_default is used.

ProductCC1101
TypeSub-1GHz RF Transceiver
VendorTexas Instruments
DatasheetDatasheet
Errata SheetErrata Sheet
Other Technical DocumentsTI Webpage
Driverdrivers_cc110x
SPI DeviceSPI1 (Mapped to SPI_0 in RIOT)
SCLPA5
MISOPA6
MOSIPA7
CSPB12
GDO0PC4
GDO2PC5

CC3000 802.11b/g Wi-Fi Module

In addition to the CC1101, the MSB-IoT also features a CC3000 Wi-Fi Module. The CC3000 is a self-contained wireless network module with a full embedded IPv4 TCP/IP stack that for example allows to use the MSB-IoT as a gateway node to the internet. Please note that the CC3000 only supports operation in infrastructure mode and therefore always needs to be connected to an access point to be used for communication.

The CC3000’s driver implementation for RIOT includes the full driver provided by Texas Instruments. The API documentation from TI can be found here. To use the CC3000 in RIOT, just add USEMODULE += cc3000 to your application’s Makefile.

The driver for the CC3000 is not yet merged into RIOT’s master branch. Please see pull request #2603 for progress on the inclusion.

ProductCC3000
Type802.11b/g Wi-Fi Module
VendorTexas Instruments
DatasheetDatasheet
Errata SheetErrata Sheet
Other Technical DocumentsTI Webpage
TI Support ForumWiFi Forum
DriverPull Request
SPI DeviceSPI2 (Mapped to SPI_1 in RIOT)
SCLPB10
MISOPC2
MOSIPC3
CSPC1
WLAN_ENABLEPC13
IRQ LinePA10

MPU-9150 Nine-Axis MotionTracking Device

The MSB-IoT is equipped with a MPU-9150 MotionTracking Device from Invensense. The device combines a gyroscope, a magnetometer and an accelerometer in one module.

Due to licensing issues, the current MPU-9150 driver implementation for RIOT is not based on Invensense’s ‘Motion Driver’ library and offers only a limited set of features. Nonetheless, the RIOT driver allows to configure and read values from all three sensors of the device. For an overview on the supported features, you can check the driver’s documentation in drivers_mpu9x50.

A sample RIOT application for the MPU-9150 that utilizes the driver can be found here.

ProductMPU-9150
TypeNine-Axis MotionTracking Device (Gyro, Accel and Compass)
VendorInvensense
Product SpecificationProduct Specification
Register MapRegister Map
Driverdrivers_mpu9x50
I²C DeviceI2C1 (Mapped to I2C_0 in RIOT)
SCLPB6
SDAPB7
IRQ LinePB11

Other components

For the following components of the MSB-IoT, there is currently no support in RIOT:

Compiling, Flashing and Debugging

This section only covers the automated functionality provided by RIOT’s makefile system. If you don’t want to rely on RIOT’s make targets for flashing or debugging (for instance to use a different flashing tool), please check the documentation of your used tools.

Flashing

RIOT’s provided functionality for debugging and flashing the MSB-IoT is based on the Open On-Chip Debugger tool. A guide with installation instructions and some other information can be found here.

You can flash the board by calling the following command:

Terminal window
BOARD=msbiot make flash

Using the UART for STDIO

The MCU’s USART2 is set as the default input/output for the MSB-IoT inside RIOT (mapped to UART_0). It is initialized and configured automatically for every RIOT application and can be used for communication with your computer. The easiest way is to use an USB to TTL adapter:

Step 1: Connect your adapter and the boards pin strip with RX<=>PA02, TX<=>PA03 and GND<=>GND

Step 2: Done. The MCUs USART2 is used as STDIO.