Skip to content
vic

jamesmunns/internet-of-streams

An IoT project focused on teaching embedded, rustlang, and IoT concepts through coding streams

jamesmunns/internet-of-streams.json
{
"createdAt": "2019-02-23T11:19:24Z",
"defaultBranch": "master",
"description": "An IoT project focused on teaching embedded, rustlang, and IoT concepts through coding streams",
"fullName": "jamesmunns/internet-of-streams",
"homepage": null,
"language": "Rust",
"name": "internet-of-streams",
"pushedAt": "2020-04-01T15:19:12Z",
"stargazersCount": 150,
"topics": [],
"updatedAt": "2025-09-23T19:50:44Z",
"url": "https://github.com/jamesmunns/internet-of-streams"
}

Building a wireless sensor platform from (almost) scratch in Embedded Rust. Built with a focus on teaching embedded systems, IoT development, and Rust through live streamed coding sessions. Devices based on the [DWM1001-DEV] board, the [Nordic nRF52] microcontroller, and [Embedded Rust].

[DWM1001-DEV] !: https://www.decawave.com/product/dwm1001-development-board/ [Embedded Rust] !: https://github.com/rust-embedded/wg [Nordic nRF52] !: https://www.nordicsemi.com/Products/Low-power-short-range-wireless/nRF52832

This project is sponsored by Ferrous Systems. Interested in trainings or consulting on Embedded Systems, IoT projects, or the Rust Programming Language? [Get in touch!]!(mailto:iot-streams@ferrous-systems.com)

Ferrous Systems

You can find a playlist of all videos here on YouTube.

  • [2019-02-23] - Hello Blinky World!
    • Get the project set up
    • Get CI set up
    • Get HAL and RTFM set up
    • Blink the first LED
  • [2019-02-28] - COBS Encoding for Serial Framing
    • Finish up a PR to get a streaming COBS encoder
  • [2019-03-02] - Async DMA UARTE - Part 1
    • Get nrf52-hal vendored
    • Update some old code
    • Try to work around RTFM limitations
    • see the uarte branch for WIP
  • [2019-03-07] - Simple Blocking UART Logger
    • Send data over the UART
    • Provide log/warn/err levels
    • Send data larger than a single 255 byte transaction
  • [2019-03-10] - Radio Work and no_std Serde
    • Get messages sending periodically
    • Receive incoming messages
    • Use the hardware random number generator
    • Serialize/Deserialize messages with ssmarshal and serde
  • [2019-03-17] - Workspace Cleanup and Alarm Clock Planning
    • Discuss making an alarm clock as a first device
    • Discuss RTCs and how they work
    • Refactor the repo into a workspace
  • [2019-03-20] - Real Time Clock - Part 1
    • Start implementing the nRF52 RTC peripheral
    • Write a low level peripheral driver
    • Add an interrupt handler to RTFM
    • Got stuck due to some code problems
  • [2019-03-28] - Real Time Clock - Part 2
    • Debugging a low level peripheral driver
    • Investigating what went wrong
    • Got the RTC interrupt working properly!
  • [2019-03-31] - Making an Alarm Clock - Part 1
    • Reviewed the [uhr crate] for tracking wall time and alarms
    • Implemented a (re-)scheduler to allow alarms to repeat on a fixed weekly schedule
    • Wrote a no_std unit test for verifying an optimized bit-math algorithm

[2019-02-23] !: https://youtu.be/S0VI70nY6Vo [2019-02-28] !: https://youtu.be/mnPbmPqKf1s [2019-03-02] !: https://youtu.be/O6KeMpnLRkI [2019-03-07] !: https://youtu.be/WYIei1MpVe4 [2019-03-10] !: https://youtu.be/U2rC24XGtTk [2019-03-17] !: https://youtu.be/Qaa_p0K_B84 [2019-03-20] !: https://youtu.be/_M0AYdWKnzw [2019-03-28] !: https://youtu.be/UB8OiEFdYgQ [2019-03-31] !: https://youtu.be/CGJNQR1rj9Q

[uhr crate] !: https://crates.io/crates/uhr

The following topics are planned to be addressed in future streams:

  • Wireless Communication
  • Bootloader/OTA updates
  • Low Power Mode
  • Logging
  • Unit Testing
  • Hardware in the Loop testing
  • 6LoWPAN
  • Bluetooth
  • Gateway Router
  • Messaging/Protocol/Serialization/Deserialization
  • LED status codes

Licensed under either of

at your option.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.