JabberBot! the Arduino Robot With an ATMega Brain and Bluetooth Braun! :-)

7.9K165

Intro: JabberBot! the Arduino Robot With an ATMega Brain and Bluetooth Braun! :-)

JabberBot is controlled via an Android application over a bluetooth serial connection.
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:
https://github.com/declanshanaghy

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:
https://github.com/declanshanaghy/dek-eagle-lbr
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):

AndroidClientApp
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.

ArduinoLibraries
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
Sketchup drawings of the robot and its various modules

JabberMaster
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.

MorpheusAudio
Arduino sketch for the I2C capable audio daughter adapted from the Adafruit wave shield.

MorpheusMotor
Arduino sketch for the I2C capable motor daughter board adapted from the Adafruit motor shield.

Sounds
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
  1. Adafruit - motor & audio hardware designs
  2. Sparkfun - Various breakout boards
  3. Pololu - Motors & Wheels
  4. Ponoko - Lasercut acrylic body
  5. Arduino - Hardware prototyping platform
  6. BatchPCB - PCB manufacturing
  7. Android - Mobile phone software stack
  8. CyanogenMod - Opensource modification to Android software
  9. Mobile Anarchy Widgets - Open source android widgets (Multitouch Dual Joystick View)

5 Comments

Nice work! We built a similar project. However, we installed the Android device onto a RC car and used an IOIO board to control it autonomously. Here is the preliminary result:

I need to have a techshop where I live
Thanks dude

I am afraid video streaming is blocked at work so I could not see the videos so only had your comment re pan and tilt and running it using an iphone.

Doing projects is a great means to learn how to do things regardless of whether or not they are any use in the long run.

I have just completed building a 3D printer - reprap - and that has awakened an interest I never knew I had.

No aggression was intended in my question., Only a real interest to know what it did given it had so much hardware it could not be limited to some remote control driving.
Sorry for being thick, but what does this contraption (with an awfull lot of processing power) in fact do?

Obviously it rides around since it has wheels and motors, but then you also have audio? For what?

I would like to know what it does and why. :)
It does what you see and hear in the videos.
It has the capability to do a lot more, i just haven't put the time into, and probably won't either. My son loves playing with it so that's enough for me.

Each board in this thing is independent and all expensive components are mounted on headers or IC sockets. This way, once my son gets bored with it i can rip it apart and reclaim any of those things for my next project.

As for why...It enabled me to learn an awful lot of new things, expand my knowledge in areas where I had a basic understanding and then share everything i documented along the way for others to pick up and use in their own projects.

A "few" things I learned include:

- Barebones Arduino with FTDI programming
- I2C protocol design and implementation.
- How to design reusable hardware modules (I2C controllable audio decoder and motor driver)
- Bluetooth serial protocol design and implementation
- Android bluetooth client implementation
- Google sketchup + export to SVG for laser cutting
- Schematic and PCB design in Eagle.
- Gerber export from Eagle for professional manufacturing
- Audio amplifier design
- How a H-Bridge works and how to interface two of them while also decreasing IO pin usage.
- How to read and decode WAV audio from a micro SDCard.