1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00
RIOT/examples/README.md
AnnsAnn 83e93a5b73 ci: Add tests for examples folder
examples/readme: add missing entries

examples: document examples with no readme
2024-11-12 16:35:26 +01:00

11 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

  • 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.

RIOT Language Bindings

Officially Supported/Targeted

Rust
  • 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++

Community Supported

  • 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)

  • 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

  • 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.
  • 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

  • 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

  • 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

  • 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

  • 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

  • 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

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Updated upstream

  • 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. ====================================================================================================
      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.

Stashed changes

Advanced Examples

  • 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.