3D-Printed Art

This is a 3D-printed piece of art, a “Voronoi” lamp designed by Nik Markellov. Nik has generously made his design available for free on Thingiverse.com. I’ve extended his design by adding a set of three Arduino-controlled RGB LEDs to create a changing color pattern. Here’s what the completed lamp looks like.


Creating the LED assembly isn’t difficult, but you’ll need to have some experience using a fine-tipped soldering iron. Just a few parts are needed for this: I used an Arduino Nano, three LEDs, and nine 270 ohm resistors. That’s it! I ordered common anode LEDs from Amazon, but you can use either a common anode or cathode type, the only difference is whether you connect the LEDs to +5V or ground on the Arduino. As an aside, you choose the correct value resistor depending on the “forward voltage” specification of the LEDs you’re using and the voltage of your power supply (+5V DC in the case of this project using an Arduino). Here’s a good article if you want to learn more.


Start this project by soldering a common +5V rail to the corresponding pin on the Arduino Nano. In this picture, it’s the bare copper wire attached on the Nano on the left.

Next, separate the 5V pin from the three Red, Green and Blue pins on the RGB LEDs. Usually, the 5V (or ground, depending on the type of the LED) pin is identified by being a little longer than the other three leads.

Solder the 270 ohm resistors to each of the Red, Green and Blue leads, and solder wires to to the other ends of the resistors so that the three LEDs are at different heights above the Arduino Nano. This vertically “staggers” the three LEDs as you’ll see in the completed design.


I connected the first LED (the highest position LED) red lead to pin 4, the green lead to pin 5 and the blue lead to pin 6 of the Arduino. Repeat this pattern for the second and third LEDs, using Arduino pins 7, 8, and 9 for the 2nd (middle height) LED and pins 10, 11 and 12 for the 3rd LED.


With the LED array assembled, transfer the sketch below to your Arduino and install the assembly in the square cavity open at the base of the lamp. This code will cycle the color of each LED. You can increase the value of the delay() function call at the bottom of the loop() method if you want to slow down the color transitions.

// define pinouts
const int LED1redPin = 4;
const int LED1greenPin = 5;
const int LED1bluePin = 6;

const int LED2redPin = 7;
const int LED2greenPin = 8;
const int LED2bluePin = 9;

const int LED3redPin = 10;
const int LED3greenPin = 11;
const int LED3bluePin = 12;

void setup() 
      // Start off with the LED off.

void loop() 
     unsigned int rgbColour[3];

     // Start off with red.
     rgbColour[0] = 255;
     rgbColour[1] = 0;
     rgbColour[2] = 0;

     // Choose the colours to increment and decrement.
     for (int decColour = 0; decColour < 3; decColour += 1) 
            int incColour = decColour == 2 ? 0 : decColour + 1;

            // cross-fade the two colours.
           for(int i = 0; i < 255; i += 1) 
                   rgbColour[decColour] -= 1;
                   rgbColour[incColour] += 1;

                   setColourRgb(rgbColour[0], rgbColour[1], rgbColour[2]);


void setColourRgb(unsigned int red, unsigned int green, unsigned int blue) 
        analogWrite(LED1redPin, red);
        analogWrite(LED1greenPin, green);
        analogWrite(LED1bluePin, blue);

        analogWrite(LED2redPin, blue);
        analogWrite(LED2greenPin, red);
        analogWrite(LED2bluePin, green);

        analogWrite(LED3redPin, green);
        analogWrite(LED3greenPin, blue);
        analogWrite(LED3bluePin, red);


Chemistry You Won’t Hate

I don’t remember much of my High School chemistry. I do remember being bored, not seeing much application for what I was supposed to be learning. I had a change of heart in 2010, when Apple introduced the first iPad and I stumbled across Theodore Gray’s superb Elements app.

Somehow, from reading about the elements I got the desire to start collecting them. eBay was my starting point, and lots of online sellers make obtaining samples of the more common elements almost trivial.

Then I ran across Luciteria. I warn you now: this site is dangerous, a risk to your free time and to your budget! They don’t just sell random lumps of raw materials; instead, Rasiel & co. are devoted to presenting the elements as attractively as possible. RhodiumWhere else can you find a perfect cube of rhodium for $2,800? Almost all of the more collectible elements are available for sale here, in a variety of forms, including perfect little 10mm cubes. There are elements here that you expect wouldn’t expect to find in this form, like arsenic, iridium, thallium, and uranium(!). Not all are as expensive as the platinum metals; in fact, you’ll find some bargains on this site.

With the clear plastic periodic table available on this site as a starting point, I began collecting as many of the elements in the form of 10mm cubes as I could. When I ran out of relatively affordable elements in this form, I got creative and started casting much smaller quantities into clear resin cubes. By doing this, you can significantly reduce the cost of building out your collection.

