Nov 092014

With the holidays fast approaching, I thought it might be fun to share my list of on-the-go tech essentials for any geek technology enthusiast.

Leatherman Sidekick Multi Tool

What’s a “tech essentials” list without at least one multitool? I like this Leatherman Sidekick because of its great tool selection and reasonable price. The pliers are solidly built, and the locking blades are a welcome safety feature.

Fenix PD35 850 Lumen Flashlight

I discovered Fenix flashlights a few years ago, and have been hooked. The Fenix PD32 (link) was my first foray into the PD line, and is still the light I carry most often. Its successor, the Fenix PD35, is pictured below. With a removable clip, six output modes (including strobe), and full one-handed operation, this is a great choice for EDC (everyday carry). If it’s built half as good as my PD32, it will last you for many, many years.

Fenix PD12 360 Lumen Flashlight

Why another flashlight? This Fenix PD12 is small enough to fit on a keychain so there is little chance of you forgetting to take it with you. It runs on a single CR123A battery, which is the same type that the PD35 uses.

Swiss+Tech Utili-Key 6-in-1

This is one of those subtle little tools that you don’t even notice until you need it. Great for when you accidentally leave your full-sized multitool at home.

Pluggable USB 3.0 Memory Card Reader

Unlike most other memory card readers, this one has a built-in cable, which makes it great for travel. And, in addition to the usual SD, microSD, and MMC families, it supports the Sony Memory Stick (MS, MS Pro Duo, etc.) card types.


Micro USB to USB On-the-go adapter cable

This little USB OTG adapter cable is great for letting you access USB storage from your phone. When paired with the memory card reader above, you’ll be able to upload photos from your camera without a computer!

Anker 3.6A Dual USB Wall Charger

This one kind of speaks for itself – when you’re on the go, a quality USB charger is a must. The Anker 3.6A Dual USB Wall Charger has two ports – one designed for Android and the other for Apple devices. I like this one because of its slim design and lack of annoying LEDs.

Panasonic In-Ear Headphones

These Panasonic In-Ear Headphones have no business being as good as they are, especially considering that they’re under $10. They sit comfortably in the ear and produce surprisingly good sound.

Anker 10000mAh Portable USB Charger

For long car rides, a quality portable USB charger is a necessity. This Anker 10000mAh Portable USB Charger has two ports, and holds enough juice to charge an iPhone 4+ times or a Galaxy S4 2+ times.

Targus XL Backpack

With all of these essentials in hand, you’ll need a way to store and transport them. For the last 2.5 years, I have been carrying the Targus XL backpack.

Let’s get something out of the way: this backpack is huge. It’s designed to hold a 17″ laptop and it does so with ease. Even with a laptop, you’ll have enough room to hold multiple textbooks and most of the items mentioned on this page. It has an incredible number of pockets and zippered compartments for storing anything you could imagine. It is easily the most quality constructed backpack I have used, as well.

Product images owned by Amazon

 Posted by at 5:35 pm
Feb 212014

I was planning on writing a beginner’s tutorial for using PWM on raw AVR chips, but I found that Arduino already has a nice guide here:

The only change you need to make to their code to use it without the Arduino software is to remove calls to “pinMode”. Do so by using the appropriate DDR register twiddling or macros such as these:

 Posted by at 1:33 pm
Jul 172013

While attempting to update the firmware of my WiFly module, I was getting a Timeout=2 error from the ftp update command, even after I had set the new update server (with the help of these instructions). The solution I found was to change the FTP mode from passive to active, and then attempt the update process.

The complete steps I followed, immediately after booting up the module:

  1. $$$   (to get into command mode)
  2. factory RESET
  3. reboot
  4. [ connect to your network – you will need an internet connection to perform the update ]
  5. set ftp address   (the new update server address)
  6. set ftp mode 1
  7. save
  8. ftp update
  9. factory RESET
  10. reboot
  11. When the module reboots, you should see <4.00> at the start of every terminal line.

It is possible that this may work for you without performing step 6. This probably depends on your network and firewall setup. Give a try first without step 6, and then with step 6 if it doesn’t work the first time.

 Posted by at 9:07 pm
Sep 122012

Over the past few years, I’ve amassed quite the collection of basic electronic components (chips, resistors, etc.), little microcontrollers (Arduinos and Arduino clones), and a few other tiny gadgets (the coolest of which I consider to be this mini WiFi module). With all of these sensitive components and modules, I sought a simple and cost-effective way to store, protect and organize electronic parts. Here is what I’ve found to work.

Resistor kit

I used to consider resistors (and possibly capacitors too) the most difficult things in my collection to organize correctly and compactly. Luckily, I’ve discovered a way to not only stock up my collection but also organize the resistors that I already have. This resistor kit: Joe Knows Electronics 1/4W 86 Value 860 Piece Resistor Kit is perfect.

Each resistor is organized into a labeled baggie, and all the bags fit into the pictured box with a resistor code chart on the lid.

