Girl Scout Girls Are Awesome

I got invited to do an electronics workshop at a Fall Girl Scout daycamp. I had been on a Maker hiatus since HP let me go back in February, and I was really missing the fun and joy of teaching. The camp was on the east side of the Oregon Coast Range, and although it was cool and a bit wet, the lodge was warm and dry and overlooked a serene pond.

The sessions were an hour and half which was more than enough time to assemble my simple LED kit and give the girls time to incorporate it into a craft project. Before starting, I talked about Ann Makosinski, a young lady who invented a LED flashlight powered by body heat, as an example of why you would want to learn to solder. I also gave the girls a "nanosecond" of wire and told briefly of the contribution of Grace Hopper to computer science.

The girls were positive and awesome and picked up the skills quickly. It always gives me warm fuzzies when I overhead comments like "this is fun" and see the girls helping each other! It is fun to learn, fun to do, and fun to teach others!

The final group was more advanced, and had purchased Adafruit LED goggle kits.  I pre-programmed the microcontrollers, and the session was just enough time to assemble and test them. Since the theme of the camp was Steam Punk, they fit right in with the costumes the girls had prepared.

I am always grateful that my girls are growing up in an age when they can be independent and do anything their heart desires. I am also grateful for opportunities to help others find their passion.

ChickTech Robotics 2015

I've spent a lot of the past year designing and testing a low-cost robot that could be assembled and programmed in a workshop. It has been, in one form or another, demonstrated at three Maker Faires this year. I finally got a chance to put the project to a full test for ChickTech's Portland High School workshop. 
The event was held at Portland State University. There were more than one hundred students that got to chose between eight different workshops. We had fourteen girls for robotics. We spent the first day building the robot and learning how to program an Arduino microcontroller.
The second day we finished the robot and learned how to program it. In my workshops I always emphasize that makers have to patient and persistent, and the girls, most of whom had no prior programming or electronics experience, did a great job in picking up those skills.
At the end of the event, the girls got a chance to show off what they had learned to family and friends. This is always the pay off for me as I hear them proudly explain things I was teaching them just hours earlier. It always makes all the time planing, preparing, and teaching well worth it.

3D Printing and Design STEM Academy Summer Camp

In addition to Outside the Box, I volunteered to lead a 3D Design and Printing class for the OSU STEM Academy this summer. This time I had Margaret Mellinger, the 3D print guru from the OSU Library, as a co-teacher. This class was 3 hours a day for 5 days and had fifteen students. I was told there was a wait list of at least that many more!
We started each class off with a short instructional or inspiration video:
We also had a guest speaker, Kevin, an intern working with Margaret who does model rocketry and is working on a 3D printed Ironman mask. The students started with some tutorials in the web-based Tinkercad. We followed that up with taking a look at 123 Design. Later in the week we also looked at OpenScad. All these projects are free to use, and students were encouraged to continue their design work at home.
The kids had an hour of print time to work with, and they came up with some creative projects. They learned how to design for efficient prints, how and when to add supports, and how to slice projects into smaller units for printing. We also uses a Makerbot scanner to scan in small objects, and an X-box Kinect scanner to scan in a student.
In all, I think it was a very successful class. We learned a lot, and we got a lot of good feedback from both students and parents. I can't wait to do it again! Here is to the future of 3D design. . .

My First 3D Design and Printing Class

For this summers Outside the Box pre-college classes at Oregon State University I pitched an idea for a 3D design a printing class. Based on my experience with 3D printing in the Maker Exploratorium, I knew there was some interest, but when the kids signed up and the choices were sorted, I had nearly 60 students signed up over four different classes.

We had two Printrbot Simple Metal printers on hand, one mine, and the other a loaner from the OSU Valley Library.
The students were given an hour of print time to do with as they which. This is about enough for an object 2 inches by 2 inches. Some students created a number of small objects like ear rings.
Others created large single projects using all their time. Several gals created mult-room houses with removable roofs.
On the final day, for the older class, we broke out an X-Box Kinect scanner and replicated a couple of students.
While there were a number of super-creative project, including helicopters, tanks, stealth planes, spaceships, Minions, Eva, and Wall-E, my favorite two were puzzles. One was a cube puzzle and the other an enclosed "black box" maze.
We learned quite a bit about designing to minimize support, using filament as design elements (whiskers, canes, axles). We also learned a lot about post-processing prints including support removal, hot-glue gun repair and shaping. I also learned a lot about file and print queue management. For a first-time offering, I think the class went well.  I can't wait to do it again!

Maker Exploratorium 2015 Edition

We finished the third round of my offering for Oregon State's Adventures in Learning pre-college program. Here is the course description:
We are all makers at heart. We just have to find our passion. Explore electronics with Arduino microcontrollers. Learn how computers work with Raspberry Pi. Learn how to program in Scratch, JavaScript and Python. Incorporate computing in textiles with soft-circuits. Take apart an appliance to see how it works. Create art from junk. Explore and utilize online maker resources. Go home with the skills and confidence to follow your passion.
For this session we had seventeen young makers age 10 to 12. I had one college assistant, a mechanical engineering student named Jeremiah. This was the first class of the day and met for eighty minutes, Monday through Friday, for two weeks.

