OpenADR: Navigation Chassis v0.1

2016-01-15 21.07.52.jpg

After tons of design work and hours of printing, the prototype for the navigation chassis is done!  This is by no means meant to be a final version, but rather will serve as a prototyping platform to start work on the electronics and software for the robot.  Pictures and explanations are below!

Components

Design

Due to print bed limitations I divided the navigation unit of the robot into three main sections, two motor sections and a front section.  Each of these sections was then split in half for printing.  There are mounting holes on each part that allow everything to be assembled using M3 nuts and bolts.

In terms of sizing I’ve left a 150mm square at the center of the robot as well as the back quarter of the circle as free space.  These should provide sufficient space for any extensions I design.

Motor Assembly

2016-01-15 21.06.19

The motor assembly is the most complex part of the design, consisting of five separate parts.  For the motors I decided to use the most common motor found on eBay, a generic yellow robot motor.  They tend to be very cheap and easy to use.  They’re attached to the motor mount using M3 nuts and bolts.

2016-01-15 21.06.52

While these motors usually come with wheels, I found them to be too large and cumbersome.  Smaller wheels were necessary to conserve space so I designed simple, 3D printed ones using a spoked hub and TPU filament for the tires to provide traction.

2016-01-15 21.06.36

I couldn’t find any cheap encoders that I was happy with on eBay, so I decided to design my own using magnets and hall effect sensors.  The magnets are generic 1/4 in. and should be easy to find.  My reasoning behind using magnetic encoders instead of optical is because magnetic encoders tend to be more robust when it comes to dirty environments.  I’ll go into detail about the hall effect sensor PCB I designed when I do a write-up for the electronics.

Ultrasonic Rangefinders

2016-01-15 21.07.16.jpg

As seen in the top image, I have five ultrasonic rangefinders that will be used for localization and mapping.  They’re mounted on either side, in the front, and 45 degrees to the left and right of the front.  This will provide the robot with a full view of obstacles in front of the robot.

Color Sensor

2016-01-15 21.07.12.jpg

I’m still waiting for this part in the mail, but I’ve designed space for a TCS3200 color sensor module.  This will be used for determining what type of floor the vacuum is on.  This color sensor uses internal photodiodes to measure the amount of reflected red, green, blue, and white light.  I’m hoping that I’ll be able to use the white light magnitudinal component as a primitive proximity sensor so the robot can detect stairs.

Casters

2016-01-15 21.07.30.jpg

Rather than using metal ball casters like I was originally planning, I decided on designing 3D printed rollers instead.  These are the same type of casters used on the Neato robots.

Bumpers

While I have yet to design in the bumpers for the robot, I plan on using microswitches attached to two 3D printed front bumpers to detect obstacles, on bumper on the front left and one on the front right.

Improvements

There are a handful of things that I’d like to tweak to improve upon this design.  The current version of the navigation unit only has 3.5mm of ground clearance.  I’ll be playing with this a lot in order to strike a balance so that the cleaning module is low enough to optimally clean the floor, yet high enough so the chassis doesn’t sag and drag on the ground.

While I’m currently using five ultrasonic sensors, I’m unsure as to whether that many is needed, or if the mapping will be fine with only three.  I’d like to remove any unnecessary components to cut costs.

There are a few other difficulties I noticed when assembling the navigation unit.  Mounting the wheel on the motor proved a little difficult due to the size of the wheel well.  Since I have some extra space I’ll probably increase the well size to make mounting the wheel easier.  The same goes for the casters.  Because the axle can’t be 3D printed with the chassis design, I have to find a way to mount it on the front that allows it to be put in easily but doesn’t allow it to be knocked out during use.

As always my design files are available on the Github repository.  Thoughts, comments, and criticism are always welcome.  I’ll be doing a lot of tweaks on the design and wiring up the electronics in the near future.  I hope to do a full electronics write-up soon.

3D Printers and Their Applications

I’ve had my 3D printer for almost a year and a half now and so I thought it was about time I write a post explaining why I think it’s the most useful tool in my office.  The setup I’m using is as follows:

Setup.jpg

Before I start explaining why I think 3D printing is the bee’s knees I just want to state that this post isn’t intended to be a review of the Printrbot.  This is the first 3D printer I’ve ever owned, so I don’t have any frame of reference to compare it to.  Rather this is an explanation of the uses I’ve found for 3D printing.  One of the biggest barriers I’ve seen to a 3D printer in every home is that most people can’t think of enough applications to justify the cost.  While I can’t definitively state that the money I’ve saved from 3D printing things has balanced out with the cost of the printer, I can at least bring my use cases to the table.

