If you are new to DIY and are just getting into project building with Arduino, like myself, you might be feeling a little overwhelmed. You might think you can't learn this stuff. I am relatively new to the the world of microcontrollers, programming, and designing . . . but I did it, and it was easier than I thought! Here's what I learned.
This post was originally published on Make.
I am a long time computer and technology geek going back to before I was a teenager "programming" BASIC on my new Vic-20. Since those glory days I have never been without a computer, or two, or three. I've always loved the technology, but never really got under the hood. Not for lack of desire, but more for lack of confidence (and lately, time) in trying new things. I read enough books, surfed enough websites, and watched enough videos to fill a small library dedicated to technology education topics. Ranging from computer history to networking to Linux and programming in all sorts of languages, as well as building robots and most recently electronics and electrical theory. However, even with all this information, everything generally remained theoretical in nature. I hardly ever tried out the things I enjoyed reading about. I had a great understanding of the concept, but by never following through and implementing any of it, I learned nothing.
Enter the Arduino
Two years ago I came across an ad in Wired magazine from RadioShack promoting the Arduino Duemilanove and a beginner project complete with parts list, code and step-by-step instruction. Here it was: computers, programming, electronics, technology; DIY stuff all in one simple inexpensive package.
I went online, did my research, and ordered a Duemilanove kit along with lots of random parts from eBay. I was a pilot for many years, but as costs of living went up and disposable income went down I needed a change. Here I found a hobby I knew I was going to love. I was hooked!
I spent the next two years reading and learning. I acquired parts cheaply. I stockpiled everything I was told I would need or didn't need: PIR sensors, 3-axis gyros, shift registers, 7 segment LEDs, ICs galore, 555 timers, reference sheets, LCD displays, resistors, and capacitors by the veritable truckload. I knew in theory what every part did and then organised them neatly. I got myself a high-tech soldering iron and fancy multimeter. I set up a little workspace and then . . . nothing.
The parts sat there. The sample projects I read about were built on breadboards and quickly broken down and their parts put away, after enjoying someone else's creation.
I still loved to learn, and enjoyed the process of exploring new topics, but in the end most concepts remained theoretical. When I ran into a problem or wanted to understand something new I would read forums, watch YouTube videos, or browse projects on Google+. It was a passion but one that remained mostly in my head. I had ideas for writing functions for tri-colour LEDs or how to control a loop more efficiently, but I never brought them to reality.
I browsed other projects and even the "basic" ones seemed too advanced and I didn't know what they were talking about, but I could always learn. It was easy to read about how cool a project was, but far less satisfying than actually building. Then I realised my problem was not lack of smarts, but lack of confidence. What if I started this and it just didn't work? What if I have to ask a simple question that sounds silly? What if I make a stupid project that's useless?
Once I realised this was the problem I decided to jump in feet first.
I came across the Drawdio, a really cool 555 timer project that takes advantage of a pencil's graphite to make musical tones depending on what is drawn on paper. I read the online instructions and watched the video. I spent a few hours soldering it all together and then BAM. It worked! My first electronic project beyond the breadboard. I loved it. The kids loved it (I eventually made two). But more importantly it worked and it gave me, the eternal noob, the boost of confidence I needed.
Now here we are with my very first 97 per cent-unique creation: The MO-MARS 4000.
I knew I wanted to make something original and slightly silly. I wanted to create something not for the need of it, but to make something I could learn from and challenge myself with. For this project I gathered a handful of parts I had on hand and found a reason to cobble them together.
So what did I make? Why, it's a multi-mode, mechanical, Arduino-powered rubber band shooter of course! Or what I like to call the Minion Operated -- Motorised Arduino Rubberband Shooter (MO-MARS) 4000.
Inspired by a rubber band gun I saw online that used servos to move and launch, I liked the idea but purposefully never looked at documentation to see how they did it. I wanted to design my own project. I gathered a PIR sensor, buttons, switches, potentiometers, LEDs, a hot glue gun, wires, protoboard, some popsicle sticks and a toy Minion from a Happy Meal. It was game time!
The biggest hurdle I had was, Where do I start? I figured it best to sketch out my idea.
I imagined a flat board with the servo mounted on it to fire the rubber band projectiles. I wanted a way to rotate and then elevate that board. I went to an art supply store and bought a bag of lightweight scrap wood. I also collected some cheap paint. As I browsed for colours I thought about a metallic look with "warning stripes", I was just winging it and had no exact plans. I don't have much in the way of woodworking tools and was limited to an E-Xacto knife, screwdrivers and a Dremel tool.
I decided to make the project have various modes. That's when I realised I needed to write down all the functionality I wanted to add. I drew a simple flowchart and sketched out a very rough and very unprofessional schematic.
That was my guide. It didn't matter that it wasn't up to IEEE standards or even 100 per cent correct. I would fix it later and learn as I go.
I had a 3-way toggle switch in my bin. What to do with that? How about if I let the user choose between three modes of operation: manual, random or a passive infrared sensor. I looked at my parts, devised a plan, made a sketch, and tried it out. A perfect challenge for programming!
Furthermore, what project is complete without LEDs? I had an RGB LED on hand. While nothing in the project required it, I wanted the challenge of programming more and more stuff. I was adding features just for the sake of it and I loved it. I wanted LEDs to blink while the servos moved. I wanted the servos to choose random locations and rotate at reduced speeds.
Nothing in my program (almost 400 lines) is very complicated at all and I'm certain that I'm lacking efficiency at certain points, but I also know by building it and avoiding too much analysis I would learn first-hand. That's the way to do it: just build it!
In the end I got what I wanted: a project loaded with features and design challenges. I learned to program in ways I didn't think I could. I felt like a master hacker. I practiced my soldering skills over and over getting better each time. I learned the importance and simplicity of implementing pull-up and pull-down resistors, and switch debouncing -- all that was previously only theory. I beat my Dremel tool into submission to make some parts and fired up the hot glue gun I bought 18 months earlier for the first time. I discovered great uses for popsicle sticks in building projects. Maybe to many do-it-yourselfers these are the basics, but before this project it was nothing more than a theory I never got to try.
I hope this will inspire others who want to get into the realm of DIY electronics, but have hesitated until now. Sure it's nothing more than a rubber band shooter, but for me it was the journey, not the destination!
Gary Rudd is a proud geek and still missing his first childhood computer, a Commodore VIC-20. Rudd is a certified flight instructor, SCUBA diver and avid reader of tech books and sci-fi, and on the lookout for his next Arduino next project.