Beim Digispark ATtiny85 handelt es sich um eine Mikrocontroller-Karte auf der ein ATtiny85 Microcontroller mit einer Frequenz von 16,5 MHz, 8 KB Speicher und 5 GPIO-Pins verbaut ist. Diese MCU-Karte ist die billigste und kleinste auf dem Markt. Sie ist schon ab etwa 1-2€ erhältlich und sehr gut für kleine Projekte mit sehr geringem Stromverbrauch geeignet.
Für den Digispark ATtiny85 benötigt man keinen zusätzlichen Programmer-Adapter und keine zusätzliche Stromversorgung, da das Board über den USB-Port programmiert werden kann und auch über den USB-Port mit Strom versorgt wird. Es ist also kein SPI (Serial Peripheral Interface) Adapter für das Hochladen der Software auf den ATtiny85 notwendig.
ATtiny85 Varianten
Das Board selbst ist in 2 Varianten erhältlich.
Beide Boards verfügen über den gleichen Atmel 8-bit AVR Mikrocontroller ATtiny85 und über 6 GPIOs.
Beide Varianten können über den USB-Anschluss mit Strom versorgt werden. Alternativ kann man die Boards auch über den VIN-Pin mit einer Versorgungsspannung von 7 bis 35 V versorgen, die mit dem integrierten 7805-Spannungsregler auf 5 V heruntergeregelt wird.
Von den 6 GPIO Pins sind drei Pins sind PWM-fähig und vier Pins ADC-fähig. Von den 8 KB Flash-Speicher stehen ca. 6 kB zur Verfügung. Den Rest (2 kB) benötigt der Bootloader.
Das Board besitzt 6 GPIO Pins, die mit P0 bis P5 gekennzeichnet sind. Alle Pins können als GPIO Pins verwendet werden, haben aber noch weitere Zusatzfunktionen:
- P0: I2C SDA, PWM
- P1: PWM
- P2: I2C SCK, Analog In
- P3: Analog In, USB+
- P4: PWM, Analog In, USB-
- P5: Analog In
Man sollte die Sonderfunktionen auf jeden Fall im Auge behalten. Wenn man den ATtiny85 z.B. als HID-Tastatur verwenden möchte, kann man die Ports P3 und P4 nicht verwenden, da diese dann als USB-Schnittstelle verwendet werden. Zusätzlich ist noch eine On-Board-LED mit P0 oder P1 (Abhängig von der verwendeten Version) verbunden.
Details zu den Versionen findet man unter: https://digistump.com/wiki/digispark/tutorials/modelbi2c
Die folgende Anleitung zeigt schritt für Schritt, wie man sein erstes Programm auf dem ATtiny85 installiert.
Installation der Arduino IDE
Programmiert werden kann der ATtiny85 mit der Arduino IDE. Dabei handelt es sich um eine IDE (integrierte Entwicklungsumgebung), die für die alle üblichen Betriebssysteme wie Windows, Linux und macOS kostenlos verfügbar ist. Da es sich um eine Java-Anwendung handelt, ist es theoretisch möglich, die Arduino-IDE auf allen Plattformen zu installieren, für die es eine Java-VM gibt.Die Arduino-IDE enthält einen einfachen Code-Editor mit und verwendet als Compiler den gcc. Zusätzlich werden die avr-gcc-Library und andere Bibliotheken eingebunden, die die Programmierung in C und C++ deutlich vereinfachen.
Als erstes muss die Arduino IDE von der Website https://www.arduino.cc/en/Main/Software heruntergeladen werden.
Wer mag kann den Entwicklern auch gerne eine kleine Spende gönnen und damit die zukünftige Weiterentwicklung der kostenlosen Entwicklungsumgebung sicherstellen. Ich persönlich bin ein großer Fan der Arduino IDE und kann Jedem Nutzer nur empfehlen, wenigstens 3$ zu spenden und dafür einfach mal auf einen Kaffee bei *bucks zu verzichten :-).
Da ich die Arduino IDE unter Windows installiere, werde ich zum Microsoft Store weitergeleitet. Das sieht unter MacOS und unter Linux sicher ganz anders aus, aber noch ist Microsoft Windows das meist verbreitete Desktop-Betriebssystem das auch ich gelegentlich nutze …
Nachdem die Arduino IDE heruntergeladen und Installiert wurde, kann man theoretisch schon mit dem Programmieren anfangen. Leider gilt das nicht für den ATtiny85. Für diesen kleinen Kollegen werden noch ein paar Kleinigkeiten benötigt, die aber auch recht schnell installiert sind.
Für das Digispark ATtiny85 Board wird noch ein spezieller Treiber benötigt. Dieser kann unter https://github.com/digistump/DigistumpArduino/releases/download/1.6.7/Digistump.Drivers.zip heruntergeladen werden und wie unter https://digistump.com/wiki/digispark/tutorials/connecting beschrieben installiert werden.
Hinweis am Rande: Ein sehr gutes, kostenloses Programm zum Packen und Entpacken von Zip-Dateien und anderen Dateiformaten ist 7-Zip, dass unter https://www.7-zip.org/ heruntergeladen werden kann.
Da die Arduino IDE einige Dateien aus dem Internet nachladen muss, benötigt sie zwangsläufig auch zugang zum Internet. Daher muss man beim ersten Start der Arduino IDE den “Windows-Sicherheitshinweis” mit “Zugriff zulassen” bestätigen.
Nachdem das erledigt ist, wird direkt ein leerer Sketch mit einer setup und einer loop Funktion geöffnet.
Um nun aber ein Digispark ATtiny85 Board programmieren und flashen zu können fehlt noch ein Kleinigkeit, denn das Board muss noch in der Arduino IDE bekannt gemacht werden. Auch wenn die Arduino IDE schon sehr viele Bord-Definitionen mitbringt, fehlt doch irgendwie immer das Board, das man gerade vor sich liegen hat – hmmm merkwürdig.
Kein Problem. Einfach wie in den folgenden beiden Screenshots gezeigt die Digistump Boardverwalter-URL hinzufügen
http://digistump.com/package_digistump_index.json
Diese JSON Datei enthält eine Reihe von Plattformen und den zugehörigen Boards, die nun nachinstalliert werden können. Dazu wird im Menü “Werkzeuge” -> “Board: “Arduino Uno” der Menüpunkt “Boarverwalter…” aufgerufen.
Daraufhin öffnet sich ein Fenster mit dem Titel “Boarverwalter” in dem Du nun nun oben in das Suchfeld der Text “Digistump” eingeben kannst. Nun werden alle in der JSON Datei enthaltenen Plattformen und enthaltenen Boards aufgelistet.
Für die Arbeit mit dem ATtiny85 benötigen wir die “Digistump AVR Boards” die mit einem Klick auf “Installieren” rechts installiert werden können. Der Download dauert eine Weile, da hier einiges an Dateien heruntergeladen wird.
Der Download-Fortschritt wird in der unteren Leiste des Fensters „Boardverwalter“ angezeigt. Wenn der Vorgang abgeschlossen ist, wird neben diesem Element in der Liste „Installed“ angezeigt. Der Boardverwalter kann nun geschlossen werden.
Damit die Arduino IDE nun die korreknten Tools, Bibliotheken und Einstellungen für das Digispark ATtiny85 Board verwendet, muss nun noch das Board im Boarverwalter ausgewählt werden.
Damit ist die Installation der Arduino IDE und die notwendige Konfiguration für das Board abgeschlossen und man kann mit dem programmieren beginnen.
Hinweis: Wer schon vorher mit der Arduino IDE gearbeitet hat, mag sich etwas darüber Wundern, dass der Menüpunkt “Port” immer deaktiviert ist. Das ist aber ganz normal und muss uns nicht weiter stören.
Das erste Programm ist traditionell immer ein Hello World. Auch auf dem ATtiny kann man statt der Ausgabe “Hello Word” einfach die LED blinken lassen.
void setup() { 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 digitalWrite(1, HIGH); delay(1000); // wait for a second digitalWrite(0, LOW); // turn the LED off digitalWrite(1, LOW); delay(1000); // wait for a second }
Das Programm funktioniert mit allen ATtiny85 Boards, da hier sowohl Pin P0 als auch Pin P1 ein- und ausgeschaltet wird. Mehr Details zu der Verschaltung der Onboard-LED auf den unterschiedlichen Revisionen findet man hier: https://digistump.com/wiki/digispark/tutorials/connecting
Vor dem Hochladen des Sketches auf das Board ist es immer sinnvoll, das Programm erst einmal zu kompilieren und evtl. auftretende Probleme zu lösen. (Im Screenshot der runde Button oben Links in hellgrau mit den Häkchen).
Die Ausgabe im unteren Teil des Fensters:
Der Sketch verwendet 3240 Bytes (53%) des Programmspeicherplatzes.
Das Maximum sind 6012 Bytes.
Globale Variablen verwenden 104 Bytes des dynamischen Speichers.
Das hier kompilierte Programm ( Nicht das Hello World 🙂 ) verwendet schon 3240 Bytes. Das sind schon über 50% des verfügbaren Flash-Speichers. Bei dem kleinen Blink-Sketch wird das nicht so viel sein, aber hier wird schon deutlich, wo die Limitierungen der 2€ Hardware liegen.
Um den Sketch auf den Flash-Speicher des ATtiny 85 zu bringen, klickt man einfach oben links auf den runden Button (Im Screenshot in gelb)
Wenn bis hierhin alles funktioniert hat, wird im Ausgabefenster unten folgende Text angezeigt:
Running Digispark Uploader... Plug in device now... (will timeout in 60 seconds)> Please plug in the device ... > Press CTRL+C to terminate the program.
Nun ist endlich der Moment gekommen. Das ATtiny85 Board kann per USB-Kabel mit dem Computer verbunden werden.
Wird der ATtiny innerhalb der 60 Sekunden mit dem USB-Port des Computers verbunden, wird im Ausgabefenster folgender Text ausgegeben:
> Device is found! connecting: 16% complete connecting: 22% complete connecting: 28% complete connecting: 33% complete > Device has firmware version 1.6 > Available space for user applications: 6012 bytes > Suggested sleep time between sending pages: 8ms > Whole page count: 94 page size: 64 > Erase function sleep duration: 752ms parsing: 50% complete > Erasing the memory ... erasing: 55% complete erasing: 60% complete erasing: 65% complete > Starting to upload ... writing: 70% complete writing: 75% complete writing: 80% complete > Starting the user app ... running: 100% complete >> Micronucleus done. Thank you!
Damit ist der Sketch installiert und im Flash-Speicher des ATtiny verewigt (bis zum nächsten Upload 🙂 ).
Fazit
Mit dem Digispark ATtiny85 Board ist ein sehr günstiger Einstieg in die Mikrocontroller Programmierung möglich. Dank der kostenlosen Arduino IDE ist es möglich, mit 1-2€ einzusteigen.
Die Programmierung ist in C/C++ möglich. Die Programmiersprache ist nicht so einfach wie z.B. Java oder JavaScript, aber dank der großen Community und der endlosen Beispiele und Tutorials im Netz mit ein wenig Übung auch gut zu lernen.Darüber hinaus bietet der Digispark ATtiny85 noch eine Besonderheit, die nur wenige Mikrocontroller Boards in der Preisklasse mitbringen, denn er kann als als USB Eingabegerät verwendet werden. D.H. er kann sich wie eine USB-Tastatur verhalten und Tastenkombinationen senden oder Programme aufrufen. Aber genau das ist auch die große Gefahr des kleinen Boards, dass Heise z.B. in dem Artikel “Klein, aber gemein – Das Gefährdungspotenzial der Digispark-USB-Platine” beschreibt.