Arduino ATtiny2313 Programming Shield

76,690

389

47

Published

Introduction: Arduino ATtiny2313 Programming Shield

About: A programming enthusiast. I tinker around with everything I see and love to game.

Today, I made a small 3x3x3 LED cube with an ATtiny2313 that I had from about 2 weeks ago. Whenever I had to reprogram the LED cube when I thought of more awesome patterns, I had to get out my breadboard and then wire up everything again referring to pin-outs of ATtiny2313 and make sure everything is connected right and then finally upload the new code.

So I went on to eBay and amazon searching for something to program these chips as I was planning on using these chips a lot in the future. After spending about an hour I just realized I was wasting my time as there was no way I was going to spend about 20-30 dollars on a simple shield.

After thinking for a bit, I decided to make a simple and easy to make, ATtiny2313 programming shield, after I made it, all I needed to do to recode any of my attinys' is to just put it in the programming shield and just in a few clicks you have your code uploaded! No need to worry if everything is wired right and make sure there are no short circuits or anything that can short out the chip and fry it or anything else of that sort.

So now in this instructable I will show you how to build one of these shields for yourself!
It costs almost nothing and takes only about 30mins or so to make it.

So lets get started!

Step 1: Materials

Materials required for this project;
  1. Protoboard
  2. 10 Micro Farad Capacitor (or similar value)
  3. 2 LED's
  4. A couple of wires
  5. A single row pin header strip
  6. A single row female pin header strip
Tools required for this project;
  1. Soldering Iron
  2. Solder
  3. Glue Gun (Or just good glue)





Step 2: Prototype and Pinout

The image shows the pin-out diagram on how to wire up everything, you basically wire up everything as shown in the pin-out but not to the arduino directly but to a protoboard which has headers attached to them which can be attached to the arduino as a shield.

Make sure you keep the pin-out diagram of the ATtiny2313 next to you when wiring up everything to avoid any forgetful errors that may occur.

(Pin-out of ATtiny2313 Taken from http://blog.williambritt.com/uploads/attiny2313-pinout.png)

Step 3: Working on the Actual Shield

Start off by attaching the female headers in the center of the protoboard and then put the male headers in the arduino and then put the protoboard on it so as to get the exact position where to solder the male headers.

Then connect the right pins from the male header onto the female headers according to the pin-out (Female headers are going to be used to attach the ATtiny2313 and male headers are going to be used to attach the shield to the arduino)

Then add the 2 LED's and the capacitor and connect them according to the pin-out as well, make sure the capacitor is attached the right way if its a polarized capacitor.

Then once everything has been wired up connect it to the arduino and upload a test code to make sure everything works fine (Instructions on how to do this on the next step), then once the testing is done you can add some hot-glue around the solder joints to make sure they are firm and don't make any sort of wrong connections. You could also use some electrical insulating gel/glue.

Step 4: Installing ATtiny Files

To program the ATtiny2313 there are 3 main steps;

1)Installing the ATtiny files
2)Setting up Arduino as an ISP
3)Connecting the shield and uploading the code

First download this;
http://code.google.com/p/arduino-tiny/

This download includes the files that need to be installed on the arduino IDE in order to program and use ATtiny boards with the Arduino programming environment.

By following the read-me, make sure that all the files are installed properly. As soon as they are installed, then when you go to Tools->Board, you should see a whole lot of new ATtiny options (There are ATtiny2313, ATtiny44, ATtiny84 and some ATtiny85 options).

Step 5: Setting Up Arduino As ISP

To set the Arduino as an ISP, first connect your arduino to the computer and open the example sketch 'ArduinoISP' by going to file, examples and ArduinoISP.

Then upload the code to the arduino by selecting the right board and right serial port in the options.

To make sure that you have uploaded the right program, in the next step you will make sure that the "Heartbeat" LED is working as it should (Fading on and off).

Step 6: Connecting the Shield and Uploading the Code

Now once that is done, connect the shield to the arduino and you should see the Heart LED fading at a regular interval. Now once you see the the LED is doing what its supposed to do, then attach the ATtiny2313 to the shield. Now go into the arduino IDE again and then go to Tools->Programmer and select Arduino as ISP.

Then in the Tools->Boards, select the ATtiny2313 1Hz (Factory default sets the clock of the ATtiny2313 to 1Hz)
After selecting those 2 options then just open up your code and then hit Upload to upload the code to the ATtiny2313 with the Arduino as an ISP (Simply put, you are programming the ATtiny2313 by using the Arduino to connect it to the computer)

Once you are done uploading the code, then make sure you change the 2 options you changed back to the original so that you can upload code to the arduino again after doing this.

Step 7: What Next?

So now since you can program and use an ATtiny2313, why not try use these for all your future projects instead of Arduino's?

They are a lot cheaper than the Arduino (by 22-30 dollars) and they are capable of 18 I/O pins and they work with most of the common Arduino coding environment functions. The size of them is much smaller compared to the arduino as well which is very handy when trying to put things into small enclosures etc.

The only drawback of the ATtiny2313 is that some functions are not supported by it, so projects involving them cannot be done and the amount of I/O pins are limited.

But on the bright side, for small/simple projects these are great!

If you make any projects based on the ATtiny2313 or if you make this programmer, then be sure to upload a picture or a video of it and post a comment below :)

Kit Contest

Second Prize in the
Kit Contest

Pocket Sized Electronics

Third Prize in the
Pocket Sized Electronics

4 People Made This Project!

Recommendations

  • Water Contest

    Water Contest
  • Oil Contest

    Oil Contest
  • Clocks Contest

    Clocks Contest

47 Discussions

JPG doesn't seem to improve the image, still square, sorry