When working on projects I find that the greatest disincentive often comes from the act of physically doing something, be it measuring, drilling, cutting, etc.  While it wouldn’t necessarily be difficult to make custom parts out of wood and poster board, I find the time and effort it takes to plan and assemble the part deters me from even starting.  It also doesn’t help that I have trouble planning ahead and so will often encounter unforeseen problems mid-construction.  3D printers help mitigate this problem for me.

NavUnit

With how ridiculously easy OpenSCAD makes 3D modeling, I can quickly design a project and print it out without ever lifting a drill.  This makes 3D printing both easier and safer for the small things.  3D modeling has also reduced the number of unforeseen errors in my projects.  With the the configurable design right on my screen I no longer have to open my graph paper notebook to get a accurate view of my project.  I can move, change, and combine 3D parts with ease.

Granted, programmatic CAD does have drawbacks since it converts text to 3D images rather than directly manipulating the design.  However I believe that the benefits when it comes to reuse, version control, and parameterization outweigh these downsides.

Another benefit of having objects as a shareable software construct is that it allows you to take from and tweak the designs of others.  Thingiverse, one of the most popular sites for sharing 3D printed designs, even allows you to copy and “remix” other users’ objects for your own purposes.  One useful example I can think of is the idea for an Iron Throne style phone charger that I’ve been mulling over.  I don’t have the patience or CAD skill to design an Iron Throne 3D model from scratch, but there are other people who do.  I can then take their 3D models, with appropriate attribution, and use them as a baseline to design my phone charger.

iss_428x321
International Space Station

As 3D printing and scanning gains in popularity more large organizations will begin sharing important objects with the public.  Both NASA and the Smithsonian are beginning to openly share object models of important artifacts like space probes and fossils.  I truly hope there comes a day when I can have my own miniature 3D printed T-Rex skeleton to decorate my desk.

IMG_20151215_065554141
Command Strip adapter for a magnetic tool holder

Another considerable use I’ve found for the printer is to aid in apartment living.  Since I rent I’m limited in how many nails I can put in the wall before I lose my security deposit.

IMG_20151215_065607226
Command Strip adapter for wire spools

With a combination of Command Strips and custom printed adapters, I can create a way to hang heavy objects on the walls without doing any damage.

Lastly, and probably the most important use I’ve found for 3D printing in the home is for creating one-off objects that don’t have enough utility to be sold as a mass-produced product.

2015-10-24 14.02.40.jpg

The cake topper for my wedding is one such example of this.  Rather than settling for an expensive custom one on Etsy or a generic one from elsewhere, I designed and printed my own.  With the wide variety of filament that’s now available, finding a food-safe, metallic gold PLA wasn’t difficult.

I’m sure as time goes on I’ll continue to find more uses for my 3D printer around the house, but I already believe it’s paid for itself in terms of the productivity it’s afforded me with my hobbies.  There are things I can create now that I never would be able to without it and I feel that’s plenty of justification for my purchase.

Home Maker Server

Being a generally disorganized person who works as a professional engineer, I’ve noticed that the tools I use at work have really helped me stay organized and focused.  After noticing this, I’ve decided to utilize some similar tools for my personal projects to keep me organized and motivated, and also to apply a professional touch to my hobbies.  The most useful tools I’ve used at work are part databases, a version control system, and an issue tracker.  Since the specific tools I use at work are targeted towards large companies and therefore have expensive licenses, I’ll be using open source or free alternatives.  In addition to the tools I mentioned, I’m also going to install a 3D printing server so my Printrbot is no longer tethered to my main PC and prints can be uploaded and controlled from anywhere.  I’ve bought a Raspberry Pi 2 Model B specifically to handle this software and become my official home maker server.  The software that I’ll be installing as well as links to installation instructions are as follows:

PartKeepr

PartKeepr – A part database.  I’m constantly losing, buying multiples, and rediscovering parts so this will help give me a clear snapshot of all of my components, allowing me to better plan out projects and determine part requirements.  I used this blog post for installation instructions, but here are a few quirks I noticed when installing:

  • I had to copy the partkeepr folder to /var/www/html rather than /var/www since that was the default root directory for my apache server
  • I had to be logged in as the super user (sudo su) for the pear part of the installation or it wouldn’t work

