Storage and Virtualization (and whatever else I feel like)

Have Your Pi and Eat It Too!

Last year I gained access to an arcade cabinet that had been outfitted with a standard consumer PC running Windows and being the front end to a handful of emulators. The cabinet itself is actually a custom build, not a repurposed one from years ago. This was purchased from Arcade Time Machine and it is pretty awesome. That however is not the point of this post, what I am doing is tracing back the root of my RaspberryPi obsession. Talking about the cabinet with some co-workers, they were telling me that you can do all of that on a RaspberryPi, and there was actually a community around exactly that. The “solution” is called RetroPie and you can read more about that over there. I quickly visited Amazon and put together a list of components which included the following:

Raspberry Pi 2 Model B

Power Supply and Case

SD Card

WiFi dongle

HDMI Cable

2 × Logitech F710 gaming controllers

Logitech K400 wireless keyboard

Pretty much everything I needed to get my own RetroPie gaming system up and running at home.

Talking with various co-workers around the country over our internal Slack, I found that apparently one guy had built his RetroPie and everyone else had pretty much just gotten an image of his SD card. I decided that I would also go down this route. I got the image burnt and after a bit of tweaking I had a mostly functioning system. I played some of the old 8-bit games that I used to love, Pyros, Shinobi and Mario Brothers to name a few. Some things just didn’t work how I wanted them to however, so I figured I’d have to build my own RetroPie image. While I haven’t tried installing the RetroPie packages on top of Raspbian myself yet, that is the next step. Currently my Pi boots into RetroPie using the image you can download from RetroPie directly but I just can’t get it to work and I think it’s because I don’t know enough about what’s going on behind the GUIs and the only way to figure it out is to install everything myself and not rely on an image file.

Between the co-worker-supplied image and now however, I’ve done a few other things with my Pi. One of the neat things you can do with it is turn it into a digital media set-top box that can replace or supplement your AppleTV, Chromecast or Roku. I did this by installing Kodi (formerly XBMC) on it. Now I was already using XBMC on my jailbroken ATV2, so I already had some expectations which it pretty much met. The Pi however appears to run Kodi much faster than the ATV2, possibly due to it being newer, faster hardware. I don’t really know or care actually as it was only a test and I still rely on my ATV2 for day-to-day viewing, at least until I buy a supplementary Pi to devote to this. As a bit of a side note, I’ve also been using Plex on my QNAP TS-653 via my Chromecast which is even more slick than Kodi so that may end up being my end solution anyway.

The thing that really got me excited about my Pi is the ability to leverage the GPIO pins to do things outside of the Pi. I’ve always had an interest in coding and have even done a bunch of Python back in the day, since this is the preferred language for those hacking on the Pi, this was quite convenient. So I ordered myself a starter kit of sorts. Don’t order that one for your Pi2 though, it comes with the wrong extension board, this one is for the original Pi. When it arrived and I realize I had ordered the wrong part, a quick trip to Lee’s Electronics and I was in business. I did what most people do and I wrote the Hello World of the Pi and hardware hacking world, I made some LEDs blink:

I continued to play with LEDs for a while, writing various python functions to make them blink in different orders but I soon grew bored and decided I needed to try another one of the external pieces of kit that I had, so I figured the 16 × 2 character display was a good next step. This was actually quite easy, so after I figured it out, I quickly whipped together some code to wish my good friend Jason a happy birthday since it happened to be the day I was working on this:

Using a 16 × 2 character display with the RaspberryPi.

The next thing I did was attach a DS18B20 temperature sensor because now I had a project in mind. I started with some code that displayed the current temperature in Celsius and Fahrenheit to both the terminal as well as to the character display, I then added logging to it and removed the character display code. Lately I’ve been finding that my bedroom is a little warm at night, so I figured I could deploy the Pi as a temperature logging device and figure out if the room was actually getting hot or if I’m just eating too much salt or drinking too much red wine; after all, you can’t manage what you can’t measure. That’s where my Pi currently sits, powered up in the bedroom logging the temperature to a CSV file every five minutes and has been doing so for about three days. I have yet to come up with my next project, but I do know that I want/need at least one more Pi since my son Jordan has been playing with the Pi as well. I wouldn’t want to hinder his ability to play with it and learn because I’m hogging it for the same purpose. Also, since the Pi3 is now out, I would like to have that model if only for the built-in WiFi. I’m still not done with the RetroPie project, but I am a little frustrated by it so more to come on that one in the future.

Feel free to suggest any fun projects that I may want to take on, I have a new soldering station on the way from Amazon and am looking for something cool to do with it.