Skip to content

jamesmunns/internet-of-streams

Repository files navigation

Internet of Streams Project

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.

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!

Ferrous Systems

Stream Videos

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

Future Topics

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

License

Licensed under either of

at your option.

Contribution

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.

About

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

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published