3D printing and other software curiosities
by Clinton Freeman

Arduino Ethernet Review

23 Mar 2015

Last year I got an Arduino Yún to try out. The Yún is Wow. It became my favourite microcontroller the second I powered it up. The only real downside of the Yún being price, coming in at around $85 USD, it certainly wasn’t cheap. For my current project I thought I would try out the Arduino Ethernet. It is a fair bit cheaper (I got it for about half the price of a Yún from Seeed), and I didn’t need wifi on this particular project. So how did the Arduino (Seeeduino) Ethernet stack up?

Picture of Seeeduino Ethernet mounted in 3D printed case

FTDI breakout

The first downside of the Arduino Ethernet design (regardless of manufacturer) is how they made room for the network port. Arduino dropped the USB connector and FTDI USB-to-serial chip from the board. So uploading your sketches is via a FTDI-style USB-to-serial breakout board. This connector is not included, and you buy it separately. No big deal. But if you don’t have one, it will add about $17 to the cost of your project.

Limited PWM pins

The second design downside is the limited number of PWM pins. The Arduino Ethernet only has four pins with PWM, while pins 10, 11, 12 and 13 are reserved for interfacing with the Ethernet module. The documentation suggests you shouldn’t use them. I’m not sure whey they even included headers for these unusable pins.

In practice it was even worse. I was only able to use three of the four PWM pins on the Seeeduino Ethernet board. The board didn’t seem to have the performance to run the Ethernet connection and 4 PWM pins at the same time. Any three PWM pins, and network was fine. But adding the fourth would always result in unexpected behaviour. It would successfully run four PWM outputs while not using the Ethernet connection. But as soon as the connection kicked in? One of the PWM signals would wonk out.

No HTTPS

The last and biggest design downside of the Arduino Ethernet. No HTTPS. The Arduino Ethernet doesn’t have enough power to decrypt secured HTTPS connections. Pretty much the entire web runs HTTPS these days. So if you want to send or receive content over an encrypted link you are going to be out of luck. This was a major issue for my project (it receives data from a continuous integration server). I got around the problem by creating an intermediary server application. This server application strips the encryption from the link and dishes up the data I needed over regular HTTP. A dodgy work around till I replace the Arduino Ethernet with a Yún.

Overall

The Arduino Ethernet was an important precursor to the Yún. I also really liked how Seeed squeezed their board down by pushing the ethernet connector through the PCB. But with all the above limitations, I don’t think I will use an Arduino Ethernet (or derivative) again. I would much rather spring the extra bucks for the Yún. Seeed also make a derivative of the Yún, the Seeeduino Cloud. It only costs $5 more than a Seeeduino Ethernet (which is less than the FTDI breakout board you will need for the Ethernet). I give the Arduino Ethernet 0.5/5.

0.5 stars out of 5.

 

An Open Love Letter To Tom Sachs

14 Mar 2015

Dear Mr Sachs,

I never fully appreciated your work until I discovered your ‘Love Letter to Plywood’. As I, too, enjoy working with plywood. Mostly because I’m not skilled enough to be let anywhere near expensive timber. And MDF is outrageously disgusting.

So one day I was bumbling around the internet looking for plywood techniques. It wasn’t long before I happened upon the best short film ever made about a building material. I loved every part of it. Well, except for that stuff about the imperial system. Seriously Tom, what would Le Corbusier say? Exactly. He would be horrified. But everything else? It has changed the way I think about and work with plywood.

 

 

Anyway. This letter is not just about our mutual affinity toward plywood. That was just the beginning; the gateway to a deeper appreciation of your work. I needed more. So I watched the rest of the Ten Bullets series, and trawled through pictures of your NUTSY’s show.

It seemed to me that the Ten Bullets series was a further exploration of McDonald’s founder Ray Kroc’s work. Taking his meticulous approach to describing processes (like cooking hamburgers), and then applying it to your own techniques? The deliberate attempt at codifying your creative rituals as a repeatable process? That made my flannel clad inner-engineer leap with joy.

Your recent keynote on authenticity clarified some of my own half-baked thoughts. Recently I left full time employment to pursue my own interests. I have a goal of building a project a month for a year, and I’m finding the experience unexpectedly therapeutic. So when you said:

“Understanding and accepting yourself so you can have the courage to make just the right wrong decision. And I don’t think this is specific to art, I think this applies to anyone who is solving a difficult problem.”

Well, I just about fell off my chair. My difficult problem was of Descartes proportions: “Why do I exist?”. And I am discovering that by creating personal projects for no audience or employer is how I am learning to find myself. So, a few moments later, when you mentioned:

“The goal is work, and the reward for good work is more work. Because it is the only way we can realise ourselves. Could you imagine being paid really well for doing a job that you didn’t love. Could you imagine a greater hell than that?”

That was the exact moment I became a fan of your philosophy. I mean you probably had me at your attitude towards making the objects you covet. Not to mention your techniques. Establishing humanity by leaving all the evidence and ‘scars of labour’ behind? Showing the end grain, evidence of your use of plywood? All the screw heads and glue drips? Refreshing.

Tom Sachs self portrait. The sachs family crest

I’m a software engineer by trade and for the last twelve years I was paid to erase and scrub out imperfections as best I could. I’m not yet sure how to showcase evidence of how a human wrote some software, but I’m hoping it is possible. The fact that filmmakers like Van and Casey Neistat are able to illustrate their production labour? In another ‘perfect’ domain; film making? At least gives me hope.

Your work has provided me with optimism. Maybe it is possible to showcase that a human. Me. I toiled here, inside your computer.

Best wishes,

Clinton Freeman.

P.S. If you ever run a graduate course in bending plywood? Could you film it and upload it to the intertubes? Thanks!

2015/03/23 - EDIT: Added reference to Van Neistat.

 

How to deploy docker containers to an Arduino

07 Mar 2015

I develop for a bunch of different platforms and devices. So I have a whole stack of different programming languages, SDK’s and IDE’s kicking around. This ends up being a huge pain in the ass to maintain. Try to temporarily use a different machine, or even worse. Upgrade? It is a constant download and configuration nightmare. I had a few of the ‘big environments’ all setup using vagrant which was great. But when I got my latest machine. It was going to be different. All my development environments were going to be defined as docker containers. ALL OF THEM. Even Arduino. This is the story of how I ‘deploy docker containers’ from OSX to Arduino boards.

After downloading and installing Boot2Docker, you need to install the VirtualBox extension pack. This extension adds the USB support that lets you share USB devices (like your Arduino) with virtual machines:

  1. Download the extension pack.
  2. Open up the VirtualBox GUI.
  3. Select ‘VirtualBox -> Preferences’ from the menu.
  4. Select the ‘Extensions’ icon.
  5. Press the funny lookin’ ‘yellow square superimposed on the blue box’ button.
  6. Browse to your downloaded extension pack, and press open.

A blue arduino heart logo

Next we need to give Boot2Docker access to Arduino boards that you plug into your host machine.

  1. Plug your arduino into an available USB slot.
  2. Make sure the boot2docker-vm is not running.
  3. Right click on the boot2docker-vm and select ‘Settings…’
  4. Select the ‘Ports’ icon.
  5. Select the ‘USB’ tab.
  6. Make sure both ‘Enable USB Controller’ and ‘Enable USB 2.0 (EHCI) Controller’ is checked.
  7. Press the ‘green plus superimposed on blue USB plug’ button.
  8. Select the Arduino device from the list ‘FTDI FT232R USB UART’.
  9. Hit OK.

A blue arduino heart logo

Alright. Now VirtualBox is all configured to enable docker to access our Arduino. Time to roll a docker image that can punch containers into our Arduino. Well kind of. Docker won’t be running a container on the arduino. The running the container will just be uploading your sketch. For the image, I’m going to use ino. The latest versions of Arduino are starting to include its own official CLI. But at the time of writting it did not include a serial monitor, nor would it work headless (the CLI still needs a full X11 stack).

Your Arduino project needs to be in an inotool format and also contain the Arduino Dockerfile:

.
├── Dockerfile
├── lib
└── src
    └── sketch.ino

OK, with all that in place. It is time to build your image.

$ docker build -t your-arduino-project .

You can now ‘spin up a container’ on your Arduino.

$ docker run --privileged -v /dev/bus/usb:/dev/bus/usb your-arduino-project ino upload -m mega2560

Finally. Liberated from the blue Arduino IDE. Sorry Arduino. I love your microcontrollers. The IDE? Not so much.

A blue arduino heart logo

 