Joe Knows Electronics 1/4W 86 Value 860 Piece Resistor Kit

Capacitor kit

The same company that released the resistor kit also released this awesome capacitor kit. It’s organized just like the resistor kit, with each value of capacitor in its own little labeled bag. I highly recommend it.


Jumper wires

The most annoying thing in the world is making your own breadboardable jumper wires. I refuse to do it. Instead, I bought one of these: Elenco 350 Piece Pre-formed Jumper Wire Kit. The wires are the perfect stiffness, and the box keeps the various sizes from running into each other.

Parts organizer

LEDs, diodes, buttons… where do they go? For these (and similar parts), I’ve found this parts organizer: Stanley Consumer Storage 014725 25-Removable Compartment Professional Organizer.

The organizer has individual compartments that can be rearranged, and parts will not slip around (each compartment has a bottom, and when closed, there is very little space between the compartments and the lid). I wouldn’t suggest dropping the organizer, though, even if closed.

I also keep most of my ICs (integrated circuits, or, chips) in this organizer, but a little more care is needed (see below).

I own three of these things, and they are by far my favorite item in this collection. One day, I’ll post pictures of how I have everything situated in the organizers to give you ideas of how to organize your own parts.


Anti-static foam

Integrated circuits, microcontrollers, and a lot of other electronic components and modules are sensitive to static electricity. Many parts manufacturers protect their chips with anti-static foam. The leads of the part are pushed into the foam, which is slightly conductive. The best deal on this foam that I’ve been able to find is here: Techni-Stat Foam Conductive 24″ X 36″ X 1/4″ High Density

1/4″ is plenty thick, and two by three feet is much more than it sounds.

To store my integrated circuits, I press their little leads into sections of the foam that are the same size as a compartment in my parts organizer. Multiple layers of foam + chips can be stacked in the same compartment. You can also protect your microcontrollers and other electronic gadgets with leads by pressing them into this foam. I will say, however, that this foam does not have enough give to make storing things like Arduino Nanos simple.


Anti-static bags

Where do I store my microcontrollers and similar-sized items? Anti-static bags!

I have three sizes:

The 3 x 5″ size is perfect for storing smallish things like Arduino Unos. Larger boards (and/or those with protruding headers) are best kept in the 4 x 6″ bags. So far I have only needed the 6 x 10″ bags to store cables, but I might use them in the future to store finished projects.

These bags are resealable and reusable. They make it much safer for me to handle my electronics. Just make sure the bags are fully pressed closed, or else they may not block any static.


Label maker

Once everything is filed away and in its place, how do I know what is what? For this task, I use the Epson LabelWorks LW-400 Label Printer. Under $30 and with a bunch of options, it’s perfect for labeling my anti-static bags once their contents are safely tucked away. I also use the labels to label the compartments in my parts organizer.


Barcode scanner

I’ve actually had this for a while; a USB barcode scanner. Goes well with the label maker above, since the label maker can print barcodes. I also use this to manage my collection of books. At about $20, it’s pretty cheap; in fact, it was the cheapest barcode scanner that actually projects a laser that I found. Most of the cheap ones require you to hold the scanner up directly to the barcode.


Grid-It Organizer

Here’s something that I just got recently. It’s not just for electronics per-say, but it is really useful if you want to organize electronic devices such as flashdrives and cables. The best way to tell you about it is to show a picture of it in action:

It’s basically a rigid, flat (no, it doesn’t fold up or zip) organizer with stretchy, grippy straps that criss-cross. They are a variety of sizes and lengths, and to put something in the organizer, you simply lift the strap and slide your item in. The grippiness of the straps aren’t easy to see in the image, but trust me, this thing will hold on to your stuff tight.

What you can’t really see in the picture I posted is that there are tons of other straps behind the items. It’s endlessly configurable. I bought the black one, but I thought the red was easier to see.

Hopefully you enjoy these as much as I do! Please note that I don’t own any of these images; Amazon does.

 Posted by at 1:12 pm
Sep 042012


BitBucket repository is live:
In the final post in this five part series, I’ll develop a client side application in Python to communicate with our drumset which was modified in part 4.

The final result will be a simple command line interface (for now) that looks like this:



Before even choosing the language I wanted to use, I decided to list a few requirements for the client-side software.

  1. The software will automatically detect the drumset; the user will not have to manually choose a serial port.
  2. The software will support playing multiple drumpad sounds at once (like a real drumset). This will require audio mixing.
  3. The software must be cross-platform and easy to install.


My development process

I ended up developing this application three times: twice in C# and once in Python. There was also almost a C++ version. In this section, I’ll explain the initial prototype versions and why I decided upon Python in the end. To do this, I’ll go down the list of the requirements.

Requirement 1 is easy: if you remember, back in part 3 we added a feature to the embedded software that supports responding to “pings”:

