Skip to content

Commit 3eb7163

Browse files
authored
Updated the bogdan.micu2009 project page with the KiCad Schematic and week 8 Log. (#764)
* Updated the bogdan.micu2009 project page with the KiCad Schematic and Week 8 Log. * Compressed the SVG Schematic.
1 parent 18cda72 commit 3eb7163

2 files changed

Lines changed: 52 additions & 41 deletions

File tree

website/versioned_docs/version-fils_en/project/2026/bogdan.micu2009/AIO_BiometricHardwareSecurityKey_Micu_Bogdan.svg

Lines changed: 1 addition & 0 deletions
Loading

website/versioned_docs/version-fils_en/project/2026/bogdan.micu2009/index.md

Lines changed: 51 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ The motivation for this project was to create a dedicated, self-contained physic
2727
+----------------+ +----+----------+----------+-------+ +----------------+
2828
| | |
2929
UART | I2C | GPIO |
30-
(TX/RX) (SDA/SCL) (CLK/DT/SW)
30+
(TX/RX) (SDA/SCK) (CLK/DT/SW)
3131
| | |
3232
v | v
3333
+---------+--+ | +-----+---------+
@@ -59,15 +59,17 @@ The motivation for this project was to create a dedicated, self-contained physic
5959
+--------------------+ +----------------------------+
6060
6161
+--------------------+ +----------------------------+
62-
| AS608 | TX -->| UART RX (pin TBD) |
63-
| Fingerprint | | |
64-
| Sensor | RX <--+| UART TX (pin TBD) |
62+
| AS608 | VCC -->| 3V3 |
63+
| Fingerprint | VA -->| 3V3 |
64+
| Sensor | GND -->| GND |
65+
| | TX -->| UART RX (PA10) |
66+
| | RX <--+| UART TX (PA9) |
6567
+--------------------+ +----------------------------+
6668
(* sensor arrived with pre-crimped connector; requires adapter before wiring)
6769
6870
+--------------------+ +--------------------+
6971
| SH1106 | SDA +-----------------------------------+| DS3231 |
70-
| OLED Display +---->| I2C Bus PB7 (SDA) / PB6 (SCL) |<+ RTC Module |
72+
| OLED Display +---->| I2C Bus - PB7 (SDA) / PB6 (SCL) |<+ RTC Module |
7173
| (addr: 0x3C) | SCL | shared by both devices || (addr: 0x68) |
7274
| +---->| || |
7375
+--------------------+ +------------------+----------------+ +--------------------+
@@ -76,18 +78,18 @@ The motivation for this project was to create a dedicated, self-contained physic
7678
NUCLEO I2C peripheral
7779
7880
+--------------------+ +----------------------------+
79-
| EC11 Rotary | CLK -->| PA0 GPIO input |
81+
| EC11 Rotary | CLK -->| PA0 - GPIO input |
8082
| Encoder | | |
81-
| + Push-Button | DT -->| PA1 GPIO input |
83+
| + Push-Button | DT -->| PA1 - GPIO input |
8284
| | | |
83-
| | SW -->| PA4 GPIO input |
85+
| | SW -->| PA4 - GPIO input |
8486
+--------------------+ +----------------------------+
8587
86-
+--------------------+ +----------------------------+
87-
| USB | D− -->| PA11 — USB D− |
88-
| (to Host PC) | | |
89-
| | D+ -->| PA12 — USB D+ |
90-
+--------------------+ +----------------------------+
88+
+-----------------------------+
89+
| STM32 User USB Port |
90+
| (to Host PC; on-board) |
91+
| No external D+/D− wiring |
92+
+-----------------------------+
9193
```
9294

9395
## Log
@@ -104,75 +106,83 @@ The motivation for this project was to create a dedicated, self-contained physic
104106
- Compared alternatives for each component (e.g. internal RTC vs DS3231 external module, I2C vs SPI display).
105107
- Placed purchase orders for all components.
106108

107-
### Week 6 (Components Arrive Initial Testing)
109+
### Week 6 (Components Arrive - Initial Testing)
108110

109111
- All components arrived; began a first testing phase powered via USB only (no battery yet).
110112
- Verified I2C bus connectivity for the SH1106 OLED and DS3231 RTC on PB7 (SDA) and PB6 (SCL).
111113
- Verified GPIO connectivity for the EC11 rotary encoder on PA0 (CLK), PA1 (DT), and PA4 (SW).
112114

113-
### Week 7 (Extended Testing Known Issues)
115+
### Week 7 (Extended Testing - Known Issues)
114116

115117
- Continued testing and identified the following issues to address before final integration:
116-
1. **Fingerprint sensor wiring** The AS608 module arrived with a pre-crimped connector head; the wires cannot be inserted directly into a breadboard. A connector adapter or manual re-crimping is required before it can be wired to the MCU.
117-
2. **MCU power source** To run from the 9V Li-ion battery instead of USB, the NUCLEO onboard jumper must be moved from the `STLK` position to `VIN 5V`.
118-
3. **External RTC** Switching to the DS3231 external RTC module to ensure accurate timestamps at all times even when the device is switched off or loses power.
119-
4. *(Optional)* **External USB-C module** Soldering an external USB-C breakout would allow cleaner cable management and a more polished physical build.
118+
1. **Fingerprint sensor wiring** - The AS608 module arrived with a pre-crimped connector head; the wires cannot be inserted directly into a breadboard. A connector adapter or manual re-crimping is required before it can be wired to the MCU.
119+
2. **MCU power source** - To run from the 9V Li-ion battery instead of USB, the NUCLEO onboard jumper must be moved from the `STLK` position to `VIN 5V`.
120+
3. **External RTC** - Switching to the DS3231 external RTC module to ensure accurate timestamps at all times even when the device is switched off or loses power.
121+
4. *(Optional)* **External USB-C module** - Soldering an external USB-C breakout would allow cleaner cable management and a more polished physical build.
120122
5. **External EEPROM Module** - Exploring the possibility of not using the internal flash, and instead adding an external EEPROM Module to store the hashed passwords. [Link_OptimusDigital](https://www.optimusdigital.ro/en/memories/632-modul-eeprom-at24c256.html?srsltid=AfmBOorouiIrK-KwPHIZN0sNcZ-w4__qtdYFp7VfwaqIHPfRR86A0zXu)
121123

124+
### Week 8 (Integration Progress)
125+
126+
- Continued the first integration steps and made the following updates:
127+
1. **Fingerprint sensor wiring** - Soldered the AS608 wires.
128+
2. **External EEPROM module** - Purchased an EEPROM module, but decided to use the internal flash as the main storage option and keep the EEPROM as a backup.
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+
4. **Firmware testing** - Extended the component testing code.
131+
5. **New issue** - Battery wires need to be soldered before use.
132+
122133
## Hardware
123134

124135
The project centres on a NUCLEO-U545RE-Q development board as the microcontroller. An AS608 optical fingerprint sensor handles biometric authentication over UART. A 1.3" SH1106 OLED display and a DS3231 RTC module share the I2C bus, the RTC keeps accurate time for TOTP generation even while unplugged, backed by a coin-cell battery. An EC11 rotary encoder with integrated push-button provides all navigation input via GPIO. A 9V 3700 mWh Li-ion rechargeable battery makes the device fully portable. Everything is wired on a breadboard with jumper wires and supporting passives. An optional future goal is implementing ARM TrustZone to secure cryptographic operations and password storage.
125136

126-
**NUCLEO-U545RE-Q (Central Hub)** Runs the async Rust firmware (embassy-stm32). Stores password strings and TOTP secret seeds in flash, orchestrates all peripherals, computes HMAC-SHA1 hashes, and drives the USB HID stack.
137+
**NUCLEO-U545RE-Q (Central Hub)** - Runs the async Rust firmware (embassy-stm32). Stores password strings and TOTP secret seeds in flash, orchestrates all peripherals, computes HMAC-SHA1 hashes, and drives the USB HID stack.
127138

128-
**AS608 Fingerprint Sensor** Connected over UART. The device stays in a locked idle state until a recognised fingerprint is presented. On a match, it signals the MCU to unlock the vault.
139+
**AS608 Fingerprint Sensor** - Connected over UART. The device stays in a locked idle state until a recognised fingerprint is presented. On a match, it signals the MCU to unlock the vault.
129140
- *Connection*: UART TX/RX to USART peripheral on the NUCLEO board.
130141

131-
**SH1106 OLED Display (1.3")** Shows the lock screen, the scrollable account list, and live TOTP codes.
142+
**SH1106 OLED Display (1.3")** - Shows the lock screen, the scrollable account list, and live TOTP codes.
132143
- *Connection*: I2C (SDA/SCL) shared bus with the RTC module.
133144

134-
**DS3231 Real-Time Clock** Provides a precise Unix timestamp at all times, even when the device is unplugged, via its onboard coin-cell backup.
145+
**DS3231 Real-Time Clock** - Provides a precise Unix timestamp at all times, even when the device is unplugged, via its onboard coin-cell backup.
135146
- *Connection*: I2C (SDA/SCL) shared bus with the OLED display.
136147

137-
**EC11 Rotary Encoder (with push-button)** The sole physical input. Rotating scrolls the account menu; pressing selects an account to either inject a password or display a TOTP code.
148+
**EC11 Rotary Encoder (with push-button)** - The sole physical input. Rotating scrolls the account menu; pressing selects an account to either inject a password or display a TOTP code.
138149
- *Connection*: Three GPIO pins (CLK, DT, SW).
139150

140-
**USB HID (to host PC)** The NUCLEO's USB port enumerates as a composite HID keyboard device. When a password injection is triggered, the firmware sends keystrokes directly to the connected computer.
151+
**USB HID (to host PC)** - The NUCLEO's USB port enumerates as a composite HID keyboard device. When a password injection is triggered, the firmware sends keystrokes directly to the connected computer.
141152

142153
### Pin Assignments
143154

144155
| Pin | Signal | Peripheral |
145156
|------|-------------------------------|-------------------------------------------|
146-
| PA0 | GPIO input — CLK | EC11 Rotary Encoder |
147-
| PA1 | GPIO input — DT | EC11 Rotary Encoder |
148-
| PA4 | GPIO input — SW (push-button) | EC11 Rotary Encoder |
149-
| PA11 | USB D− | USB HID (to host PC) |
150-
| PA12 | USB D+ | USB HID (to host PC) |
157+
| PA0 | GPIO input - CLK | EC11 Rotary Encoder |
158+
| PA1 | GPIO input - DT | EC11 Rotary Encoder |
159+
| PA4 | GPIO input - SW (push-button) | EC11 Rotary Encoder |
160+
| - | USB (STM32 User USB port) | USB HID (to host PC; on-board connector) |
151161
| PB6 | I2C SCL | SH1106 OLED + DS3231 RTC (shared I2C bus) |
152162
| PB7 | I2C SDA | SH1106 OLED + DS3231 RTC (shared I2C bus) |
153-
| TBD | UART TX | AS608 Fingerprint Sensor |
154-
| TBD | UART RX | AS608 Fingerprint Sensor |
163+
| PA9 | UART TX | AS608 Fingerprint Sensor |
164+
| PA10 | UART RX | AS608 Fingerprint Sensor |
155165

156166
### Photos
157167

158-
![Hardware setup NUCLEO-U545RE-Q with OLED display, Rotary Encoder, DS3231 RTC module, and breadboard](hardware.webp)
168+
![Hardware setup - NUCLEO-U545RE-Q with OLED display, Rotary Encoder, DS3231 RTC module, and breadboard](hardware.webp)
159169

160170
### Schematics
161171

162-
<!-- KiCAD schematic in SVG format will be placed here -->
172+
![Schematics](./AIO_BiometricHardwareSecurityKey_Micu_Bogdan.svg)
163173

164174
## Bill of Materials
165175

166176
| Device | Usage | Price |
167177
|--------|-------|-------|
168-
| [NUCLEO-U545RE-Q](https://ro.mouser.com/ProductDetail/STMicroelectronics/NUCLEO-U545RE-Q?qs=mELouGlnn3cp3Tn45zRmFA%3D%3D) | Main microcontroller runs Embassy/Rust firmware, stores credentials, computes TOTP | 125 RON |
178+
| [NUCLEO-U545RE-Q](https://ro.mouser.com/ProductDetail/STMicroelectronics/NUCLEO-U545RE-Q?qs=mELouGlnn3cp3Tn45zRmFA%3D%3D) | Main microcontroller - runs Embassy/Rust firmware, stores credentials, computes TOTP | 125 RON |
169179
| [AS608 Optical Fingerprint Sensor](https://www.optimusdigital.ro/en/optical-sensors/12995-as608-optical-fingerprint-sensor-fingerprint-module.html?search_query=fingerprint&results=3) | Biometric authentication over UART | 70 RON |
170180
| [1.3" SH1106 OLED Display](https://www.emag.ro/afisaj-oled-sh1106-oled-i2c-3-5v-35-4-x-33-5-x-4-3-mm-alb-afisaj-lcd-clar-compatibil-cu-placi-arduino-ao10/pd/DF3FC1YBM/?ref=history-shopping_481143298_158626_1) | Displays lock screen, account menu, and TOTP codes over I2C | 43 RON |
171181
| [DS3231 Real-Time Clock Module](https://www.optimusdigital.ro/en/others/12402-ds3231-real-time-clock-module.html?search_query=DS3231&results=6) | Provides accurate Unix timestamps for TOTP over I2C | 16 RON |
172182
| [EC11 Rotary Encoder with push-button](https://www.emag.ro/modul-de-codare-rotativ-ky-040-ai672-s106/pd/DJBVFDMBM/?ref=history-shopping_481358403_38837_2) | Scroll and select accounts via GPIO | 21 RON |
173183
| [9V 3700 mWh Li-ion Rechargeable Battery](https://www.emag.ro/baterie-nuoxing-9v-li-ion-3700mwh-ncarcare-rapida-type-c-verde-1-buc-stormtime064/pd/DYVW9CYBM/?ref=history-shopping_481358403_190246_1) | Portable power source | 57 RON |
174-
| Breadboard, jumper wires, battery cables, resistors, coin-cell batteries, USB-C module & extras | Prototyping and connectivity | 86 RON |
175-
| **Total** | | **418 RON** |
184+
| Breadboard, jumper wires, battery cables, resistors, coin-cell batteries, USB-C module & extras | Prototyping and connectivity | 95 RON |
185+
| **Total** | | **427 RON** |
176186

177187
## Software
178188

@@ -194,11 +204,11 @@ The project centres on a NUCLEO-U545RE-Q development board as the microcontrolle
194204

195205
## Links
196206

197-
1. [TOTP Algorithm RFC 6238](https://datatracker.ietf.org/doc/html/rfc6238)
198-
2. [HOTP Algorithm RFC 4226](https://datatracker.ietf.org/doc/html/rfc4226)
199-
3. [Embassy async embedded Rust framework](https://embassy.dev)
207+
1. [TOTP Algorithm - RFC 6238](https://datatracker.ietf.org/doc/html/rfc6238)
208+
2. [HOTP Algorithm - RFC 4226](https://datatracker.ietf.org/doc/html/rfc4226)
209+
3. [Embassy - async embedded Rust framework](https://embassy.dev)
200210
4. [AS608 Fingerprint Sensor Datasheet](https://handsontec.com/dataspecs/sensor/AS608%20Finger%20print%20Sensor.pdf)
201-
5. [AS608 Example with YT Video] (https://learn.adafruit.com/adafruit-optical-fingerprint-sensor)
211+
5. [AS608 Example with YT Video](https://learn.adafruit.com/adafruit-optical-fingerprint-sensor)
202212
6. [SH1106 Controller Datasheet](https://www.displayfuture.com/Display/datasheet/controller/SH1106.pdf)
203213
7. [DS3231 RTC Module Datasheet](https://www.analog.com/media/en/technical-documentation/data-sheets/DS3231.pdf)
204214
8. [EC11 Rotary Encoder Datasheet](https://tech.alpsalpine.com/e/products/detail/EC11E15244G1/)

0 commit comments

Comments
 (0)