กลับไปหน้ารวมไฟล์
piano-robot-5c17a3.md

Abstract

A piano robot or automated piano, in general, is a robot that controls piano instrument keys automatically. We will need to use a range of hardware tools, such as solenoids, to complete this project, as well as develop a specific Java software interface for it. The inspiration to create a robot that could play the piano by itself was when there was this beautiful instrument sitting idle in public places without anyone playing it. After conducting a few searches on comparable projects on this topic, there were some drawbacks to the existing piano robot. The majority of them either did not operate successfully because they were simple piano robots or because they were too slow to perform famous fast piano music, also having an overheating problem. Last but not least, they were costly projects. There is a noticeable gap between comparable projects and our intended goal to achieve since our objectives were to perform masterpieces on the piano quickly and with accuracy. Avoid committing the same errors that others made in their projects. As a result by utilizing the robot design process and computer engineering skills to implement multiple parallel connections and the use of 65 solenoids that can push and also work with 36 volts, as well as many experiments and practical tests, fascinating outcomes were obtained because this piano robot has the speed to move 31 solenoids one after the other in only one second using Arduino Mega, which makes it faster than the world record by fastest pianist hitting the piano keys. In conclusion, the new piano robot is faster, cheaper, and more reliable as compared with the ones available in the literature.

"for more information on this project, look at the PDF file ! "


🛠️ เจาะลึกเบื้องหลังการทำงาน (Deep Dive / Technical Analysis)

Playing purely digital audio through a buzzer is easy. The PIANO-ROBOT project takes a drastically different approach: it translates digital MIDI data into physical kinetic energy. It uses precise robotic actuation to press the heavy, weighted keys of an actual acoustic piano, forcing the programmer to master servo kinematics and rapid mechanical deceleration.

Analyzing the MIDI to Kinetic Pipeline

The robot does not "listen" to music; it reads sheet music translated into data.

  1. The Arduino receives a MIDI (Musical Instrument Digital Interface) file payload over Serial or an SD card.
  2. MIDI data looks like: Note_On, Pitch: 60 (Middle C), Velocity: 100.
  3. The X-Axis (Positioning): A massive NEMA 17 Stepper Motor runs the robotic armature heavily left or right along a strict aluminum rail. The Arduino calculates: Pitch 60 = Position 450mm. The stepper motor grinds the arm to that exact location over the correct key.
  4. The Z-Axis (Striking): A high-torque MG996R Servo or a Push-Pull Solenoid acts as the robotic finger. If the MIDI "Velocity" (Volume) is 100, the actuator violently slams downward into the key. If the velocity is 20, the actuator gently depresses the key!

Tackling Mechanical Latency

The hardest programming challenge is the physical speed of the robot.

  • If a song requires hitting a low 'C' and then instantly hitting a high 'C', the stepper motor might take 1.5 seconds to travel across the keyboard. The song will fall entirely out of rhythm.
  • The Solution: An advanced PIANO-ROBOT does not use one arm. It uses a Multiplexed Actuator Array. You mount 12 small solenoids directly over 12 keys. The Arduino simply fires the correct solenoid instantly via heavy-duty TIP120 transistors, ensuring flawless microsecond timing!

Robotics Component List

  • Arduino Mega: Necessary for processing massive multidimensional arrays and driving multiple actuators.
  • 12V Push-Pull Solenoids (The absolute best choice for fast, percussive piano key striking).
  • TIP120 Darlington Transistors or MOSFETs to drive the high-current solenoids.
  • Heavy Aluminum Extrusion (2020 layout) to build the overhead gantry.

ข้อมูล Frontmatter ดั้งเดิม

title: "PIANO-ROBOT"
description: "A piano robot, in general, is a robot that controls piano instrument keys automatically. We will need to use a range of hardware tools, such as solenoids, to complete this project, as well as develop a specific Java software interface for it. The new piano robot speed tests prove some interesting records in the world. Since according to guinnessworldrecords.com on 4 March 2017 in Portugal The record for the most piano notes played in a minute has just been Wrecked by someone called “Domingos-Antonio Gomes” by hitting only one of the piano keys with two fingers 824 times, In one minute, Which means 13.7 per second. However, we have tested our piano robot speed, for only repeating two beside selenoids. By setting the delay time to 38 which means 0.038 sec to make the solenoid ON, then if we divide one second by 0.038 sec it equals 26.31 times playing the piano keys in one second, if we calculate it for one minute it will be 1578 times playing the piano keys. This is a record for only plying two keys. Later we decided to do another test by decreasing the delay time to 32, but this time we used for-loop inside the Arduino IDE The result will be dividing one second by 0.032 sec and it is equal to 31.25-time playing the piano keys one after the other in only one second, multiply it by 60 it will be 1875 times hitting the piano keys in one minute.\n\"for more information on this project, look at the PDF file !"
author: "pairaw-barham"
category: "Audio & Sound"
tags:
  - "Audio"
  - "Embedded"
  - "Music"
views: 3598
likes: 1
price: 299
difficulty: "Intermediate"
components:
  - "2x 4-Line to 16-Line Decoder"
  - "12x Breadboard 100x160"
  - "65x 1 relay module 5 Vdc 10A (assembled)"
  - "65x Solenoid JF-0530B"
  - "6x fan for cooling system"
  - "1x jumper wires for arduino"
  - "1x Power supply 24V/10A"
  - "1x Knowledge on operating your computer and the Arduino IDE"
  - "1x  Arduino mega"
  - "1x Power supply 12V/10A"
tools: []
apps:
  - "1x Swing framework"
  - "1x Online Java Program"
  - "1x Jserialcomm library"
downloadableFiles:
  - "https://projects.arduinocontent.cc/3c3e2564-6ac1-46e0-9361-f7e0cc05f36c.txt"
documentationLinks: []
passwordHash: "c878ba2b17163a58abc106bbea56bb69d1a5af57a085455cc91a7ce8bb32abf5"
encryptedPayload: "U2FsdGVkX1+ACi/AGSHqJR7tNbrxKhqCHtAs4c12KEoFyGqojeOwRaSbB9+lVSCMrAD3TlJ0UJ2flKYtV2uIIeKb7+Yn4kXNeSRlHXSt37kD9/jzLszp3irr34iYw37O8s65wigXqzgEbfOfOMHePJ74zJAYlc4uccvRAN4SjzA="
seoDescription: "PIANO-ROBOT using Arduino & Solenoids to play 1875 notes/min. Breaking records with a custom Java interface and speed tests using for-loop."
videoLinks: []
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/piano-robot-5c17a3_cover.jpg"
lang: "en"