// The client might want to know what we are, so let
// them ping us
if (Serial.available()){
  while (Serial.available()){;

  Serial.println("{ "msgType": "ping" }");

I didn’t want users to have to figure out which serial port to use. It should Just Work™. This is a very simple feature to implement, and because of this, requirement 1 didn’t actually steer me towards any one language.
Continue reading »

 Posted by at 7:00 am
Aug 312012


BitBucket repository is live:
In part 3, we finished fleshing out the details of the hardware and embedded software. In this part, we’re going to build it!

Ready? Let’s begin…

…by reading this first

Let me preface this post by saying that I am not responsible if you destroy your drumset, burn down your house, spoil your appetite, etc. These instructions are accurate to the best of my knowledge, but I assume no responsibility for anything that may come from you following them (unless you win the lottery – in that case, I take checks or PayPal).

One more thing. This project involves soldering really tiny surface mount parts to a tiny board on both sides (and uphill, both ways). So I wouldn’t recommend this as a beginner soldering project.

The plan

You will be assembling a PCB that I designed. This PCB implements all the features of the schematic we finalized in part 3. Here is a picture of a completed board, soldered onto the Pro Micro:

Let me explain what you are seeing:

  • The purple board is the board I designed.
  • The red board (bottom) is the Pro Micro 3.3V, which is soldered to the purple board.
  • The white Molex connector is for the RGB LED.
  • The two surface mount chips are the tri-stating buffers.
  • Finally, and most importantly, the two right-angle female headers are connectors for the control box and drumpad controller.

Disclaimer: This board was autorouted out of laziness. If you’re better at using Eagle than I am (or just more motivated) please by all means grab the Eagle files and manually route it. If you do this, don’t forget to send a pull request my way on BitBucket! Should the average person care about it being autorouted? Probably not. Some vias might obstruct the silkscreen in some places, but you should have the reference PCB layout in front of you anyway.


All components of this project (software, hardware, and misc. development tools) are available at BitBucket here. For this part, you should only care about the hardware folder.
Continue reading »

Aug 272012


BitBucket repository is live:
In part 2, we finished up the initial drafts of the hardware and embedded software for the drumset. Now, we’ll make a few modifications to our circuit and software to add some additional features.

Improving the circuit

Let’s add three more things to your circuit:

  1. Some kind of indicator, so we know it’s working.
  2. Decoupling capacitors
  3. Circuity to detect when the control box and Arduino are on at the same time (a conflict)



I wanted a visual indicator that would quickly indicate the status of drumset, so I chose to install a big RGB LED right in the back of the drumset. Specifically, I chose this 10mm RGB LED. If you look at the back of your drumset, you can see a little plastic panel where the pedal and MIDI “in” ports are installed. That panel is taken, but if you look opposite the control box (still on the back of the drumset), there’s some open space. That’s where we will eventually install a hole for the USB cable to come out of, as well as the LED.

The LED – image property of SparkFun

Side note: This indicator LED is optional, though highly recommended. It will involve you drilling a hole in your drumset, which is a very delicate operation because of the weak plastic (sawing the hole for the USB cable is far easier). If you choose not to install the LED, you will probably save yourself half an hour, but you will lose an important feature. Plus the LED is really big and shiny. I’d recommend you install it. If you want, you could go for the smaller 5mm version instead of the huge 10mm LED. Just be sure that you get a common cathode LED.

Decoupling capacitors

We just need two decoupling capacitors: one on each of the buffer chip power supplies. I tried adding decoupling capacitors on the control box and drumpad controller, but the added capacitance caused a bunch of problems, so don’t do that. Also, you don’t need one on the Arduino’s power supply because it already has decoupling capacitors on the board.
Continue reading »

Aug 162012

BitBucket repository is live:
Continuing where we left off from part 1, let’s plan out some of the hardware that will interface with the drumset. A little bit later, we’ll prototype the embedded software.

Planning the hardware

We already know that the control box and drumpad controller communicate with SPI. Below is a simple (highly abstracted) schematic showing the existing drumset circuit. Note that the drumset uses 3.3V logic. This will be important when choosing a microcontroller.

SPI is a simple protocol to work with, so let’s plan on somehow having our hardware take control of that SPI bus.

Choosing a microcontroller

I decided early on that I wanted to use some kind of Arduino, instead of just a bare microcontroller, for a few reasons:

  • USB connectivity: Many Arduino-compatible development boards have a USB connection built-in, so it would be easy to connect the finished product to my computer. Of the three, this was the most important factor to me.
  • Simplicity: My hope is that other people will follow the (impending) tutorial. I didn’t want to require that people not only solder together the drumset interface circuit, but also a microcontroller circuit.
  • Ease of prototype: After I’m done prototyping on a breadboard, it will be easier to transfer my circuit to protoboard since I’ll have less parts to route.

Continue reading »

Jul 262012

BitBucket repository is live:

So, you’ve got one of those Guitar Hero (World Tour) drumsets, and want to use it with your computer? Are you also looking for a fun DIY project involving soldering, electronics, and possibly voiding a few warranties on consumer hardware? Great! Read on.

My humble drumset

Continue reading »