Blog Archive

Friday 5 September 2014

Hap-Pi and ScratchGPIO5 and the Raspberry Pi camera module

Hap-Pi and ScratchGPIO5 and the Raspberry Pi camera module

Intro

I backed the Hap-Pi robot kit on Kickstarter and my little robot arrived with few instructions. There were very good guides about how to put together the cardboard case and motors, and on how to solder the motor-control add-on board and these are available at the ever-expanding pi-school.com website. After my 8 and 10-year-old daughters had completed the assembly of our Hap-Pi and we had installed our Raspberry Pi on it, complete with rechargeable battery, we needed a way to control it. I had a dig around and discovered that Simon Walters had made his brilliant ScratchGPIO5 add-on for Scratch v1.4 compatible with the Hap-Pi. All that was needed was to make a Scratch sketch to control our little robot. With Wi-Fi and a battery for the motors and the Raspberry Pi itself, we were able to wander around following the Hap-Pi using the laptop like a remote-control unit. Then we wanted to go one better. What if we could put the Raspberry Pi camera module on the front of the Hap-Pi and stream video from it? That way we had a remote-control robot that we could control from the safety of an armchair. So we did, and this is how…

How to install ScratchGPIO5 on your Pi

ScratchGPIO5 is available here:
Do this part with your Raspberry Pi plugged into your monitor and with a keyboard and mouse plugged into its USB ports. We can look at getting remote access from a PC or laptop later. However, you do need to have the Raspberry Pi connected to the Internet.
Double-click “LXTerminal” and then type the following into the window that opens:


Wait for that to finish, it will output some info looking something like this:


The “isgh5.sh saved” bit is the part that tells you it worked ok. Next type:

sudo bash isgh5.sh

A lot of information should fly past the screen. Don’t worry about reading it all, but hopefully the last bit should look like this:


Now you are ready to roll. You should have a few new icons on your desktop that look like this: 
If not, give your Pi a quick restart (reboot) and when it all comes back, they should be there. You want to run the one called “ScratchGPIO 5plus” by double-clicking on that icon.

Program the arrow keys to run Hap-Pi from ScratchGPIO:

I was going to write a few paragraphs to show how to do this, but Stewart Dunn, the Hap-Pi designer beat me to it and produced a nice easy to understand video on YouTube, just here:
Also, since beginning on this document, pi-school.com has published a guide to using ScratchGPIO with the Hap-Pi: http://www.pi-school.com/index_htm_files/HapPi_Robot%20ScratchGPIO.pdf

Accessing the Raspberry Pi remotely

In order to run the Hap-Pi robot properly you’ll want to do a few things. Firstly you’ll need to use Wi-Fi to connect the Pi to your network and then you’ll want to run the Raspberry Pi from a battery and access it by connecting to the LX Desktop on the Pi by using some remote desktop software on your PC or laptop.
Connecting a Wi-Fi dongle and using that to connect to your Wi-Fi router has been covered a million times on the Internet. Use your favourite search site to find a guide, or try this one:

Now you want to connect to your Pi using a desktop sharing system called VNC. I followed the guide at raspberrypi.org here: http://www.raspberrypi.org/documentation/remote-access/vnc/

Open up “LXTerminal” again and the type:

sudo apt-get update && apt-get install tightvncserver

Then run TightVNC Server to set the password that you’ll need to type in when you want to connect to your Pi from you laptop using a VNC client. This doesn’t have to be the same as the “pi” user’s password, but it’s probably best for your sanity to set it the same. If you haven’t changed your “pi” user password since you created your SD card, then the default password is “raspberry”:

tightvncserver

The screenshot below is hopefully clear enough. I type “raspberry” as the password and said no to a view-only password. You now have a desktop available to connect to over the network from your laptop, but you (probably) don’t have any software on your laptop to connect with.



Install VNC viewer on your laptop

I like to use “Ultra VNC viewer” on my laptop, but there are many available, so shop around. UltraVNC for Windows is a free download from here: http://www.uvnc.com/downloads/ultravnc.html
At the time of writing, the latest version was 1.2.0.1. Download the file and you should have a file called something like “UltraVNC_1_2_01_X86_Setup.exe” in the Downloads folder on your PC. Go ahead and run this file and go through the setup but when you get to this screen:




Just choose to install the viewer part of the software by making sure only the “UltraVNC viewer” box is ticked (untick the others). When you’ve finished clicking on the “next” buttons and the “finish” button go ahead and find “UltraVNC Viewer” in your Start menu and run it. You’ll see this:


Type in the IP address or hostname of your Raspberry Pi in the box, followed by  “:1” (e.g. 192.168.1.123:1) and click connect. You will then be prompted to enter a password (leave any username box empty). I chose “raspberry” as my password earlier, so that’s what I type. You should hopefully now see the by now familiar Raspberry Pi desktop and you can get on and run Scratch to program and have fun with your Hap-Pi.
To make the VNC desktop run when you switch on your Pi, one of the many ways to do it is to add the following to the “/etc/rc.local” file. The following line needs to go in the file BEFORE the line “exit 0”:

su - pi -c '/usr/bin/vncserver :1 -geometry 1024x768 -depth 24'


Adding the camera module and streaming a picture from it

Follow the directions from raspberrypi.org on installing the camera module. http://www.raspberrypi.org/help/camera-module-setup/
Getting streaming working is a tricky affair and involves compiling the raspimjpeg (https://github.com/silvanmelchior/RPi_Cam_Web_Interface) software, but if you follow these steps carefully, you should be OK (provided my steps are correct!).
These instructions are based upon the instructions found on the raspberrypi.org message boards here : http://www.raspberrypi.org/forums/viewtopic.php?t=63276

git clone https://github.com/silvanmelchior/RPi_Cam_Web_Interface.git
cd RPi_Cam_Web_Interface
chmod +x RPi_Cam_Web_Interface_Installer.sh

Before you do the next part, be aware that it overwrites the /etc/rc.local file that we just edited. You should take a backup of it first, or redo adding the VNC line (and any of your own changes you have made to it) to /etc/rc.local afterwards.

./RPi_Cam_Web_Interface_Installer.sh install

This installs a tonne of stuff on your Pi, including the Apache web server. Reboot your Pi, then surf to it using your web browser, and you should see a live picture from your Pi camera module. Wave!



Now the way I started using this was I ran the browser and the VNC session together with the VNC session in the foreground so I could control the Hap-Pi movements and had the stream from the camera visible next to it but in the background.



This is fine for fun, but we are now working on a web interface which runs entirely from the Pi, with no need to use Scratch. It uses Python to control the robot. Watch this space for a write-up (when it’s finished!).