GitHub

Github – I don’t anticipate developing closed source code in the foreseeable future so I’ll just be using Github for version control.

Trello

Trello – A simple issue tracker with a convenient web interface.  There’s not a lot of advanced functionality but it should be sufficient for what I want to do.  Originally I was going to use a more sophisticated issue tracker called Trac because it has integration with version control and a built-in wiki, but decided against it.  It would be another service to install and host on my Raspberry Pi and the additional complexity might deter my productivity.  In addition, not having a private wiki could serve as encouragement to keep my projects better documented on this blog.

Octoprint

Octoprint – A 3D printing management server.  It provides network access and a web GUI for uploading prints and viewing printer status.  The installation instructions I used are from their GitHub page.

Desk Fume Extractor

In my ongoing, multi-year effort to clean my office and upgrade it to the ultimate make-station, I decided that I needed a fume extractor since inhaling solder fumes probably isn’t too good for my health.  Of course, being me, I decided a basic fume extractor was too simple and set about building one into the cheap Ikea tables I use as desks.

Right off the bat I knew I needed at least four components: a fan to move the air, a filter to absorb smoke and particulates, a porous tabletop, and a power switch to turn the system on and off.  For the fans I bought a few cheap pc fans.  They’re about 5 inches in diameter, run off 12V, and move a decent amount of air quietly.  The filters are just a few solder fume extractor filter replacements.  The porous tabletop surface was a bit harder to find.  I wanted something with large enough holes to let plenty of air through, but small enough that I wouldn’t constantly be losing pieces into them.  I settled on a one foot by two foot piece of sheet metal with 3/16 inch holes.  The on/off switch was just something I picked up from Radioshack.

For the placement of the fume extractor, the two desks, when placed next to each other on the long axis, take up almost the entire width of the office with nine inches to spare.  I decided to place the fume extractor into that space to save myself the trouble of cutting into the desk.

2015-09-13 14.23.22

The first step in the process of building the fume extractor was to create the structure to hold the fans and filters.  Originally I was going to 3D print elaborate fan and filter holds but decided that cutting into some foam core board I had laying around would be much easier.  Since I had no idea about what kind of airflow is necessary to draw in solder smoke I decided to try and fit as many fans as I could into the fume hood and cut out holes for four of the PC fans I bought.2015-09-13 14.23.33

Once that I was done, I designed and printed out some simple brackets to hold the carbon filters.

2015-09-13 14.58.12

I hot glued them all together to make mounting easier.

2015-09-13 15.09.41

And taped them onto the foam core board.  (Huzzah for Duct Tape!)

2015-09-13 15.22.33

The filters fit in snugly and are easy to pop out and replace.

2015-09-13 21.07.57

Next was mounting the fans.2015-09-13 21.59.26

The fans had holes in the corners so mounting them was a simply a matter of poking holes in the foam core board and mounting them with M3 screws and nuts.

2015-09-13 22.25.20

The fans came with PC fan electrical connectors so I had to cut that off, strip the wires, and solder them together in parallel.
2015-09-13 20.38.50

I printed out 1″ brackets to mount onto the desks.  The foam core board assembly will lay on top of these.2015-09-13 22.25.54

I taped these brackets onto the desk as a proof of concept and because I like to avoid drilling/cutting/sawing if at all possible.  If I’m feeling ambitious at some point in the future, I will probably screw these in to make the assembly more permanent.2015-09-13 22.24.40

After some fidgeting with the placement of the desks, the foam core assembly sits in the gap pretty nicely.  My original intention was to attach the assembly directly onto both of the desks via the brackets, but decided against it for two reasons.  First, with the board sitting gently on top of the brackets, it’s much easier to pull it out.  This will make pulling the assembly out and replacing the filters much easier.  Second, the 3D printer can produce a lot of vibration and usually shakes the entire table.  If the foam core assembly was rigidly attached to both desks the vibrations would shake both tables and the computer monitors on the left desk would vibrate whenever the 3D printer was in use.  With the foam core laying in the gap it will probably get a little more beat up being hit by right desk, but foam core is cheap and it would be easy to replace.

fumehood

This is the basic wiring diagram for the electrical side of things

2015-09-19 08.50.07

For the power I just wired up an old Power Wheels charger I had lying around.  Originally I intended to add another switch and some 10W resistors to be able to select two speeds for the fume hood.  I thought that the four fans would be excessively loud and I’d want to run the fume extractor at half speed most of the time.  Fortunately, running the four fans together turned out to be surprisingly quiet, so I simplified and decided to only wire up an On/Off switch.

