I'm building the biggest robot I've ever done. The hardware I have so far is as follows:

  • HCR-Platform from DFRobot as a base
  • x2 12V 146Rpm DC motor with two phase hall encoder
  • x7 Sharp 2Y0A21 IR sensors
  • x6 URM37 ultrasonic sensor
  • x4 IR ground sensor
  • Microsoft Kinect

Right now I'm only using a RoMeo board (arduino 328 compatible) to drive the motors and process the PIDs for the wheels + steering and also access to all the sensors (except for the kinect). I have a BeagleBone Black running linux that is intended to be the main brain connected to the RoMeo using the RS232 port and do the processing of the Kinect + wifi access.

I started thinking about connecting the sensors to the Beagle board directly so I don't need to waste time sending commands to the arduino board to read the sensors and that yielded the first issue, beagle board works on 3.3V instead of 5V used on the sensors.

After this I thought to create a board with voltage divisors to connect the sensors there and then using a ribbon cable to connect this new board to the beaglebone. I couldn't find any 2x23 IDC male connector to create the "interface cable" between the two boards so the beaglebone option is out as I don't want to have tons of jumper cables all over the place.

This morning I thought about all this again and I researched about GPIO boards over USB and found three from Numato, only one works on TTL 5V and has 8 pins so I would need a few of them to use all the sensors so unless I design my own board this option is out too.

At this point I'm quite confused in terms of what's the best hardware I could use to drive this beast. Right now I think I should use a Intel NUC with linux for the Kinect, wifi and usb link to a custom made sensor board. This custom made board will work on TTL 5V, provide a power bus for the sensors and will interface all the "low level" sensors using USB as link. I also thought about an FPGA for the custom board but I'm not sure if this would help me or if it's worth the effort of learning how to use it.

What are your thoughts on this? Any idea on how this issues are solved on "complex" robots?


2 Answers 2


You're right to see this as a problem of complexity. Whatever setup you decide to use, keep in mind that you will inevitably have to troubleshoot it. It's already going to be complex -- but make it work in your favor.

In other words, let's say that you choose to make a subassembly for your sensors (like arduino + sensors, or GPIO board + sensors). Make sure that this subassembly is completely self-contained: it can read all the sensor values, and without being connected to the beaglebone it can tell you whether all sensors are being reported properly. What you don't want to do is make it so that the entire system has to be connected in order to check the low-level sensors.

As you compare options, figure out which options will support a modular system design and which options won't.


My reccomendation would be to do as much as possible arduino side, as you have much easier access to PWM and digital inputs. Connect all of your sensors and motor drivers to the arduino. Communicate over serial with your main robot controller (Beaglebone, Raspi, etc). Send motor signals over serial and receive sensor values the same way. Easy to program, neat to wire.


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.