Beagle Board Robot (DC Motor power, Wireless, etc)

I am building a robot using a Beagle Board and 4 wheel robot chassis
that has 4 DC motors but I have some basic questions that are puzzling

1 - How do I get my Beagle Board to control the 4 DC motors in order
to make them turn?

So far I think I have to use the I2C pins but I'm not sure about that.
And if I can control the DC motors through a Beagle Board...

2 - Will the Beagle Board have enough power to handle the peripherals
and control the DC motors as well?

3 - The Beagle Board came with no pin headers, will I need them to
connect to the DC motors?

The Beagle board has no power in reality. It uses the 5V you supply and passes the rest through to the connectors… If you use 5V motors and provide enough power to drive the motors and the Beagle, then there will be enough power. So the answer is that if you provide enough power, then there will be enough power.

I2C can be use to control motors or there are a couple of PWM outputs from the Beagle that can also be used. Obviusly, these signals cannot drive a motor direct, so a power driver, such as a power FET, would be required.

In order to connect to these signals, you will need to connect the signals to the board, either via a connector or by adding wires direct to the holes in the connector area. Do not attemp to connect a motor direct to these pins as that will result in nothing happening. The signals are 1.8V so unless you can find a very low current motor that runs on 1.8V, the motor won’t turn.

I suggest you do a Google search on driving DC motors and the required circuitry. Then decide what type of motor you need. Then decide if you want to use a PWM or I2C interface to control them. Then you can work on how to connect it to the Beagle.


Hello Ian,
   You have not offered much information for us to go on really. I do
gather you
have started your robot design with the base (motors and chassis). I
also gather
you plan to use the BeagleBoard as the brains. Gerald mentioned the BB
has a
1.8vDC interface to its signal lines (GPIO, !2C, SPIO...). Your robot
base will
no doubt require a motor drive controller with a interface voltage
level translation
circuit between it and the BB. I am not aware of any 1.8 vDC signal
level motor
controllers. You could of course design and build your own. Have a
look here to
get more an idea of your up and coming adventure.

   This is the controller I use for my two motor robot.

   You need to know the running current and stall current of your
motors as well
as the voltage to plan your motor controller. The BB runs on regulated
so you will need to plan for that.

Sounds like a great project..

Don Lewis

So I cannot control the DC motors by just connecting a wire from the
Beagle Board to them, I have to have a motor controller circuit?

Will something like this work?

