Adventures in PCB milling – journey begins

This is a short post to show off my first attempt at PCB milling. I’m a member of the Chicago Innovation Exchange.   Well, I was, but now it’s no longer CIE but the Polsky Center, or maybe the Polsky Echange North, I’m not sure, but that’s what happens when someone invests $35 million in your incubator; you change your name.  The center provides me access to a pretty swanky fab lab equipped with (among other things) an X-carve CNC mill. I recently completed my training on the machine and I wanted to put my skills to the test.

Continue reading Adventures in PCB milling – journey begins

Bake my Pi and eat it too?

Do you ever wake up too early and can’t get back to sleep, so you decide to mess around with your Raspberry Pi, only to find out that the SD card has been baked and the operating system doesn’t load? This seems to happen to me more often than I’d like (both the waking up early and the baked RPi). There must have been something in that instant coffee (didn’t want to wake my wife with the noise of the coffee machine) and Italian Sweet Creme flavored creamer (instant coffee tastes awful without it) because I was able to come up with a reasonably clever solution to my problem this time.

Continue reading Bake my Pi and eat it too?

Which came first

Ahh, the age-old question of the chicken or the egg. There’s a similar theme in my family having to do with my Dad and making stuff. He introduced me to electronics when I was too young to realize how awesome it was, I introduced him to the Raspberry Pi, then he introduced me to Adruino. I introduced him to video capture on the Pi (with the help of a 3D printed camera case) and he turned it around into a nest cam! Ahh, so there’s the bird connection, this is a post about setting up a quick and dirty (and surprisingly effective) nest cam!

Continue reading Which came first

A Vernier Go!Link package for Mathematica

The Go! Link from Vernier Software & Technology (Vernier), is a USB adapter for their proprietary sensors which also provides some basic features such as a buffer, sensor auto-identification and raw voltage reading conversion. Vernier provides a software development kit which allows programmers to use Go! devices in their own systems. Since Wolfram’s Mathematica software became available on the Raspberry Pi, I have been thinking about how one can build a flexible sensor system using Vernier’s products and based on the inexpensive computer and the powerful data analysis and visualization tools of Mathematica. This project isn’t new, and my earlier attempts were highlighted on the Raspberry Pi blog and I recently announced a previous version of this software package. What I’m presenting now is a more user-friendly system that makes data collection easy through the device driver framework incorporated into Mathematica.

Continue reading A Vernier Go!Link package for Mathematica

C2E2 – Working on my Chicago bucket list

One of the things I absolutely had to do before leaving Chicago is to attend C2E2 – the Chicago Comic & Entertainment Expo.  Every year I’ve been here, I’ve remembered I needed to get tickets a week after the event ended!  This time, with Chicago State cancelling spring break and me having to forfeit my trip to New Mexico, I was determined not to miss the event.

Turns out I don’t know much about popular culture.

Continue reading C2E2 – Working on my Chicago bucket list

Optimizing data acquisition

This is the first of a new series (tag) Dancing with Wolfram.  Occasionally, I need to work through programming strategies in Wolfram, and I need a place to store my ideas.  Perhaps they will be useful to others.

The problem

When collecting data from a sensor, one wants to generate a list of {x, y} pairs where x is typically time and y is the sensor reading.  One way of doing this is to create an empty list and then using Mathematica’s AppendTo function to add elements to the list.  The problem with this approach, however, is that it is not very efficient.  The function call makes a copy of the original list each time, and when the list of data gets very large, the time it takes to store a data point increases.  Below, I’ve plotted the average time needed to store a datapoint as a function of the list size.  For comparison, I’ve collected data (times measured on a Raspberry Pi v2)  using AppendTo with a list (blue dots) and adding key -> value pairs to an association (orange dots).

list-association-gr1

After about 1000 data points, the AppendTo a list approach starts to take increasingly longer times.  I was unable to collect any data beyond 10,000 data points since AppendTo started running into memory issues.  It is not unreasonable to expect a sensor data set to contain in excess of 1000 data points, so the performance of AppendTo is not acceptable.

Continue reading Optimizing data acquisition