Skip to main content

Approaching Arduino from the other side

Photo credit: Arduinoteam

This isn't really a project post, I just want to write a little bit about Arduino. If you read blogs like mine often, you'll know that I'm really late to the party. At this point, writing a blog post about Arduino is cliche'.However, from the perspective of someone who has been doing micro controller programming for a while, the Arduino is looked at with disdain. On Hack-a-day, for example, the comments to any project someone does with an Arduino complain about the lack of skill required to program using Arduino, that it's a the hammer that makes every solution look like a nail, that it has way more capability than is needed, etc. They are remarkably predictable,

Spectrum Analyzer basics

My aluminum spectrum analyzer frame post generated more interest than I had expected (thanks Lady Ada!). I've been planning a series of posts going into more detail. I'm not by any means an expert, I'm certainly no where as skilled as Scotty, who designed this model. Hopefully my relative naiveté means that I can explain things in an approachable way without leading you too far astray.

To get started, I should probably start with the concept of spectrum analysis.The idea is that we're trying to interrogate the frequency content of the electrical signals. This is in contrast to something like an oscilloscope, which analyzes the amplitude of signals over time.

There are several methods for performing frequency, or spectral, analysis.One, relatively simple, way is to collect samples and to do a DiscreteFourier Transform (probably a Fast Fourier Transform, or FFT). Many digital oscilloscopes have an FFT function, including the venerable Rigol. There are significant limitations to the FFT, however. The most significant is the Nyquist limit. This limit states that to reproduce a digitized signal, you require twice the sample rate as the highest frequency component. Similarly, to interrogate a given frequency with an FFT, you also must sample at twice that frequency.There are nuances to this, the most important being the need to attenuate signal of a higher frequency, otherwise you'll introduce aliasing (the appearance of signals that aren't really there). Hopefully, it's clear that the Nyquist limit severely constrains the span of frequencies that the FFT is appropriate. Even if you're able to afford a digital oscilloscope that can sample at high enough rates, the computational expense involved with all these DFTs limits its usefullness.

The alternative to the DFT is the heterodyne. The core idea of a heterodyne is the modification of the frequencies in a system through non-linear mixing. Essentially, if you add two signals you get the sum of the power of each for every frequency component in each signal. I know that's a mouthful, but hopefully the

Scotty's spectrumanalyzer design

Pickit 3 first impressions

I just got a PicKit 3 through Element14/Newark, and I wanted to write about some first impressions using it with my mac. To make sense of the reason why it's even worth discussing, it's worth briefly talking about what it's like doing embedded programming on the mac. I'm only going to discuss the use of the few embedded platforms that I've tried to use. In this case, it's the TIMSP430 series, Atmel AVR, and Microchip PIC.


I didn't get very far with the MSP430. I received a development kit for free, some time ago, by attending an event at TI. Though TI finally "supports" the mac, this is only recently true. As it turns out, there must have been some problem with my development kit, because it kept crashing my computer. I guess I can try this later when I have time, but for the moment, it's a non-starter.

Atmel AVR

AVR fans have long held that the Atmel platform was the most "open source" and accessible. This is, in a sense, true. However, I look at it another way. I see Atmel's reliance on GCC as an example of laziness. Because I don't useWindows, I have no idea what Atmel Studio is like, but on other platforms, the only path for programming the AVR is GCC and AVR-libc. On the mac, the version of GCC available through macports appears to have been updated since I've used it, but it was a major version behind for quite some time.

I've already opened the door to a major flame-war, so I might as well keep going: GCC is a crap compiler. There, I've said it. "But why" you might be saying. In my experience, GCC produces larger binaries, that are less efficient, and slower. It's fine for a free compiler, and on a regular computer, where RAM space and processor capacity are abundant. However, on a microcontroller, these resources are precious.

I've used GCC and AVR-libc extensively on the mac. This solution is definitely workable. It 's not ideal, though. In addition to the shortfalls of GCC, there is no IDE support (though some hacking on Xcode will work), and the programmer interface (AVR dude) is primitive. In theory, it's possible to useAVR-gdb to debug AVR programs, but it looks very challenging.

Microchip PIC

Until last year, there was basically no support for programming a PIC on a mac. That all changed when Microchip released the beta of "MPLAB X," which is their latest version of IDE. Based on eclipse, it supports Windows, Linux and mac. In addition to providing an IDE for every major OS, Microchip also provides their high-quality compilers. The most extreme optimization features are reserved for the paid versions, but the free version is still better thanGCC.

