SimpleBot Technical Overview
This page aims to give an overview of the technical architecture of the SimpleBot.
- For a brief summary of the SimpleBot, see the SimpleBot page instead.
- For a discussion of setting up SimpleBot's software, see the SimpleBot Initial Software Configuration page.
The SimpleBot has 3 main components, stacked up as follows:
- Raspberry Pi Model B+ runs Linux and can run any high-level programming language. Connects to Wifi via the attached adapter. Communicates with the PiLeven via serial port /dev/ttyS99.
- Freetronics PiLeven is an Arduino-compatible board that mounts on top of the Raspberry Pi. To use the PiLeven with the NodeBots Johnny-Five] library or a similar high-level control library it is usually loaded with the Firmata firmware.
- The SimpleBot Shield provides an easy breakout for sensors connected to the PiLeven.
This evolution of SimpleBot has also had input from Angus Gratton, who designed the PiLeven and SimpleBot shield, and other members of the Melbourne Hackerspace - including Alec Clews (software setup), Andy Gelme, and of course Jon Oxer.
The Raspberry Pi is set up to run the node.js Johnny-Five Johnny Five library, which provides easy access to the hardware connected to the PiLeven (and abstracted via the Firmata framework).
Of course you don't have to use node.js or Johnny Five - you can program the PiLeven directly as if it was an Arduino Uno, or you can use any of the dozens of Firmata language bindings with your favourite programming language.
As the Arduino IDE can be a little unwieldy to use remotely on the Raspberry Pi, we have also installed a tool called inotool that makes it simple to build and upload Arduino sketches from the command line. Check the inotool documentation for more details.
The PiLeven is a 100% Arduino Uno compatible board in a Raspberry Pi form factor. It connects using the internal Raspberry Pi serial port, but can be programmed identically to an Arduino Uno connected via USB.
PiLeven also incorporates a high-efficiency DC/DC buck converter which allows the Pi to be powered from voltage sources higher than 5V, such as the 9V battery pack on the SimpleBot.
For more information on PiLeven, see the PiLeven Getting Started Guide and also the wiki article on using PiLeven with Firmata. Note that the Raspberry Pi software for PiLeven is already installed on the image we supply at the MiniConf.
The SimpleBot Shield provides easy connections for the following hardware:
- 2 marked "motor" hobby servos connected to pins D9 & D10.
- 4 additional hobby servo pinouts, pins D2,D3,D5,D6.
- Dedicated 6V linear regulator for servos (hobby servos usually run better on 6V than 5V).
- Ultrasonic Rangefinder Sensor connected to pin D8.
- LDR connected as voltage divider to pin A0, provides voltage indication of ambient light level. Can be bent directionally to provide a directional light sensor.
- 4 WS2812B RGB LEDs, aka "NeoPixels". Data pin is pin D6, LEDs are daisy chained from there. Can be used for ambient effects, feedback, or as signals which are received via the light sensor.
- 5 Analog input pins (also usable as digital) broken out on screw terminals, along with power and ground.
- Breakout for Freetronics IMU9 module] (not supplied).
- "Serial" 4 pin breakout for connecting other devices.
The standard power source for the SimpleBot is 6x AA alkaline cells for a nominal 9V battery pack. In testing a SimpleBot has run actively (driving motors in a sequence) for over 4 hours before batteries were depleted, with wifi enabled.
Unfortunately we've found that rechargeable NiMH AA cells were not able to supply enough current to boot the Raspberry Pi, the initial power-on surge caused an execessive voltage drop. If you'd like to use rechargeable AAs, we suggest sourcing a 8x AA "12V" two-row battery pack, like a wider version of the 9V pack. This will fit in the space under the SimpleBot chassis, and gives enough capacity for rechargeable batteries.
It is also possible to use a 7.2V lithium cell as a battery for the SimpleBot.