I like starting classes by showing showing short videos each day.  We start with Dale Dougherty's TED talk entitled "We are Makers".  He points out that there are lots of different types of makers, and that everyone is a maker of some sort or another.  I also showed videos about how everyone should learn to program, and that sometimes it is frustrating but worth it, and how you have to be persistent.

This time around we broke the kids in to four groups, and assigned a different activity for each group. Each group rotated to a new activity every day. This made it easier to monitor the intensive activities like soldering and required less hardware for activities like Arduino.  The first four projects were:
  • Blinky LED circuit where we learn a little bit about electrical circuits and how they work.
  • How to blink an LED with a programmable Arduino.
  • Some simple programming in Scratch.
  • 3D design with Tinkercad.
The 3D printing has come a long way since last year, when all they did was customize a coin which we then had the Valley Library print out for us. This year we had our hands on two printers, one mine and the other a loaner from the Valley Library. The students were given 15 minutes of print time, enough to print out an object about one square inch in size, and allowed to design anything they wanted. We had lots of MineCraft objects, a chess piece, and a replica of the Parthenon. I also taught dedicated 3D printing classes which you can read about here.

 Projects for the second series of rotations included:
 I also brought in my Maker-Faire turtle robot for the kids to play with and a Raspberry Pi.

The final two days we finished up the soldering projects, dissembled a laptop, created junkbots from the parts, and had the parents in to learn what the kids were doing. It was an exhausting and exhilarating week. I learn new things every time I teach. Hopefully the kids do too!

Turtle Programming in Real Life

For the 2015 Eugene Mini-Maker Faire, I want to try something a little different and a bit more interactive. I had been toying with the idea of a low-cost, 3D printed robot. Using Python code to create real-world "Turtle-like" graphics sounded like a killer application.

The history of Turtle robots goes back a bit farther than I originally realized. William Grey Walter created a pair of light-sensing robots called "Elmer" and "Elsie" in the 1940s! These were designed to explore artificial intelligence at very simple levels and while not controlled by programmable digital computers, they exhibited some very distinctive life-like behaviors.

Walter's 1948 robot named "Elsie".
MIT's 1970 robot named "Arthur". In the 1960 and 70s, professors at MIT, most notable Seymour Papert, explored using robots and the programming language LOGO to teach computer science. The idea that complex algorithms can be executed using simple instructions is a powerful concept common to a number of fields of study.

Enter the 21st Century. 3D printing is hitting the main-stream. Open Source projects like Python are making programming easier for everyone. And Open Hardware philosophy have us sharing both code and design files freely. Time for another era of Turtle!

I will post more about the robot's construction elsewhere. It suffices to say that it is powered by a Raspberry Pi Model A+ running Linux with code written in Python! The beauty of this is that you can write and test your Python Turtle commands on your computer or in a browser before they even get to the robot.

Lets look at what it takes to create a box in Turtle:

Don't just sit there. Try these out for yourself at! With any luck, you will see something like this:
You will have to add a t.shape("turtle") command if you actually want to see the Turtle.
Python powered, 3D-printed, yet to be named Turtle robot.

If I've got you hooked, your next challenge is to figure out how to change the "square" code to create a hexagon. I'll give you a hint.  For the square, 360 degrees divided by four sides equals 90 degrees. Those number should look familiar. Next, how would you create a star pattern? That one took me a bit to figure out, and there is certainly more than one way to do it.

Your next hurdle, if you want to print your name, is to create letters using Turtle commands. Let us look at one way to create a letter "A" in a 2 x 4 grid (that keeps right-angle math simple).

One tidbit that is helpful is that the distance across the corners of a 10cm block is 14.1cm.

Well, there you have a preview of my Maker Faire booth. Hopefully participants will go home with a piece of paper containing their first initial created by a program they wrote and executed by a robot while they watched! And new-found appreciation for programming!

Update, April 2016:
I've documented two versions of the robot, one with a regular Arduino, and the other with a low-cost Arduino compatible board from
I've also documented how to use the robots with the "Hour of Code" tutorials:

Ken Verses the PrintrBot Z-Stop

  • PrintrBot Simple Metal printers experience  a lot of Z-stop circuitry failures, which can be easily diagnosed and repaired.
  • This only applies to Rev F PrintrBoards which had an inferior transistor. This can cause either the probe to fail, or the transistor to fail, either of which result in the printhead only moving upward when homing.
  • DO NOT reflash your firmware unless you have made hardware changes to board, as it likely came with the correct firmware on it already, and is only behaving in the best interest of your printhead when it doesn't get the correct signals! 
My PrintrBot Simple Metal in Action.

The first big decision when jumping in to 3D printing is choosing the printer.  I decided on PrinterBot Simple Metal based on Make Magizine's review and the fact is was an Open Source / Open Hardware project. The second decision was whether to buy one assembled, or build it from a kit. I went with a kit because I wanted to learn a little about what was going on under the hood and hopefully be able to repair or modify it if needed. Of course, if you really want to dig deep, you can build one from scratch, but I am not that glutton for punishment.