Also, Microchip has always included extensive libraries for their peripheral functions with their compilers. It's very common to configure the registers manually when using the AVR. With the Microchip peripheral libraries, it's seldom necessary. Manually configuring peripheral registers is, at best, an annoyance, and it's usually a total headache.


I've used the Microchip ICD2 for years with good results, but it requiresMPIDE, which only runs on Windows. I had great hopes for mac support whenMPLABX was released.

Homebrew PCB update

I've been making my own PCBs for almost a decade, now. I started with the Gootee method of toner transfer and a clothes iron. This served me well for some time, but it was inconsistent, error prone, and a ton of work. Recently, I've been trying to make boards with narrower pitch and finer traces (o.5mm pitch and 8mil traces), and it wasn't cutting it. Also, I've seen peoples results online that have been impressive.I decided it was time to get with the times and update my system.

Many prominent hackers have gone the photoresist method, for example Quinn Dunki (blondihacks). She achieves very impressive results (particularly in the dimension of her spaces: 5 mils).I'm not sure if it's a limitation of her process, or simply that her example only goes down to 16 mil trace width. If you are intending to use .05 mm pitch components, 8 mil trace width is really the minimum. The most impressive part of her process is the surface finish of the etched copper.

At the moment, I'm not interested in switching my entire system over from toner transfer. So, I went looking for a few concrete ways to improve my PCBs.I decided to start with a laminator, for a few reasons. First of all, with a clothes iron, it's very difficult to get consistent heat and pressure. I've had times where all of the toner on the board transferred, except for a small area that I missed for some reason. Other times, I've pressed the iron too hard and smeared the toner, destroying the pattern. After a ton of research, I found that there was a brand that everyone used five or so years ago. People modded it to run hotter by replacing the thermostat. That model of laminator wasn't available any more, and I didn't really feel like making a (what looked like poorly made) laminator run hotter. In the mean time, a laminator called Apache came on the market. This machine was endorsed by PCB Fab in aBox for toner transfer. It has the advantage of being digitally temperature controlled, so no mods are necessary, and I can still use it as a normal laminator.

Apache laminator

Apache laminator

When you do toner transfer, you have to use a ceramic-covered paper. The idea is that the toner won't soak into the smooth coating, and when you get the paper wet you can peel it off the board. Originally, I used photo paper according to conventional knowledge at the time. Later, I switched to magazine paper, and the results ended up being about the same… Other than the enormous price difference. The magazine paper worked really well in the laminator.

Another thing that I wanted to try was using fancy-pants toner release paper. Digi-key carries the PCB Fab-in-a-box stuff, so I added the transfer sheets to an order I was doing anyway. It's $14 for 10 sheets. Not cheap, but considering that I can usually get a few boards out of a 8x10″ sheet, it's only about $0.40 per PCB. The results are about the same as the magazine method, but the release is AMAZING! Just put the PCB under water for a few seconds and the paper backing slips right off.

It's a pitty

It's a pitty (see what I did there)

Unfortunately, the results of the etching process is just as bad as ever. The problem is that the toner is a bit too thin to really really resist the etch enough to prevent the copper from pitting. If you read Quinn's blog post about her experience with photo etching, you'll remember that she had the same problem. The difference is that it would be impossible for me to align an extra layer of toner. Even if I could, I'm sure it would be a disaster.

Much better

Much better (those are 0.5mm pitch traces)

it would be a disaster. I reluctantly tried the PCB Fab-in-a-box "toner reactive film." The sales pitch on it is that it will stick to the toner, provide a bit more protection, and fill in the micro holes. My impression on this product is mixed. I think it helped, but certainly not as much as promised. That said, I'm not likely to stop using it. I think the toner reactive film (TRF) is more vital than the magic paper. All that stuff, thought it isn't strictly necessary is probably worth the price.

I'm still using the same container of Ferric Chloride that I bought to etch my first board. It's probably time to replace it, but it still works.

I also use MG Chemicals "LiquidTin." It's pretty amazing how quickly the tin coating precipitates onto the copper of the boards. But, and this is a huge but, that stuff is NASTY! It probably has one of the worst smells that I've ever experienced. I know that many products caution against breathing fumes, but I wouldn't smell this one even if you paid me.

