Introduction: 3D Printed Jack-O-lantern

About: I am a student in University of Oulu, Finland, studying education and technology. My interest is digital fabrication in education.

I wanted to make something for Halloween also this project is for my learning of PCB board design.

This project contains 3D design, programming of Arduino, simple electronics design and manufacturing and soldering. I used TinkerCAD for 3D design, and Eagle for PCB board design. For the light, I used RGB LED and changed the colours of LED by Arduino.

What you need (quantity):

Multi SMD LED RGB (1)

SMD resistor 90Ω (2)

SMD resistor 150Ω (1)

Pin header 1*4 (1)

Arduino Pro Micro (1)

Coin cell battery 2032 (2)


Step 1: Design 3D Jack-O-Lantern

I used TinkerCAD for 3D design.

I followed the YouTube video: 3D Pumpkin Design with Tinkercad

1. I designed the pumpkin shape as size of width 5.7cm, height 4.5cm.

2. Duplicate the pumpkin and made it slightly smaller, and make the smaller one as hole.

3. Insert smaller hole pumpkin in the original one to make the pumpkin hollow. Make it as group.

4. Design eyes, nose and mouth, and make them as hole.

5. Insert eyes, nose and mouth to the pumpkin, make sure they go through the pumpkin. Make all as group.

6. Use a 3cm diameter cylinder to make a hole inside and bottom. Make the cylinder as hole and place it in the middle of the pumpkin. Make sure it doesn't go through the top, and it does go through the bottom. Bottom has 3cm diameter hole so that you can put PCB board and Arduino inside.

Step 2: Schematic

I used Eagle to design schematic of my PCB board.

You can find instructions how to start Eagle from here: Intro to Eagle - Fab Academy

1. Go to the library and add components:

1*4 pin header (pinhead> PINHD-1X4)


resistor (fab > RES-US> R1206FAB)

VCC (supply1> VCC)

2. Connect each component using Net (tool bar in the left, marked as green line).

When you finish the schematic, switch to board design (the tool bar on the top> Generate/ switch to board)

Step 3: Board Layout

New window appears.

If you would like change grid to mm unit (View> Grid).

1. Make the board smaller by drag the horizontal and vertical lines. Keep the origin in the lower left corner.

2. Place the components inside the board outline. The lengths of connections should be as short as possible. If you need, go back to schematic to change the connections of resistors and pin header.

3. Setting for routing. Set the value of routing isolation between wires as 0.4064 mm (tool bar on the left> Route), copper width as 0.4064 mm (tool bar on the left> change> width).

4. Perform Design Rule Check (tool bar on the left> DRC). Clearance: change all to 16mil, Sizes: Change Minimun width as 16mil, Supply: change thermal isolation as 16mil.

5. Routing (tool bar on the left> Route). Start a new route with left click, change the routing angle with right click and end the route with left click.

6. Draw a polygon to create ground plane (tool bar on the left> Polygon). I didn't use ground plane, but I created to avoid milling all the cooper on the surface. On the outline of your board, start drawing the polygon with a left click, add corners with left click and end the polygon to the start point with a left click. Name the polygon by right click as GND.

7. Press Ratsnest (tool bar on the left> Ratsnest), and the copper pour appears.

8. Perform DRC.

9. Draw cutting line (tool bar on the left> Line), change the line width 0.99 mm, on Milling layer 46 (tool bar on the top).

Step 4: Export Images of Board Layout

I used Roland SRM-20 milling machine and Fab Modules to create PCB board.

To manufacture PCB board, you need images of the cooper, outline and drilling.

1. For the image of the cooper. Select layer 1 Top and 17 Pads visible (tool bar on the left> layer setting).

2. Export image (File> Export > Image) as 2400 dpi, monochrome. If the exported image looks too wide, it is because of the widest objects of the board layout. You might need to go back to the board layout to shorten the name of widest objects, so that everything fits in the outline.

3. For the image of outline. Select layer 46 Milling. To export image with white background, change user interface background white (bar on the top> Options> User interface). Export image as 1500 dpi, monochrome.

4. For the image of drilling for holes of pin header. Select only layer 17 Pads visible. Export the image with white background. Use GIMP to create only holes without lines around. Import the image in GIMP and bucket fill with black the area outside of the holes. Export new image with default settings.

5. Check dimensions of three images match.

Step 5: PCB Board Manufacturing

Go to Fab Modules.

* I had some problems in this process using Mac. So I used windows PC to complete this process.

1. Input format, select cooper image .png file. Select output format to Roland mill. Select process PCB traces (1/64) (inches = 1/64 * 25.4 = 0.39 mm). Choose machine and check the other parameters. Then press calculate and the tool path are created. Save the .rml file with the save button.

2. Input format, select outline image .png file. Select output format to Roland mill. Select process PCB Outline (1/32) (inches-> 1/32 * 25.4 = 0.79 mm). Choose machine and check the other parameters. Then press calculate and the tool path are created. Save the .rml file with the save button.

3. Input format, select drilling image .png file. Select output format to Roland mill. Select process PCB Outline (1/32) (inches-> 1/32 * 25.4 = 0.79 mm). Invert image. You need black dots with white background. Choose machine and check the other parameters. Then press calculate and the tool path are created. Save the .rml file with the save button.

4. Use milling machine to manufacture PCB board.

Step 6: Soldering

Soldering of pins on Arduino and components on PCB board.

1. It is easy to solder Arduino pins using breadboard so that it won't move.

2. Solder RGB LED, resistors and pin header. Make sure to place LED and resistors in the correct position. Red connects to 150Ω resistor, green and blue connect to 90Ω resistor, anode connects to VCC pin header.

Step 7: Programming

I wanted to change colours of LED with Arduino.

Here is the code:

int redPin = 3;

int greenPin = 5;

int bluePin = 6;

void setup() {

pinMode(redPin, OUTPUT);

pinMode(greenPin, OUTPUT);

pinMode(bluePin, OUTPUT);


void loop() {

setColor(255,0,0); //red


setColor(0,255,0); //green


setColor(0,0,255); //blue


setColor(255,255,0); //yellow


setColor(80,0,80); //purple


setColor(0,255,255); //aqua



void setColor(int red, int green, int blue)


//common anode

red = 255 - red;

green = 255 - green;

blue = 255 - blue;

analogWrite(redPin, red);

analogWrite(greenPin, green);

analogWrite(bluePin, blue);


Step 8: Power Supply

I used two coin cell batteries as power supply.

I printed battery holder from here (battery holder), but it was a little bit too big and I needed modification using conductive tape to fill the space. So if you find another one or design your own holder, it would be better.

You need two of 3V coin cell battery. Arduino power is 5V. Connect batteries to raw pin on Arduino which has voltage regulator.

Step 9: Assembling

Connect and assemble all the components. Everything should fit in the pumpkin.

Put thin paper in the pumpkin for diffusion of the light.

Enjoy Halloween!

LED Contest 2017

Participated in the
LED Contest 2017