ATTiny85

Was will man mit einem ATTiny85, der so klein ist, dass er schon wieder fast nichts kann. Er hat kein Bluetooth, kein WLAN und auch sonst ist er mit seinen 5 Ports, von denen zwei auch als USB-Emulation laufen, doch sehr beschränkt. Ich habe trotzdem einen im Geldbeutel um Kinder zu überraschen.

Einsatzbereich

Der ATTiny85 ist aber durchaus interessant für kleine Steuerungsaufgaben, die eben nicht "Cloud Tauglich" sein müssen. Wenn man über den USB-Anschluss keine serielle Kommunikation zum Debugging abwickelt, hat man 5 digitale Ports zur freien Verfügung.

Die Ports können aber zum Teil auch als Analogports umprogrammiert werden oder z.B. SPI/I2C-Schnittstellen bereitstellen. Damit wird aus dem kleinen Baustein ein pfiffiges Teil in einer Lösung, für die man bisher vielleicht aufwändig TTL-Chips, Transistoren o.ä. verbaut hat. Sie eignen sich z.B.: zur Vorverarbeitung von Signalen um diese dann auf einen Bus umzusetzen und vieles mehr. Wenn die wenigen Pins nicht ausreichen, dann kann man ja mit Multiplexern, I2C u.a. weitere Ports einbinden und z.B. eine Ampelschaltung für die Modelleisenbahn u.a. bauen.

Bauform und Preis

Der ATTiny85 (und die kleineren Brüder ATTiny45 und ATTiny25) können Sie als kleinen Chip mit 8 Beinchen direkt in eigene Schaltungen einbauen.

Sie sehen schon die die Mehrfachbelegung der Anschlüsse, deren genaue Funktion letztlich durch die Software in diesem kleinen Computer vorgegeben wird. Die Firma DigiStump hat den Atmel ATTiny85 auf ein Board gebracht, welches einen sehr einfachen Zugang für Einsteiger erlaubt. Es ist klein, flach und kann direkt in den USB-Port eingesteckt werden.

Der Port dient sowohl zur Programmierung als auch Steuerung und dann auch die Energie liefern. Ohne PC kann jede USB-PowerBank oder USB-Netzteil das Board betreiben. Mittlerweile gibt es auch Boards mit Micro-USB-Buchse. Der ATTiny85 kommt ohne LAN, WLAN, Bluetooth und nicht mal einen seriellen Port hat er. In der Bauform des Digispark sind neben dem USB-Anschluss und den drei Pins für Power noch sechs weitere Ports, die unterschiedlich verwendet werden können.

Zwei der Ports dienen zugleich als Datenanschuss für USB. Wenn Sie diese beschalten, dann hat dies Einfluss auf die USB-Kommunikation und die Senderichtung hat einen kleinen Pullup-Widerstand, den Sie dann berücksichtigen müssen. An Port 0 oder 1 (je nach Revision) ist auch die Onboard-LED mit angeschlossen.

Auch die Nummerierung kann beim Programmieren natürlich verwirren.

Aber wenn Sie sich auf den üblichen Marktplätzen umschauen, dann gibt es Board schon in Deutschland für 2-3€/Stück und in China im Dutzend noch weniger.

Achten Sie aber darauf, dass Sie nicht Nachbauten aus China erwischen, die von vorneherein defekt oder nicht entsprechend vorprogrammiert sind. Die Foren sind z.B. voll von einer Rev 3, die nie öffentlich ging oder Nachbauten, deren Schutzdiode nicht funktioniert.

Der Port D5 hat auch die Funktion "RESET", die beim originalen Digispark über Setzen der entsprecehnden FUSE-Bits aber deaktiviert wurde. Viele Clones haben dies aber vergessen. Wenn sie alle 6 Pins brauchen, dann müssen Sie dies über einen Programmer ändern
Fixing Pin P5 or 6 on Digispark Clones
http://thetoivonen.blogspot.com/2015/12/fixing-pin-p5-or-6-on-digispark-clones.html.

So ein erfolgreiches Design ist natürlich auch Anstoß für ähnliche Geräte, die alle auf der Vorarbeit des Digispark und des "MICRONUCLEUS" Loaders aufbauen.

SOS statt "Hello World"

Ohne Display oder sonstige Ausgaben ist ein "Hello World" etwas knifflig. Aber auf dem Board ist auch eine LED vorhanden, die man mit einem einfachen Code z.B. SOS morsen lassen kann. Der Code ist so einfach, dann ihn sogar Programmieranfänger verstehen und mit der ArduinoIDE kann jedes Kind damit ganz schnell erfolge erzielen. Nebenbei haben Sie so gleich überprüft, dass die Umgebung funktioniert.

Hier noch der Code für Tippfaule:

attiny85-sos-blink.ino

Je nach Modell müssen Sie nur den richtigen Pin für die LED angeben. Sie können natürlich auch nur über die USB-Schnittstelle eine Debug-Ausgabe generieren. Das passende Beispiel ist in Arduino sogar direkt integriert:

