/drogue-device

An async framework written in Rust for safe and efficient embedded applications.

Primary LanguageRustApache License 2.0Apache-2.0

Drogue Device

CI Build CI Test crates.io docs.rs Matrix Bors enabled

Drogue device is a distribution of tools and examples for building embedded IoT applications in Rust.

  • Built using rust, an efficient, memory safe and thread safe programming language.
  • Based on embassy, the embedded async project.
  • IoT examples for BLE, Bluetooth Mesh, WiFi and LoRaWAN with OTA functionality.
  • Works out of the box with the Drogue Cloud connectivity layer.
  • Async programming model for writing safe and efficient applications.
  • All software is licensed under the Apache 2.0 open source license.

See the documentation for more information.

Go to our homepage to learn more about the Drogue IoT project.

Minimum Supported Rust Version

Drogue Device requires the Rust nightly toolchain. If you installed rust using rustup, all the commands should "just work".

Hardware

Drogue device runs on any hardware supported by embassy, which at the time of writing includes:

  • nRF52
  • STM32
  • Raspberry Pi Pico
  • Linux, Mac OS X or Windows
  • WASM (WebAssembly)

We provide examples for a subset of hardware that we ensure works and that are relevant for IoT.

Example applications

An overview of the examples can be found in the documentation.

You can copy the examples if you wish to create an application outside of this repository.

Developing

To make testing and developing examples a bit easier, we have defined a few commands that you can run from the root folder of the repository that should work with any example. These commands will also ensure that the appropriate bootloader is installed if needed.

To flash an example, run cargo xtask flash:

cargo xtask flash examples/nrf52/microbit/ble

To debug an example, run cargo xtask debug:

cargo xtask debug examples/nrf52/microbit/ble

To just build the example, run cargo xtask build:

cargo xtask build examples/nrf52/microbit/ble

To do a full build of everything including examples:

cargo xtask ci

Directory layout

  • boards - Board Support Package (BSP) for supported boards
  • device - Library for building IoT applications
  • macros - macros to load configuration files for the device firmware.
  • examples - examples that can run on different boards

Contributing

See the document CONTRIBUTING.md.

Community