Description
The purpose of the project is to build a hardware device that runs software written in Rust.
Deliverables
All the deliverables will be published in a GitHub repository that each student will be assigned to.
The repository contains:
- documentation - the reposiotry's
README.md
file- short description of functionality
- requirements (hardware and software)
- hardware design - use KiCad EDA or a similar tool for the schematics
- software design
- detail design
- functional diagram
- software source code
Students will have to build and showcase the hardware with the running software at PM Fair.
Hardware Rules
- Projects have to use a microcontroller (MCU) that is capable of running Rust code. Examples of MCUs are nRF52, RP2040, ESP32 (RISC-V version).
- Usage of a development board is encouraged, but not required, a custom PCB can be built. Example of development boards are:
- Raspberry Pi Pico (RP2040) or Raspberry Pi Pico W for WiFi
- Adafruit Trinkey QT2040 (RP2040)
- Arduino Nano RP2040 Connect (RP2040) - ⚠️ 1
- micro:bit v2 (nRF52833)
- nRF52 DK (nRF52810)
- STM32 NUCLEO-F401RE
- ESP32-C3-DevKit-RUST-1 (ESP32-C3) - ⚠️ 2
- The hardware part may be designed either using a breadboard and jumper wires, a prototype board (solder breadboard) or a PCB.
Software Rules
It has to run software written in Rust. Students can use:
- embassy-rs
- RTIC
- bare metal - the cortex-r-rt crate
- Tock
- any other software framework that is written in Rust
Project Rules
- Copying schematics or source code from the Internet is not allowed.
- Each project is considered individual work, students can ask the lab assistant (lab) about implementation details during the development period.
- Students are strongly encouraged to ask the lab assistant questions about the project.
- The presentation of all the milestones is mandatory.
Requirements
- Complexity: use knowledge of at least 3 labs, excluding 00 - Rust, 01 - Hardware Introduction and 02 - Setting up the Raspberry Pi Pico + GPIO
- Documentation: Complete documentation of the implementation for both hardware and software.
- Functionality: the hardware device has to be fully functional.
Example Projects
Examples of projects from past years
Outstanding Projects
- POV - DAVIC picTronics
- Ryobo - Computer Vision & Object Following
- Plug & Play ChatGPT
- VENDING MACHINE
Grading
Part | Deadline | Points |
---|---|---|
Documentation Milestone | Lab 9 | 1p |
Hardware Milestone | Lab 11 | 1p |
Software Milestone | Lab 12 | 1p |
PM Faire | TBD | 2p |
Total | 5p |
F.A.Q
Q: Can I use another programming language, not Rust?
A: No, the main focus of the project is to learn to work with microcontrollers using Rust.
Q: Can I use a different framework than embassy-rs?
A: Yes, we suggest taking a look at RTIC or Tock.
Q: What if the PCB arrives after the hardware milestone?
A: You will only present the diagram for the hardware part and if there is a prototype using breadboard, but at the end of the project you must necessarily have the PCB printed and functional.
Footnotes
-
Some function of this board, like WiFi, might not be supported in Rust. ↩
-
ESP32 provides its own Rust SDK described in the The Rust on ESP Book. ↩