Elements Collection September 2018

Finally, you’ll reach a point where displaying the more reactive or toxic elements in clear resin isn’t feasible. There is at least one seller on eBay who can create sealed vials containing these elements in a size that fits the Luciteria display case perfectly. Contact him via his eBay store for more details.

Most importantly, have a healthy sense of respect for the elements. Avoiding accidents means having to learn about each element, and that’s most of the fun of collecting them.

A Cinema In Your Pocket (Almost)

This is the Nebula Capsule portable projector, made by Anker under their “Nebula” brand name. Confusing naming aside, this is a fantastic little gadget. It’s almost exactly the size of a soda can, projects a bright image up to 100″ diagonal and unlike many mini projectors, has very good image color quality.

I haven’t found too many competing products at the same price and feature level as this projector. Sony’s MP-CD1 is probably the most direct competitor, and no doubt features Sony’s typically excellent quality at a comparable price, but spec-for-spec (more on that later) the MP-CD1 doesn’t quite match up to the Capsule. Sure, there are plentyIMG_2426 of cheap LCD projectors on eBay, but none of them (that I can find) combine a higher-quality LCD projector with a good, built-in speaker and a full operating system (Android OS, in this case) built into the projector.

This last point is key: this little projector supports Android Apps, meaning you can stream content from Netflix, Amazon Prime Video, Sling TV, YouTube and a bunch of other media providers directly from the Capsule, over a wifi connection, without any other hardware. I find this feature incredibly useful. Besides streaming from built-in apps, you can also project directly from an HDMI source, such as a DVD/BluRay player, project videos off a USB drive, or project video directly from your iOS or Android device. I’ve tried all of these options, and they all work equally well.

Here are some key specs:

  • Supports all of these video formats: H.264 BP/MP/HP – up to 1080p MPEG-4 SP/ASP – up to 1080p DivX 4x/5x/6x –up to 1080p H.263 P0 – WVGA VP8 – 1080p (HEVC) H.265 MP 8-bit – up to 1080p.
  • Resolution: 854 x 480 pixels. More about this in a bit.
  • Battery life: 4 hours.
  • Fan noise: <30dB. It’s quiet enough for me, especially since the 5W speakers produce plenty of volume. But you can definitely hear the fan with the volume turned down.
  • Automatic keystone correction as you tilt the projector forwards and backwards.
  • IR Remote Control included. Anker makes a free “Capsule Control” app for smartphones and tablets that makes controller the projector (especially entering text) much easier.
  • Brightness: 100 ANSI lumens. In a dark room, the picture is plenty bright and the color quality is excellent. In a brightly lit room, the image will be washed out.
  • Weight :14.8 oz

OK, so about the display resolution. 480 pixels vertical resolution is only “standard” definition and gives the impression that you’ll see a grainy image. In practice, I don’t find the image quality to be an issue at all. At normal viewing distances, the image quality to me is excellent. I only find this lower resolution output to be an issue when I’m using the Capsule as a desktop display, and I’m entering or reading text (e.g. entering login credentials for a streaming app). I would never try to use this as a desktop computer display.


Finally, a tip: the Capsule comes with a customized version of Google’s Play Store that isn’t very complete. If you contact Anker support (support@seenebula.com) they will send you instructions and an unlock code for a beta firmware update that includes the full Google Play store. I’ve done this and it works great.

UPDATE: Anker has just announced a Kickstarter campaign (this product was introduced via Kickstarter) for a new Capsule II product, that will offer a brighter, 720p High-Definition display. You should be able to pick up the current model at a discount and in fact Anker’s eBay store is selling  refurbished units for $280 before a 10% discount. You might be able to get an even better price by applying other eBay coupons.

UPDATE #2: Here’s a “maker” tie-in for this product: I’ve designed an easy-to-print stand for the Capsule that lets you project onto your ceiling. Great for bedtime or watching while lying down on the sofa, etc. Get it on Thingiverse here.


A Retro Internet Radio

This is a Philco model 46-200 AM radio, built starting in the mid-40’s around a very common five-tube design. This US company, founded in 1892 in Philadelphia, got into radio manufacturing in the late ’20’s and became a leading maker within a decade. I really like the look of this little radio, and because so many were made, it was easy to find one on eBay.


The most inexpensive examples you’ll find on eBay probably won’t work. They can be restored and if you’re interested in that, here’s a book on Amazon that will walk you through the process of troubleshooting and repairing radios made around a very common design used during this period.

