Digital Touch Piano
A one line project description
info
Author: Oprea Mara Claudia
GitHub Project Link: https://github.com/UPB-PMRust-Students/proiect-mara291
Description
Digital Touch Piano is a "pocket" design for an electric piano which takes input using touch sensors. It includes features such as:
- sensors to play an entire octave
- learning instructions displayed on the screen
- buttons for recording and playing songs
Motivation
Playing piano is one of my hobbies and I always liked the idea of being able to play even in places where I can't bring my piano. I also want to make learning seem easy for people without a music background, so I integrated in my project instructions teaching how to play popular piano songs.
Architecture
Log
Week 5 - 11 May
Week 12 - 18 May
Week 19 - 25 May
Hardware
- Raspberry Pi Pico 2W - the microcontroller, connects all parts together
- MPR121 Capacitive Touch Sensor - has 12 sensors which will be used as piano keys
- Buttons with the following functions:
-> Mode - change screen mode to on (shows instructions) or off (blank)
-> Record - starts recording song
-> Stop - stops recording song
-> Play - play recorded song - LCD screen - shows intstructions how to play
- LED - blinks when notes are played according to instructions
- Buzzer - generates a sound when a key is touched
Schematics
Place your KiCAD schematics here.
Bill of Materials
Device | Usage | Price |
---|---|---|
Raspberry Pi Pico 2W x2 | The microcontroller | 39.66 RON x2 |
MPR121 | Capacitive Touch Sensor | 8.99 RON |
Button x4 | Buttons | 0.36 RON x4 |
LCD module | Instructions screen | 14.99 RON |
Buzzer | Generates sound | 0.99 RON |
Breadboard | Breadboard | 8.99 RON |
Jumper wires | Connection between components | 4.99 RON |
Software
Library | Description | Usage |
---|---|---|
rp-hal | Hardware Abstraction Layer | Used to control GPIO, PWM, I2C.. |
embassy | Asynchronous embedded framework | Used for running assynchronous tasks |
embedded-hal | Generic embedded traits for drivers | Provides interfaces for drivers |
mpr121 | Driver for MPR121 capacitive touch sensor | Detects touch input from piano "keys" |
lcd1602-rs | Driver for LCD | Displays instructions on how to play |
embedded-time | Time abstractions for embedded devices | Helps control timing for note duration |
micromath | sin and cos waves | Used for generating wave samples |