Please let me know if this question isn't specific enough, I'll be happy to clarify. I am looking at various options for a control scheme for my underwater robot. I am in school and it is my job to design the control systems that the robot It uses 12V bilge pump motors for propulsion. In the past, I had used some relay boards that another member of the team had designed. But s/he is now long gone and to be honest the boards were poorly designed and we had a huge amount of problems using them. So this year, I'd like to use a microcontroller or similar device to control a set of relays (or equivalent) to power the 12V motors. This will make it much easier to change the direction and behavior of the motors without having to physically modify the hardware.

However, I only want to do this if it is practical. Currently, this is what I am playing with. I have a Beaglebone Black hooked up to a Sainsmart 16 Channel Relay Board. At first this seemed like a good way to do things, there are nice GPIO libraries for the BBB available and I have experience programming shell scripts and Python if I wish to use that GPIO library. However after doing some testing I'm starting to question the idea for a number of reasons. The BBB GPIO pins (some of them at least) seem to float high on boot, so in my script I would need to set all of the pins low upon boot. Then I have the issue of taking input from whatever controller we are using, we have used some generic joysticks for the past few years and these have worked well, but I have no clue as to how to parse the input from these, if the input is say TTL 5V and is not safe for the board, etc. Not only this, but I had to build a seperate driver circuit to trigger the relay as the 3.3V off the GPIO was not sufficient.

TL;DR Joystick/Other Input --> beaglebone --> Relay Driver --> Relay --> Motor seems too complicated , and leaves room for error, leaving me with the same problems I set out to solve. Basically my question is: Does anyone have any constructive ideas or advice on how to implement a software based solution to controlling 12V bilgepump motors and accepting input from some generic joysticks (or another input device if necessary.) I chose the BBB since it has diverse outputs at it's disposal. I am good with moving to another micro controller or input device if it will simplify the control design. Thanks you for your help!

  • \$\begingroup\$ Can you break this up into paragraphs? Walls of text make people skip the question. stackoverflow.com/editing-help \$\endgroup\$
    – JYelton
    Commented Aug 18, 2013 at 8:05
  • \$\begingroup\$ You might be best to break the question down (and use paragraphs!) and maybe start with the motor control aspect including a diagram of how it's connected. That probably has the simple solution of pull-down resistors depending on how it's connected, in general your approach seems OK to me. \$\endgroup\$
    – PeterJ
    Commented Aug 18, 2013 at 8:06
  • \$\begingroup\$ Done. To be honest Peter, I was more looking if anyone had any alternative ideas, as the current situation seems inherently complicated and leaves room for error. \$\endgroup\$
    – t72
    Commented Aug 18, 2013 at 8:09
  • \$\begingroup\$ It seems like your ROV is not operated wirelessly. Is this correct? \$\endgroup\$
    – Vasiliy
    Commented Aug 21, 2013 at 10:15

1 Answer 1


I suggest you take a look at the ArduPilot project, it's a board that can control Airplanes, Copter and Rovers. There have been some attempts to use it to control boats.

For controlling the motors I would use one COTS ESC. It's the fastest way to get a good way to have proportional control over the motors. But if you want you can design your own. But you need some specifications like:

  • the current&voltage of your motors
  • the kind of motor
  • If you need to reverse the control.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.