3D Printer PLA moisture problems and storage solutions

03 Mar 2015

Not long after getting into 3D printing, you start hearing about all the different ways people store PLA (Polylactic acid). The Internet is scattered with systems ranging from the very simple to elaborate PLA humidors. Often accompanied by scant details, but ominous warnings ‘PLA absorbs moisture from the air’.

A photo of an elaborate PLA dryer and storage container.

It was enough to spook me, and change the way I stored my stock of PLA filament. But I was still skeptical, I had more questions then answers. The first came up often:

Absorb water? That doesn’t make sense. Isn’t PLA a plastic and waterproof?

PLA is a bioplastic and derived from plants like corn, potato and rice. Despite being food safe, PLA does breakdown (some even like to compost it). Left in the environment, it only takes several months to two years for pure PLA to degrade into carbon dioxide, water and methane. Older forms of plastic (like disposable drink packaging) probably helped form the impression of a impermeable waterproof material. These older plastics are derived from petroleum and can last in the environment for 500 to 1000 years. If PLA can breakdown so fast, it makes sense that it also easily absorbs water to help the decomposition process along.

How long does it take for PLA to absorb water?

Some scientists performed a great experiment that explored how moisture and different amounts of starch weakened PLA plastic. In their experiment, they submerged PLA in stainless steel tubs filled with water for 30 days. Comparing the weight before and after 30 days in water, they found that the PLA had absorbed a considerable amount of water and increased its weight by 1-6%. So starting with 1kg of plastic, it could have absorbed as much as 60 mls of water in only 30 days? I don’t store my PLA in water, but I live in the tropics and it is the wet season. Relative humidity has barely been below 80% for three months. At a wild guess, had I left my PLA exposed it would have taken on a similar amount of water.

Conversely if you live somewhere dry, there isn’t as much moisture in the air for the PLA to absorb. So it will be a much slower process.

What problems arise from using moisture damaged PLA in 3D printing?

Moisture damaged PLA can cause two main problems with 3D printing:

  • 3D Printer damage: Absorbing moisture makes the PLA filament swell. Feeding swollen PLA into a 3D printer can cause your hot end to jam. In some cases, severe jams require hot end replacement.

  • Poor 3D Print quality: The moisture trapped inside the PLA filament can turn to steam when rapidly heated by the 3D printer. These tiny pockets and bubbles of steam interfere with the flow of plastic out of the hot end.

  • Weaker 3D prints: In the same experiment above, the scientists also tested the tensile strength of PLA in three conditions:

    1. Dry - Spent no time in water.
    2. Wet - Spent 30 days in water.
    3. Re-dried - Spent 30 days in water, then completely dried.

    As you would imagine, the more water absorbed by the PLA, the weaker it becomes. Taking pure PLA, storing it in water for 30 days reduces its tensile strength by 6%. Doesn’t sound too bad right? Well. In the Re-dried condition, the tensile strength of PLA drops by a massive 33%. Enough to be noticeable. If you are heating up PLA enough for absorbed water to turn into steam, you are going to be drying the PLA as you go. So 3D printed ‘wet’ PLA surely falls into the re-dried category. That is, it will be up to 33% weaker than ‘dry’ PLA.

What are the best ways to prevent PLA from absorbing water?

So if you want to avoid any problems with PLA (including weakened prints), it has to avoid contact with moisture. If you live in the desert or somewhere else dry, you are going to be alright. Living in the tropics or somewhere else that is humid, use the following tips:

  • Avoid storing unused PLA filament for extended periods (Greater than 12 months). Buy and use just enough to keep you going for the year.
  • Store your PLA filament in an airtight container with some sort of desiccant. Airtight pet food containers are relatively cheap and large enough to hold a decent supply of PLA. As for desiccants? You could buy some silicon packets. But I just keep all those ‘do not eat’ packets that I find in the bottom of packaged food. Throwing them in with the PLA in my storage tub.
  • Photo by Eric Young.
 

Is adding thermal paste to a heated build platform a good idea?

24 Feb 2015

So I’m about to embark on a decent sized 3D printing run, and wanted to squeeze even more performance out of my heated build platform.

In the past I have explored using an insulator on top of the heated build platform to improve warm times by around 10%. But that wasn’t enough, I wanted my heated build platform to reach temperature faster!

