Introduction: Freeform Arduino

About: I am Electronic Visualization Artist. I look at things through the Looking Glasses.

As an artist, sometime I created an art pieces without planning ahead what I want to draw or paint, just want to add colors or lines onto the drawing or canvas, and never think of the outcome of the piece. Let's our own instinct and subconscious leading away!

Then I thought, "What if I am using electronic components, solder iron, and such, as my materials instead of the paint brush, pen, to create a project without planning ahead, and not to worry about the outcome that the project, no sketch of how it would look like, and do not care whether it would be success or failure?"

And the "Freeform Arduino" was the result of the conviction.

Step 1: Parts & Tools

Schematic shown below is comprised of the minimum components and could be used FTDI cable to upload the sketch and has the LED connected to pin D13.


Parts are not certain at this point, and will added as I thing would be suitable at the time.
For now it would be at least,

ATmega168/328 preloaded with Arduino Bootloader,
16 Mhz Resonator,
10K Resistor (Radio Shack #271-1335)
 0.1uF Capacitors (Radio Shack #272-135)
3mm red LED(Radio Shack #276-026)
1K Resistor (Radio Shack #271-1321)
6-pin Male Header (as the connector to FTDI cable to upload the sketch)

This are the minimum components to get Arduino up and running.


The tools that I used in this project are:
Solder iron and Solder station
Hookup Wire
Diagonal Cutter
X-Acto Knife
Wire Stripper

Step 2: Power Supplies

I took an ATMega168-20PU out of my old Arduino board which I haven't used anymore. The board still function properly, and it would be safer to try out with old ATmega168 chip instead of using the newer version, i.e ATmega328P.

My first thought on this project was about the power supply to the Microcontroller. So I started with the 5V regulator.
And continue on to 3.3V regulator. By soldered the components without using the PCB.

5V and 3.3V Power Supplies

Here are the part lists of the 5V and 3.3V regulators:
0.1uF Capacitors (Radio Shack #272-135)
100uF Capacitor (Radio Shack #272-1025)
10uF Capacitor

+5V Voltage Regulator (Radio Shack #276-1770) or (DigiKey #LM78L05CZFS-ND)
+3V3 Voltage Regulator (DigiKey #MCP1700-3302E/TO-ND)
Diode 1N4001 (Radio Shack #276-1101)

Step 3: Antistatic Tube As a Case?

What would be the suitable container or case for the project?
I went through my component box and found the antistatic tubes.

I thought "Will this work?" Looking at it carefully, "Let's see!"
I started to draw the lines on the tube itself. And And thought that the power supplies that I made earlier is about the same size of the tube.
Also, I thought to place the microcontroller ATMega168 linear to the power supplies that I did earlier.
Then I cut the top side of the tube to have enought room for both power supply and microcontroller.

Then, I got the idea to put the FTDI connector (6-pin male header) at the end of the tube.
So I cut two notch at the end of the tube. (seen in the last three images below).

Step 4: How I'm Going to Upload the Sketch?

Continue on from the step 3, I prepared to make FTDI connector, using one 0.1uF capacitor, 6-pin male connector, and some leftover hookup wire from other project.

Step 5: What Is the Energy Source?

According to the ATMega168-20PU datasheet, I knew that the microcontroller could use power 3.3V up to 5V.
But I wonder if I could used the 12V Remote Control battery like the one that used in my car remote?

I tried it out and found that it is OK, since the 5V Voltage Regulator IC- LM7805 can withstand up to 30 Volt.
So, I decided to use 12V Type 23A size 'N' Alkaline  Battery (Radio Shack #23-144B) and Size 'N' Battery Holder.
I installed the battery holder at the bottom of the tube, approximately below the place that I would placed the microcontroller.

The images below show how I installed the battery holder.

Step 6: Eyes & Brain

After the closer look at what had been done up to this point. It look so organic to me, the FTDI connector look like the mouth and the part of the tube before it was cut out look just like the head of an animal.

So I decided to add two LEDs that would connected to pin D13 of ATMega168 to make it more like animal eyes.

Some more idea came, I realized that 6 + 8 = 14, which also equal to the number of the pins of the microcontroller on each side. I should used two 6-pin Long Contact Legs Female Headers, and two  8-pin Long Contact Legs Female Headers, so I could reprogram the ATMega168, to use in any project

After some trial, placing the microcontroller in place, etc.  I decide to place those female connectors along the side, and glue them to the battery holder. And started to solder those legs of the female connectors to the microcontroller pins.

Step 7: Is It Alive?

Next, I connected 16Mhz Resonator to pins D9, D10 and Ground. And soldered 0.1uF pins to D7 and D8 of ATMega168.

Now that I had Freeform Arduino,  It's a good time to do a test to see if it alive, and had nothing wrong with it!

I loaded the 'Blink.ino' from the Arduino IDE's basic example to check if everything woking.
And it did work! 

But it did not look completed! Well, I had to think of something to make it complete!

Step 8: What If, I Add Arms and Legs?

Since the "Freeform" design turned toward the animal look, I thought It wolud be a good idea to complete the project by adding the arms and legs to it.

But would be the suitable material  for it? After another round of looking through the tools box and components case. I came across these 16 Gauge and 18 Guage stem wire, that my wife got them from the Art and craft store, the left over from her fake flowers project.
I picked 16 Gauge since it is green color, but later I realized it was not the right decision!

I tied two of the stem wires together with the masking tape and a tiny drop of super glue.
Then bent those stems to the form of arms and legs.

Note: the pictures below was reproduce to show wo I did it. I did not take the pictures while I worked on them.

Step 9: Adds a Motor Skill?

At this point, I thought, This is the animal which already has brain, and power, but it has nothing to make it moves like the animal.
The idea came up, How about making it dance, just added the vibrating motor to the beast?

So, I added a small motor, something like a small vibrating motor that is used in the pager.
Below is the schematic that I sketched out at the time the idea came up.

Following is the lists of the components that I used:

BC337 (DigiKey #BC33740TACT-ND) or you could used TIP120 NPN Transistor (Radio Shack #276-2068) , but I found that this component is kind of too big for the project.
1K Resistor (Radio Shack #271-1321)
Diode 1N4001 (Radio Shack #276-1101)

Pager Vibrate Motor (Radio Shack #273-107)

After tested the motor, I realized that the motor pulled a lot of voltage, I decided to add extra battery, CR1220, and Battery Holder (Radio Shack #270-0008). Later I learned that it a discontinue item,

Step 10: IR Receiver

Another problem rise! How could I control the motor?
XBee? No, too big!
Bluetooth? No, too expensive!

What if I just use IR Receiver, only two buck!
That's it! IR Receiver I decided.

And here is the components I bought for this project.
38khz IR Receiver (Radio Shack #276-0143)
IR LED (Radio Shack #276-640) - Not used in the project just got it for the test process.

I used the Poraloid Remote to match with the IR Receiver. ( see Ken Shirriff's blog for the way to do so.)


I used Ken Shirriff's IR Library, and I adapted one of the sample sketch, IRrecDemo.ino, in the library.
I also use another example, IRsendDemo.ino, to decode my Polaroid IR remote, to get the value of the Enter button, so I can use the Enter button to turn on the motor. (See detail how to do this on Ken's blog on the mentioned link above.)

* IRremote: IRrecvDemo - demonstrates receiving IR codes with IRrecv
* An IR detector/demodulator must be connected to the input RECV_PIN.
* Version 0.1 July, 2009
* Copyright 2009 Ken Shirriff

#include <IRremote.h>

#define motorPin 12
#define ledPin   13

int RECV_PIN = 9;
IRrecv irrecv(RECV_PIN);

decode_results results;

void setup()

  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);

  pinMode(motorPin, OUTPUT);
  digitalWrite(motorPin, LOW);

  irrecv.enableIRIn(); // Start the receiver

void dance() {
  digitalWrite(motorPin, HIGH);
  digitalWrite(ledPin, HIGH);
  digitalWrite(motorPin, LOW);
  digitalWrite(ledPin, LOW);

void loop() {
  if (irrecv.decode(&results)) {
    //Serial.println(results.value, HEX);

    // Polaroid RC-50 Remote: ENTER = 0x9C63AC04
    if(results.value == 0x9C63AC04) {
    irrecv.resume(); // Receive the next value

Step 11: Conclusion


The project was a success in term of hardware and appearance, it is a function "Freeform" Arduino.
But in term of working properly, it was not!

As I mentioned in step 8, the arms and legs are too big! (16 Gauge wire). It's too stiff for the small vibrating motor to handle.
And I will have a new version, smaller wires as arms and legs, bigger motors.

Here is a video.


Arduino Challenge

Participated in the
Arduino Challenge