The Design Document is now the Product Design Document (PRD). It was rewritten to be a bit more in line with just describing the why and what of the product, not the how. It might not be perfect, but it is good enough. The README was adjusted to document that we are using the weasyprint pdf-engine for pandoc. I had started with just using the LaTex engine, but when you get to heading level 4, the heading is classified as a paragraph and not a proper heading. Also, all generated documents (*.pdf) were removed from the repository.
4.2 KiB
MicroBadge
MicroBadge is a software application suite for the BBC micro:bit v2, designed as a digital conference badge.
Table of Contents
About The Project
This project provides a modular and extensible application framework for the BBC micro:bit. It supports multiple interactive applications with a shared UI and rendering infrastructure. It uses message-passing channels and safe numeric arithmetic via bounded, clamped, and wrapped integer types.
Features
- Modular application management with a switcher component.
- Menu, Snake, Badge, and future NFC applications included.
- Real-time rendering to the micro:bit LED matrix.
- Button input driven by asynchronous event channels.
- Renderer abstraction for pixel-level control.
- Channel-based messaging for input and output decoupling.
- Safe integer handling using bounded, clamped, and wrapped types.
Built With
Project Structure
src/
├── main.rs Entry point of the application.
├── menu/ The Menu Applicaiton.
├── badge/ The Badge Application.
├── snake/ The Snake Application.
Getting Started
Prerequisites
- Properly installed Rust toolchain.
- gdb-multiarch Tested version: 15.0.50.
- minicom Tested version: 2.9.
- cargo-binutils Tested Version: 0.3.6.
- probe-rs-tools Tested Version: 0.24.
The Rust discovery book has a great section on how to setup a build environment.
Make sure you have the correct bulid target installed.
rustup target add thumbv7em-none-eabihf
Build and Flash
To build and flash the program to your Microbit just run:
cargo embed
Documentation
To generate all the documentation you will need to have pandoc and weasyprint installed.
Design Doc
The [Design Doc][./docs/design.pdf] is generated with pandoc from the markdown file.
pandoc ./docs/design.md --pdf-engine=weasyprint -o ./docs/design.pdf
Software Design Doc
The [Software Design Doc][./docs/sdd.pdf] is generated with pandoc from the markdown file.
pandoc ./docs/sdd.md --pdf-engine=weasyprint -o ./docs/sdd.pdf
UML
[UML][./docs/uml/] is generated using Plant UML on the *.puml files.
plantuml ./docs/uml/*.puml
Copyright & License
Copyright 2025 CyberMages LLC
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this library except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS