You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Updated Project/bogdan.micu2009 with the updates from the past weeks. (#1300)
* Updated the bogdan.micu2009 project page with the KiCad Schematic and Week 8 Log.
* Compressed the SVG Schematic.
* Updated the bogdan.micu2009 project page with the updates from the past weeks.
* Changed the dimension of the 3D box render.
Copy file name to clipboardExpand all lines: website/versioned_docs/version-fils_en/project/2026/bogdan.micu2009/index.md
+49Lines changed: 49 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -129,6 +129,44 @@ The motivation for this project was to create a dedicated, self-contained physic
129
129
3.**USB connectivity** - Dropped the USB-C breakout board idea and switched to using the STM32 User USB port for PC - MCU communication.
130
130
4.**Firmware testing** - Extended the component testing code.
131
131
5.**New issue** - Battery wires need to be soldered before use.
132
+
133
+
### Week 9 (Development)
134
+
135
+
- Started the actual development:
136
+
1.**Testing** - Wrote test code for the display, RTC Module and Rotary Encoder.
137
+
2.**Documentation** - Documented the crates that needed to be added for more security.
138
+
139
+
### Week 10 (Development)
140
+
141
+
- Continued the development process:
142
+
1.**Testing** - Added test modules and helpers for the fingerprint sensor.
143
+
2.**App flow** - Designed a State machine (Locked -> MenuBrowse -> ActionMenu -> ShowTotp) for the main use flow.
144
+
145
+
### Week 11 (Development)
146
+
147
+
- Continued the development process:
148
+
1.**Main** - Finalized the first main prototype, a flow that integrates all sensors and is a skeleton for future improvements.
149
+
2.**Power** - Removed the external battery (after soldering the cables and testing it) as the main power source. Instead, the device will receive power via USB.
150
+
3.**To do** - Improve security, add memory protection and data verification.
151
+
152
+
### Week 12 (Development)
153
+
154
+
- Continued the development process:
155
+
1.**Main** - Implemented memory protection, better security and data verification. Added a host CLI to send data through the terminal to the device.
156
+
2.**3D Design** - Created a 3D Box render to store all of the components, making it a true embedded device.
157
+
3.**To do** - Create a desktop app with GUI for easier usage. Improve overall app flow.
158
+
159
+
### Week 13 (Development)
160
+
161
+
- Continued the development process:
162
+
1.**Desktop App** - Added the desktop app that uses the host to add and update account details on the device.
163
+
2.**3D Print** - Printed the 3D Box and fit the components inside. The middle "floor" had to be removed because the cables did not fit properly.
164
+
3.**To do** - Improve the app flow, add UI animations.
165
+
166
+
### Week 14 (Finishing touches)
167
+
168
+
- Finalized the development process:
169
+
1.**In progress** - Updating the main code.
132
170
133
171
## Hardware
134
172
@@ -166,10 +204,13 @@ The project centres on a NUCLEO-U545RE-Q development board as the microcontrolle
166
204
### Photos
167
205
168
206

207
+

208
+

@@ -201,6 +242,14 @@ The project centres on a NUCLEO-U545RE-Q development board as the microcontrolle
201
242
|[`embedded-hal`](https://crates.io/crates/embedded-hal)| Hardware abstraction traits | Common interface gluing drivers to the Embassy HAL |
202
243
|[`hmac`](https://crates.io/crates/hmac)| HMAC generic implementation | Computes HMAC-SHA1 as required by the TOTP (RFC 6238) algorithm |
203
244
|[`sha1-smol`](https://crates.io/crates/sha1-smol)| Minimal SHA-1 implementation (no-std) | SHA-1 digest used inside HMAC for TOTP |
245
+
|[`aes`](https://crates.io/crates/aes)| Pure Rust Advanced Encryption Standard (AES) | Encrypts and decrypts the password vault stored in the STM32's flash memory |
246
+
|[`cipher`](https://crates.io/crates/cipher)| Traits for cryptographic ciphers | Provides the generic traits required to securely operate the AES cipher |
247
+
|[`zeroize`](https://crates.io/crates/zeroize)| Securely zeros memory | Wipes the plaintext passwords and derived keys from RAM immediately after use to prevent memory-dump attacks |
248
+
|[`heapless`](https://crates.io/crates/heapless)| no_std data structures without dynamic allocation | Manages fixed-capacity buffers for passwords, account lists, and UI strings without needing a heap allocator |
249
+
|[`anyhow`](https://crates.io/crates/anyhow)| Flexible concrete error handling (for desktop app) | Simplifies error propagation and context management across UI events, file operations, and device communication |
250
+
|[`eframe`](https://crates.io/crates/eframe)| Official framework for the egui library | Renders the cross-platform immediate-mode desktop interface for adding, editing, and managing vault entries |
251
+
|[`serialport`](https://crates.io/crates/serialport)| Cross-platform serial port interface | Establishes a serial connection (UART over USB) to securely communicate and sync vault updates with the STM32 device |
252
+
|[`clap`](https://crates.io/crates/clap)| Command Line Argument Parser | Parses arguments, flags, and subcommands for the host CLI tool to manage and sync the hardware vault from the terminal |
0 commit comments