Creating a mini NES with a Raspberry Pi

Mini NES RetroPie
Mini NES RetroPie
Mini NES RetroPie

It all started with the Nintendo Classic craze. I had a friend that was rambling about one the other day. I mentioned that I could totally make him one but better because it would emulate more than just Nintendo. Enter RetroPie. I was looking at putting the bill of materials together and thinking of cases for the mini NES, then I realized why not just print one! So BAM and BAM.

 

https://www.thingiverse.com/thing:1887826 
then this https://www.thingiverse.com/thing:2011955 

Then this for giggles
https://www.thingiverse.com/thing:1710104

 

Here’s what we are doing

  1. Flashing RetroPie to an SD card for a Raspberry Pi
  2. Soldering header pins to the RUN pin holes on the RPi
  3. Soldering wires to some push buttons
  4. Soldering some wires to an LED
  5. 3D Printing a mini NES case for the RPi
  6. 3D Printing a bracket for the NES case
  7. Glueing push buttons, LED and bracket into the printed case
  8. Wiring the LED and buttons to the RPi
  9. Testing it all

 

Here’s what you need

  1. Raspberry Pi (save yourself a headache, get a RPi 3!)
  2. RPi power supply MINIMUM of 2.5A!
  3. SD card 8gb+ class 10
  4. HDMI cable
  5. USB keyboard
  6. Network cable (even though the RPi 3 has wifi you will at least need to do the initial wifi setup with a LAN connection)
  7. A 3D Printer to print the case and the bracket
  8. (2) push buttons
  9. (2) male header pins
  10. Super glue and hot glue
  11. (1) red LED
  12. (1) 100 ohm resistor
  13. (6) pieces of jumper wire with connections (you can cut some in half if long enough)

 

Whats Up

I will assume you have a network connection (non wifi) a USB keyboard a TV or Monitor or tv with an HDMI connection and that you have active internet. You will need to know how to solder, and be somewhat comfortable with a terminal and hopefully the Linux environment. I also assume you have and know how to use a 3D printer. I will also assume that you know and are comfortable with Raspberry Pies. Lots of ASSumptions.

This post is not designed as a how to install RetroPie but more of a how to get RetroPie installed and create the scripts for shutdown the Pi and lighting the LED, then you can follow the first install guide by RetroPie to get you going with the actual RetroPie software.

View Post

I am not responsible for any damage that may happen to you, your computer, or your Raspberry Pi etc. Take this adventure at your own risk.

My OctoPrint (nightmare) Setup

octoPrint

While I was digging around for 3D printer stuff I came across OctoPrint (and OctoPi). OctoPrint acts as a print server for your printer. So you don’t have to do the SD card shuffle anymore, or waste a power hungry x86 for the task. My printer is not in the same room as my computers so this works a treat. Also, it allows you to monitor the entire process. It also supports a camera to watch the build. Perfect, I have a RPi camera available. I also found a tutorial to allow OctoPrint to support turning relays off and on to control other stuff (lights, the printer itself, etc…).

(Stay with me, this post is a little erratic)

I followed this and it helped me a lot: http://www.joemiketerranella.com/post/158553998358/octoprint4

If you have a cheap eBay Raspberry Pi LCD module you will most likely need to go here http://www.waveshare.com/wiki/3.5inch_RPi_LCD_(A)

For my 3.5″ Inch “RPi LCD” I needed this: wget http://www.waveshare.com/w/upload/7/74/LCD-show-170309.tar.gz sudo apt-get update sudo apt-get upgrade  (needed to get 109mb)

Install the driver and it toggles the mode to LCD display: Note: The Raspberry Pi must be connected to the network, or else the touch won’t work properly for some reason.

Your screen should pop on to show the command line, I also got booted from my SSH session, closed by remote host – as the Pi rebooted.

The OctoPi images runs off Jessie Lite, so there is no GUI which fucking sucks, so we need to install one.

Install lightdm (needed 222mb in downloads)

sudo apt-get install lightdm sudo raspi-config

Boot Options > boot go desktop and login as ‘pi’.

Fuck didn’t work.

https://www.raspberrypi.org/forums/viewtopic.php?f=66&t=133691

sudo apt-get install --no-install-recommends xserver-xorg sudo apt-get install --no-install-recommends xinit sudo apt-get install raspberrypi-ui-mods  (needed to get 140mb, 315mb used…Jesus…)

try again to…

sudo apt-get install lightdm

startx without lightdm

no go… Fuck.

https://raspberrypi.stackexchange.com/questions/43847/startx-command-not-found

[/crayon] startx……ok? tossed errors. Lets reboot. pixman.

./scripts/install-desktop  …. didn’t work either.

Black screen and cursor… ugh damn it all. Nothing but fucking grief… Damn you Jessie Lite, and damn you for removing the GUI guts, and while I’m at it damn you OctoPrint for not having the GUI shit either…

https://github.com/foosel/OctoPrint/wiki/Setup-on-a-Raspberry-Pi-running-Raspbian