So I constructed my build surface from three layers. Glass, PCB heatbed, and plywood. I want to get the heat from the PCB into the glass as fast as possible. Putting an insulator below the PCB (plywood), and on top of the glass (heated build platform cosy) was a decent start.

The three layers of a 3D printer build platform.

In my PC overclocking days, I wanted to get heat out of the CPU in my computer and into the heat-sink on top as efficiently as possible. I used a thermal grease called ‘Arctic Silver’, which was the bee knees at the time. This paste squashed out tiny microscopic pockets of air trapped between the heat-sink and CPU. Making for a better contact and greater conduction of heat. Theory was, this should also get the heat out of the PCB and into the glass faster.

Applying thermal paste to a 3D printer heated build platform

I grabbed a tube of Arctic Silver, removed the glass from my build platform and started applying. It was much harder applying the paste evenly over such a large surface. Using a business card, I worked in different areas, building it up till I had the whole PCB covered. I then followed a similar process on the bottom of the glass. Finally I used clamps to squish the two back together (bulldog clips didn’t apply enough pressure). After a few minutes, I removed the clamps.

Phew. Time to heat this puppy up, and test. You know what? It actually made things worse. I wasn’t happy with the bond between the two surfaces, so I tried again. Removing some of the excess paste with a lint free cloth and clamping again. A little better, but still worse than no paste at all (I used a similar test procedure to the insulator test).

Chart displaying heat changes over time, paste vs no-paste

I’m still a bit confused by this. It should be as good, if not a little better with the paste. You are much better off starting with decent insulators above the glass, and below the PCB. As for why the paste didn’t improve things further, I have a couple of ideas:

  • Arctic Silver has a 200 hour ‘break in period’, it takes up to 200 hours for thermal conductivity to reach its maximum. Arctic Silver now also sell a modern alternative ‘Céramique 2’. It only has a 25 hour break in time, and is also much cheaper (contains no silver). The break in times might be longer for such a large surface area, so the Céramique might offer better performance.
  • The thermistor touching the bottom of the glass surface might not be giving an accurate reading of glass temperature. I want to get one of those infrared thermometers to check temperature readings.
  • Maybe I still haven’t got the application of thermal paste correct. Perhaps the layer is too thick, and I have air bubbles still trapped inside.
 

Sticker Chart - January and February

19 Feb 2015

I’m not going to lie, it wasn’t long after I embarked on my wacky monastic engineering journey that reality (and terror) hit home. Questions like ‘What have you done?’ and ‘What the HELL are you doing?’ ricocheted around my head alongside images of destitution and bankruptcy.

I also became paranoid that the year would devolve into me lying on the couch binge watching television and movies. No! I want to create more, so I set myself personal KPI’s.

I know. Not exactly the first thing that leaps to mind when talking about a monastic journey. Good friends laughed. They suggested that maybe I should take a page from raising toddlers and call it a sticker chart instead.

So here is my sticker chart for January/February:

In hindsight, relocating to Cairns and doing it all in one big bang was a good plan. It wasn’t till we arrived in Cairns that a backlog of fatigue unfurled. I was horribly burnt out. Waiting several weeks for our life to arrive in a container forced a much needed reprieve. I had a long summer break with one guiding goal: 4pm. Pool. When I started the monastic engineering experience on the 12th of January, I was refreshed.

Create.

A photo of a hexagonal shade umbrella.

I created three things this month, but haven’t finished the project I set out to build. I’m still waiting on a few components from China (it has a hardware element) and I’m finishing other elements while I wait. So no sticker for creation this month. Fingers crossed everything arrives and I can finally assemble it all soon. I’m going to need to pipeline these projects better so that raw material shipping times don’t sink me.

However, I created and released two chef cookbooks, ‘credentials’ and ‘docker-images’. These cookbooks and a couple of supporting articles, helped me level up on managing systems with docker.

I completed a project that featured no software at all. I find building things within the constraints of the physical world an interesting exercise. This month I completed a set of shade umbrellas to stop some palms from getting burnt in the midday sun.

no sticker

I started writing again. Trying to explain concepts to others help me learn them faster. This month the articles covered:

Read.

thomas the tank engine sticker

Finished reading three books:

Steal like an Artist – Austin Kleon