The first big obstacle I had to overcome was the fact that when I tried to print something, the printhead (extruder) would only move up, and not down. As beginners, we always have to struggle with simple concepts that experts seem to take for granted.  This is even more a problem when we haven't seen it working correctly in the first place and so have no experience if what you are seeing it normal or not. I had to struggle with this for a bit before coming to an understanding that the Z-stop probe circuity was not working, and that the printer firmware, in an effort to protect the extruder, would not move down without the right signal.

Googling this problem indicates that it is happening to a lot of people, and that I am not the only one struggling to figure out why. Lets take a look at the circuitry, since understanding that will go a long way toward troubleshooting the problem.

The first concept to understand is that the Z probe inductively detects the build plate, and will emit a 12 volt signal when it is within about 4 mm of ferrous metal. This, combined with the Z offset you determined during your initial calibration, tells the printer where the extruder is in the Z-axis (up and down), and also, by probing three different spots during start up, how to compensate for the level of your bed plate. This is really an awesome feature, and well worth the trouble is has provide me so far.

The second concept that is tricky is that the Printrboard uses the 12 volt signal from the probe control a 5 volt signal by applying the voltage to the base of a transistor. I am more used to using a 5 volt signal being used to control a higher voltage through a transistor, and not the other way around, but hey, it works as long as they have a common ground.

And, if this did not hurt you head thinking about it, there is one more twist. The microcontroller (MCU) is providing the 5 volt signal to the collector of the transistor using an internal pull-up resistors, so that when the probe turns the transistor on, it allows a path to for the 5 volt signal to ground, which the MCU detects as a Z-stop trigger. A bit convoluted and confusing, especially to a beginner.

OK, now that we have a rudimentary understanding of how things should work, lets think about how they can go wrong. If a probe fails, and provide 12 volts at all time, the 5 volt signal drops to ground, causing the MCU to think a Z-stop is triggered regardless of proximity to the build plate, and will only move the probe upward. This is what was happening when I first built my kit, and it is fairly easy to diagnose. If you issue a M119 gcode instruction, it will report "TRIGGERED" when the Z-probe is connected (regardless of proximity to metal), and "OPEN" when the probe is disconnected because the transistor turns off. Printrbot sent me a new probe, and my 3D printing journey was quickly back on track. Seeing how many other folks had experienced the same problem, I bought a backup probe.

Imagine my consternation when the "always moving up" issue surfaced again several months latter right before I was to give a 3D printing seminar at OSU's Beaver Bar Camp! Double that when connecting the new probe failed to solve the issue! Back to the drawing board of understanding. The M119 command would again showed "TRIGGERED" with the probe connected, but also "TRIGGERED" with the probe disconnected. A multi-meter check of the transistor showed that the probe was indeed sending the correct 12 volt signal when metal was present, but that the collector pad, which should have shown 5 volts without the probes signal present, showed 0 volts regardless, indicating the transistor must have failed and grounded out.

Replacing a surface mount transistor is probably not in most beginner's skill bucket, and PrintrBot offered to send me a new board despite my being outside of the one month warranty period for kits. I assume they are sending boards repaired with a better (biased) transistor, and that lots of people have had this issue since the original transistor was unbiased (like I know what that really means). I do know how to read schematics and BOMs (bill of materials), so I ordered the correct transistor for 14 cents (plus about three dollars shipping). I also know from past experience, that surface mount soldering is more art than rocket science, and after snipping away the old transistor and cleaning up the pads, quickly had the new one in place and the printer running again. I also took the time to print an enclosure and relocate the PrintrBoard to the side of the printer since I did not like always having to reach under the build plate to connect the power and USB cables and reach the SD card.

Ain't pretty, but it works!
New Print Enclosure.

So, here are my lessons learned:
  • There is pride in building something, even from a kit.
  • There is pride in fixing something, even when you had to have others help.
  • PrintrBot Simple Metals are still awesome printers, despite having some flaws.
  • PrintrBot as a company is awesome for how it is handling the problems.
  • Open Source / Open Hardware is awesome because even if you don't built it from scratch, you can certainly determine how it should work and diagnose why it isn't.

I also, with some tips from PrintrBot, learned how to print without the functioning probe, and although I scratched my bed several times attempting it, it never hurts to have a backup plan when the workshop is about to start:
  • Shim your build plate so that it is reasonably level. You can do this by finding which corners are the  highest by manually lowing the z-axis and using a piece of paper as a feeler gauge. Shim the low corners using paper or aluminum.
  • Modify your "start" gcode to remove the "G28 X0 Y0 Z0" homing commands, and change the "G29" probing command to the "G90" start from here command.
  • Check your current Z offset using "M501" and write it down for future use if you don't move or replace the Z-probe during repairs (you have to re-calibrate if you do).
  • Remove your Z offset using "M212 Z0" followed by "M500" (the opposite of what you did to calibrate it).
  • Use the software manual control to home X and Y.
  • Use a piece of paper as a shim and rotate the lead screw manually to place the extruder one paper width above the build plate. I do this with the extruder at working temperature.
  • Start your print, being prepared to pull the plug if it the extruder starts to grind into the built plate.