Skip to main content
Version: ACS CC

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

alt text

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

DeviceUsagePrice
Raspberry Pi Pico 2W x2The microcontroller39.66 RON x2
MPR121Capacitive Touch Sensor8.99 RON
Button x4Buttons0.36 RON x4
LCD moduleInstructions screen14.99 RON
BuzzerGenerates sound0.99 RON
BreadboardBreadboard8.99 RON
Jumper wiresConnection between components4.99 RON

Software

LibraryDescriptionUsage
rp-halHardware Abstraction LayerUsed to control GPIO, PWM, I2C..
embassyAsynchronous embedded frameworkUsed for running assynchronous tasks
embedded-halGeneric embedded traits for driversProvides interfaces for drivers
mpr121Driver for MPR121 capacitive touch sensorDetects touch input from piano "keys"
lcd1602-rsDriver for LCDDisplays instructions on how to play
embedded-timeTime abstractions for embedded devicesHelps control timing for note duration
micromathsin and cos wavesUsed for generating wave samples
  1. link
  2. link ...