{"id":959,"date":"2013-05-27T22:06:17","date_gmt":"2013-05-27T21:06:17","guid":{"rendered":"https:\/\/andyland.info\/wordpress\/?p=959"},"modified":"2018-09-16T16:25:56","modified_gmt":"2018-09-16T15:25:56","slug":"easy-button-usb-hack","status":"publish","type":"post","link":"https:\/\/andyland.info\/wordpress\/easy-button-usb-hack\/","title":{"rendered":"Easy Button USB hack"},"content":{"rendered":"<p>I guess everybody knows the Staples Easy Button.<\/p>\n<p>[tube]https:\/\/www.youtube.com\/watch?v=lkaAFObuUrA[\/tube]<\/p>\n<p>There are numerous hacks out in the wild adding some weird functionality to it. For quite some time I wanted to something similar. This is the documentation of how to make the Easy-Button a MIDI-USB device based on Atmega328 (Arduino).<\/p>\n<p>Many hacks have in common that they are either relatively expensive (like&#8230;involving something with a dedicated teensy device) or rather ugly (due to holes just being sawed into the Easy Button&#8217;s case).<\/p>\n<p>My first goal was to build a device that automatically identifies itself as an HID-compliant USB-MIDI device and gives simple MIDI functionality by using an Atmega328 and V-USB. In order to achieve a correct enumeration and to get a useful starting point I used the demo-versionof <a href=\"http:\/\/www.usblyzer.com\/\" target=\"_blank\" rel=\"noopener\">USBLyzer<\/a> to get the necessary data from my KORG nanoKey and altered them in various places (Vendor ID etc..). (You will remember this one later.)<\/p>\n<p>When the button is pressed a &#8216;MIDI Note ON&#8217; signal is sent. Upon release it sends a &#8216;Note OFF&#8217; message.<\/p>\n<p>The second goal was to give it a clean overall look.<\/p>\n<p>Let&#8217;s see&#8230;<\/p>\n<p>This is the Staples Easy Button with the cap and the clicker already being removed (which makes it just a pretty unidentifiable bunch of electronics and some plastic)<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" src=\"https:\/\/www.andyland.info\/grafiken\/easybutton\/easybutton_001.JPG\" alt=\"\" width=\"576\" height=\"432\" \/><\/p>\n<p>we don&#8217;t need the speaker so it will be gone soon&#8230;.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" src=\"https:\/\/www.andyland.info\/grafiken\/easybutton\/easybutton_003.JPG\" alt=\"\" width=\"576\" height=\"432\" \/><\/p>\n<p>The black line shows how deep the cap goes when it&#8217;s pressed.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" src=\"https:\/\/www.andyland.info\/grafiken\/easybutton\/easybutton_004.JPG\" alt=\"\" width=\"576\" height=\"432\" \/><\/p>\n<p>This is the spot where the USB connector will be placed<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" src=\"https:\/\/www.andyland.info\/grafiken\/easybutton\/easybutton_006.JPG\" alt=\"\" width=\"576\" height=\"432\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" src=\"https:\/\/www.andyland.info\/grafiken\/easybutton\/easybutton_007.JPG\" alt=\"\" width=\"576\" height=\"432\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" src=\"https:\/\/www.andyland.info\/grafiken\/easybutton\/easybutton_008.JPG\" alt=\"\" width=\"576\" height=\"432\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" src=\"https:\/\/www.andyland.info\/grafiken\/easybutton\/easybutton_009.JPG\" alt=\"\" width=\"576\" height=\"432\" \/><\/p>\n<p>I might not be the best craftsman around (already mentioned that once before) but after some filing this one looks pretty decent:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" src=\"https:\/\/www.andyland.info\/grafiken\/easybutton\/easybutton_010.JPG\" alt=\"\" width=\"576\" height=\"432\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" src=\"https:\/\/www.andyland.info\/grafiken\/easybutton\/easybutton_011.JPG\" alt=\"\" width=\"576\" height=\"432\" \/><\/p>\n<p>The plastic on the inside has to be cut as well<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" src=\"https:\/\/www.andyland.info\/grafiken\/easybutton\/easybutton_013.JPG\" alt=\"\" width=\"576\" height=\"432\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.andyland.info\/grafiken\/easybutton\/easybutton_016.JPG\" alt=\"\" width=\"576\" height=\"432\" \/><\/p>\n<p>This DOES look quite well<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" src=\"https:\/\/www.andyland.info\/grafiken\/easybutton\/easybutton_014.JPG\" alt=\"\" width=\"576\" height=\"432\" \/><\/p>\n<p>Now I need to add the circuit board. Due to the speaker being thrown out there is lots of space for that now.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" src=\"https:\/\/www.andyland.info\/grafiken\/easybutton\/easybutton_020.JPG\" alt=\"\" width=\"576\" height=\"432\" \/><\/p>\n<p>The circuit is basically a 1:1 copy of the <a href=\"http:\/\/www.practicalarduino.com\/projects\/virtual-usb-keyboard\" target=\"_blank\" rel=\"noopener\">V-USB keyboard example<\/a>. The Button is connected with data pin 6 of the Atmega. It involves some creative soldering of the diodes because I didn&#8217;t care too much about the circuit&#8217;s layout before I started soldering.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" src=\"https:\/\/www.andyland.info\/grafiken\/easybutton\/easybutton_022.JPG\" alt=\"\" width=\"576\" height=\"432\" \/><\/p>\n<p>Everything&#8217;s coming to an end soon<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" src=\"https:\/\/www.andyland.info\/grafiken\/easybutton\/easybutton_023.JPG\" alt=\"\" width=\"576\" height=\"432\" \/><\/p>\n<p>It seems impossible for my camera to do any decent shots that contain the color red.<br \/>\nAnyway, you might get an idea of how the circuit fits into the structure.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" src=\"https:\/\/www.andyland.info\/grafiken\/easybutton\/easybutton_024.JPG\" alt=\"\" width=\"576\" height=\"432\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" src=\"https:\/\/www.andyland.info\/grafiken\/easybutton\/easybutton_025.JPG\" alt=\"\" width=\"576\" height=\"432\" \/><\/p>\n<p>Some detail of how the actual button-mechanism is connected to the Atmega (the blue wires, you guessed it)<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" src=\"https:\/\/www.andyland.info\/grafiken\/easybutton\/easybutton_028.jpg\" alt=\"\" width=\"576\" height=\"432\" \/><\/p>\n<p>To make future additions a little easier I added an ICSP connector which fits nicely into what has formerly been the battery case<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" src=\"https:\/\/www.andyland.info\/grafiken\/easybutton\/easybutton_030.jpg\" alt=\"\" width=\"576\" height=\"432\" \/><\/p>\n<p>Finally&#8230; in all its glory.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" src=\"https:\/\/www.andyland.info\/grafiken\/easybutton\/sysmanager.JPG\" alt=\"\" width=\"412\" height=\"448\" \/><\/p>\n<p>I had this in the back of my mind for ~2.5 years now. Shortly before starting with this built I started wandering whether this might make sense or be worth the money or time invested or&#8230;..<\/p>\n<p>F*CK IT.\u00a0 Never let doubts get in the way of your creativity.\u00a0 If this wouldn&#8217;t make sense than I probably wouldn&#8217;t have built it. Word!\u00a0\u00a0 =)<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" src=\"https:\/\/www.andyland.info\/grafiken\/easybutton\/easybutton_026.JPG\" alt=\"\" width=\"576\" height=\"432\" \/><\/p>\n<p><iframe loading=\"lazy\" width=\"1333\" height=\"1000\" src=\"https:\/\/www.youtube.com\/embed\/dYCJV4jmx1U?feature=oembed\" frameborder=\"0\" allow=\"autoplay; encrypted-media\" allowfullscreen><\/iframe><\/p>\n<p>The whole Arduino project (I did that arduino IDE 1.0.3) can be <a href=\"http:\/\/www.doktor-andy.de\/files\/Arduino_V-Usb.zip\">downloaded here<\/a>. Unzip and copy the folder &#8216;Nanokey&#8217; to the libraries-folder of your arduino IDE. Feel free to contact me if anything is left unclear.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I guess everybody knows the Staples Easy Button. [tube]https:\/\/www.youtube.com\/watch?v=lkaAFObuUrA[\/tube] There are numerous hacks out in the wild adding some weird functionality to it. For quite some time I wanted to something similar. This is the documentation of how to make the Easy-Button a MIDI-USB device based on Atmega328 (Arduino). Many \u2026 <a class=\"continue-reading-link\" href=\"https:\/\/andyland.info\/wordpress\/easy-button-usb-hack\/\"> 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":{"_crdt_document":"","footnotes":"","_links_to":"","_links_to_target":""},"categories":[19,5],"tags":[54,64,66,35,65,63],"class_list":["post-959","post","type-post","status-publish","format-standard","hentry","category-musik","category-projekte","tag-arduino","tag-atmega","tag-easy-button","tag-midi","tag-staples","tag-v-usb","odd"],"_links":{"self":[{"href":"https:\/\/andyland.info\/wordpress\/wp-json\/wp\/v2\/posts\/959","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/andyland.info\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/andyland.info\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/andyland.info\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/andyland.info\/wordpress\/wp-json\/wp\/v2\/comments?post=959"}],"version-history":[{"count":0,"href":"https:\/\/andyland.info\/wordpress\/wp-json\/wp\/v2\/posts\/959\/revisions"}],"wp:attachment":[{"href":"https:\/\/andyland.info\/wordpress\/wp-json\/wp\/v2\/media?parent=959"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/andyland.info\/wordpress\/wp-json\/wp\/v2\/categories?post=959"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/andyland.info\/wordpress\/wp-json\/wp\/v2\/tags?post=959"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}