I've been spending my wee few hours a week designing, tinkering and finally building my little robotics platform. I've had ideas brewing for a while but haven't had enough time outside of work to start hacking.
It all started when I first saw Rick Waldron's Johnny Five framework for Node.js.
Sensors are asynchronous, so, ya, a node.js robot framework makes sense.
A few months later I started sketching designs, reading up on firmata and buying my arduino & Pi.
Don't expect regular posts anytime soon. However, this is a pet project that I hope to take pretty far and hopefully inspire some weekend hackers along the way.
Before the what & why, here's the basic BOM:
- 1 Arduino Uno R3 running firmata
- 1 original Raspberry Pi with Raspbian, Node.js & 4gb of storage
- 1 Magicians chassis
- 1 SN754410NE Quad Half H-Bridge to drive the motors
- 1 dual-output mobile battery back
- A custom mount for the Pi & some custom USB cabling for power
Why Raspberry PiThe main controller is a Rpi. It turns 2 small motors by delegating instructions to an Arduino. Overkill? For now, yes. But by having a powerful machine at the helm, I can expand the robot's capabilities. That means bigger boards like the Mega with 54 I/O, multiple boards via a USB hub and interpreting a bazillion inputs or adding vision with OpenCV.
Outside using a cheapo chassis to get started, you may wonder why I'm using a mobile battery pack. I had the idea because the Raspberry Pi needs 5v and connects via USB. That made running cables easier. The model I went with also has 2 ports, so I could power the Pi and drive the motors at the same time.
I've already alluded to more & bigger boards but I'll definitely need a bigger base. I'm currently eyeing the Rover 5 from Dagu. It is a tracked chassis that has 4 independent motors with optical encoders. It can also be converted to an omni-wheel bot pretty easily. That also means more inputs & more inputs = Arduino Mega. Lastly, once I get the latest Raspberry Pi with more memory, I'll try out OpenCV for some basic blob detection.