ATtiny Programmer Board (ArduinoUNO As ISP)

by xxreef in Circuits > Arduino

6830 Views, 59 Favorites, 0 Comments

ATtiny Programmer Board (ArduinoUNO As ISP)

attinyprogrammerboardarduinoasispv03_bb1_SNiovWu5uG[1].png
Development Programmer Board for ATtiny: upload sketch

Additional information and document update here on my site:

https://www.mischianti.org/2019/08/02/attiny-progr...

ATtiny13/ATtiny13a/ATtiny25/ATtiny45/ATtiny85

I really like the ATtiny and programming it, so I built a simple board to use Arduino UNO as ISP in a faster way.


With the original Arduino UNO, there is a little variant because compatible one have another 5v VCC over RESET pin, Arduino UNO has IOREF instead, but don't worry look at the schema to make the simple change.

Schema

AttinyProgrammerBoardArduinoAsISPv03_schem.png

In github project you can find the fritzing file with simple examples and schema.

Other solution is to export this board and send it to https://www.pcbgogo.com?code=y .

Material

preforedBoard.png

I use a perfored board.

To switch Voltage (to use 3.3v or 5v) and to enable test LED, I use a smd on/off button instead of a pin with a jumper.

The board is double sided so I can attach pin and components up and down the board.

AmountPart TypeProperties

  • 1 Arduino Uno (Rev3) tipo Arduino UNO (Rev3)
  • 1 Electrolytic Capacitor capacitance 10µF
  • 1 Ceramic Capacitor capacitance 100 nF
  • 1 IC Holder pin spacing 300mil; pins 8
  • 1 Green LED package 3 mm [THT]; colore Green (570nm); leg yes
  • 1 Yellow LED package 3 mm [THT]; colore Yellow (595nm); leg yes
  • 1 10kΩ Resistor resistenza 10kΩ; tolerance ±5%
  • 2 220Ω Resistor resistenza 220Ω; tolerance ±5%
  • Generic male header package THT; form ♂ (male); hole size 1.0mm,0.508mm; pin spacing 0.1in (2.54mm); pins 8; row single
  • Generic female header package THT; form ♀ (female); hole size 1.0mm,0.508mm; pin spacing 0.1in (2.54mm); pins 4; row single

ATtiny13a Variant

ATtiny13a_pinout.png
attiny13-isp.png

I buy ATtiny13a very low cost IC (less than 0.5€), with 4 analog pin and 2 PWM/TIMER PIN.

Board V01

AttinyProgrammerBoardArduinoAsISPv01_bb.png

First version of board with no led indicators.

This version work only with fake Arduino.

Fritzing here.

Board V01 (Original ArduinoUNO)

AttinyProgrammerBoardArduinoOriginalAsISPv01_bb.png

As you can see for Original Arduino uno you must add a wire to give 5v voltage to switch.

Fritzing here.

Board V02 (power Led)

AttinyProgrammerBoardArduinoAsISPv02_bb.png

Add green led to control if board have power supply.

Fritzing here.

Board V03 (test Led)

AttinyProgrammerBoardArduinoAsISPv03_bb.png

I add a very usefully test led, to check if all is connected correctly.

Fritzing here.

Board: Voltage Jumper

jumper.PNG

ATtiny can work at various voltage so I insert a jumper to select ATtiny operating voltage 3v or 5v power supply.

Board: Test Led Jumper

jumperTestLed.PNG

To test if It's all ok on board I add a test led that can be activated by that jumper.

Board: Reset Capacitor

capacitorPreventReset.PNG

To prevent reset when upload code It's important to add a capacitor to reset pin of Arduino.

Board: Voltage Capacitor and Reset Resistor

capacitorAndResetResistor.PNG

Other important thing is the capacitor to stabilize the voltage and pullup resistor to reset pin of ATtiny.

Assembled Board

preforedUp.jpg
preforedBottom.jpg
mountOnArduino.jpg
working.jpg

The realization is quite simple and the result is very usefully.

How Board Fit on Arduino

ATtiny prototype board: mount board

Mount board on Arduino.

How to Program an ATtiny: Prepare ArduinoUNO to Use It As ISP

  1. In Arduino IDE select ArduinoUNO board (Tool --> Board --> ArduinoUNO - Strumenti --> Scheda --> ArduinoUNO);
  2. Than open ArduinoISP example file (File --> Examples/Esempi --> 11.ArduinoISP --> ArduinoISP);
  3. Upload Arduino (Sketch --> Upload/Carica);
  4. Close IDE.

Add Support for ATtiny: ATtiny13/ATtiny13a

GitHub ATtiny13 support

  1. Open the Arduino IDE;
  2. Open the File > Preferences menu item;
  3. Enter the following URL in Additional Boards Manager URLs: https://mcudude.github.io/MicroCore/package_MCUdu... ;
  4. Open the Tools > Board > Boards Manager... menu item;
  5. Wait for the platform indexes to finish downloading;
  6. Scroll down until you see the MicroCore entry and click on it;
  7. Click Install;
  8. After installation is complete close the Boards Manager window.

Add Support for ATtiny: ATtiny25/ATtiny45/ATtiny85

GitHub other ATtiny support

  1. Open the Arduino IDE;
  2. Open the File > Preferences menu item;
  3. Enter the following URL in Additional Boards Manager URLs: https://raw.githubusercontent.com/damellis/attiny... ;
  4. Open the Tools > Board > Boards Manager... menu item;
  5. Wait for the platform indexes to finish downloading;
  6. Scroll down until you see the MicroCore entry and click on it;
  7. Click Install;
  8. After installation is complete close the Boards Manager window.

How to Program an ATtiny: Upload to ATtiny

ATtiny prototype board: upload sketch
  1. Attach board to ArduinoUNO;
  2. Insert ATtinyXX;
  3. If the board is v03 than activate test led otherwise using a breadboard and take VCC from upper right pin of attiny and GND to down left pin, than connect 0 pin (down right) to a led (on next video);
  4. Select board with correct setting and PORT (Tools --> Board/Strumenti --> Scheda);
  5. Select Arduino as ISP (Tools --> Programmer --> Arduino as ISP/Strumenti --> Programmatore --> Arduino as ISP);note: Arduino as ISP is different from ArduinoISP.
  6. Upload program (Sketch --> Upload from programmer / Schetch --> Carica tramite un programmatore).

Sample Sketch

ATtiny prototype board: without test led

If the board is v03 than activate test led otherwise using a breadboard and take VCC from upper right pin of attiny and GND to down left pin, than connect 0 pin (down right) to a led (on video).

A simple scketch to upload to ATtiny

#define PIN 0
void setup()
{
  pinMode(PIN, OUTPUT);
}

void loop()
{
  digitalWrite(PIN, LOW);
  delay(500);
  digitalWrite(PIN, HIGH);
  delay(500);
}

Thanks

In github project you can find some additional info and schema.