The first public appearance of Bootstrap in its final form was at the Makercon event outside of Tampa, Florida on April 18. Makercon is hosted by the Gulf Coast Makers and featured a variety of robotics exhibits and demonstrations, as well as other maker fair.
The event produced some useful feedback on the design of Bootstrap and a number of prospective builders identified themselves and received a small starter kit. I hope to feature some of their builds in future blog entries. In addition, the first prototype of Bootstrap ran around inside a small box from 9 am to 6 pm (using several sets of batteries in the process) without incident. So the event was a good test of the durability of the ‘bot. Under continuous motion the battery life with 3 AA batteries seems to be about 70 minutes.
The next public event for Bootstrap will probably be Orlando Makerfaire, scheduled for September 12 & 13, 2015. Partial kits will again be available for interested builders.
In addition to the Bootstrap robot being a learning platform in its basic form, it is also intended to be easily extendable with additional inexpensive sensors and modules. The first example of this is a Bluetooth adapter, which allows two-way communication with another Bluetooth enabled device such as a smart phone.
The HC-06 (and similar modules) is a <$10 Bluetooth module that is widely used with Arduinos. It provides a simple serial interface to the Ardiuno, using two pins for serial as well as power and ground pins. Here are a couple of pictures of a Bootstrap with a HC-06 mounted. The module is permanently soldered in, as are the power and ground pins. The serial (RX and TX) pins are connected by jumpers to allow the use of different pins in the future. The HC-06 does not need to be soldered on–it could be attached with tape and use jumpers for all 4 pins so that it could be removed later.
In the included video a simple demonstration of Bluetooth control of the robot is provided. A rough app was put together using MIT App Inventor that allows the phone to connect to Bootstrap and to control basic drive functions and the buzzer. App Inventor creates Android only apps, but many other tools could be used to create an app to connect to the HC-06.
The HC-06 has been tested at 30+ meters (100 feet) indoors, line of sight, with the phone app and was receiving a strong signal at that distance.
A more detailed presentation of setting up Bootstrap for Bluetooth control, including sample programs for two-way communication, will be provided on a Variations and Upgrades page in coming weeks.
Here is a video of Bootstrap in its basic configuration. It is driving around the inside of a 24″ box using the ultrasonic sensor and the bumper. As you can see the ultrasonic does a good job of avoiding collisions as long as it faces relatively directly on to the obstacle. At very sharp angles it cannot detect the obstacle (because the sound waves are not being bounced back into the detector), and the robot has to depend on the bumper to find the obstacle and choose another route. This problem could be solved a number of ways: putting the ultrasonic sensor on a servo so it can track left and right, using more than one fixed ultrasonic, or adding some side facing IR sensors to the single ultrasonic. Any of these will be an easy option to add to the basic Bootstrap configuration.
In order to keep the costs of Bootstrap to the minimum a lot of parts have been ordered from unfamiliar overseas vendors via Ebay. This has mostly worked out but there have been a number of problems from a wide variety of causes. I’m not intending to publicly recommend or condemn particular vendors (builders should e-mail me at bill@robot50.org for purchasing advice), but instead to illustrate some of the issues and problems encountered by moving quickly while keeping ultimate build costs low.
When ordering parts from Asia for delivery to the US, delivery times are significant. My experience has been two to four weeks, mostly closer to four full weeks. In some cases even longer. The estimates provided for delivery dates are in a broad range and tracking is not precise. This poses a problem when trying to move quickly. Sometimes by the time a part arrived I had already moved on in the design and it was no longer needed for the project.
Some parts are of completely inferior build quality. I received a small batch of piezo buzzers (I think it was $1 for 5 buzzers). Half of them fell apart in my hands before I even tried to insert them into the prototyping board.
Some parts are assembled OK but are just not adequate to the task they are advertised for. My previous post discussing IR sensors provides an example. The sensor may be sold as “ardiuno/robot/smart car” suitable but that doesn’t mean that it is. Prior to starting work on Bootstrap I bought a similar kit that is widely advertised on ebay and elsewhere. It was horrible, even for the price. I tried to use just the wheels and motors on the first prototype but even that was unacceptable.
In a couple of instances the part was simply not delivered. In one case a US vendor offering “fast and free” shipping only delivered half my order after weeks and then insisted that I received everything I ordered. Ebay was very good about refunding my money in these cases and needless to say, I left negative reviews on these people.
In most cases I started by purchasing a quantity of one from a particular vendor and in all cases keep my expenditure to a few dollars until I had a good experience with them. Probably 90% of my transactions have gone off with no problems. So ebay is a great, if imperfect resource.
I surprisingly helpful resource has been my Amazon Prime account. Prime charges a yearly membership fee and items bought through Prime are generally more expensive than the same item bought off of Amazon without the Prime service. However I can get a $2.5 bag of 100 screws delivered in 48 hours with a Prime account. That really helps deal with the long delays using ebay and is a very good deal when the costs of the Prime account are spread over enough purchases.
Working under the “fail fast” approach, a bunch of the stuff purchased was the wrong size (I wasn’t paying close enough attention) or didn’t get used because the design changed. Again, spending a bit more per item to buy a small quantity up front and find out that it is a fail quickly has kept the costs of these mistakes (in money and time) very low. I am sure I will use most of this stuff for other projects someday anyway.
The component on Bootstrap that has evolved the farthest is the chassis plate. At heart this is just a flat plate that everything mounts to.
It seems like a simple part to lay out. But little issues just keep popping up that need to be fixed with small changes. Planned right, these small changes can improve the final result instead of just being a hodgepodge of unneeded complexity.
The chassis started off a simple circle with straight cuts (as can be seen in the wooden example above) for the wheels. But that wasn’t going to work for the bumper that would come later. So a somewhat more complex shape was adopted.
About third time I had to cut the wires from the motors, battery box, and switch tabs below the chassis to the components above I realized that there should be a way to swap out chassis after everything had been soldered up. Not only would this help during development, it would mean that a finished bot could have a new chassis put on more than once with relative ease. Thus the slot was born.
At first the slot was a big ugly gash. It looked bad and it didn’t keep the wires in place very well. About that time I discovered the 1 amp slide switch I was using would overheat under full power draw. I switched to a 3 amp toggle switch–moving the hole in the chassis for the switch from a rectangle to a circle. Using that as an opportunity to rethink the slot, it dawned on me that I could move the slot for wiring to behind the hole for the toggle switch. The switch would hold the wires in place. If a new chassis is called for, loosening the one nut that holds the toggle switch in place allows all the wiring to come with it. No cutting and resoldering required.
The small round/oval hole in the front of the chassis remained at first as way to pass additional wiring through the chassis (jumper wires that would be attached with removable dupont connectors). Once I began to think about upgrade options beyond the basic model–such as servo mounted sensors–that small oval became the right size to mount a micro servo and still leave room on the sides to pass wiring through.
The $50 robot project is far enough along to post some details on it and to rename it “Bootstrap,” reflecting its purpose to develop in the builder a set of skills that can be used to independently develop and build similar projects.
Over the next few weeks materials will be posted to the Bootstrap page on this site providing all the resources needed to build a Bootstrap robot for around $50.
A few pictures of prototype 3 are posted here, illustrating what will be the base model. Major features are very unlikely to change at this point. Its about 130mm (5″) in diameter. Some of the wiring in the pictures is a bit raggedy because it has been moved across a series of chassis–but all will be cleaned up in future versions.
Bootstrap is powered by an Arduino Nano and the basic sensor suite for obstacle avoidance consists of an HC-SR04 ultrasonic sensor and a bumper connected to two switches. Many more sensors can added to this base configuration. The version illustrated here has a 3D printed chassis and other components. However access to a 3D printer is not required to build the robot. The chassis can be hand cut from plywood or other sheet material and the other components can be purchased or easily fabricated.
A few more details can currently be found on the Bootstrap page–with all the details soon to follow.
I have had to make a series of decisions to keep the project within budget and to maximize the changes of success (and minimize the hassle factor) for the first-time builder. Three examples of these decisions concern voltage, fasteners, and component sources.
The simplest of circuits run at a single voltage. But as projects become more complex one quickly discovers that multiple voltages are required: common microcontrollers want 5 or 3.3 volts, sensors will take one or both of those, and motors can run in a range of voltages. In addition, batteries come in different voltages: Alkaline cells are nominally 1.5v, Nimh rechargables are 1.25v and Lipos are 3.7v. An early decision to simplify all this was to run everything at 5 volts. Bootstrap features a dc to dc boost converter that will bring battery power from about 2.5 volts up to 5 volts to an output of 5v at about 1 amp. This means 3xAA alkaline cells, 3XAA nimh rechargable cells, or single cell Lipo batteries can all be used. The switches, diode and other components are specced operate above an amp. The 5v output feeds an Arduino Nano, the sensors, and a set of N20 gearmotors (via a motor controller). A 3.3v output is available via the Nano, but everything is designed to run at 5v, keeping the circuits simple and parts count down.
Chasing down screws, standoffs, nuts, etc. in different sizes when you only need a few of each is a real pain.
Not to mention the requirement of having the bits available to drill different sized holes when hand fabricating a chassis. Everything on Bootstrap attaches with m2x12mm screws and nuts. Everything.
Every component save one (the fabulous Protostack prototyping board) on Bootstrap can be obtained from multiple suppliers. These are all pretty common parts that can be purchased cheaply. I have developed design files for 3D printing all the parts that can be printed, which saves money. Yet a builder without access to a 3D printer will be able to obtain all the parts from reliable sources.
There are some compromises in these decisions. The 6v rated N20 gear motors are going to run a little more slowly at 5v on Bootstrap. Nimh batteries aren’t going to last that long before they need recharging. I had to play around with counter sinking and double nutting to get the 12mm screw length to work for everything. However I hope these decisions make building Bootstrap less maddening than it otherwise would be.
Building something to a budget (and there is always a budget) presents challenges and trade offs. When the budget is very low, as in the $50 Robot project, there is always the risk of cutting one two many corners. I am crossing the line into unacceptable quality a few times during the development process so that the quality is adequate in the final version without asking builders to spend a penny too much.
A good example is with the sensors for obstacle avoidance. For non-contact sensors the choices are basically infrared (IR) or ultrasonic. Both have their advantages and both have good quality, but more expensive products and cheaper, but possibly poorly performing products.
In the past (with a significantly larger budget) I have worked exclusively with the Sharp line of IR range finding sensors. They are very good, given the limits of what you can do with IR. They are very precise, they don’t give spurious readings. They have a narrow beam (which is not really that great for a robot obstacle avoidance sensor). At around $13 each they are really not that expensive. However they would definitely be a budget buster for this project. So I tried to go as cheap as possible. You can find 5v IR sensor modules on ebay for just over $1. I really wanted these to work. Really. But they are just a disaster. They kinda sorta work in a dark room but even then have to be manually calibrated every time they start up. In any sort of real conditions they are just ugly to work with. Don’t buy them. As a middle choice I tried something you can find labeled “KeyesIR” for around $4 each. The module is physically similar to the ugly sensors but it uses more sophisticated components. They are not that bad–they do a good job of rejecting spurious readings (such as from a sunny window). They might be satisfactory for short range stationary applications. But the performance is not quite good enough for obstacle detection on a mobile robot. On to ultrasonics…
The situation is better in the ultrasonic world. As in IR, there is a very high quality choice out there. I have a pile of Maxbotix ultrasonic sensors from previous projects. These things are amazing. They give precise distance measurements in a variety of convenient formats. You supply power and they spit out data. They have an ideal beam width for this project.
The only problem is that they start at $25 each. Not going to work. So for now I am where most cheap robot projects end up, the HC-SR04 ultrasonic sensor. These run $2 or less. They don’t have the sophistication, convenience or wider beam of the Maxbotix but they fit the budget and they have satisfactory performance.
So the initial sensor suite for the robot will probably be a SR04 in the center and a couple of contact switches with whiskers on either side. This has been a little bit of re-inventing the wheel as you see this set up a lot, but it didn’t hurt (or cost much) to see how cheap I could go before committing to something that will get the job done and still stay in budget.
Figuring out how to best arrange all the components on a project like the $50 robot is a multistep process with a lot of mistakes to be made along the way. Even if you think you have the exact measurements of each component you will find that the actual examples you obtain will vary from their specs. So you might as well try to get the big mistakes out of the way as quickly and cheaply as possible.
This has certainly been the case with developing the chassis for the robot.
It’s hard to start when you don’t know exactly what the final components will be. Even more variables are introduced when trying to develop something that can be hand cut, done on a CNC machine, or 3D printed from the same master file. Inevitably there will be a lot of trial and error.
Two essential tools throughout the process are custom graph paper and a set of digital calipers. Online tools are available for creating and printing graph paper with the marking pattern that best suits the project you are working on.
The digital calipers measure parts very precisely and can even be used as a slide-rule like millimeter to inch converter. The calipers are widely available from around $15.
From a paper model with measurements you can hand cut something from wood or go directly to your 3D modeling program for printing or the CNC. At first I thought I would be making a perfectly round chassis (for better maneuverability) and could just pop blanks out of plywood with a large hole saw, so I started with a wooden cut out. However it soon became apparent that a more complex shape would be needed. Time for 3D modeling.
Before even building my first 3D printer I did a fairly thorough survey of the 3D modeling tools out there.
At the time Tinkercad seemed like the best choice to get going quickly. Although far from the most complex tool, it is easy to learn and allows very quick modeling that is perfectly suited to output on typical 3D printers. As an online tool your files are always available and you can design and print at the same computer, whatever printer you happen to be using.
Tinkercad can output 3D file formats but also .svg files to bring into a CNC system. The tools of rapid prototyping, like 3D printers and CNC machines, greatly speed up the process of failing fast–getting past your trial and error period.
Sometimes it seems like forever to make a print. The chassis for the robot takes about 90 minutes to print on the Makerbot Replicator I am using. However once it’s started, you can work on other aspects of the project while it’s printing. If it comes off the printer and it doesn’t fit, you’ve only wasted maybe 50 cents worth of plastic and can make the adjustments on the spot and spit out another copy.
Cutting from 6mm plywood on a CNC machine is even cheaper and faster.
It takes perhaps 10 minutes to cut a chassis out of 20 cents of scrap plywood. To be fair, the CNC requires more finishing than a 3D print–I’m using 2mm holes for hardware, which are too small for my CNC bit to cut, so those have to be drilled. But it works great for a quick test of the layout and I do want to be able to offer the project to people who don’t have access to a 3D printer.
I hope I have made all the big mistakes on the basic chassis and layout of the robot at this point and it will just be tweaking from now on through successive prototypes to the released design. Failing can be fun if it’s fast, cheap, and instructive in preparation for success.
The $50 Robot project came from the idea of making a small Arduino-based robot as cheaply as possible. I have built wheeled bots like this before, but they always seem to cost $200+ by the time I was done. Could I build one for $45? $40?
I ordered a few parts off of eBay and (after a long wait for delivery from China) set to work. The first attempt was ugly, clumsy, and underpowered. But it was pointing the right direction. Before even programming it I worked out some improvements for the next round.
About this time it occurred to me that this might make a good project to share for others to learn basic maker skills such as fabrication, soldering, electronics, and Arduino programming. There are certainly other small robots of this type on the market but they are generally pre-fabricated and soldered, considerably more expensive, or both. Their potential for developing a range of maker skills is very limited. Thus the really cheap robot idea lead to the Robot50 program and the $50 Robot project as the first effort within it. The name came from a more realistic assessment of what it would cost to build.
Prototype 2 established the major design elements of the $50 Robot. The details will be provided elsewhere on this site. It uses commonly available cheap parts that can be ordered from more than one supplier (with a couple exceptions).
It is holding up well in testing and the chassis can be fabricated by hand from plywood, cut on a CNC machine, or 3D printed. Minor tweaks are currently being made to this version before plans and design files are released.