Yesterday I received the Digispark "Arduino" board which I bought on Amazon Japan, from China. The price was just 200 Yen, which something very cheap, just 1.5 Euro.
The board is equipped with an Atmel ATtiny85 microcontroller, which has an internal oscillator running at 16.5Mhz. The memory is very limited, just 8 kBytes (which are reduced to 6 kBytes, since 2 kBytes are used for Arduino bootloader) or ROM flash memory, and 512 bytes of RAM. And it has just 6 pins, which are enough for simple applications. Thanks to the Arduino bootloader, the board can be programmed using a USB port.
First of all, it is necessary to install the Windows drivers for this Digispark board, and install the board plug-in on Arduino IDE, following this guide. Then, the board can be programmed like a normal Arduino, using Arduino IDE. The only small problem is that every time you need to upload a program on this board, you need to press the "Upload" button and then connect it to the USB port. Which means that, if you have to modify and upload your software many times, you will need to unplug and plug the board in the USB port of your PC, and this might damage the contacts on long term usage.
The electronic circuit schematic is quite simple. Just the microcontroller, some resistors, diodes, capacitors, and a 5V regulator (ST 78M05), in case you need to power the board using an external power supply with a voltage higher than than the USB port (5V). I suppose that, in the schematic, the diode between the USB power supply pin and "5V" is mounted in opposite direction: the correct direction should be from USB port to "5V". However, in the reality, the board works even powered from USB, so this might be a schematic mistake. The board can be easily tested with LED blinking "hello world" program.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
// 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 } |
The following video shows the program sketch uploaded on the board and running.