Picture of Digispark DIY: The smallest USB Arduino
Digispark is an ATtiny85 based microcontroller development board come with USB interface. Coding is similar to Arduino, and it use the familiar Arduino IDE for development.

Digispark is copyrighted by Digistump LLC (digistump.com) and the full license is here: http://digistump.com/wiki/digispark/policy

Support for the Arduino IDE 1.0+ (OSX/Win/Linux)
Power via USB or External Source - 5v or 7-35v (automatic selection)
On-board 500ma 5V Regulator
Built-in USB (and serial debugging)
6 I/O Pins (2 are used for USB only if your program actively communicates over USB, otherwise you can use all 6 even if you are programming via USB)
8k Flash Memory (about 6k after bootloader)
I2C and SPI (vis USI)
PWM on 3 pins (more possible with Software PWM)
ADC on 4 pins
Power LED and Test/Status LED (on Pin0)
Remove these adsRemove these ads by Signing Up

Step 1: Prerequisite

Picture of Prerequisite
AVRISP MKII In-System Programmer
ATTINY85 Microcontroller
2 x 3.6V zener diode
2 x 68 ohm resistor
1 x 1.5K resistor
USB cable (get from broken mouse or keyboard)
Some wires

Step 2: Burning bootloader to ATTINY85

Picture of Burning bootloader to ATTINY85
Like Arduino, Digispark require a bootloader to be running on ATTINY85. The bootloader will occupied 2KB flash memory.

Download bootloader
1. Download Micronucleus bootloader for ATTINY85
2. Extract the file (micronucleus-t85-master.zip) to any folder
3. You can find the bootloader file at micronucleus-t85-master\firmware\releases folder
4. Use micronucleus-1.06.hex for the bootloader

Burning bootloader to ATTINY85
You must use the correct fuses bit for the bootloader

Extended: 0xFE
High: 0xDD
Low: 0xE1

Note: The above fuse bit will not enable reset as I/O, so you can have only 5 I/O instead of 6 I/O. I'm still try to figure out on how to set it to 6 I/O

I'm using AVRISP MKII In System Programmer and AVR Studio software for burning bootloader.

Step 3: Installing Digispark USB driver

Digispark use USB to communicate with computer, so your computer must install Digispark USB driver
1. Download Arduino for Digispark which come with USB driver
2. Extract the file (DigisparkArduino-Win32-1.0.4-March29.zip)  to any folder
3. Execute DigisparkArduino-Win32\DigisparkWindowsDriver\InstallDriver.exe to start installing the USB driver

Step 4: Digispark schematic

Picture of Digispark schematic
I provide two schematics, first one is the official schematic for Digispark, the other one is for testing purposes which the 5v is get from USB port and hence it is lesser components and much more simple.

Step 5: Plug in Digispark to computer

Picture of Plug in Digispark to computer
1. Plug in Digispark to the USB port of computer
2. USB device is detected for first time use and prompt you to installing Digispark bootloader.
3. Click on Next button until finish.

Step 6: Configure Digispark Software

Picture of Configure Digispark Software
1. Run DigisparkArduino-Win32\Digispark-Arduino-1.0.4\arduino.exe to starting Arduino IDE
2. Click on Tools>Board>Digispark (Tiny Core)
3. Click on Tools>Programmer>Digispark

Step 7: Upload sketch to Digispark

Picture of Upload sketch to Digispark
Upload an example. Click on File>Examples>Digispark_Example>Start
Coding is look like this:

// the setup routine runs once when you press reset:
void setup() {               
  // initialize the digital pin as an output.
  pinMode(0, OUTPUT); //LED on Model B
  pinMode(1, OUTPUT); //LED on Model A  
// the loop routine runs over and over again forever:
void loop() {
  digitalWrite(0, HIGH);   // turn the LED on (HIGH is the voltage level)
  digitalWrite(1, HIGH);
  delay(1000);               // wait for a second
  digitalWrite(0, LOW);    // turn the LED off by making the voltage LOW
  digitalWrite(1, LOW);
  delay(1000);               // wait for a second

Follow step below to upload sketch to Digispark.
1. Unplug Digispark from computer before click on the Upload button 
2. Click on Upload button now
3. Plug in Digispark to computer when it prompt for "Plug in device now..."
4. If you see "running: 100% complete". Congraturation! you have own a working Digispark. 

Step 8: Test the Digispark

Picture of Test the Digispark
Connect a 330ohm resistor & LED to both pin5(Digital 0) and pin6(Digital 1) of ATTINY85. Plug the Digispark to computer,  both LED is start blinking now.

Step 9: What can do with Digispark

Picture of What can do with Digispark
1-40 of 53Next »

Sweet! :D

gsaxena made it!1 month ago

Never mind, got it working, 1.5k and 68R resistances were swapped.

gsaxena2 months ago

Tried building this, but device is not detecting, unknown usb error is shown, is schematic correct?, in micronucleus firmware folder in bootloaderconfig.h file, it says to connect D+ line to INT0. So we need to connect PB4 to PB2 also?

bobricius1 year ago

Hi, I think that I have much smaller arduino than you https://www.tindie.com/products/bobricius/picoduino/

I am all for self built, for the sheer joy and the sense of learning. But I am also cost conscious. You guys know this thing costs 2 euro's at Aliexpress right? Ready made, good to go: http://www.aliexpress.com/item/Free-shipping-Digis...

Also, a pro mini costs only 1.60 euro's there and has a lot more pins

Only just... I'm working on an even smaller one, if it works, It'll litterally fit inside a usb plug lol

how's that goin?

Apart from accidentally shorting my data wires on the first attempt (lucky it wasnt power...)its worked like a dream :)

uses SMD components. The difficult bit is pulling out the reamaming IO pins without shorting stuff...

Once I've got it working, I'll share the instructable :)

