{"id":376,"date":"2025-05-15T21:06:57","date_gmt":"2025-05-16T04:06:57","guid":{"rendered":"http:\/\/elliottjohnson.net\/blog\/?p=376"},"modified":"2025-06-28T21:41:20","modified_gmt":"2025-06-29T04:41:20","slug":"kevs-piano-doorbell","status":"publish","type":"post","link":"http:\/\/elliottjohnson.net\/blog\/kevs-piano-doorbell\/","title":{"rendered":"Kev&#8217;s Piano Doorbell"},"content":{"rendered":"\n<p>At a local bar I met up randomly with an old roommate who told me about a project that he was working on. He came into possession of an older spinet piano with an aluminum harp frame. It was really light weight and he had the idea of hanging it on the wall as an art piece with some back lighting and was looking to make it functional as a doorbell.<\/p>\n\n\n\n<p>This got me excited and we headed over on our bikes to check it out.  It was totally beautiful and really well mounted and framed.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"http:\/\/elliottjohnson.net\/blog\/wp-content\/uploads\/2025\/05\/IMG_20250425_193209.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"1020\" height=\"765\" src=\"http:\/\/elliottjohnson.net\/blog\/wp-content\/uploads\/2025\/05\/IMG_20250425_193209.jpg\" alt=\"\" class=\"wp-image-377\" srcset=\"http:\/\/elliottjohnson.net\/blog\/wp-content\/uploads\/2025\/05\/IMG_20250425_193209.jpg 1020w, http:\/\/elliottjohnson.net\/blog\/wp-content\/uploads\/2025\/05\/IMG_20250425_193209-300x225.jpg 300w, http:\/\/elliottjohnson.net\/blog\/wp-content\/uploads\/2025\/05\/IMG_20250425_193209-768x576.jpg 768w, http:\/\/elliottjohnson.net\/blog\/wp-content\/uploads\/2025\/05\/IMG_20250425_193209-400x300.jpg 400w\" sizes=\"auto, (max-width: 1020px) 100vw, 1020px\" \/><\/a><figcaption class=\"wp-element-caption\">Photo by Kev.<\/figcaption><\/figure>\n\n\n\n<p>Kev had gone one step further and mounted a rail with solenoids aligned to 4 strings he had tuned to the four notes of the Westminster Chimes (think grandfather clock chimes).<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"http:\/\/elliottjohnson.net\/blog\/wp-content\/uploads\/2025\/05\/20250425_160942-scaled.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"461\" src=\"http:\/\/elliottjohnson.net\/blog\/wp-content\/uploads\/2025\/05\/20250425_160942-1024x461.jpg\" alt=\"\" class=\"wp-image-378\" srcset=\"http:\/\/elliottjohnson.net\/blog\/wp-content\/uploads\/2025\/05\/20250425_160942-1024x461.jpg 1024w, http:\/\/elliottjohnson.net\/blog\/wp-content\/uploads\/2025\/05\/20250425_160942-300x135.jpg 300w, http:\/\/elliottjohnson.net\/blog\/wp-content\/uploads\/2025\/05\/20250425_160942-768x346.jpg 768w, http:\/\/elliottjohnson.net\/blog\/wp-content\/uploads\/2025\/05\/20250425_160942-1536x692.jpg 1536w, http:\/\/elliottjohnson.net\/blog\/wp-content\/uploads\/2025\/05\/20250425_160942-2048x922.jpg 2048w, http:\/\/elliottjohnson.net\/blog\/wp-content\/uploads\/2025\/05\/20250425_160942-500x225.jpg 500w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p>We had a great afternoon catching up and being blown away by how cool this project was, I offered to help out. I had an <a href=\"https:\/\/en.wikipedia.org\/wiki\/Arduino_Uno\" data-type=\"link\" data-id=\"https:\/\/en.wikipedia.org\/wiki\/Arduino_Uno\">Arduino Uno <\/a>that I&#8217;d gotten as a birthday gift many years ago and never had a worthy project to use it on. This seemed perfect.<\/p>\n\n\n\n<p>I downloaded the <a href=\"https:\/\/www.arduino.cc\/en\/software\/\" data-type=\"link\" data-id=\"https:\/\/www.arduino.cc\/en\/software\/\">Arduino IDE for Linux <\/a>as well as <a href=\"https:\/\/simulide.com\/p\/\" data-type=\"link\" data-id=\"https:\/\/simulide.com\/p\/\">SimuIDE<\/a> to test out code. It was pretty straightforward to make up a project in the IDE, code up the basics for the doorbell, and test in the simulator. You can find the code for this project at <a href=\"https:\/\/github.com\/elliottjohnson\/kevDoorBell.git\" data-type=\"link\" data-id=\"https:\/\/github.com\/elliottjohnson\/kevDoorBell.git\">KevDoorBell<\/a> on github.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"http:\/\/elliottjohnson.net\/blog\/wp-content\/uploads\/2025\/05\/Screenshot-from-2025-05-15-20-13-07.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"617\" src=\"http:\/\/elliottjohnson.net\/blog\/wp-content\/uploads\/2025\/05\/Screenshot-from-2025-05-15-20-13-07-1024x617.png\" alt=\"\" class=\"wp-image-382\" srcset=\"http:\/\/elliottjohnson.net\/blog\/wp-content\/uploads\/2025\/05\/Screenshot-from-2025-05-15-20-13-07-1024x617.png 1024w, http:\/\/elliottjohnson.net\/blog\/wp-content\/uploads\/2025\/05\/Screenshot-from-2025-05-15-20-13-07-300x181.png 300w, http:\/\/elliottjohnson.net\/blog\/wp-content\/uploads\/2025\/05\/Screenshot-from-2025-05-15-20-13-07-768x463.png 768w, http:\/\/elliottjohnson.net\/blog\/wp-content\/uploads\/2025\/05\/Screenshot-from-2025-05-15-20-13-07-498x300.png 498w, http:\/\/elliottjohnson.net\/blog\/wp-content\/uploads\/2025\/05\/Screenshot-from-2025-05-15-20-13-07.png 1440w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p>In the simulator I used some simple LEDs to represent each note, G#\/F#\/E\/B. They would flicker on and off with the 10ms note trigger duration. For the actual physical doorbell, this trigger would be actuating a solenoid. To do that, I&#8217;d need to look at methods of using the 5v signal off of the Arduino&#8217;s output pins to drive the 12v solenoids we had.<\/p>\n\n\n\n<p>To control the solenoid&#8217;s it was easiest to follow the recommendations by <a href=\"https:\/\/www.makerguides.com\/control-a-solenoid-with-arduino\/\" data-type=\"link\" data-id=\"https:\/\/www.makerguides.com\/control-a-solenoid-with-arduino\/\">MakerGuides<\/a> to use a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Darlington_transistor\" data-type=\"link\" data-id=\"https:\/\/en.wikipedia.org\/wiki\/Darlington_transistor\">Darlington pair transistor<\/a> to control the flow of 12v. Each solenoid would need a <a href=\"https:\/\/www.onsemi.com\/pdf\/datasheet\/tip120-d.pdf\" data-type=\"link\" data-id=\"https:\/\/www.onsemi.com\/pdf\/datasheet\/tip120-d.pdf\">TIP120<\/a> transistor, a <a href=\"https:\/\/www.onsemi.com\/pdf\/datasheet\/1n4001-d.pdf\" data-type=\"link\" data-id=\"https:\/\/www.onsemi.com\/pdf\/datasheet\/1n4001-d.pdf\">1N4002<\/a> <a href=\"https:\/\/en.wikipedia.org\/wiki\/Flyback_diode\" data-type=\"link\" data-id=\"https:\/\/en.wikipedia.org\/wiki\/Flyback_diode\">flyback diode<\/a> (to eliminate inductive voltage spikes from the coil in the solenoid), and 470\u03a9 resistor to adjust the base voltage in a range that limits the max amperage draw from the Arduino and amperage through the transistor. The components were about $25 through <a href=\"https:\/\/www.mouser.com\/\" data-type=\"link\" data-id=\"https:\/\/www.mouser.com\/\">Mouser<\/a> including a small project box and protoboard for soldering everything together.<\/p>\n\n\n\n<p>I drew everything out in Kicad while we were waiting on parts and it seemed pretty straightforward<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"http:\/\/elliottjohnson.net\/blog\/wp-content\/uploads\/2025\/05\/Screenshot-from-2025-05-15-20-50-03.png\"><img loading=\"lazy\" decoding=\"async\" width=\"938\" height=\"411\" src=\"http:\/\/elliottjohnson.net\/blog\/wp-content\/uploads\/2025\/05\/Screenshot-from-2025-05-15-20-50-03.png\" alt=\"\" class=\"wp-image-383\" srcset=\"http:\/\/elliottjohnson.net\/blog\/wp-content\/uploads\/2025\/05\/Screenshot-from-2025-05-15-20-50-03.png 938w, http:\/\/elliottjohnson.net\/blog\/wp-content\/uploads\/2025\/05\/Screenshot-from-2025-05-15-20-50-03-300x131.png 300w, http:\/\/elliottjohnson.net\/blog\/wp-content\/uploads\/2025\/05\/Screenshot-from-2025-05-15-20-50-03-768x337.png 768w, http:\/\/elliottjohnson.net\/blog\/wp-content\/uploads\/2025\/05\/Screenshot-from-2025-05-15-20-50-03-500x219.png 500w\" sizes=\"auto, (max-width: 938px) 100vw, 938px\" \/><\/a><\/figure>\n\n\n\n<p>With the ordered parts in hand, we were able to breadboard up the circuit and test with an old 12v power supply. Everything tested fine via multimeter when triggering the doorbell, but I had to head home. Kev soldered up longer wires to the mounted solenoids and was able to get our breadboard setup playing the chimes for the first time.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"http:\/\/elliottjohnson.net\/blog\/wp-content\/uploads\/2025\/05\/20250425_1558221.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"920\" height=\"1024\" src=\"http:\/\/elliottjohnson.net\/blog\/wp-content\/uploads\/2025\/05\/20250425_1558221-920x1024.jpg\" alt=\"\" class=\"wp-image-379\" srcset=\"http:\/\/elliottjohnson.net\/blog\/wp-content\/uploads\/2025\/05\/20250425_1558221-920x1024.jpg 920w, http:\/\/elliottjohnson.net\/blog\/wp-content\/uploads\/2025\/05\/20250425_1558221-269x300.jpg 269w, http:\/\/elliottjohnson.net\/blog\/wp-content\/uploads\/2025\/05\/20250425_1558221-768x855.jpg 768w, http:\/\/elliottjohnson.net\/blog\/wp-content\/uploads\/2025\/05\/20250425_1558221-1380x1536.jpg 1380w, http:\/\/elliottjohnson.net\/blog\/wp-content\/uploads\/2025\/05\/20250425_1558221.jpg 1816w\" sizes=\"auto, (max-width: 920px) 100vw, 920px\" \/><\/a><\/figure>\n\n\n\n<p>For the doorbell switch, initially I was using the +5v pin to raise the pin, but with some physical testing we found noise was creating false triggers. I was able to move to using the Arduino <a href=\"https:\/\/docs.arduino.cc\/tutorials\/generic\/digital-input-pullup\/\" data-type=\"link\" data-id=\"https:\/\/docs.arduino.cc\/tutorials\/generic\/digital-input-pullup\/\">internal pullup resistors<\/a> and swapping the trigger logic to eliminate the problem.<\/p>\n\n\n\n<p>Coming back over on another evening we ate delicious homemade burgers, pulled the breadboard components, made a layout for the protoboard and soldered everything up. I had a tight time window, but we got everything together. This was my first time working on protoboard and it took some real forethought to get the layout right to have a tight footprint and be easy to solder.<\/p>\n\n\n\n<p>The next steps are to wiring up the doorbell part to his door and doing some final testing should be all that&#8217;s left to do. Looking forward to wrapping up such a cool project and posting the final results here.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>At a local bar I met up randomly with an old roommate who told me about a project that he was working on. He came into possession of an older spinet piano with an aluminum harp frame. It was really &hellip; <a href=\"http:\/\/elliottjohnson.net\/blog\/kevs-piano-doorbell\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":4,"footnotes":""},"categories":[11],"tags":[],"class_list":["post-376","post","type-post","status-publish","format-standard","hentry","category-personal"],"_links":{"self":[{"href":"http:\/\/elliottjohnson.net\/blog\/wp-json\/wp\/v2\/posts\/376","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/elliottjohnson.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/elliottjohnson.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/elliottjohnson.net\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/elliottjohnson.net\/blog\/wp-json\/wp\/v2\/comments?post=376"}],"version-history":[{"count":9,"href":"http:\/\/elliottjohnson.net\/blog\/wp-json\/wp\/v2\/posts\/376\/revisions"}],"predecessor-version":[{"id":407,"href":"http:\/\/elliottjohnson.net\/blog\/wp-json\/wp\/v2\/posts\/376\/revisions\/407"}],"wp:attachment":[{"href":"http:\/\/elliottjohnson.net\/blog\/wp-json\/wp\/v2\/media?parent=376"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/elliottjohnson.net\/blog\/wp-json\/wp\/v2\/categories?post=376"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/elliottjohnson.net\/blog\/wp-json\/wp\/v2\/tags?post=376"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}