The tone corrector
Your tool to have a right tone EVERYWHERE
Author: Shafiei Armin
GitHub Project Link: link to my github
Description
This device helps users maintain an appropriate speaking volume in different situations. First, the user selects a scenario—like a quiet library or speaking with an elderly loved one who has hearing difficulties. Using its microphone, the system monitors voice volume in real time and gives instant feedback. If the volume fits the setting, it confirms with a positive signal; if not, it gently prompts the user to adjust, at the end of each trial a statistic will be shown for user to see the decible he/she was speaking with.
Motivation
A few months ago, I visited my grandmother and realized her hearing wasn’t what it used to be. Sometimes, I’d speak at my normal volume—unaware she couldn’t hear me—and she’d just smile silently. That’s when I thought: What if there was a gentle reminder to keep my voice just loud enough for her? That brought me to the idea of this project.
Architecture
Main components:
- Raspberry Pico 2W Central processing unit, the brain of the project, Receives Analog Data (from Microphone via ADC), processes the signal and sends output to logs and display.
- Microphone recieves analog electrical signal with air vibrations and transmit it to microprocessor.
- Display Shows visual informations, sent from the microcontroller so the user can observe the results.
- power supply provides electrical energy to the raspberry and the connected components.
Log
Week 28 April - 4 May
In this week I started my documentation. I have been doing research and learned how the decible is calculated after getting the analog outputs from microphone, Unfortunately I must change my microphone because it was broken, so placed an order for new one..
Week 5 - 11 May
This week I worked with my project and fixed the basic function (turning on leds based on your voice and printing db numbers at the display.) I recieved my microphone and approximately calibrated it.( it is not like calibrated microphone but still it wokrs.)
Week 12 - 18 May
Week 19 - 25 May
Hardware
In my project, I have used two Raspberry Pi Pico 2W ( one as a debugger and the other one as the central microcontroller ) , which reads analog audio signals from a MAX9814 microphone module connected to one of its ADC pins . The Pico processes the input to calculate sound intensity in decibels (dB). The results are displayed on a 128x64 SSD1306 OLED display connected via the I²C interface (SDA on GP6, SCL on GP7). To visually indicate sound levels, two LEDs are connected—typically a white LED to GPIO16 and a red LED to GPIO17—turning on based on defined dB thresholds. The entire setup is powered through a standard USB connection, supplying 5V to the board and its peripherals.
Schematics
Bill of Materials
Device | Usage | Price |
---|---|---|
Raspberry Pi Pico W | The microcontroller | 35 RON |
Raspberry Pi Pico W | The debugger | 35 RON |
Max9814 | The microphone | 23 RON |
[0.96" Inch OLED Display] | The display | 8 RON |
[Bread board] | Connecting the components | 10 RON |
[Male-Male wires] | Connecting the components | 15 RON |
Software
Library | Description | Usage |
---|---|---|
embassy-rp | HAL for Raspberry Pi Pico | Used for ADC reading from microphone |
embassy-executor | Async runtime | Runs the main async task loop for sampling |
embassy-time | Timing and delays | Delays between ADC readings and UI updates |
libm | no_std math library | Used for sqrt() and log10() in RMS and dB calculations |
embedded-graphics | Drawing primitives | Renders text and UI elements to OLED screen |
defmt | Lightweight logging framework | Prints decibel values for debugging and calibrating |
Links
...