I am using a Beagle Board and Arduino Mobile Platform Chassis (http://

The motors for the chassis have the following specs:

• 4WD Mobile platform Motors: 3-12V DC
• Speed: 90cm/s
Motor Specifications

Green Motor

• Gear Ratio 1:120
• No-load speed(3V):100RPM
• No-load speed(6V):200RPM
• No-load current(3V):60mA
• No-load current(6V):71mA
• Stall current(3V):260mA
• Stall current(6V):470mA
• Torgue (3V): 1.2Kgcm
• Torque (6V): 1.92Kgcm
• Size: 55mm x 48.3mm x 23mm
• Weight:45g

Yellow Motor:

• Motor Model: 130 Motor
• Output Mode: Two-way shaft output
• Gear ratio: 1:120
• No-load speed (3V): 90RPM
• No-load speed (6V): 180RPM
• No load current (3V): 120mA
• No load current (6V): 160mA
• Locked-rotor current (3V): 1.5A
• Locked-rotor current (6V): 2.8A

I consider myself a beginner robot enthusiast and don't know how
complicated it would be to do this now that this issue has come up.

Could you suggest what parts I should buy to get this done (using BB
to control chassis)?


A good place to start is with a schematic or connection diagram. I glanced at the website, but I do not see where to download any documentation. Try and find this information and then see what is required to connect it to the recommended micro controller. In essence you will need to supply the same interfaces as the microcontroller. Once that is figured out, we can talk about what is need to adapt that to the BeagleBoard.



A good way to start is to create an isolation circuit for the power supply for the Beagleboard. If you ever controlled DC motors you know that they provide a lot of electrical noise and a lift off current is rather big. Imaging a situation when your robot has to lift up a hand or leg and the CPU falls to reset… Even if the current will not drop significantly DC motors use brushes which provide a lot of high frequency impulses and noise. Please don’t forget about this.

DC motors are usually controlled by PWM signals. OMAP3530 has a number of such but with 1.8V level. Voltage translator is not a big deal I would suggest to use special controllers or special external microcontroller intended for use with DC motors. You will have to write two programs but as believe writing a code for simple MCU is simpler than doing the same for complex CPU like OMAP3. Anyway you will only benefit from splitting programs into two parts because all complex systems are designed with decomposition. This is my opinion.


2010/3/28 Gerald Coley <>

Wait for
, this will give you the voltage translator and a prototyping area for
soldering an H-bridge. The best option would be to control the motors
through an i2c motor controller.

I would strongly agree with this. You'll find that Sparkfun[1] has a variety of
excellent motor controller boards. This will save you a lot of time and will be
another layer of isolation between the high-draw/high-voltage motors and your
sensitive BeagleBoard.

- Ben


Arduino environment is nice match to your needs.

I have seen a setup that controlled a few dc-motors in a camera platform. And it

You may consider it a hobbyist toy which it is. But you get quick and working
things out of it.


Thanks for all the responses guys, I appreciate it! :slight_smile:

I consider myself a newbie and would like to stay away from building a
circuit, buying one is my best option since I have a time constraint.

I've done a little research and found this Motor Shield (http://

I think this is all I should need??

I'm thinking of interfacing this motor shield to the 4 DC motors, and
interface the motor shield to the Beagle Board. Is this the right
process to get what I want done (BB controlling 4 DC motors for

- Ian

That is a good motor controller for your needs.
However, if you are not designing a circuit that goes between the
beagleboard and the motor controller than I suggest you either take
jplat's (above) advice on the "Trainer" board and you will still have
to do some wiring or drop the beagleboard and
get the Arduino USB Board (Duemilanove) and the mshield yo mention,
also known as the Adafruit Motor/Stepper/Servo Shield, both
available from this link...


Hi Ian,

Ans 1. H-Bridge, H- bridge takes PWM input and controls DC motor. So
Beagle GPIO -> Signal amplifier -> H-Bridge. I had used National
semiconductor 's H-bridge.
2. You will need separate power 9V/12 V with .5 to 3 A for motor & H-bridge.
3. Schematics of beagle will help you to locate GPIO.
(I am not sure, but omap3530 might have PWM output to on some pin.)

Regards, Viral

If you want to make it easy, just take an arduino + H-Bridge daughter
card et connect the arduino to the beagle using the USB port. Then
program the arduino to take command from the usb/serial port and
generate PWM.

Thanks for the help guys, I appreciate it.

Here is where I'm at right now:

1 - Build an H-bridge to control the DC motors
2 - Get a 9V/12V battery to power the DC motors
3 - Use the Beagle Board's I2C for PWM for the H-bridge

Will this work? Will it take care of the fact that the Beagle Board
only has 1.8V?

- Ian

Thanks for the help guys, I appreciate it.

Here is where I'm at right now:

1 - Build an H-bridge to control the DC motors
2 - Get a 9V/12V battery to power the DC motors
3 - Use the Beagle Board's I2C for PWM for the H-bridge

Will this work? Will it take care of the fact that the Beagle Board
only has 1.8V?

- Ian

Well, close. The I2C can’t really do PWM. There are parts out there that can handle the PWM function for you and they do talk via I2C. I think Maxim makes several of these. You also need to have a way to reverse the polarity of the motor to go in reverse, assuming you need to do that. You might find that a 7.2V battery would work better depending on your motors. You also need to look at the battery and decide what type to use, taking into consideration the weight of the battery as that will put more strain on the motors to carry the additional weight and cause your battery to run down faster.


Hi Ian,

I think,
- Use GPIO as makeshift PWM instant of I2C
- H-Bridge should take care of reverse stuff.
- 7.2 might not be enough. Long back, i guess in 2003, I had used old
2 - wheeler battery which use to provide 12 V to high power DC motor
which could with stand even 1kg+ weight. But that will require proper
physical body, where battery, circuit and wheels can be mounted.

Regards, Viral

using GPIO or I2C will require to translate voltage on a custom board.
Using arduino on USB bus will only require a USB hub , and there is a
lot of arduino sketches to control motors.

I spoke with someone and he suggested that I use 4 Solid State Relays
(DPDT) to control the DC motors and that I can add 4 MOSFETs if I want
to have speed control.

This sounds like the easiest and cheapest choice?

Jpiat, so you're saying that even if I use an H-bridge or Relays to
drive the motors, I'll still need to translate the voltage and the
only way to get around this is to use an Arduino board.

If I use an Arduino board, how would I get it to talk to the BB?

- Ian