I'm still working on achieving even better results from my setup. At this point, the limiting factor of the space between spaces is that the printer merges lines that are closer together than 8 mils.

Using BladeRF in Matlab

Normally, I wouldn't write a post such as this. I prefer to talk abou thardware on the blog, but in this case, I didn't see any other tutorials for making this work. The Nuand folks provide a link to pre-release toolbox code, and there is one post on their forums. I'm not sure how much it's going to make a difference, but I'll be using OSX 10.9.2, withXcode 5.1 and Matlab 2013a.

Getting the toolkit compiled

Before we can use the hardware with Matlab, it stands to reason that we need to get the toolkit compiled and installed. To do this, we'll need to setup theXcode command line tools, and Xcodeselect.

Preparing Xcode

The first problem that I ran into was that the Matlab toolkit build system wants to use the OSX 10.7 SDK, which isn't present in Xcode 5.1. The Official solution from Matlab is to edit the file so that it uses the 10.8 SDK instead.

>> cd(matlabroot)
>> cd bin
>> edit

Edit the file, replacing all 4 instances of 10.7 with 10.8. Then run 'mex-setup'.

>> mex -setup
>>             Options files control which compiler to use, the compiler and link command
    options, and the runtime libraries to link against.
    much output deleted

Now, we're actually compiling code. But, we're presented with some errors straight-away:

>> run('/Users/wdillon/Desktop/matlab/compile.m')
In file included from bladerf_calibrate_dc.c:2:
In file included from /Applications/
error: unknown type name 'char16_t'
typedef char16_t CHAR16_T;
     ^    bladerf_calibrate_dc.c:4:10: 
fatal error: 'libbladeRF.h' file not found
#include "libbladeRF.h"
     ^    2 errors generated.
            mex: compile of ' "bladerf_calibrate_dc.c"' failed.
            Error using mex (line 206)
    Unable to complete successfully.
            Error in compile (line 1)    mex bladerf_calibrate_dc.c -L. -lbladeRF
            Error in run (line 64)    evalin('caller', [script ';']);

We were tipped-off by the forum that we'd run into this problem. The solution is to copy the libbladerf.h into the directory with the rest of the source files. Presumably, the reason it's not already there is because you don't want to keep another copy of that file that can become inconsistent with the rest of the blade software.

After copying libbladerf.h from the host/libraries/libbladeRF/include folder into the matlab toolkit source folder, we can extinguish that error. For the sake of brevity, let's also handle the type error. In this case, the compiler doesn't know what a 'char16_t' is. If you're a little confused about what a16-bit character is, it's because it has to of with unicode. Also, the bummer is that the tmwtypes file is owned by matlab. So, we can see that bladerf_calibrate_dc.c calls matrix.h, which calls tmwtypes.h. So, before the include for matrix.h, we need to define what char16_t is. So, I just added these two lines to the top of the file:

            #include <stdint.h>    typedef uint16_t char16_t;

The stdint file includes all the definitions for int8_t (8-bit signed integer), uint16_t (16 bit unsigned integer), etc. These are nice because unlike int and 'long int' they don't depend on the architecture of your computer or compiler. With that, we can define char16_t to just be an unsigned16 bit integer. Now, those two errors should be gone, let's try again:

>> run('/Users/wdillon/Desktop/matlab/compile.m')
    bladerf_calibrate_dc.c:24:8: warning: implicit conversion from enumeration type 'bladerf_module' to
    different enumeration type 'bladerf_cal_module' [-Wenum-conversion]
            mod = (bladerf_module)(*m_ptr);
                ~ ^~~~~~~~~~~~~~~~~~~~~~~~
    1 warning generated.
    ld: library not found for -lbladeRF 
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
            mex: link of ' "bladerf_calibrate_dc.mexmaci64″' failed.
            Error using mex (line 206)    Unable to complete successfully.
            Error in compile (line 1)    mex bladerf_calibrate_dc.c -L. -lbladeRF
            Error in run (line 64)    evalin('caller', [script ';']);

Now we've got a brand new error. This time, the linker is trying to find the bladeRF library to link to. Assuming that you've got the bladeRF port installed according to the mac getting starte dguide, it's installed at /opt/local/lib/ so we just need to add that to the library path.In the compile.m file, there are several lines that are define the compile line for each source file. If we rewrite them to include -L/opt/local/lib.

Finally, we're making some progress! Many of the files compiled right away with only a few warnings. When I got to blade_rx, I discovered that these files were written against an older version of the libbladeRF api. At this point, I'll stop giving a play-by-play of the changes, because I think there may be several.

