Introduction: Arduino Attiny Programming Shield - SMD


I was working on my programming tool's setup for wearables during the last months. Today I would like to share how I created my Arduino Shield.

After googling for a while, I found this interesting old article Attiny programming shield , which inspired me to create my own one.

This shield is Arduino Uno compatible and is intended to be used with different ATtiny uCs in following packages PDIP/SOIC/TSSOP, yes.. SMD packaging as well :)

Let's define the project constraints:

  • Arduino Uno compatible
  • ATtiny25/45/85, ATtiny24/44/84 and ATtiny2313A/4313 compatible
  • PDIP/SOIC/TSSOP compatible
  • SMD packages are supported by using a PCB edge connector


Required Hardware:

  • 1 x 6 Pins 2.54 mm vertical headers, for Arduino board connection
  • 1 x 5 Pins 2.54 mm vertical headers

  • 1 x 1 Pin 2.54 mm vertical headers

  • 1x PDIP_8 socket

  • 1x PDIP_20 socket

  • 1 x PCB edge extension socket, for SMD package support. I am using one provided by TE Connectivity

  • 1 x 10 uC capacitor SMD package
  • 1 RED , 1 Yellow and 1 Green SMD LEDs , for Status indication. I am using Kingbright 3.2mmx1.6mm SMD CHIP LED LAMP
  • 3 SMD Resistors (3225 package), each 400 Ohm

Required Tools:

  • CAD Tool for schematics and PCB design, I am using Kicad 5.1.5

Step 1: Creating the Schematic

Let's check the schematic in above picture.

The shield has 2 options for programming the uCs.

  • We are using 2 DIP sockets for respective PDIP packaging.
  • On the other hand the SMD package chips are part of a mini PCB device (Wearable). The PCB to PCB plug interface has 6 pins. It can be inserted/removed from the PCB edge socket ( similar to mini PCI interface for a PC mainboard). In above picture you can find the connector used in this board as well.

The last is an optional feature, you can remove it from your schematics based on your needs. You can find under this link ATtiny-Wearable-Device-PCB-Edge-Connector an explanation on how to create a mini PCB for this purpose.

The PDIP sockets and edge connector are connected to Arduino pins based on table above. These are the required signals for ISP programming.

Remark: A capacitor is added in the Arduino Board , just to void any reset during programming process.

Step 2: Mapping Schematic to Footprint Components

Most of the footprints in this project are part of the Kicad Footprint library. We just make a short stop here, to indicate which of the options we chose and why.

Refer to above picture for details, please use the SMD capacitor footprint as indicated and for the PCB edge connector use a THT 6 Pin header ( the pitch is 2.54 mm, no 3D model is available).

Step 3: Creating the PCB

Let's explain the main approach of the PCB layout:

  • on the back side we place only the PADs to connect to our Arduino Board.
  • on the upper side, we want to have the DIP sockets, mini PCB socket and status LEDs as well.

Based on this great Arduino description Arduino Uno Drawing, we can start to place the shield connectors on our layout (check pictures above). As a good practice we change our measurement units to inches, in order to reduce the distance calculation effort.

Step 4: Last Comments

I am using the shield to program one chip at the same time. I would recommend to do so, in order to avoid any problem with signal levels and programming flow.

I will update a link to respective files if required.

Once I take a nice picture of the board, I will upload it here. Hope you had also fun!