The guts of it are based on an I2C adaptation of the Adafruit WaveShield and MotorShield.
The bluetooth module is a Bluetooth Mate Silver from Sparkfun.
What does this thing do?
The android app running on the phone (powered by CyanogenMod) connects to the robot using the bluetooth serial port profile.
The software application has a dual joystick interface (like a gamepad) which controls the drive
wheels (left stick) and pan tilt mechanism (right stick).
You will need a multitouch capable phone for both sticks to work at the same time.
How does it do it?
On board the robot has 3 audio daughter boards with micro SD cards. These boards have their own ATMega
processor so the work of reading the audio files and decoding them is offloaded from the main processor.
These boards can play up to 16 bit stereo wav files however the sound is downsampled to 12bit mono.
The android application can send commands to any of these cards to play up to 3 sounds simultaneously with options for
how many loops to play. This is how the engine sound is created, it is a continuous loop of a short soundclip.
There is also a dedicated board for motor and servo control. This wasn't necessary since there is very little
CPU workload in driving the motors and servos, but it frees up pins on the main board for expansion and an I2C controllable
motor driver board is cool anyway! :-)
Each of the daughter boards needs 5 inputs signals from the motherboard, which are as follows:
Audio: VCC (5v), VCC/2 (3.3v), GND, SCL, SDA
Motor: VCC (5v), VCC2 (7.4v), GND, SCL, SDA
Each of the audio boards sends the raw audio signal back to the motherboard so all the channels are mixed together before output.
I had to hack in an amplifier board at the last moment. I mistakenly didn't build the amplifier into the main board, thinking it would be loud enough just using the voltage follower buffer from the adafruit waveshield. Also my amplifier board doesn't perform as well as I would like. If anyone has suggestions for improvements I would love to hear them.
I haven't listed the BOM for each board individually as that would be a large amount of work and I'm not sure if anyone even wants it.
If you would like it please email me regarding which parts you have questions about and I'll try and get you on track.
All the source provided here is available from gihub also:
For some reason the attched zip file of sources is not showing up, so you can download it from here for the time being.
Some of the parts used in the Eagle schematics are from my own eagle library which can be found here:
Some other parts are from the sparkfun and adafruit eagle libraries which can be found on their respective github pages.
The attached archive consists of the following modules (git projects are laid out slightly differently):
Source code for the android application which controls the robot. APK is included. You will need Android 2.2 or greater to use this application. Depends on the mobile anarchy widgets project for the dual joystick view.
Libraries used by the arduino sketches loaded onto each board in the robot.
- DS1802 - digital potentiometer
- MorpheusAudio - Audio I2C client for motherboard control of the audio daughterboard
- MorpheusMotor - Motor I2C client for motherboard control of the motor daughterboard
- MorpheusSlave - I2C & serial port slave library for reading commands from the motherboard and android application
Sketchup drawings of the robot and its various modules
Arduino sketch for the master controller board in the robot.
This board receives commands from the android app over the BT serial port and
delegates control of the audio and motor to its daughter boards using I2C.
Arduino sketch for the I2C capable audio daughter adapted from the Adafruit wave shield.
Arduino sketch for the I2C capable motor daughter board adapted from the Adafruit motor shield.
WAV audio files I loaded onto JabberBot.
Special Thanks To...
This project was made a hell of a lot easier by building on the shoulders of giants.
The following open source / community sites are responsible for the components involved in this project
- Adafruit - motor & audio hardware designs
- Sparkfun - Various breakout boards
- Pololu - Motors & Wheels
- Ponoko - Lasercut acrylic body
- Arduino - Hardware prototyping platform
- BatchPCB - PCB manufacturing
- Android - Mobile phone software stack
- CyanogenMod - Opensource modification to Android software
- Mobile Anarchy Widgets - Open source android widgets (Multitouch Dual Joystick View)