Optical Currency Identifier
An assistive device that identifies Romanian Lei banknotes using RGB color scanning, mechanical transport, and audio feedback.
Author: Polojan Stefan-Alexandru
GitHub Project Link: https://github.com/UPB-PMRust-Students/fils-project-2026-PolojanStefan
Description
The Optical Currency Identifier is a complex assistive device designed to help visually impaired individuals identify Romanian Lei banknotes. The device automates the process by mechanically pulling the banknote through a slot, scanning its color profile with an RGB sensor, and announcing the value out loud using a speaker.
Motivation
Physical currency remains a vital part of daily life, but it presents a significant accessibility challenge for the visually impaired. While coins have tactile differences, banknotes are extremely difficult to distinguish by touch. This project aims to provide financial independence by combining optical recognition with a mechanical transport system and audio feedback, eliminating the need to rely on another person for verification.
Architecture


The system is divided into four main subsystems coordinated by the RP2350 microcontroller:
- Processing System: Olimex RP2350-PICO2-XXL running bare-metal software written in Rust.
- Portable Power System: A Li-Ion 18650 battery managed by a TP4056 charging module, and an MT3608 step-up converter to ensure stable 5V power for the motor and audio.
- Transport & Detection System: A 28BYJ-48 stepper motor (with ULN2003 driver) for moving the banknote, and a TCST1103 optocoupler to detect when a note is inserted.
- Acquisition & Output System: A TCS34725 RGB sensor for color reading, and a DFR0954 audio module with a Visaton speaker for vocal announcements.
Log
Week 5 - 11 May
Established the project topic, researched the color palettes of Romanian banknotes, and defined the hardware requirements.
Week 12 - 18 May
Acquired the Olimex RP2350-PICO2-XXL board and the TCS34725 RGB sensor. Began initial hardware testing.
Week 19 - 25 May
Hardware
The hardware consists of a main RP2350 processing unit handling I2C communication for sensors, UART for audio playback, and GPIO sequencing for motor control, all powered by a boosted portable Li-Ion circuit.
Schematics
Bill of Materials
| Device | Usage | Price |
|---|---|---|
| Olimex RP2350-PICO2-XXL | The main microcontroller | 50 RON |
| TCS34725 Module | I2C RGB Color Sensor | 35 RON |
| Samsung INR18650-29E | Li-Ion Battery (2750mAh, 3.6V) | 20 RON |
| TP4056 Module | Li-Ion Micro USB battery charging | 5 RON |
| MT3608 Module | Step-up boost converter (raises 3.6V to 5V) | 5 RON |
| 28BYJ-48 + ULN2003 | Stepper motor and driver for note transport | 15 RON |
| DFROBOT DFR0954 | Audio playback module for voice feedback | 30 RON |
| Visaton 2945 | Audio speaker | 15 RON |
| TCST1103 | Optocoupler for note insertion detection | 5 RON |
Software
| Library | Description | Usage |
|---|---|---|
rp235x-hal | Hardware Abstraction Layer | Used to configure clocks, GPIO pins, and I2C/UART hardware on the RP2350 |
cortex-m-rt | ARM Cortex-M runtime | Provides the startup code and critical CPU entry points |
usb-device | Core USB stack | Used to implement native USB device functionality |
usbd-serial | USB CDC implementation | Used for debugging and streaming sensor data to the PC |
embedded-hal | Embedded hardware traits | Provides standard traits for blocking I2C and UART communication |
Links
1.-https://www.youtube.com/watch?v=Fy4IUyWjFX4 2.-https://www.youtube.com/watch?v=zByu_-Q0F7E 3.-