VORs and SDRs Part 1 & 2 Supplemental materials

Part 1

Part 2

I want to share some supplemental materials to go along with this video. In the attached zip file, I've included the raw samples (32k/sec sample rate, roughly centered carrier) and the GNU Radio Companion file for basic processing. I'd be very interested to see if others can squeeze out a little better performance.

Also, this is the path that I took. It may help understand the angles. I need to make clear that I'm not at all certain that the absolute angles are representative to compass points. I'm only looking at relative angles at this point. Eventually I'll calibrate the system using a known VOR calibration location (there is one at the Corvallis airport).

This is the path I took while collecting the VOR data. Ignore the drive time

This is the path I took while collecting the VOR data.

My new Chinese laser cutter!

For my birthday, my entire family chipped-in and gave me most of the money to buy a (relatively) cheap laser cutter directly from China. I had seen severalHack-a-day articles about these machines, and I've got experience with 3D printers, so I thought it was something that I could handle. Boy, did I have a lot to learn.

The path the slow boat from china took

The path the slow boat from china took

To begin with, I looked around on eBay and Alibaba. I noticed that 90% of the~$1000 units are almost identical. There are occasional small differences such as pointing laser, whether it has a spring loaded "work clamp," whether it has a raising-lowering bed, etc. I found one that claimed to have a larger bed than any other that I'd seen (mistake #1). I don't know why I accepted that a machine that looked like every other machine out there would have magically increased the work size, but I did, and it doesn't.

