{"id":480,"date":"2014-06-24T22:57:22","date_gmt":"2014-06-25T03:57:22","guid":{"rendered":"http:\/\/bitquill.net\/blog\/?p=480"},"modified":"2016-05-12T14:32:29","modified_gmt":"2016-05-12T19:32:29","slug":"weekend-hack-portapi-arcade-console","status":"publish","type":"post","link":"https:\/\/bitquill.net\/blog\/weekend-hack-portapi-arcade-console\/","title":{"rendered":"Weekend hack: PortaPi arcade console"},"content":{"rendered":"<p>Some time last January I decided to back the\u00c2\u00a0<a title=\"Porta-Pi Arcade Kit\" href=\"http:\/\/www.retrobuiltgames.com\/the-build-page\/porta-pi-arcade-kit\/\" target=\"_blank\">PortaPi<\/a>\u00c2\u00a0on\u00c2\u00a0<a title=\"Porta-Pi on KickStarter\" href=\"https:\/\/www.kickstarter.com\/projects\/2103217949\/porta-pi-arcade-a-diy-mini-arcade-cabinet-for-rasp\" target=\"_blank\">KickStarter<\/a>. This is a mini arcade cabinet, that runs several emulators, via the RetroPie project, on a Raspberry Pi. The kit arrived on time, and sometime in May I got around to assembling it. \u00c2\u00a0Here&#8217;s how it looks:<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/bitquill.net\/blog\/wp-content\/uploads\/2014\/06\/portapi.jpg\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"481\" data-permalink=\"https:\/\/bitquill.net\/blog\/weekend-hack-portapi-arcade-console\/portapi\/\" data-orig-file=\"https:\/\/i0.wp.com\/bitquill.net\/blog\/wp-content\/uploads\/2014\/06\/portapi.jpg?fit=769%2C1024&amp;ssl=1\" data-orig-size=\"769,1024\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}\" data-image-title=\"portapi\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/bitquill.net\/blog\/wp-content\/uploads\/2014\/06\/portapi.jpg?fit=225%2C300&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/bitquill.net\/blog\/wp-content\/uploads\/2014\/06\/portapi.jpg?fit=769%2C1024&amp;ssl=1\" class=\"alignnone wp-image-481\" src=\"https:\/\/i0.wp.com\/bitquill.net\/blog\/wp-content\/uploads\/2014\/06\/portapi.jpg?resize=385%2C512\" alt=\"portapi\" width=\"385\" height=\"512\" srcset=\"https:\/\/i0.wp.com\/bitquill.net\/blog\/wp-content\/uploads\/2014\/06\/portapi.jpg?w=769&amp;ssl=1 769w, https:\/\/i0.wp.com\/bitquill.net\/blog\/wp-content\/uploads\/2014\/06\/portapi.jpg?resize=225%2C300&amp;ssl=1 225w\" sizes=\"auto, (max-width: 385px) 100vw, 385px\" \/><\/a><\/p>\n<p>The kit is great out of the box but, of course, I had to add some of my own tweaks. \u00c2\u00a0<!--more--> First was varnishing, to make it look even prettier: pre-stain conditioner, then three coats of Minwax Red Oak stain, and finally four coats of polyurethane. \u00c2\u00a0Considering this was my second varnishing job ever (and the first in a decade), it went pretty well.<\/p>\n<p>Next, I designed a 3D-printable\u00c2\u00a0<a title=\"Porta-Pi Button Panel Cover (by spapadim)\" href=\"http:\/\/www.thingiverse.com\/thing:334157\" target=\"_blank\">button cover plate<\/a>\u00c2\u00a0for the monitor control panel, that sits in a cutout under the marquee and above the monitor. \u00c2\u00a0Nothing too fancy, but gets the job nicely done and makes the kit look even more clean.<\/p>\n<p>Finally, a minor annoyance was that the Kickstarter version of the kit needed\u00c2\u00a0two power supplies: one 12V for the display and audio amp, and another 5V for the Raspberry Pi. \u00c2\u00a0Furthermore, there was no power switch, so turning the cabinet off meant pulling two wart adaptors from the wall socket (the newer version uses 5V for everything but it still has no power switch, I believe). \u00c2\u00a0 For some time I had been looking for an excuse to design a microcontroller circuit from scratch, and also play with surface-mount (SMT) components, so I designed\u00c2\u00a0a <a href=\"http:\/\/bitquill.net\/trac\/wiki\/Hacks\/MCUSwitch\" target=\"_blank\">smart power switch<\/a>\u00c2\u00a0board and. Got the PCBs made on <a title=\"OSHPark\" href=\"https:\/\/oshpark.com\/\" target=\"_blank\">OSHPark<\/a>, wrote the firmware using the Arduino libraries, and flashed the MCU using a <a title=\"Bus Pirate - DangerousPrototypes\" href=\"http:\/\/dangerousprototypes.com\/docs\/Bus_Pirate\" target=\"_blank\">Bus Pirate<\/a>. \u00c2\u00a0Given that my PCB design education is 100% from Google, this went pretty well too. \u00c2\u00a0Now I have a single pushbutton that works ATX-style, and also all power is turned off when the Pi shuts down itself.<\/p>\n<p>While at it, I added a physical volume control button, using the extra GPIO pins available on header P5, plus a simple Python daemon running on the Pi. \u00c2\u00a0All hardware and software is available <a href=\"http:\/\/bitquill.net\/trac\/wiki\/Hacks\/MCUSwitch\" target=\"_blank\">here<\/a>.<\/p>\n<p>Now for some retro gaming (Keystone Kapers, 1941, Arkanoid&#8230; ah, the memories)!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Some time last January I decided to back the\u00c2\u00a0PortaPi\u00c2\u00a0on\u00c2\u00a0KickStarter. This is a mini arcade cabinet, that runs several emulators, via the RetroPie project, on a Raspberry Pi. The kit arrived on time, and sometime in May I got around to assembling it. \u00c2\u00a0Here&#8217;s how it looks: The kit is great out of the box but, [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[67],"tags":[68,82],"class_list":["post-480","post","type-post","status-publish","format-standard","hentry","category-make","tag-hacks","tag-make"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p7x9xm-7K","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/bitquill.net\/blog\/wp-json\/wp\/v2\/posts\/480","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bitquill.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bitquill.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bitquill.net\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/bitquill.net\/blog\/wp-json\/wp\/v2\/comments?post=480"}],"version-history":[{"count":4,"href":"https:\/\/bitquill.net\/blog\/wp-json\/wp\/v2\/posts\/480\/revisions"}],"predecessor-version":[{"id":700,"href":"https:\/\/bitquill.net\/blog\/wp-json\/wp\/v2\/posts\/480\/revisions\/700"}],"wp:attachment":[{"href":"https:\/\/bitquill.net\/blog\/wp-json\/wp\/v2\/media?parent=480"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bitquill.net\/blog\/wp-json\/wp\/v2\/categories?post=480"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bitquill.net\/blog\/wp-json\/wp\/v2\/tags?post=480"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}