Despite the link bait title, this book was not about stealing at all. It was a great, easy to read book on unlocking creativity by adoring and understanding those that inspire you the most. Study their work, understand who inspired them, reference and love them.

Browsing and seeing different workspaces is one of my most favoured, I just lost a couple hours browsing the internet themes. So I was pretty excited when I got to the great little section on workspaces. Austin suggested that splitting them into two broad categories, digital and analog. Where the analog area is for generating ideas, and digital is for editing and publishing them. This has some parallels with the use of tangible objects during the ideation phase of design thinking. So I got my own digital workspace cranking this month, but the analog is still a work in progress. I also like Austin’s ideas about writing fan letters. Writing praise for someone down should force me into a deeper understanding of their work.

A photo of my digital workspace.


Show your work! – Austin Kleon

Similar, easy to read coffee table format as ‘Steal like an Artist’ and just as good. It followed a similar rhetoric as Jeff Attwood’s ‘How to Stop Sucking And Be Awesome Instead’ but, yet I still found a couple of new pearls useful. The most liberating, was ditching the idea of guilty pleasures. Summed up with a neat Dave Grohl quote ‘I don’t believe in guilty pleasures. If you fucking like something, like it.’. The chapter on funding your work was quite good as well, blasting out of the gates with my favourite quote of both the books ‘Even the Renaissance had to be funded’. Austin goes on to challenge romantic notions of art and money, and explores some standard ways of funding projects (kickstarter, selling services, selling projects).


Getting things done – David Allen

Several years ago, I stumbled upon ‘Inbox Zero’ as a way of staying on top of emails. It helped manage the flood of digital communications that was bombarding me. Inbox Zero was part of a getting things done craze that floated around the software development community. Much of it stemming from David Allen’s work, and his book had been sitting in a ‘too read’ pile ever since. This was a liberating read. For the first time in a long while, I feel as though I’m finally ‘on top of things’. The big things I took away from this book were collating and capturing everything. All those ideas, projects, to do’s, to read’s and then systemising a way of working through all this stuff. The minimalist approach to managing projects was also useful, especially for smaller projects. State a goal, desired outcome and next action. It is a lightweight way of defining the project, and the actions you need to perform for completing the project.

Exercise.

octonaughts sticker

Ran twice a week. 31km. Acclimatising to summer in the tropics has been brutal. I think I sweated 2kg that first run.

Despite my sticker chart, I still question myself daily with ‘What the HELL are you doing?’ But I’m starting to find it healthy. It pushes away complacency and forces introspection. Is this really how you are going to spend the day?

 

Raspberry Pi comparison chart

12 Feb 2015

Confused by the Raspberry Pi naming scheme and not sure which to buy? This comparison chart outlines the differences between each model.

Compute Module Raspberry Pi, Model A+ Raspberry Pi, Model B+ Raspberry Pi 2, Model B
Topdown photo of Raspberry Pi Compute Module Topdown photo of Raspberry Pi, Model A+ Topdown photo of Raspberry Pi, Model B+ Topdown photo of Raspberry Pi 2, Model B
Price#
$250 USD## $20 USD $35 USD $35 USD
Processor
  • 700MHz
  • Single-core
  • ARM1176JZF-S
  • 900MHz
  • Quad-core
  • ARM Cortex-A7
Memory
512MB 256MB 512MB 1GB (1024MB)
Storage
  • 4GB eMMC flash
  • (Inbuilt)
Graphics
250MHz Broadcom VideoCore IV
Connections
  • HDMI
  • 1x USB2 port
  •  
  • 46 GPIO pins
  • 2x MIPI camera connector
  • HDMI
  • 1x USB2 port
  •  
  • 40 GPIO pins
  • MIPI camera connector
  • HDMI
  • 4x USB2 ports
  • 10/100 Ethernet
  • 40 GPIO pins
  • MIPI camera connector
Power
0.8W - 2.0W 0.5W - 1.2W 1.0W - 1.7W 1.2W - 1.8W
Size and Weight
  • Length: 6.8cm
  • Height: 3cm
  • Weight: 7g
  • Length: 6.5cm
  • Height: 5.7cm
  • Weight: 23g
  • Length: 8.6cm
  • Height: 5.7cm
  • Weight: 45g
Available at

2015/02/13 - EDIT: Added section on power usage.

 

Copyright Clinton Freeman Ⓒ 2007-2015