Because I was mentally set on this machine, I was willing to accept the shenanigans of the seller (mistake #2). The trouble began when their "free shipping to the USA" became $200. I thought "That's kinda annoying, but not the end of the world." The shipping charge was on par with other vendors. The next problem became that the $200 shipping was by boat, and F.O.B. (Mistake#3). Alibaba doesn't support shipping by boat, and at this point the vendor and I agreed to leave the relative safety of Alibaba (Mistake #4). I requested a refund of my Escrow and it was granted.

A quick note about how Alibaba works, for the uninitiated. Alibaba is a market place, like eBay. Unlike eBay, however, Alibaba provides some additional protections to the buyer, and less so, the seller. When you purchase something from a vendor and make a payment you pay Alibaba directly, and that money is put into an Escrow account for the transaction. At this point, the Seller is assured that the money is there and they are guaranteed payment if they holdup their end of the deal. The seller, then, ships the product with an Alibaba approved carrier (like DHL, EMS, etc.). When the buyer receives the product and decides that it was accurately represented and meets expectation the seller is paid and the escrow is closed.

If you decide to leave Alibaba, it's the wild, wild … east The vendor really wanted to be paid by a wire transfer, which is the system that you see in spy movies. Bank account number, routing number, etc. The thing about a wire transfer is that there are NO protections. That money is gone, forever. If the vendor is feeling generous they may give it back if there's a problem, but there are no systems in place for you to dispute it. There was no way I was going to go for that. I got them to agree to accept PayPal, which for all their faults does provide some buyer protections. Paypal makes their money by levying a surcharge on business transactions; the only way I got the vendor to agree to this was by paying the surcharge myself. In my mind, it was a worthwhile investment in insurance.

Ok, at this point I've paid the vendor and they've sent me vague information about when the ship will be leaving the Qingdao port. Then, one day I get an email from them about filing an ISF (10+2) form. I had no idea what this was, and I literally called the Port of Portland to ask them. They basically laughed at me. Apparently, the ISF is a form for a system that was introduced after the Sept. 11 collective mindless panic. Someone had the thought along the lines of "zomg, someone could put a bomb in a shipping container and blowup an entire city!" So, of course the government intervened and invented yet another complicated, expensive, process that can only really be done by a customs broker.

Now I need to find a customs broker. Off to Google… Whelp, no one has a ratings site for customs brokers. All my usual methods for deciding on a service provider fail. I find myself at the Port of Portland website and staring at a list of what seems like a hundred brokers. I literally choose one at random (mistake #5). I call their number and someone assures me that I've got plenty of time to file (Did I mention that you have to file the form three days before the ship leaves the last foreign port, and that failure to comply can be a $5000 fine). I never hear from him again. Two days later I get a call at 3:00am from China. They're calling to yell at me about the fact that my form hasn't been filed and that I needed to do it right now. I calmly(lucky for them, my 1-year old wasn't woken) explain to them that no one is awake or willing to take my calls at 3:00am. I'm not happy. The next morning I googled for "Customs broker Portland Oregon." I choose the first link. My thinking is that google's magic algorithms must know something more than random guessing. The new company is fast, responsive, and mostly a pleasure to work with.

Importing something substantial (I 'm not sure what makes something substantial, but stay with me) is an expensive affair. The ISF form costs $35to file. Great. Wait, I also have to become a customer of the brokerage company, $50. I need to have an ISF bond, $100. Don't forget the customs bond premium, $45. Someone needs to enter the customs yard, $125. I haven't even mentioned duty yet (this is what most people think of when importing), $26.50.By the way, any device that "emits radiation" has to be FDA accepted (they mean all radiation. Yes, I know that LEDs emit radiation, so do radios, you get my point), that's another $35. So far we're looking at about $400 in addition to my $200 shipping. Awesome.

You can see in the image above that the boat is going to Long Beach,California. Cool. I don't live in California. The whole time I've been talking to them I've said Port of Portland perhaps a dozen times. I'm panicking a little. About two days before the boat is set to arrive in Long Beach, I get a call from a company at the Port of Long Beach. They were wondering when I would pay their fees. What I wasn't aware I had contracted with anyone at thePort of Long Beach. They had asked me about who my customs broker was. It seemed like this was the kind of thing that they could bill my customs broker for, and I had them do that. These guys charged another $160 of fees, including my favorite, the "Clean truck fee."

Now, at this time (October 2014, and persisting now, into January 2015) there is a major bottleneck at the Port of Long Beach. My delivery was delayed a bit over a week because of this.

I was curious how I could get a shipment delivered to Long Beach, and have it go through customs in Portland. Apparently, it's possible to move merchandise across the country that has not gone through customs. It just has to go to customs before it goes to the customer. That seems strange to me.

Anyway, the truck eventually got my package to Portland, and I drove up one day to get it (I had 2 days before I'd start getting charged warehouse fees).They put it on a forklift and surprisingly gracefully placed it in the back of my 4-runner.

All told, the cost for the machine was $700 + $200 shipping + $667 in customs fees. I feel a bit nauseous typing that out. Even more so when I add them and have to say that it was $1567 in total. Though, when I remember how much a decent laptop costs, I feel a little better. :)

The rest of my laser-cutter adventures were documented in video. Please enjoy the YouTube playlist below:

Laser water cooling, part 1: Peltier element theory

I just ordered a laser engraver/cutter from China. While I wait for the slow boat to come into port, I thought it would be a good idea to start preparing the infrastructure. These products don't include any hardware for the required water-cooling, other than a submersible pump. Most people just say "just have a few gallons of water circulating, and you'll be fine." I say "if it's worth doing, it's worth overdoing."

In the spirit of overdoing it, I remembered that I had a peltier element-cooled fridge in my lab for a while, and that the parts were still kicking around somewhere. Peltier coolers are really neat. They can use an electrical current to drive a difference in temperatures on the opposite plates. I found an interesting page with a simplified model for calculating their performance across a range of conditions. It's interesting to note that you can't just drive it harder to move more heat. Because the modules are consuming energy themselves, self-heating can (and often does) overwhelm the coolers ability to move heat.After spending a couple days understanding the models, I discovered an error in the page, so I'm going to re-post corrected equations.

Computation of T1

This equation computes the temperature of the "cold side" of the cooler. The model depends on several variables:

I = Drive current (Amps)

Rp = Cooler resistance from the data sheet (Ohms)

Q1 = Thermal load that we're trying to cool (Watts)

C1 = Thermal conductivity from load to ambient (Watts/°C)

Cp = Thermal conductivity through the peltier (Qmax/ΔTmax) from the data sheet

Ch = Thermal conductivity of the heatsink on the hot side (Watts/°C)

T1 = Temperature of the object being cooled (°C)

T3 = Temperature of the ambient environment (°C)

I'm going to ignore P. For now, it suffices to say that it's a constant that models the peltier junction's performance. (Watts/Amp)

The article that I got this model from doesn't really explain the terms at all, so I'm going to try to interpret the pieces of it. First of all, the T3term references the entire model to ambient. If you used something else as a counterpoise, I'll call it, to the peltier you could remove this term and model it.

The middle term models the heat flow out of the hot-side heatsink. The numerators of this term are the thermal load (Q1) and the self-heating from the peltier cooler's current (see Ohm's law for the inspiration of this). The entire term is divided by the thermal conductivity of the heatsink, Ch.Thermal conductivity is a very useful specification, as it tells us the °C across the device per Watt. In the case of a heatsink, that is referenced to ambient.

The first term models the heat flow from the load through the peltier. Again, there is the Q1 term, as we have to get the thermal load through the device.Second, we have half of the peltier's self-heating. My assumption is that only half of the peltier's self-heating has to travel all the way through the device. Finally, the -P*I term models the active cooling (the point of this whole thing). These are all divided by the combination of the thermal conductivity of the load-peltier junction and the peltier's internal thermal conductivity.

The upshot of this, is that we can model the performance of our system built around a given peltier junction given load, heatsink performance, and ambient temperature.


Now, let's talk about P. We can derive P entirely from information commonly found in peltier junction datasheets. There really isn't much more to say about this, just plug in the values…

The module I'mworking with

The module I'm workingwith

Now, let's make all of this a little less abstract… The image above is the module that I've salvaged. It's easy enough to lookup the model number and get the data sheet.

Specification table

Specification table

Using the specification table, directly from the data sheet, we can calculateP to be 14.47 (for 25°C). For now, let's also choose some values for the other parameters. Let's say we want to cool a load that is producing 10 Watts, with a rather poor heat sink that has .2 Watt per °C of conductivity (would be listed as 5 °C per Watt as resistance).

T1 heat versus amps, with simple heatsink (blue) and ambient (green).

If we graph T1 versus drive current, I, we can see that the optimal current from the cooler is 0.8 Amps (red line). Unfortunately, if we compare it toQ1/Ch (which would happen if we just put a heatsink on the load) it's almost 6°C hotter than without the peltier cooler… boo. The laser is estimated to produce about 200 Watts (20 times more than the 10 Watt example) of heat. The problem, ultimately, is that the hot-side heatsink matters. A lot.

T1 heat versusamps, with simple heatsink (blue) and ambient (green). With a betterheatsink

T1 heat versus amps, with simple heatsink (blue) and ambient (green). With a better heatsink

Now, what happens if we find a much better heatsink They're expensive, but you can find .1 °C per Watt heatsinks on Digi-key. This would be 10 Watts per°C in terms of conductivity. With the better heatsink, the cold side is down to -17 °C! The heat sink is more than able to shunt the heat from the load and the cooler.

All that is obviously super-awesome, but what if we want to calculate what the ideal drive current is for a peltier cooler The Itec equation, above, will give us this information. We still need the P and Rp terms from the datasheet, and the thermal conductivity of the peltier and the heatsink. But, you'll notice that thermal load and the ambient temperature are not factors in the equation. Therefore, the ideal drive current (and, therefore maximum temperature drop) are not affected by those factors.

I hope this has been at least somewhat interesting. Stay tuned for part two, where I investigate whether it's really feasible (practically and economically) to move over 200 Watts with peltier elements. Also, I'm planning some research into how to characterize the efficiency of radiators in liquid cooling setups. If you have any insight, please leave it in the comments.Also, I started to write a mac application to model peltier cooler systems. I probably won't finish it unless it seems like something people would want.Leave messages in the comments if you would pay a few dollars for something slike that.

3D Printing Talk

I recently gave a talk about 3D printing to the Academy of Lifelong Learning. It went really well, other than that I had a head cold. I thought I'd share my slides, and provide some links to supporting and bonus material.

The slides for the talk are shared using iCloud, and should work with any recent browser. The link is RIGHT HERE.

Following are a set of relevant and interesting links about 3D printing.Several of these topics came up in the Q&A.


Koenigsegg 3D printed production parts:

Koenigsegg 3D printed turbocharger (mentioned in the first video):

Rockets, Jets and NASA:

University of California San Diego; Students for the Exploration andDevelopment of Space (SEDS).


NASA Marshall Space Flight Center


Casts for broken bones:

Cortex Cast





Students use 3D printing to make a prosthetic arm.


Dad builds son artificial hand on 3D printer.


Leaders of the 3D printing revolution:

Kinematics clothing:

Kinematics from NervousSystem on Vimeo.

More information about Kinematics

There are many, many more examples of the usage of 3D printing. Leave examples that you've found, or think are interesting in the comments!