2015-09-17 21.11.23

2015-09-17 21.11.15

I mounted the button on the front of the foam core assembly in a 3D printed panel.  Cutting precision circles in foam core board turned out to be pretty difficult, so using a 3D printed front was simpler.

2015-08-27 18.57.57

I was a little unhappy with the metal surface I purchased.  The surface was pretty scratched and stained.  It also had a curvature to it from being rolled up, something which I didn’t anticipate.  I laid it flat and put my two heaviest books on top to flatten it out.

2015-09-19 14.02.18

However, after several days of flattening there was still a slight curvature to the metal so I had to screw it into the desk to keep it flat.

2015-09-19 14.06.18

The edges of the metal surface were also pretty sharp so after fastening the metal into position I taped down the edges with the black Duct Tape i used earlier.  This provided both a nice finish and a way to not cut myself.

2015-09-19 14.06.31

Overall I’m happy with how this turned out.  It looks pretty nice, and while it could do with some polish it’s simple and sturdy.  And best of all it works!

Carbon Sequestering Sculptures

I recently realized that I wasn’t taking full advantage of how the Maker community has expanded over the past few years and the fact that there are tons of DIY contests running all the time.  After browsing around a bit, I decided that I wanted to try to enter the Instructables 3D Printing Contest.

I wanted to create an entry that was simple, didn’t require any custom parts/electronics aside from the 3D printed pieces, and was a little outside my current knowledge base.  With those criteria in mind I decided try to combine my interests in 3D printing, environmentalism, and carbon sequestration technologies.  Since ugliness is an argument often used against wind turbines and other green tech, I wanted to try and create something both pleasant to look at and beneficial to the environment.  I ended up trying to design a sculpture that also sequestered atmospheric carbon (CO2) using cyanobacteria.

Since I already had some transparent PLA filament lying around, I designed a simple, hollow sculpture with thin walls (~.5mm) to maintain a high transparency in order to let the rich green color of the algae show through and provide the algae with enough sunlight to live off of.

twist
An OpenSCAD rendering of a simple hollow sculpture.

Since the algae feed off CO2 from the air, the container couldn’t be too deep or too narrow, otherwise the algae at the bottom wouldn’t receive enough air and would die off.  This could be solved by buying an aquarium air bubbler, but I wanted to keep the project as simple as possible.

2015-07-06 21.11.12

For the algae, I decided to use Spirulina because I found a handy growing kit for it.  The kit arrived in the mail, I followed the instructions, and soon I had my very own algae cluster growing!

Printed simple sculpture
Printed simple sculpture

With the algae ready for transplantation I printed out my sculpture/container design.  Once the sculpture was printed, however, I started running into problems.  It seems that when the walls of the container are thin enough to remain mostly transparent, they’re also too thin to be waterproof!  After filling up the container (luckily I tested it with tap water first), little droplets immediately started seeping through the gaps between the print layers.

2015-07-06 21.02.21

In an attempt to compensate for this, I tried using a transparent coating to seal up the holes but maintain transparency, but as is visible in the above photo, with the 3-5 coats necessary to prevent leaking, the sculpture was more opaque than I would have liked.

So while the project ultimately didn’t pan out, I learned some useful things about 3D printing:

  • PLA is difficult, if not impossible, to waterproof
  • Transparent filament isn’t actually that transparent using FDM printers, though it would be good for light diffusion

And I got to go a little more outside my comfort zone and learn some things about algae and biological processes.

Overly Dramatic Compile Button

As a software engineer I’ve long been unimpressed with the triviality associated with compiling code.  Surely the building of a masterful creation involving hundreds of source files and complex algorithms deserves more than just a small keyboard shortcut.  There should be drama, there should be flair, there should be maniacal laughter!

Featured image

To fill these requirements I’ve created the Build Button!  Using the wonderfully dramatic Adafruit Massive Arcade Button, a mini Arduino Kickstarter reward, and a 3D printed enclosure,  I made a button that communicates serially to a computer through the USB port.  A Python program on the computer monitors the currently active window and tells the button to light up when the active program matches a list of programs with build shortcuts.  When the button tells the computer that it’s been pressed the computer executes the keyboard shortcut associated with the currently active window to compile the code.

The source for this project is on my GitHub.