I'd like to build a robot as small as possible and with as few "delicate" parts as possible (the bots will be bashing into each other).

I was wondering if it was possible to use a small chip that could receive bluetooth/IR/wifi commands to move the motors, and in turn, send back feedback based on sensors such as an accelerometer (to detect impact).

I can probably achieve something like this with the PiCy


however this is slightly bigger than I'd like (due to the size of the Pi) and I'm not sure how long the Pi would last taking continuous impacts.

I'd therefore like to try to offset the brain (the Pi) to the side of the arena and just use a small chip to receive move commands, and send back data from the accelerometer.

Do you have any recommendations for such a chip? Wifi would be my choice but if it impacts the size I could try BT

Edit: After further research it seems an Arduino nano with a WiFi RedBack shield might do the job along with something like this for the motors: http://www.gravitech.us/2mwfecoadfor.html


You might find that the rPI boards are more durable than you expected. There isn't much mass to them, so a small amount of rubber or foam padding (to reduce rattling around) should be sufficient to protect them -- provided that your robots aren't bashing together with enough force to crack the plastic casing around them.

Offloading the processing onto a remote (and likely more powerful) system will give you a few advantages, like the ones you've noted -- less weight, less to break, less battery required to move the thing around.

The downsides will be the bandwidth limitations, and the latency. Once you introduce the delay of wireless transmissions, you go from a hardware-based loop that can handle in the ballpark of thousands of iterations per second to a networking-based loop that can handle only dozens of iterations per second.

For best results, your design should do as much control processing as possible on the local hardware, and use the remote connection for higher-level planning decisions that only will need to be received a few times per second.

| improve this answer | |
  • $\begingroup$ Yer control would via be through webcam over the internet regardless so a slight delay will be expected anyway. $\endgroup$ – Titan Dec 18 '13 at 16:39

There are two approaches to build the robots you describe.

The first, as you suggest, is to decouple the processing power from the rest of the robot which holds the sensors and actuators. To do that you need some communication between the processing unit (PC/RPi/Other microcontroller) and your robot. A low-cost solution for this is to use cheap Bluetooth modules (search ebay for 'Serial Bluetooth Module', they should't cost more than $5). On the robot side you will need a microcontroller as well since you need to receive the data from the Bluetooth, process it and convert it to control signals for the motors. Additionally, the same microcontroller will be responsible for reading the sensors and transmitting the data back to the remote processing unit.

The second approach is to have a single processing unit which is located on the robot. The same controller will read the sensors, provide the intelligence and control the motors. Because the robot you describe it simple, this controller could be implemented on simple microcontroller. You can create your own controller (using PIC/AVR/ARM) or you can use a ready solution like an Arduino, BasicStamp etc. Optionally you can have Bluetooth connection with a PC for telemetry (observing the sensors values and/or manually controlling the robot).

For your project, the second approach seems more appealing. It will cost much less and robots will react faster since the processing is done directly on the robot. Also since the first approach requires a processing unit on the robot as well it seems like an overkill to use a second unit for processing. On the other hand, the first approach allows you to develop your robot controller in a higher level system (PC/RPi) which depending on your experience, may be a more comfortable environment.

| improve this answer | |
  • $\begingroup$ Yer the main reason not to put a large controller on the robot was to avoid damage after impacts. If I went for the remote controller approach I would only need a single main controller for multiple robots (identify commands/feedback with a unique ID for each). I may be able to achive the "brain on the bot" solution with an Adriuno nano which looks small enough with a Wifi shield (to send and receive socketio comms for control and feedback with remote server). $\endgroup$ – Titan Dec 18 '13 at 9:10
  • $\begingroup$ What are you suggesting exactly? To have an arduino nano with WiFi on the robot and an additional remote processing unit? Which unit will do the control calculations? $\endgroup$ – Demetris Dec 18 '13 at 10:19
  • $\begingroup$ Well I'm still unsure haha. The nano could do it all I guess! $\endgroup$ – Titan Dec 18 '13 at 12:09
  • $\begingroup$ Yes, for the purpose of your project, the single on-board processing unit seems like the better choice! As I mentioned in the answer, if you do need to have some communication with the robot you can do it through cheap Bluetooth modules. Alternatively you can use (even cheaper!) nrf24l01+ modules if you need to establish a network, since you have multiple robots. $\endgroup$ – Demetris Dec 18 '13 at 12:53

I think I may have found the perfect controller for this project:


The Micro Magician will allow me to control 2 simple DC motors, detect impacts and crashes with the accelerometer AND receive move commands from the IR receiver! Pretty awesome for the size.

The only piece left in the puzzle is sending back the data to the remote controller (accelerometer data). I'm not sure if I could attach an IR transmitter or maybe BT/Wifi?

Edit: looks like this could do the job! http://www.dawnrobotics.co.uk/dagu-arduino-bluetooth-module/

Now to find small motors...

| improve this answer | |
  • 1
    $\begingroup$ Synapse RF266PC1 are interesting devices. They are small, easy to program, and python based. The ADC's on them are not that good, but in combination with an ATmega328 (chip used in Arduino UNO) you may get enough processing power to send data back and forth. I've also used Wixels, but their rx/tx distance leaves a lot to be desired. These RF266PC1 can do mesh networking out of the box, Wixels can't do that at all. $\endgroup$ – Daniel F Dec 25 '13 at 16:07

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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