1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 01:09:47 +01:00
RIOT/examples/README.md

9.7 KiB

Examples

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:

The Essentials

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.

RIOT Language Bindings

Officially Supported/Targeted

Rust
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.
C++
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.

Networking

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)

NimBLE

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.

Misc BLE Examples

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.

MQTT

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.

CoRE Resource Directory

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

GNRC Networking

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

DTLS

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.

Misc

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.

Advanced Examples

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.