I have long been a fan of Adafruit. They offer some really amazing kits, complete with specs, schematics, examples and all kinds of wonderful code and instructions for the tinkering. I’ve had many hours of fun building and tweaking projects consisting largely of their components.
I have built robots in the past but they had turned out to be more cumbersome than expected. They were heavy and buggy. A lot of this was due to designs that were overkill (a bit too ambitious). Since that time I’ve wanted to build something a bit more lean, simple and fun to operate.
It includes the frame, motors and wheels but leaves the micro-controller (Arduino, etc) and motor circuitry up to the builder. Adafruit’s learning site has a wonderful example build using the Adafruit Feather Bluefruit (~$30 USD) micro-controller. This can get a n00b up and going in no-time. It even has pre-built app with tilt controls. This was tempting but I wanted to try building a WiFi robot, based on the cheaper Adafruit Feather Huzzah MCU (~$16 USD). The ESP8266 MCU at the heart of this board has considerably more processing power and memory than the ATmel 32u4 present in the Bluefruit. It also has built-in 802.11b/g/n WiFi and is compatible with many Arduino libraries, particularly those that leverage I2C communications, like the motor shield I used.
My shopping list consisted of:
- 1x – Adafruit Feather Huzzah
- 1x – Adafruit Feather Wing Motor Board
- 1x – Robot chassis kit as pictured above
- 1x – Adafruit Feather Wing Doubler
- 1x – Adafruit 500mAh LiPo rechargeable battery for the Feather’s power. A slightly larger battery (~1000mAh) might be more optimal but Adafruit’s stock was limited when I placed this order.
- 1x – 4x AA battery holder with power switch (I got this on eBay)
With a little soldering I had everything connected and ready-to-go pretty quickly. Adafruit’s assembly suggestions for their rover kit example were very helpful. I preferred to use 3M double-stick tape on the bottom of my Feather Wing Doubler to both secure it and buffer it from contacting the metal chassis. I used hook and loop tape to secure the battery enclosure as the cover is on the opposite side of the switch, for some odd reason.
In order to test this setup I used a combination of Adafruit’s motor examples combined with an example web server they provide for the ESP8266 in another project. I was able to create a system whereby calling, say, /forward on the robot’s web server would trigger a forward movement, along with /backward, /left, etc.. I was able to test this at first with curl and then later by building a rudimentary iOS app to call these commands:
Now my robot can be driven and even controlled with some relative precision using this interface. I charge it periodically by attaching a micro USB B cable to the Feather board while the LiPo cell is connected. It will automatically stop charging when the battery is full. I seem to get 2-3 hours from the 500 mAh battery but I have not done specific endurance testing.
Interested in the code?