Use the image that works with the screen, that i still have or ? Well the image is Wheezy so shit, nope. Lets try a new install of Raspbian on a SD card, then add the video driver. Will we get a desktop?

So Jessie (full) and lets try the newest drivers for the screen this time?

I finally got it fucking working, and I am not happy that it took this long, and I am not happy with the unit as a whole. Most likely because I m using an RPiB2 maybe? I have also tried a RPiB and that was soooo fucking slow… to the point it was unusable with a touch screen. Might have been ok for just the OctoPrint server but I didn’t even try it I switched back to the B2 immediately.

So… load the OctoPi image (Jessie lite bastards) and once that is done, do the LCD show bullshit… it should reboot and give you a desktop…

Now the god damn camera wont work…I tried the B no go, tried the B2 no go. Tried the B2 again wtf? Oh maybe I should enable the camera via raspi-config?….wtf no where does it mention that, not anywhere… after i found a forum post saying to enable the camera it finally fucking worked…wtf guys.

Now another fucking problem… the browser. Chromium wont load, requires a kernel upgrade or some bullshit… dude wtf, I just downloaded your “complete” image. Complete my ass, I have to do extra shit then it ain’t fucking complete. Epiphany works but no supports for kiosk mode. Jesus…

Is this fucking worth it??

On top of that I hear transferring files via wifi to the SD card is horribly slow. Most people seem to just stick to using the SD card and use the screen on the printer… all for touch control and a camera…gah.

Three fucking days….solid days so far… trying to get this bullshit working.

So to get chromium to work I had to upgrade the kernel, rpi update….

Which broke the fucking LCD screen….fuck this shit. I give up. I’m going back to square one. reflashing the SD card with OctoPi (Jessie lite) enabling the camera and leaving it as is..no touch screen.

I feel depressed now, and lost three days of my life. Dont make the same mistake… or buy an official RPi screen and a new RPi 3. I would actually recommend a 7″, as the 3.5 is way too small. It doesn’t even fill the whole screen.

 

(Update: this shit was a pain in my ass. I turned out just flashing a straight copy of OctoPi to the card and running it as is. And to correct my mi-information, OctoPrint allows you to transfer files to the Pi or the printer SD card. Going to the Pi is fast, the printers SD card is where it takes FOREVER. Just don’t do it.)

 

Static IP on a Raspberry Pi running Jessie

Raspberry Pi

I know this is out there already in the Googlesphere, this post is more for me in the future than it is for you. I have a few Raspberry Pies and I like to run static IPs. It just makes things easier and I like having my network “all fancy”.

I went to setup a static IP the other day and it wasn’t working. I rebooted a few times until I figured out something was up. In my Googling I found out that the standard linux way of assigning a static IP address won’t work with the new version of Jessie for a Raspberry Pi. They made some updates and the old configuration now gets ignored. So editing the interfaces at  /etc/network/interfaces is a no go. I mean you can, but it’s pointless. Not to worry the new way is just as easy as before it is just located in a different file now. Now you need to edit  /etc/dhcpcd.conf, and the way you set the address is slightly different.

The old way of doing things:

And the new way of doing things:

It has become a little easier if you ask me, you just need to know where the new file to edit is.

All thanks to this page:
https://www.jeffgeerling.com/blog/2016/setting-static-ip-address-raspbian-jessie-lite-on-raspberry-pi

Monitor your security system with a RPi

I had programmed a page of goodness in Node-Red for being the middle-man between the internet and my security system. Here’s the schpeal…

I used to work for an alarm company for a number of years. It’s a job that has kind of stuck with me, specially all the shit and skills that I learned while doing it. So I still have friends in the industry and I still have equipment from when I worked there. Naturally I install my own security system. Not wanting to pay for monitoring but still wanting to be notified with issues gave me a problem. I happen to know Pies so I decided to use a Raspberry Pi with Node-Red to solve that problem.

There are many ways to get notifications from your security system these days but they all require some kind of monitoring or to be activated by an alarm company (someone with a license). Using the Raspberry Pi I could do everything I wanted to. Node-Red just made it that much easier.

I programmed all of this via NR on one of my Raspberry Pies. I believe at the time I was programming in Node-Red v0.12 (around May 2016 I think). Here’s the flow:

https://github.com/jhaury/rpi-nodered-security

I cannot be held responsible for anything bad that may happen. This has been coded to the best of my ability but there may be bugs and some of it may be unfinished. USE AT YOUR OWN RISK!

Enter the world of Jasper

Want to play around with some voice activation? Want to talk to your Raspberry Pi? Your choices so far are Alexa and Jasper. I went with Jasper after finding out AlexaPi requires you to press a button on a website to activate the voice goodies. So you would have to click a button on a web page every time you want to talk and are done talking to Alexa. Fuck that noise! Jasper it is! First off don’t follow the Jasper Documentation install guide. Do not! (as of 05/04/2016), it doesn’t work. It was also written for older Pies.

Instead you should probably follow this guide (Wheezy only): https://github.com/bablokb/jasper-install (I have not tried this myself). I downloaded an image made for a Pi2 B+.