Der Beispielcode schaltet den DigiKey auf den Keyboard-Betrieb um und gibt einfach die Ausgaben als "Tastatureingaben" an den PC. Der PC erkennt natürlich erst einmal ein Keyboard.

Aber dann kann der PC, egal ob Windows oder Linux, nicht mehr unterscheiden, ob es das richtige oder falsche Keyboard ist. Der Beispielcode gibt einfach nur in "Hello Digispark" als Tastatureingabe aus

DigiKeyboard.println("Hello Digispark!");

Aber es ist natürlich jeder Tastendruck möglich und eine CMD-Shell ist schnell mit folgendem Code geöffnet.

DigiKeyboard.sendKeyStroke(KEY_R , MOD_GUI_LEFT); // Win+R Tatenkombination
DigiKeyboard.delay(50); // Kurz warten
DigiKeyboard.println("cmd.exe"); // Gerätemanager aufrufen

Was ein Code in einer CMD-Box dann weiter anstellen kann, können Sie sich sicher selbst vorstellen. Er ist nur dadurch eingeschränkt, dass er keine Rückmeldung bekommt, ob es funktioniert hat. Er tippt quasi blind.

Digispark mit Arduino IDE

Die Programmierung des ATTiny85 mit der ArduinoIDE unterscheidet sich grundlegend von allen anderen Arduinos oder ESP8266/ESP32-Boards. Diese haben ja alle irgendwie eine "serielle Schnittstelle" per USB und die IDE kann das Board in den Programmierzustand versetzen. Beim ATTiny85 ist selbst die USB-Schnittstelle quasi "Software".

Das erlaubt natürlich auch, dass der ATTINY85 per Software z.B. eine Maus oder Tastatur oder was auch immer im Rahmen seiner physikalischen Grenzen emulieren kann.

Sobald Sie den ATTiny85 in das Board stecken, kann er wenige Sekunden lange programmiert werden, ehe dann das schon vorhandene Programm ausgeführt wird. Das bedeutet auch  dass Sie im Arduino Studio quasi den Code schon geschrieben, kompiliert und zum flashen bereitgestellt haben müssen. Erst dann stecken Sie den ATTINY85 ein und die ArduinoIDE startet sofort das flashen.

Danach startet der Chip das Programm ohne weitre Rückfrage. Das Fenster, welches aktuell aktiv ist, bekommt dann die "Eingaben". Für die Fehlersuche bietet sich ein "Notepad" an.

Wenn der ATTiny eine Tastatur simuliert kann er natürlich ausbrechen, in dem er z.B. über "Windows-R + cmd.exe" eine Shell startet und dort weiter macht. Auf die Gefahren gehe ich weiter unten noch einmal ein.

Chip solo flashen

Über einen Programmer, was auch ein Arduino sein kann, können Sie natürlich auch den Chip alleine programmieren. Wenn Sie in sich abgeschlossene Geräte bauen wollen, oder die vorhandene Beschaltung des Digispark-Moduls stört, dann finden Sie hier ein paar Links. Ich vermute, dass dies aber nur wenige Leser interessiert, so dass ich das nicht weiter ausführe.

ATTiny Gefahren

Die geringe Bauform und die Möglichkeit auch USB-Geräte, insbesondere Keyboards, zu simulieren, prädestiniert den ATTiny als Eingabegerät mit selbst gebauten Tasten. Aber per Software kann der ATTiny natürlich auch eigenständig Tasten senden. Diese Funktion führte zu eine Vielzahl an Beispielen im Internet und komplette Frameworks und Baukästen zum Erstellen von solchen "Tools". Es gibt ja durchaus sinnvolle Anwendungsfälle, z.B. die Unterstützung von Installationen auf PCs, die anders nicht automatisierbar sind.

Es gibt Systeme, die ein neues Keyboard nicht automatisch aktivieren sondern eine gesonderte Bestätigung, z.B. durch Eingabe bestimmter Zeichen, erfordern.

ATTiny8 und Serial

Der ATTiny85 hat leider keine eingebaute serielle Schnittstelle. Allerdings gibt es auch eine "Software Serial"-Bibliothek im Arduino-Werkzeugkasten, welcher natürlich missbraucht werden kann. Allerdings wird dadurch ein Digital-Port für die Ausgabe verwendet.

Achtung: der ATTiny84 gibt sich dann nicht als serieller Port per USB aus, sondern sie brauchen noch einen TTL-Serial-Adapter (z.B. FTDI Serial TTL-232), mit dem Sie bei heutigen PCs einen seriellen Port nachliefern. Der Digispark darf daher nicht per USB auch noch im PC stecken.

Weitere Projekte

Hier eine lockere Auflistung von Links, was mit einem ATTiny85 ohne Internet schon alles gebaut wurden:

Weitere Links