'HackerBoxes' is a monthly subscription box sent to aspiring hackers, nerds and tinkerers alike. Of course, when we talk about hackers, we're not talking about the hood-wearing, bank-account-emptying type. When we talk about hackers, we're imagining the bygone days of soldering EEPROMs onto circuit boards, bypassing long-distance telephone charges and tinkering with computer hardware just to see what you could make it do. HackerBoxes is an homage to this concept of a hacker, bringing hardware tinkering to a new level with modern technology like Arduino microcontrollers, GPS sensors, SD cards and surreptitious power supplies.
Opening up the nondescript First Class package revealed a colorful mixture of components, diagrams and swag. This kit, dubbed 'Hacker Tracker', comes with an Arduino Nano micro-controller, a satellite GPS receiver chip, a magnetometer/accelerometer chip, a Micro-SD card read/write chip, a USB Micro-SD card reader, a Kingston 16 Gigabyte Micro-SD card, Breadboard, Micro USB cable, jumper cables in various colors and lengths, a HackerBoxes sticker and pin-out diagrams for the included chips. Additionally, a really cool ruler made from printed circuit board adds a nice touch to the package.
Although light on instructions, the package indicated that a tutorial was available online. Navigating to the HackerBoxes website reveals links to 'H4X0R SK00L', a 'leet speak' play on the term 'Hacker School'. Here, each box is linked to its own Instructables page that serves as the official tutorial. You can find the tutorial for the Hacker Tracker box here.
LET'S GET STARTED
The first few paragraphs of the tutorial serve as an orientation to the HackerBox and Arduino architecture. I suspect that the first HackerBox sent to a new customer is partially random, so it is important to catch up on the prerequisite skills like soldering and the navigating the Arduino Integrated Developer's Environment (IDE) in each tutorial. HackerBoxes will remind you of that here and prior to critical steps throughout the project. It may seem repetitive, but serves to highlight some very important information you can't afford to ignore.
After absorbing an absurd amount of information from the Instructable, I was finally introduced to the meat of the project. As seen in the photo above, the Arduino Nano is mounted across the center-line of the breadboard opposite the Micro-SD card reader board. Conductive metal pins extending from these chips connect with metal strips running throughout the inside of the breadboard, allowing us to electrically connect different devices by attaching jumper cables between their pins. For example, the green jumper cable in the photo connects the GND pin of the Arduino Nano to the GND pin of the Micro-SD card reader. The other cables serve their own purposes, including data transmission and providing low-voltage DC power.
I ran into my first snag on this step. Misinterpreting the pin-out diagram on the Arduino website caused me to connect the 5V jumper cable to the wrong pin on the Arduino Nano. Troubleshooting the issue when I couldn't access the Micro-SD card through the Arduino IDE took almost 10 minutes. Once I noticed the problem, simply moving the jumper cable to the correct pin resulted in a successful test run of the program we have created so far in our IDE, as you can see in the photo below.
Moving right along, I test the Micro-SD card in my laptop to verify that the data is, in fact, written to the card as the Arduino program described. It worked! Feeling excited about my initial success, I move onto the next step of integrating a GPS receiver into the project.
The NEO-6M GPS receiver can be powered by a Micro USB cable or by 5V low voltage DC power. In our setup, the Arduino Nano is utilizing the included Micro USB cable, so I chose to install headers on the GPS receiver to mount it on the breadboard. Headers are the metal pins that are inserted into the holes on the breadboard. Since the GPS receiver didn't come with the pins already attached, I soldered the headers included in the HackerBox supplies to it. This allowed me to create electrical connections between the GPS receiver and other breadboard components.
This time, I didn't make any mistakes running jumper cables. After connecting four pins to the Arduino Nano, I copy/pasted the example program code from the tutorial and uploaded it to the device. Opening the serial monitor allowed me to view the data being sent or received. Upon initial analysis, it looked like the project was successfully logging my exact GPS coordinates every second onto the attached Micro-SD card.
It was time to verify our data. Moving the Micro-SD card to the laptop, I load the GPS coordinate file into GPS Visualizer, a website that can overlay your GPS data onto many different map layers, including Google satellite and terrain images. As I suspected, red lines indicate the home I am currently sitting in. A couple outlying points are easily explained as early measurements taken before many satellites were locked onto. Creepy!
In the tutorial, the final piece of the project, a magnetometer/accelerometer, is described as "tricky to get working correctly" and "prone to damage", so I didn't have my hopes too high on integrating it onto the board. Nonetheless, I decided to go ahead and attempt to get it up and running. Like the GPS receiver, the magnetometer/accelerometer does not come with built-in headers. After soldering another part from the HackerBoxes kit, I attach the part to the breadboard.
At this point, I came to realize that I hadn't properly planned my layout before I started putting everything together. I had to slide the GPS receiver over to make space for the magnetometer. Additionally, I had only left 2 holes on the breadboard connected to each pin on the Arduino nano. With three chips to connect to the 5V and GND pins, I had to come up with another solution. Connecting a jumper cable from the 5V and GND pins to empty breadboard rails allowed me to expand the number of devices connected to each. The finished project is shown in the photo above.
Unfortunately, powering up the Arduino IDE and uploading code designed to run the magnetometer didn't accomplish much. All hardware components of the project appear to have initialized correctly, but I received readings of 0 for all magnetometer measurements repeatedly, indicating a failure somewhere else. After trying several different fixes found online and in other tutorials, I saw no success.
All in all, I was happy with the success I did see during this project. The implications of such an inexpensive, small GPS tracking device are vast. Powering this board with a 9V battery or USB power bank and stuffing it all in a cigarette box would provide a casual hacker with an amazingly accurate GPS tracker capable of providing detailed maps of a targets movement for days, weeks or months at a time. With a couple more tweaks or components, it isn't a stretch to assume this project could be modified to remotely upload tracking data to a malicious server, record audio or video data and more.
I am really looking forward to the next HackerBox project delivery. Now that I've tasted micro-controller success and understand the possibilities, I want to learn more. The packaged 'portions' you get from HackerBoxes are just enough to sate your appetite for several tinkering sessions before you fully absorb all the knowledge it contains.
Although you could buy all of the individual components for a HackerBoxes project online, the subscription model allows you to get the package deal at a modest discount to retail prices. The added production value, like printed pin-out diagram postcards, stickers and Instructables tutorials, only enhance the experience. Some aspects of the presentation leave room for improvement, like the plain white shipping box, the Chinese packaging on the Micro-SD card, or the untranslatable Chinese download website you are directed to in order to install your Arduino Nano, but all were easily overcome.