RIOT provides a wide range of examples to demonstrate the capabilities of the OS and its modules.
Each example contains a README.md
that provides information and instructions how to run it.
Here is a quick overview of the examples available in the RIOT:
Example
Description
default
This application is a showcase for RIOT's hardware support. Using it for your board, you should be able to interactively use any hardware that is supported.
hello-world
A simple "Hello World" that shows the basic structure of a RIOT application.
blinky
The classic "Hello World" example for embedded systems: blinking an LED (or printing "Blink!" via stdio when none are available).
leds_shell
The application leds_shell
is a basic example, which allows easy, interactive control of internal board LEDs, and basic GPIO for externally connected simple devices (for e.g. additional LEDs, relay, motors - via dedicated drivers, etc.) via the shell.
saul
This example demonstrates the usage of the SAUL (Sensor Actuator Uber Layer) module.
timer_periodic_wakeup
How to set up a periodic wakeup timer using the RIOT operating system.
ipc_pingpong
This example is to illustrate the usage of RIOTs IPC messaging system.
filesystem
This example showcases ways to interact/manage the filesystem in RIOT.
subfolders
This example demonstrates how to use subfolders in RIOT applications.
Officially Supported/Targeted
Example
Description
rust-hello-world
This example demonstrates how to write a simple RIOT application in Rust.
rust-gcoap
This example demonstrates how to write a coap server application in Rust using the RIOTs gcoap module.
rust-async
This example demonstrates how to use Rusts async/await syntax in a RIOT application.
Example
Description
riot_and_cpp
Example of using C++ in RIOT applications.
Community Supported
Example
Description
javascript
How to write IoT applications using javascript using JerryScript.
lua_basic
How to write IoT applications using Lua.
lua_REPL
This example demonstrates how to use the Lua Read-Eval-Print Loop (REPL) in RIOT.
micropython
How to use the MicroPython port for RIOT.
wasm
How to use WebAssembly in RIOT.
arduino_hello-world
This application demonstrates the usage of Arduino sketches in RIOT.
Constraint Application Protocol (CoAP)
Example
Description
gcoap
This example demonstrates the usage of the gcoap
module, a high-level API for CoAP (Constrained Application Protocol) messaging.
gcoap_block_server
CoAP server handling for Block requests, build with gcoap using nanocoap block handling functions.
gcoap_fileserver
This example demonstrates the usage of the gcoap
module to serve files over CoAP.
gcoap_dtls
This example demonstrates the usage of the gcoap
module with DTLS.
nanocoap_server
This example demonstrates the usage of the nanocoap
module, a high-level API for CoAP (Constrained Application Protocol) messaging.
Bluetooth Low Energy (BLE)
Example
Description
nimble_scanner
This example showcases the usage of the NimBLE
BLE stack as a scanner.
nimble_gatt
This example application configures and runs the NimBLE BLE stack as simple GATT server.
nimble_heart_rate_sensor
This example demonstrates how to implement asynchronous data transfer using GATT notifications by implementing a mock-up BLE heart rate sensor.
Example
Description
skald_eddystone
This example demonstrates the usage of Skald
for creating an Google Eddystone
beacon.
skald_ibeacon
This example demonstrates the usage of Skald
for creating an Apple iBeacon
.
Example
Description
asymcute_mqttsn
This application demonstrates the usage of the Asymcute (MQTT-SN) module in RIOT.
emcute_mqttsn
This application demonstrates the usage of the emCute (MQTT-SN) module in RIOT.
paho-mqtt
This example demonstrates the usage of the Paho MQTT client library in RIOT.
Example
Description
cord_ep
Example of RIOT's Resource Directory (RD) endpoint module, called cord_ep
cord_lc
Example of RIOT's Resource Directory (RD) lookup module, called cord_lc
cord_epsim
This example shows how a node can register with a CoRE resource directory
Example
Description
gnrc_minimal
This is a minimalistic example for RIOT's gnrc network stack.
gnrc_networking
This example demonstrates the usage of the GNRC network stack in RIOT.
gnrc_networking_subnets
This example demonstrates IPv6 subnet auto-configuration for networks on a tree topology.
gnrc_border_router
Example of gnrc_border_router
using automatic configuration
gnrc_lorawan
Send and receive LoRaWAN packets and perform basic LoRaWAN commands
gnrc_networking_mac
This example shows you how to try out communications between RIOT instances with duty-cycled MAC layer protocols
Example
Description
dtls-sock
This example shows how to use DTLS sock sock_dtls_t
dtls-echo
This example shows how to use TinyDTLS with sock_udp.
dtls-wolfssl
This example demonstrates the usage of the DTLS module with the wolfSSL library.
Example
Description
lorawan
This application shows a basic LoRaWAN use-case with RIOT.
openthread
This example demonstrates the usage of the OpenThread stack in RIOT.
lwm2m
Example of a LWM2M client on RIOT
ccn-lite-relay
This application demonstrates how to use the Content-Centric Networking stack from CCN-Lite on RIOT
telnet_server
Simple telnet server that listens on port 23 over IPv6.
posix_sockets
Showcase for RIOT's POSIX socket support
spectrum-scanner
This example demonstrates how to monitor energy levels on all available wireless channels
sniffer
This application is built to run together with the script ./tools/sniffer.py
as a sniffer for (wireless) data traffic.
benckmark_udp
This example uses the benchmark_udp
module to create a stress-test for the RIOT network stack.
sock_tcp_echo
This is a simple TCP echo server / client that uses the SOCK API.
Example
Description
bindist
RIOT allows for creating a "binary distribution", which can be used to ship proprietary, compiled objects in a way that makes it possible to re-link them against a freshly compiled RIOT. This application serves as a simple example.
usbus_minimal
This is a minimalistic example for RIOT's USB stack.
suit_update
This example shows how to integrate SUIT-compliant firmware updates into a RIOT application.
thread_duel
This is a thread duel application to show RIOTs abilities to run multiple-threads concurrently, even if they are neither cooperative nor dividable into different scheduler priorities, by using the optional round-robin scheduler module.
posix_select
This example is a showcase for RIOT's POSIX select support
psa_crypto
Basic functions of the PSA Crypto API
pio_blink
How to use the PIO peripheral on the RaspberryPi Pico to blink an LED.
twr_aloha
This example allows testing different two-way ranging algorithms between two boards supporting a dw1000 device. This makes use of the uwb-core pkg.
senml_saul
This example demonstrates the usage of the SAUL (Sensor Actuator Uber Layer) module with the SenML (Sensor Measurement Lists) format.
opendsme
This example demonstrates the usage of the OpenDSME module in RIOT.