Sunday, September 1, 2013

Basic Stamp BOE Based Robotics Platform

This is an older autonomous robotics platform that I was experimenting with more than a few years ago. Some people may recognize it as being based on the Parallax BOE-BOT or "Board of Education" robot. That observation will prove correct. The BOE-BOT can be a wonderful platform on which to turn your ideas into real-life robotics experiments.

I thought it would be fun to dig up some of the old photos and videos of this project so that I could document the experiment and share it with others.

Starting with the Parallax "Board of Education" (BOE) development board, I learned to integrate the Basic Stamp microcontroller with various sensors and servos. Once I felt comfortable working with these devices, I purchased the standard Parallax BOE-BOT chassis and supporting hardware. To this I added a sonar module to measure distance toward obstacles, a standard servo to rotate the sonar module, two continuous rotation servos to be used for locomotion, a digital compass, an accelerometer, a piezo speaker, and Parallax Inc's LCD AppMod module w/ integrated buttons, and a nice set of tank tracks.

Later, a Parallax PING))) Sensor was added and allowed the use of sonar for distance and ranging measurements. The PING))) Sensor can be identified by the fact that it resembles a set of "robot eyes" not unlike the classic "Johnny Five" from the movie "Short Circuit". I guess it also somewhat resembles the eyes of the more recently famous "Wall-E" robot. Either way, it is not there for decorative purposes. The module is actually extremely useful for navigating a room.

Take a look at the video on the left to watch the sonar sensor sweeping across its forward field of view to determine the distance to nearby objects.

In the past, I have experimented with Infrared (IR) sensors and have had much success. In fact, I still use them today. However, like many things, IR sensors have their shortcomings where ambient light and surface reflectivity are concerned and this lead me to decide on using sonar for this particular project. There are ways to mitigate the problems with IR but I've found that using ultrasonic emitters and detectors is a better solution for most applications. Others may find the opposite to be true. As is often said, "Your mileage may vary."

In the photo on the right, you can see a handy user interface module which provides a liquid crystal display (LCD) and four tactile push-buttons. This was one of the later additions which greatly enhanced the debug/testing process as well as made the robot much more user friendly for public demonstrations.
The entire platform runs on just four AA sized batteries. While the small continuous rotation servos are not the most powerful motors nor are they the fastest option for locomotion, they more than sufficed for enabling this robot to explore indoor areas including those with carpeting and uneven surfaces.


I was not able to dig up the Basic Stamp PBASIC source code that I used for this project in time for this post. However, I do plan to resurrect the robot and that source code will be very handy to have around. Therefore, I will be locating and posting that code in the future. Considering all of the things that I had been trying to accomplish with this platform, I found that the memory space of the Basic Stamp was too limited to continue adding features and behaviors. In fact, the accelerometer was only able to be used when I removed other features. Similar limitations presented themselves when using the digital compass. Earlier, I had a goal of upgrading to the Parallax Propeller microcontroller with it's greater memory reserves and its ability to multitask using the eight internal processing cores. It seems, however, that I was easily distracted by other projects and other processors. It's all fun and I learn from each and every "distraction".

Below are three admittedly grainy videos which show the Watkins BOE-BOT navigating a living room environment. The robot was not programmed with a specific goal in mind other than random exploration. It safely roams the given space without running into objects such as walls, doors, people, and pets. Take a look at the videos to see the robot doing what it does best. Please forgive the low image quality as it was the best I could do at the time using what would now be considered an "ancient" cell phone.

 
Short video of the first object avoidance test.


Navigating a corner.



Robot being watched by another creature.

Thank you for visiting the site and checking out this small yet fully autonomous robot. Below is a partial parts list with links to sources. The list does not represent the exact kits or combinations of items originally purchased but you can recreate most of this project using the links below (with the exception of the LCD AppMod which appears to have been discontinued). 

Check back for source code and further updates!

Parts List with Source Links
Board of Education (BOE) - http://www.parallax.com/product/28150
Continuous Rotation Servos - http://www.parallax.com/product/900-00008
PING))) Sensor/Bracket/Servo Kit - http://www.parallax.com/product/910-28015a

BOE-BOT Starter Kit
Another option is to start with the full BOE-BOT Kit from Parallax. This may be a good starting point for a beginner if this is your first robot.

Potential Upgrades

Build something! You can do it!

Friday, May 24, 2013

Quick Build Mood Lamp with Remote Control

While not a robot this nifty project employs the kind of components and resourcefulness that can be very useful when converting your own ideas into reality.  

Why build a remote controlled, tabletop, mood lamp that can produce over 16 million vibrant colors?
Why not?

It might be the ideal conversation piece for that table that needs just one more decoration.


The lamp was assembled from a ceiling mounted lighting fixture, a 9 volt battery, and just two electronic components from ThingM's BlinkM line of products.

It consists of a single BlinkM RGB module slotted onto the top socket of a FreeM device. These mated modules are then placed on top of a 9 volt battery which supplies power.

The FreeM conveniently includes a 9 volt battery connector built into the bottom of the board and this makes the electrical work quite easy. The BlinkM, FreeM, and the battery all fit snugly together without requiring any soldering.


As often happens with scientific experiments, art projects, and other sorts of creative endeavors, a very delightful feature arose quite unexpectedly. These welcome surprises are often called "emergent properties" and tend to result more from the inherent properties of the particular materials chosen for the implementation than from anything described in the original design.

For instance, the image to the right shows the lamp set to produce a solid "blueish" output. The expected outcome was to light the globe one specific color. However, the result was a wonderfully natural blending of blue and green that combined to generate something which strongly resembles a gas planet.

