With the new IOIO V5 Library, IOIO now works with the Raspberry Pi! This will ONLY work with new V5 library so be sure and upgrade prior.
You’ll see a custom IOIO board in the video but it will work the same using a stock IOIO board. In this setup, the Pi is connected to the IOIO over USB. I didn’t spend much time on Bluetooth yet but I think it would work over Bluetooth too.
Raspberry Pi Setup over USB
Step 1. Download the latest Raspberry Pi SD card image from http://www.raspberrypi. org/downloads and install Raspbian
Step 2. Download the udev rules file from this page, and copy it to your rules directory (one time step)
sudo cp 50-ioio.rules /etc/udev/rules.d
Then restart udev
sudo restart udev
or
sudo /etc/init.d/udev restart
Step 3. Plug your IOIO into a free USB port on the Raspberry Pi and check if it’s recognized using this command
ls /dev/IOIO*
Most likely you’ll get back either IOIO0 or IOIO1
Step 4. Install Java on your Pi
sudo apt-get install openjdk-7-jre
Step 5. Now just run your IOIO app from the command line or X windows (startx)
java -jar -Dioio.SerialPorts=/dev/IOIO0 yourapp.jar replace 0 with the number returned from step 3
One funny behavior I saw on the Pi is that when using the command above, it won’t work the first time but then works subsequent times. Just do a CTRL-C to cancel and run the command again. However if you use this command and don’t force the port like this:
java -jar yourapp.jar
Then actually it does work the first time but just takes a little longer for the port scans to finish. The theory here from talking with Ytai is that this works because the IOIO lib is opening up the port initially during the port scan when there is no port forced using the -Dioio.SerialPorts=<your port> option.
If you want to set the serial port programmatically in your app, here’s how to do that:
call System.setProperty(“ioio. SerialPorts”, “/dev/IOIOx“) from your main(), before calling the “go()” method of your app.
The low cost nature of the Pi opens up many cool new applications for IOIO where the Pi can be left embedded in a project. Here’s a few things to share to take this further:
- PiUi – turns your Pi in a web server with a mobile friendly UI. The web server back-end is python based. So you can make a java command line call from Python. Essentially this setup puts your IOIO on the network where you can control it from any browser.
- Google Coder – Web based IDE for your Pi, supports javascript and node.js. Similar in concept to Protocoder. Someone would need to wrap the IOIO libraries in javascript or node.js framework of Google Coder which would be really awesome, it’s a very well done implementation.