I decided not to try to restore the radio but instead to convert it to an Internet radio while preserving the external appearance. This project is actually fairly simple, built around a Raspberry Pi (RPi) Model 3, an external amplifier, speaker, and a few other components that I’ll cover later. Here’s what the radio’s internals looked like before I started:


The first step was to remove the original circuitry. Fortunately this is easy to do, as the radio was designed to be easy to service (tubes needed to be replaced eventually). Pull the tuning and volume knobs off the shafts on the front of the radio, undo a couple screws on the bottom, and the entire assembly comes out of the radio. IMG_0011

The clear plastic shield that covers the tuning dial was cracked, an easy repair using 1/16″ inch clear acrylic available from Amazon for a few dollars. Often these radios have cases made from bakelite (handle carefully) or early types of plastic, as I believe this case is. Superglue worked fine for attaching a new shield.

My next step was to assemble the actual replacement hardware for an internet radio, built around these components:

  1. Raspberry Pi Model 3, which has onboard Wifi, eliminating the need for a separate wifi USB adapter. This isn’t critical, but it is convenient. You’ll also need a microSD (I’d get at least 16GB capacity) card to serve as the RPi’s “hard drive” and a power adapter. Powering both the RPi and the audio amplifier requires around 2.5 amps of current, so you won’t be able to power this radio from a standard USB port. I’d recommend using an external power adapter like this one.
  2. An 5V audio amplifier with integrated volume control, like this one available from Amazon for ~ $9. 5V is key as that makes powering both the Raspberry Pi and the amplifier from a single 5V power supply easy.
  3. A rotary encoder like this from Amazon for ~ $3. This device converts the turning of the tuning knob shaft to a signal we can read on the RPi as the user changing stations, which preserves the original functionality of the radio.
  4. One relatively low power speaker. I used a larger speaker than was necessary (or even desirable) because I had it lying around, but you’ll get better results by matching the speaker’s rating to the amplifier you’re using. Something like this speaker from Amazon is ideal.
  5. A momentary pushbutton switch like this. Amazon sells them in bulk but you can find smaller quantities on eBay for less. If Radio Shack still existed, that’d be a great place to get most of these components in one go!

That’s it for parts. All together, this project cost me around $100. You could probably find a vintage radio for much less at garage sales, but I really liked the design of this model.

If you’ve got the RPi, microSD card and power adapter you can start by loading the software. I followed this excellent tutorial by Giles Booth with only a few minor changes to incorporate the rotary encoder and shutdown button. Follow this tutorial to get the RPi working as an Internet radio with the following changes:

    1. Connect the rotary encoder to the RPi using as follows: CLK -> GPIO 17 (pin 11),  DT ->GPIO 18 (pin 12), +3V -> Pin 1, GND -> Pin 6.
    2. Connected the momentary pushbutton switch to RPi pins GPIO 23 (pin 16) and ground (pin 25).
    3. Modified source code for the radio.py Python app. Note the NUMSTATIONS constant. You’ll want to change this to reflect the number of stations you’ve added to the mpc playlist.
!/usr/bin/env python
# Bare bones simple internet radio
# www.suppertime.co.uk/blogmywiki
import RPi.GPIO as GPIO
import time
import os

clk = 17
dt = 18