The magic that makes this happen arises due to the combined properties of the translucent glass globe and the design of the BlinkM. The globe has inherent imperfections which go largely unnoticed when used for its intended purpose attached to the ceiling of a closet or hallway. Meanwhile, the BlinkM uses three very tiny LEDs arranged in a triangular fashion.

Because these individual LEDs are slightly offset from one another, they generate slightly offset brightness curves. These offset light curves combine with the imperfections in the diffusing layer of the glass and produce the beautifully organic designs.


The BlinkM generates 24 bit color at a reasonably bright 8,000 mcd while the FreeM acts as both a voltage regulator and an IR receiver. Lighting effects can be controlled by using nearly any "Sony-style" TV remote control. The BlinkM houses and on-board micro-controller and ships with a default set of operating modes which can be activated via the number keys on the remote control unit. Brightness can be controlled using the volume keys. The scripts which define the operating modes can be altered by an end user who has a basic familiarity working with micro-controllers  The module can also accept "live" serial commands via its I2C pins (more on that in a future post).

Everything is tucked away inside of a standard, ceiling mounted, lighting fixture that has had its 120 volt parts replaced with the BlinkM/FreeM/battery combo and then turned upside down so it sits as a tabletop globe. Enjoy!

See the product line's datasheet for more information about the components:

I purchased my BlinkM components from SparkFun.com:
BlinkM
FreeM

Thank you for visiting.

Build something! You can do it!

Tuesday, April 30, 2013

Simple Arduino Robotics Platform

An inexpensive remote controlled toy vehicle, a handful of well supported electronics, and an afternoon of fun can result in you having built your own expandable Arduino based robotics platform for less than $80.  While this project describes a "sensor-less" platform it offers a great base on which to stage future experiments. A variety of sensors, servos and other types of actuators can easily be added to this roving chassis and integrated into the Arduino based software to expand and enhance your autonomous robot's capabilities.

This simple robotics platform was built from a radio controlled vehicle that can be purchased online for about $20 or less (check your favorite toy shops). The electronics added at this stage include an Arduino UNO and a top mounted DFRobot L298P Motor Shield. These items should cost around $30 for the Arduino and under $20 for the motor shield.  Both of these components, their datasheets, tutorials and sample code are available from a variety of online sources including Adafruit, Digi-key, and SparkFun.


The process began with the slow deconstruction of the toy vehicle and the careful saving of all the screws, springs, and tiny structural pieces. It was soon found that this little vehicle employs just two small, low current, electric motors. One motor is used for driving the rear wheels and the other is used for steering the front end. Having just two motors is fortunate because the particular Arduino shield being used has the capacity to control precisely two motors of this type.

Also fortunate for this project, a single, small circuit board housing the original radio receiver and all of the motor control electronics was discovered. Conversion of this simple radio controlled toy vehicle into a programmable robotics platform could therefore be accomplished by simply removing this existing circuit board and replacing it with an Arduino and an attached motor shield.

Once the existing controller board was located and removed, it was replaced with a sturdy wiring harness that was designed to bring the motor control lines and battery power to the outside of the vehicle. The harness was then connected to a terminal block that had been secured to a central location on the top of the vehicle's body using double-sided tape. A second set of wires was then routed from the terminal block to the rear of the toy vehicle where it was connected directly to the Arduino and the motor shield. Being that this toy vehicle mimics the body style of a classic all-terrain utility vehicle, it has a convenient "bed" area at the rear which offers a perfect place to secure the Arduino and its attached motor shield.

Initially, there was no intention to preserve the vehicle's outer body or existing LED lighting. However, because the toy was easily disassembled, saving these pieces became an option. There are LED headlights on the front of the vehicle as well as very bright overhead spotlights on the roll bar. At this time, all of these LED's are connected in series to pin 13 of the Arduino. Simple digitalWrite() instructions in the Arduino code allow for versatile control of these surprisingly bright LED's. In the future, the overhead spotlights and the front headlights may be given their own separate control lines so they can be used independently. There are also red LED's that serve as backup lights but those are not connected at this time.

Conveniently, the toy vehicle also contains a battery compartment that holds five AA batteries. This 7.5 volt battery pack supplies plenty of current to the motors while also providing power to the platform's electronics payload. There is even a small slide switch on this built-in battery box that helps to give the entire package a more professional look and feel. While very handy at this stage of development, future experiments may test the limits this single source power supply.

This robotics platform will evolve over time and is intended to grow in complexity. My parts collection contains a good variety of sensors that have gone unused for far too long and many of those devices will be incorporated into this platform as time permits.

The software currently loops through a familiar design pattern which can be described as "scan/plan/animate".  At this time, the data gathered during the "scan" phase is actually simulated by generating random values for the sensor readings.  This allows the "plan" and "animate" phases to be developed in the absence of real sensors.  As can be expected, the resulting behavior can be rather chaotic but it certainly provides for a lively demonstration!

In future posts I will be adding a set of ultrasonic and infrared distance rangers that will be used to sense the environment and provide the feedback required to support autonomous and intelligent behavior.

Reproducing this project can be a great way to get started on your own autonomous rover designs. Follow the links below for hardware resources, the Arduino IDE, and the source code used in this project.

SOFTWARE RESOURCES
ArduinoSafari_X1_Instrumented.ino
ArduinoSafari_X1_Instrumented.txt
Arduino IDE from Arduino.cc

HARDWARE RESOURCES
Arduino UNO R3
DFRobot L298P Motor Shield
RC Safari Vehicles

Please feel free to post comments, questions, suggestions and concerns in the space provided.

Thanks for visiting!

Build something! You can do it!