2313 programmer.jpg

Dear
Vishalapr,


I
have two remarks . . .


1-On
the protoboard drawing Arduinopin 10 is connected with 2313-pin 2,
this must be 1.


2-I
made several shield for the Attiny family (84/85 and 2313) out of
protoboard but they never fit nicely.

Reason is that the
Arduino 13 to 8 connections are not exactly opposite the Rst to Gnd
connections.

Attached you can see my solution . . . I also used
a RGB led on 7-8-9 to follow the uploading process.

Regards, Tom

2313 programmer.png
0
user
SvenF7

1 year ago

exec: "avr-g++": executable file not found in %PATH%

can someone please help me? :/

I tried all the steps but still attiny2313 is not in boards of arduio. What should i do.

1 reply

Hi Rutviks

I had the same problem but i found a solution.
1) go to your arduino sketch folder
2)open the folder you downloaded in the hardware folder
3)rename the file "Prospective Boards.txt" to Boards.txt
4)restart the Arduino IDE

Normally this should work.

Hi, your tutorial is great. Just one thing which has me stumped. When writing code for the 2313, does one have to change the pin definitions to match those of those of the mpu? I have written progs and uploaded them to the attiny85 and always worked. I am 67 years old and have taken up the Arduino as a hobby, but my knowledge is VERY limited. Maybe you could help me out a bit. Or one of the other people commenting on this.

Thanks.

Replace the led with RGB...

temp_-1114767914.jpg

Hi! Do you have the setup for an external clock to put it into the Arduino HW and Board configuration? Would be grat for the 2313 an 4313

I've made mine with a leftover ZIF socket. It can program the 8-pin Attiny25/45/85 as well (jumper in the lower left). The jumper in the top left is for enabling/disabling the 10 mu capacitor. This type of print has pretty large holes so i could solder the headers nicely.

The images from left to right: component layout; fitted for tiny 25/45/85; fitted for tiny 2313/4313; photo; copper side of the print.

prog_shield_ontwerp.jpgprog_shield_tiny_x5.jpgprog_shield_tiny_x313.jpgprogr_shield_foto.jpgprog_shield_achter.jpg
2 replies

Why never a schematic diagram is given? This is a nice programmer, but first i have to puzzle and draw a schematic diagram before i can build the programmer. Ik see this problem in a lot of Arduino designs.

Since this small thing is just the same thing as this instructable is about, i did not feel the need to draw a schematic as well.

Furthermore Arduino is about hacking and sharing. I just shared here my version of this design.

I've another question for you: Since you seem to have drawn your own schematic of this version, why not share it with this community.

can u say that wat files i have to be download and how to instal for showing that boards in tools menu

2 replies

You can download the files here:
http://code.google.com/p/arduino-tiny/

This is what the instructions in the read me say:

Ensure the Arduino IDE is NOT running.

* Download the Arduino-Tiny archive (ZIP-file).

* Locate the Arduino Sketch folder. This is the folder where the Arduino IDE
stores Sketches.

* Ensure the "hardware" folder exists under the Arduino Sketch folder. For
example, if the Arduino Sketch folder is...

C:\Projects\Arduino\

Ensure this folder exists...

C:\Projects\Arduino\hardware\

* Extract the contents of the archive into the "hardware" folder. For example,
if the Arduino Sketch folder is...

C:\Projects\Arduino

After extracting, the following files should exist...

C:\Projects\Arduino\hardware\tiny\boards.txt
C:\Projects\Arduino\hardware\tiny\programmers.txt

C:\Projects\Arduino\hardware\tiny\bootloaders\empty\empty2313at1.hex
C:\Projects\Arduino\hardware\tiny\bootloaders\empty\empty2313at8.hex
C:\Projects\Arduino\hardware\tiny\bootloaders\empty\empty25at1.hex
C:\Projects\Arduino\hardware\tiny\bootloaders\empty\empty25at8.hex
C:\Projects\Arduino\hardware\tiny\bootloaders\empty\empty45at1.hex
C:\Projects\Arduino\hardware\tiny\bootloaders\empty\empty45at8.hex
C:\Projects\Arduino\hardware\tiny\bootloaders\empty\empty84at1.hex
C:\Projects\Arduino\hardware\tiny\bootloaders\empty\empty84at16.hex
C:\Projects\Arduino\hardware\tiny\bootloaders\empty\empty84at8.hex
C:\Projects\Arduino\hardware\tiny\bootloaders\empty\empty85at1.hex
C:\Projects\Arduino\hardware\tiny\bootloaders\empty\empty85at16.hex
C:\Projects\Arduino\hardware\tiny\bootloaders\empty\empty85at8.hex

And the following folder should contain the Arduino-Tiny core...

C:\Projects\Arduino\hardware\tiny\cores\tiny\

* Create a new file named "boards.txt" in the tiny directory. Following from
the examples above, the file would be here...

C:\Projects\Arduino\hardware\tiny\boards.txt

* Open the "boards.txt" file and the "Prospective Boards.txt" file using your
favourite text editor.

* Copy board entries of interest from "Prospective Boards.txt" to "boards.txt"
(or copy the entire contents of "Prospective Boards.txt" to "boards.txt").
Board entries are delineated by a long line of pound-signs.

* In the "boards.txt" file, change the "upload.using" entries to the
appropriate value for your setup.

* Save and close "boards.txt". Close "Prospective Boards.txt".

* Start the Arduino IDE and ensure the new boards of interest are listed under
the [Tools] [Board] menu...

"ATtiny84 @ 16 MHz (external crystal; 4.3 V BOD)"
"ATtiny85 @ 8 MHz (internal oscillator; BOD disabled)"
etcetera