GPIO.setup(clk, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(dt, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)

# setup pin for shutdown button on GPIO 23 (pin 16)
GPIO.setup(23, GPIO.IN, pull_up_down=GPIO.PUD_UP)

def Shutdown(channel):
     os.system("sudo shutdown -h now")

GPIO.add_event_detect(23, GPIO.FALLING, callback = Shutdown, bouncetime = 2000)

counter = 0
clkState = 0
dtState = 0
clkLastState = GPIO.input(clk)

# read station number from text file
f = open('/home/pi/station.txt', 'r')
station = int(f.read())

os.system("mpc play " + str(station))

     while True:
         #take a reading from the rotary encoder
         clkState = GPIO.input(clk)
         #if the last reading is different, user turned the dial
         if clkState != clkLastState:
             station += 1
                 if station > NUMSTATIONS:
                     station = 1
             os.system("mpc play " + str(station))
             f = open('/home/pi/station.txt', 'w')
             f.write('%d' % station)
         #update previous rotary encoder setting
         clkLastState = clkState
         #slight pause to debounce the rotary encoder 

Following Giles’ tutorial and using the modified code above, your Internet radio should be functional. Here’s what mine looked like with everything wired together:


It’s a bit of a mess, but that will get sorted out once the new hardware is installed in the case. Note that I used a mini audio jack and a stereo patch cable to attach the RPi audio out to the amplifier input. The rotary encoder and shutdown button connect directly to the RPi’s GPIO pins. Not shown here, but later, I attached an LED, with a 300 ohm resistor in series, powered off a GPIO pin, to illuminate the tuning dial. Using a clear LED, with enough resistance, creates a nice, vintage yellow glow.

I cut a 1/4″ thick piece of plywood to serve as a base for mounting the components. The board is sized for fit inside the case and to not move around. 3D-printed brackets are used to attach the original turning dial display, rotary encoder, audio amplifier and speaker to the base.


With everything installed in the cabinet, here’s the final result:



And here’s what inspired this project in the first place!


Any questions please hit me up in the comments.

Polaroid’s Blast from the Past

This is Polaroid’s new OneStep 2 instant camera, introduced in September 2017. You might be thinking that Polaroid went out of business a few years ago, and you’re right: the original Polaroid company, founded in 1937, went bankrupt in 2001. A successor “Polaroid” company was subsequently created, then also went bankrupt by 2008.


The present-day company, started as the “Impossible Project” in 2008, bought Polaroid’s assets and intellectual property. This company was renamed “Polaroid Originals” last year. The original aim of the Impossible Project was to continue manufacturing Polaroid’s instant film, initially in a former Polaroid factory in the Netherlands.

You might remember the original version of this camera, if you were old enough in 1977. It was simple to use, with minimal controls, a fixed-focus lens, and was a best-seller for a time.

Here’s the new OneStep 2 camera next to the original:


It’s nice to see that Polaroid Originals kept the design of the new camera faithful to the original. Using the new camera is a great nostalgia trip and brings back lots of memories. If you haven’t taken pictures with a film camera recently, you’ll be surprised by how much light the film needs for decent exposure (hence the enormous flash unit on the Polaroid5 new camera), the lack of clarity and relatively shallow depth-of-field. Here’s a shot taken outdoors with lots of light. Indoors you’ll easily get underexposed pictures.

For fans of the format, none of this matters. The fact that this is chemical film, where the exposure develops before your eyes (although you’re supposed to keep the photo covered while it’s developing and NEVER SHAKE IT!), and that you’re left with a kind of picture that hasn’t changed in decades, is a huge attraction.

This being a maker blog, I’ve got a tie-in: a 3D-printable picture frame for these pictures. You can download the 3D model in .STL format here.



The $29 Digital Picture Frame, from Amazon

Amazon regularly puts the Kindle Fire 7 tablet on sale for $29, a bargain for what you’re getting: a compact tablet with a fast, quad-core processor, 8 GB of built-in storage, expandable to 256 GB and, most importantly for this build, a 1,024 x 600 pixel display.

This tablet, combined with Amazon’s Prime Photos service and companion app, makes an excellent digital picture frame. Minus the frame, of course. That’s where 3D printing comes in, since printing a frame to house the tablet is easy. Here’s the finished product:

The model files for the picture frame are here on Thingiverse.com. I’ve uploaded both a single .STL (model) file to print the frame as one piece (requires a large format printer) or as four separate pieces, for smaller printers. For the sample shown, I had to print the frame as separate pieces, then super-glue them together. There’s also a separate model file for a small stand.


I use Amazon’s Prime Photos page to upload photos from my picture collection, and the companion app on my iPhone to automatically upload photos to Amazon’s cloud storage. Uploaded photos then appear in the Photos app on the tablet; choosing “slide show” starts a running presentation of random pictures. No other software is needed for this.

The end result: a $29 digital picture frame, courtesy of Amazon.

A Better 360 Camera (Samsung Gear 360)

Gear-360_Key-3This is Samsung’s newer (2017) version of their Gear 360 camera, an update from the not-very-old 2016 model. The rapid pace of development of these 360 cameras quickly drives down the price of new models.

As I write this, this camera is selling on eBay, from reputable buyers and in new condition, for less than $100 USD. I think that’s amazing given the capabilities and image quality of this device. It captures 15 megapixel still images and 4K video (4,096 px by 2,048 px) at 24 frames-per-second. Keep in mind, however, that the video is mapped over an almost-complete sphere, so 4K video won’t be nearly as sharp as viewed on a smaller area 4K display.

Here’s a sample image; for a better experience, view this page on a tablet so that the image pans as you move your device in a circle.

One issue with this camera at launch was poor support for iOS devices, but that seems to have been addressed with firmware updates and newer versions of the companion iOS app. I’ve had no problems using this camera with both my iPhone SE and recently, the iPhone X.

Finally, a tip: good 360 images and videos benefit from the camera being level to the ground. I use a small, portable tripod that doesn’t have a built-in bubble level. So in the spirit of this blog, I designed a clip-on level that attaches to any tripod around 21mm in diameter, is easily 3D-printed, and uses inexpensive bubble levels sourced from eBay, like this one available for $.99. If you want to print the clamp yourself, here’s a link to the model on Thingiverse.com.