Pros to not downloading an image, you don’t have to wait for the download and you can tweak stuff during the build I’m sure, if you know what you are doing, this is not me. Cons, the build time takes 4-8hrs. Pros to downloading an image, all that build time is gone. Cons, you have to (find!) download the 2gb-7gb torrent.

So this is what I did. Download the image for the Raspberry Pi 2 B+ and bake it to a SD Card (I use the ApplePi Baker, so easy). Do the standard raspi-config crap after your first boot. Now go and follow everything in the configuration section. All of it. Now you should be good to go. Use thePi Baker to “freeze” (copy the image) of the SD so when you fuck it up later you don’t have to start from scratch when you jack shit up later.

(Finding and) Downloading Jasper for the RPi2…
This guy did all the work and released it to the world for free but he requires you to download and install some shitty ass 3rd party torrent software to get it. What a total asshat, on top of that he protects everything with fucking keys. Total douche cannon move.

Mega download: https://mega.nz/#!T5VHXb4A!ZFaDDAUASswYb6Fi_-opDScBWOpNqmJMWS9KgPgn2nU
Guy that made the IMG: http://www.dansinclair.co.uk/raspberry-pi-2-jasper/

Debian DEB: https://groups.google.com/forum/#!topic/jasper-support-forum/RVATTGel-OQ

You can also find a few IMGs for the RPi2/B+ in the Google Groups, most of them require that stupid 3rd party software and keys to unlock them (fucking asshat!!): https://groups.google.com/forum/#!forum/jasper-support-forum

Some side notes that may help keep your sanity longer:

To start Jasper at Boot
sudo crontab -e
Add the following:
@reboot /home/pi/jasper/jasper.py;

To remove Jasper start at boot
sudo crontab -e
place # in front of the job or remove it
save (ctrl+o) and quit (ctrl+x)
https://groups.google.com/forum/#!searchin/jasper-support-forum/boot/jasper-support-forum/5C6wtDfBlRE/AoRN5j8cJFUJ
http://jasperproject.github.io/documentation/usage/

OR (untested, copy/pasted from Google-Groups)

You can just add the scrip to ‘/etc/rc.local’, something like:
su -c '/usr/bin/python /home/pi/jasper/jasper.py' pi

I removed News.py and HN.py, these news scripts were useless to me and for some reason News.py would override every other script. So Jasper would constantly tell me the news no mater what I asked him, and that is not a short script so you get tired of waiting for it to finish and telling him no all the time.

I tried to change the default voice (its hard to understand sometimes) but Google-TTS is a no go for me, it requires a Google Developer Account and that costs $25. I’ll pass. So stuck with espeak. Have not tried the others yet.

If you are running into “I’m sorry but I can’t see that far into the future” with Weather.py then you’re probably using your zipcode in the config, like the instructions said, well that wont work surprise. You need to use the special chart to get the closest big city in your area and use that number then Jasper will tell you the weather. I also started using the Weather.py from the google groups here instead, its better and worked for me out of the box.
(I can’t remember where that special chart was, soon as I do I will update the post)
https://groups.google.com/d/msg/jasper-support-forum/kQ7KzDqJIDs/THW-DZxSBQAJ

Super handy tip #1:
The volume level will most likely not be set at a decent usable level. From a terminal run “alsamixer” on your Raspberry Pi for microphone and speaker level controls. Raising the microphone level will help Jasper to hear your voice from a greater distance, and up the output volume while you’re at it.

Super handy tip #2:
After a day or so of playing with Jasper he started crashed constantly for what seemed like no reason. The only error I would get is

Which after some digging I found is related to the Google email notification script. If you comment out your email address in profile.yml the error will go away. Google email notifications won’t work either, but at least Jasper will stop crashing.

Super handy tip #3:
This person suggests changing keywords to at least 4 syllables so Jasper has an easier time hearing you over background noise, sounds like a legit idea but I haven’t tried it yet.
https://github.com/GeoBeBee/mySystem/blob/master/Jasper_keywords.txt

Some useful information on how to write Jasper scripts:

Build your own Siri with Raspberry Pi2 and Jasper

Things left to do:
1. Spotify control
2. Integrate with the house security system/Raspberry Pi (the one in the garage)
3. Write some more scripts

Jasper modules I have found
https://github.com/studioimaginaire/phue#groups
Reports system status https://github.com/edouardpoitras/jasper-status
https://github.com/edouardpoitras/jasper-movies
https://github.com/iamjake648/jasper-dictionary
https://github.com/iamjake648/jasper-wiki
https://github.com/marclave/Jasper-Google-Calendar
https://github.com/adamjreed/jasper-hue/tree/master
https://github.com/maalbano/jumpsparc

Collections of modules I have found
https://github.com/Hadjimina/JasperModules (some good ones)
https://github.com/ketonne/jasper-modules
https://github.com/aaskasen/JasperModules – sample home automation
https://github.com/RosesDurden/Jasper_modules
https://github.com/alexsiri7/jasper-modules
https://github.com/androbwebb/jasper-yelp-module