se23 dan30083 months ago
Did you manage to get it working?
se23 dan30083 months ago
Hi mate, I know it's a long time ago but wondered how the project went. We have a real problem in my industry and I think your idea would solve it. I would like to present it to my seniors at head office.
lzu bobricius1 year ago

I'm the Ardulink creator. Ardulink is a java open source library that can control and coordinate several Arduino boards.If you are interested in have PicoDuino supported by Ardulink, please contact me and send to me a board. I've already made a test with a Digispark.

MisterED.corp9 months ago


just wanted to thank you and throw in a pic of my attempt :)

the upper one is a usbTinyISP and the lower one the Digispark. I added a capacitor (10uF i think, but just used the next one laying around) to get usb-connection to work.

2014-10-12 17.33.28.jpg
smching (author) 1 year ago

Once you use Burn Bootloader, you can never program that chip again using an ISP programmer.


Well! No problem! Thanks for warning me
nvillalba1 year ago
Can you explain this process whit arduino as ISP instead AVRISP mkII

Would it work, If I connect P3 and P4 directly to USB+ and USB- on my micro USB connector?

What are the potential downsides of not using the zenor diode and the pull-up resistors for Level converting? Would my communication still work without those two? Could it fry my processor or the usb port on my host device?

smching (author)  Jaywalker19811 year ago

It wouldn't work without the Zener didoe & the pull-up resistor.

The USB power uses 5V, but the dataline (USB+ & USB-) uses only 3.6V for high, attempt to fed 5V from ATTiny85 to computer will cause the communication failed.

jemamena1 year ago

Has anyone tried to use an ATtiny84 instead with usb capabilities? It would be very helpful

smching (author)  jemamena1 year ago

Please check with Digispark Pro


What chip uses the Digispark Pro? I am actually more interested in making the ATtiny84 usb like the first Digispark

smching (author)  jemamena1 year ago
smching (author)  jemamena1 year ago

At first I thought it is ATtiny84 because it is discussing in the post related to ATTiny84:


By comparison the pin configuration and specification, I think it must be ATTiny167.

jmpm46191 year ago
Hello what can i do with this board perform?
smching (author)  jmpm46191 year ago

Digispark has 6 digital outputs, you can control LED, relays. It has 3 PWM outputs, you can control motor and fade the LED. It has 4 Analog inputs and can be connect to sensors.

Please refer to Digispark project forum for more details:


Select the fuse RSTDISBL. That disables the reset function of the pin, and enables it as I/O. Note, you will need an HVSP to reset the fuse (or reprogram the AVR) after you do that.

PD, is there a way to communicate between the uC and the computer via the integrated USB?

You could try with my java library Ardulink. I've developed a connection for Digispark. It works also if some messages get lost.


smching (author)  Emiliano Valencia2 years ago
Communicate between Digispark & computer is not easy via USB. You can refer to Debugging with the Digispark

 would suggest to sending the data as keyboard keystrokes using the digispark keyboard emulation, it is very simple and easy. Otherwise you can use Softserial

zhaoyu35171 year ago


dan30081 year ago

Silly question. Whats the purpose of the 2 zener diodes?

I'm guessing its to stop a back flow from gnd to the data pins (or visa versa)?



smching (author)  dan30081 year ago

The host(computer) sends 0V(0.8V min.) for a low level and 3.3V(3.6V max.) for a high level.

The zener diode acts as the level convertor, the 3.6V zener diodes yield 3.3V in conjuction with an 1.5K resistor.

Ah i see. Thanks for that :) my electronics knowledge is a bit rusty lol

Ploopy1 year ago


Could you upload the fritzing file (.fzz)?

smching (author)  Ploopy1 year ago


dan30081 year ago

Just ordered myself 10 ATtiny84's to make these :D (well, one for a usb programmer, the rest for this) I cant wait to be able to develop USB devices and similar without the hefty pricetag of the arduino...

one set of fuses that will let the rest pin be used for io is
Low: 0xe1
High: 0x5d
Extended: 0xff

But I've not tested it yet, so cant guarantee it

letnic1 year ago
I get a "USB device not recognized" message. I try with 1,8k and 1,2k on D- and on D+ and all on work. My 2 zener are two 1n4729.
letnic letnic1 year ago
i miss spell, "all not work". I have no idea why it don't work
smching (author)  letnic1 year ago
Reverse the D+ and D- may cause "USB device not recognized" too.

I'm also facing "USB device not recognzed" when using an ordinary USB mouse cable,

Please use a good quality USB cable. The USB cable must be as short as possible.
smching (author)  letnic1 year ago
Thank you for sharing
koogar2 years ago
FUSEOPT_t85_DISABLERESET = -U lfuse:w:0xe1:m -U efuse:w:0xfe:m -U hfuse:w:0x5d:m

Use High fuse 5D this was taken from the digispark bootloader make file


1-40 of 53Next »