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.
Mittlerweile gibt es vergleichbar kleine und günstige Boards auf Basis des ATmega32U4, die einen echten USB-Anschluss und mehr Speicher haben. Links dazu am ende. Insofern ist diese Seite eigentlich nur eine Nische, denn Grö0ße und Gewicht eine Rolle spielen, z.B. bei Drohnen o.ä..
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.
- ATtiny85 (0,69US-$ bei 5000 Stück)
https://www.microchip.com/wwwproducts/en/attiny85
8KB Programspeicher, 20MHz, 512byte SRAM+EEPROM, 1xI2C und SPI, 2x 8Bit Timer. 6 GPIO-Pins (4x AD-10bit Wandler), Betriebsspannung 1,8-5,5 Volt
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. Anders als viele ESP8266/ESP32-Boards hat der Chip keine serielle oder USB-Schnittstelle, über die eine direkte Entwicklung mit dem PC möglich ist. Sie benötigen einen "Programmer", der aber mit einem Arduino o.ä. schnell selbst gebaut werden kann.
- Erste Schritte mit den Mikrocontrollern
ATtiny84 und 85
https://www.heise.de/ct/artikel/Erste-Schritte-mit-den-Mikrocontrollern-ATtiny84-und-85-4399393.html - ATtiny85 programmieren (mit Arduino Uno
oder USB-Programmer)
https://www.kollino.de/arduino/attiny85-programmieren-mit-arduino-uno-oder-usb-programmer/ - ATtiny85 / 84 / 45 / 44 / 25 /24
programmieren
https://wolles-elektronikkiste.de/attiny85-84-45-44-25-24-programmieren - ATtiny
https://elektro.turanis.de/html/prj252/index.html
#82 ATTiny85 + I2C + SPI and more!
https://www.youtube.com/watch?v=5bnXeHz06Ck
#84 Making the ATTiny85 easier to
program
https://www.youtube.com/watch?v=HJ4mhXv-MXo
ATTiny mit USB
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.
- Digispark USB Development Board (8
US$)
http://digistump.com/products/1 - Digispark - The tiny, Arduino enabled, usb dev board!
https://www.kickstarter.com/projects/digistump/digispark-the-tiny-arduino-enabled-usb-dev-board - Digispark – der ein Euro große Arduino-Rechner für 12 Dollar
https://t3n.de/news/digispark-euro-grose-409711/ - Arduino-kompatible Winzig-Boards
https://www.heise.de/make/meldung/Arduino-kompatible-Winzig-Boards-1965576.html
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.
- Digistump Forum: What's this
component on my Digispark rev
http://digistump.com/board/index.php/topic,1454.msg6666.html
http://digistump.com/board/index.php/topic,1454.msg6652.html - Digistump Forum: Watch out für the clones!
http://digistump.com/board/index.php/topic,963.msg6436.html - Schutzdiode als Lösung
ersetzt
http://digistump.com/wiki/_detail/digispark/tutorials/removed-attiny.jpg
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.
- Nanite 85 (6€)
https://cpldcpu.wordpress.com/2014/04/25/the-nanite-85/
https://shop.watterott.com/Wattuino-Nanite-85-ATtiny85-mit-USB-Bootloader
https://hackaday.com/tag/nanite-85/ - Adafruit Trinket (7US-$)
https://www.adafruit.com/product/1501
https://www.reichelt.de/adafruit-trinket-5v-ada-trkt-5v-p235442.html - OLIMEXINO-85S (5€)
https://www.olimex.com/Products/Duino/AVR/OLIMEXINO-85S/open-source-hardware
https://olimex.wordpress.com/2014/02/21/new-product-in-stock-worlds-smallest-arduino-ever-16-9-x-12-7-mm/ - AtomNanite85
https://atomsoft.wordpress.com/2014/10/21/atomnanite85-atiny85-attempt-2-complete/
https://atomsoft.wordpress.com/2014/11/03/atomnanite85-update/ - Skye
https://hackaday.io/project/12678-skye
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 ihre EntwicklungsuUmgebung funktioniert.
Hier noch der Code für Tippfaule:
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.
- Use an ATtiny85 with Arduino IDE
https://create.arduino.cc/projecthub/alaspuresujay/use-an-attiny85-with-arduino-ide-07740c - Setting up Arduino IDE für use with ATtiny's
http://openenergymonitor.org/emon/buildingblocks/attiny - Die Kleinen - ATtiny Chips
im Arduino IDE
http://technikhobby.blogspot.de/2013/01/die-kleinen-attiny-chips-im-arduino-ide.html - Digispark Attiny 85 With Arduino IDE
https://www.instructables.com/id/Digispark-Attiny-85-With-Arduino-IDE/
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.
- ATtiny85 Arduino Tutorial: Specs & Applications
https://www.arrow.com/en/research-and-events/articles/attiny85-arduino-tutorial - Programming an ATtiny w/
Arduino 1.6 (or 1.0)
http://highlowtech.org/?p=1695 - GitHub: ATtiny
microcontroller support für the
Arduino IDE
https://GitHub.com/damellis/attiny/ - Using Arduino with ATTiny's
http://toasterbotics.blogspot.de/2011/08/using-arduino-with-attinys.html - ATTINY HACKS: Run your
Arduino Project on an ATTiny!
http://hackaday.com/2011/09/13/attiny-hacks-run-your-arduino-project-on-an-attiny/
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.
- Digispark Keyboard, Mouse, and Joystick Libraries
https://digistump.com/wiki/digispark/tutorials/digikeyboard - vusb-for-arduino
https://code.google.com/archive/p/vusb-for-arduino/
http://code.rancidbacon.com/ProjectLogArduinoUSB - Digispark – die USB Rubber Ducky Alternative
Teil1: https://pentestit.de/digispark-die-usb-rubber-ducky-alternative-teil1/
Teil2: https://pentestit.de/digispark-die-usb-rubber-ducky-alternative-teil2/ - USB Rubber Duck
http://usbrubberducky.com
https://GitHub.com/hak5darren/USB-Rubber-Ducky
The USB Rubber Ducky is a Human Interface Device programmable with a simple scripting language allowing penetration testers to quickly and easily craft and deploy security auditing payloads that mimic human keyboard input - Duck Toolkit
https://ducktoolkit.com/ - duck2spark by MaMe82
https://GitHub.com/mame82/duck2spark
This project provides a python script capable of converting payloads generated by DuckEncoder to an Arduino Sketch source targeting DigiSpar - AVR ATtiny USB Tutorial
Part 1: https://codeandlife.com/2012/01/22/avr-attiny-usb-tutorial-part-1/
Part 2: https://codeandlife.com/2012/01/25/avr-attiny-usb-tutorial-part-2/
Part 3: https://codeandlife.com/2012/01/29/avr-attiny-usb-tutorial-part-3/comment-page-1/ -
ATTiny85 als USB Eingabegerät
https://www.az-delivery.de/blogs/azdelivery-blog-fur-arduino-und-raspberry-pi/attiny85-als-usb-eingabegerat
ATTiny85 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 ATTiny85 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.
- Software Serial Library
https://www.hackster.io/porrey/easy-serial-on-the-attiny-2676e6 - Arduino ATtiny85 serial : einfach Daten
ausgeben
https://www.arduinoclub.de/2013/11/10/arduino-attiny85-serial-debug-daten-ausgeben/ - Easy Serial on the ATtiny
https://www.hackster.io/porrey/easy-serial-on-the-attiny-2676e6 - DigiCDC - Digispark USB CDC Serial
Library
https://digistump.com/wiki/digispark/tutorials/digicdc - Digispark Debugging
https://digistump.com/wiki/digispark/tutorials/debugging
Weitere Projekte
Hier eine lockere Auflistung von Links, was mit einem ATTiny85 ohne Internet schon alles gebaut wurden:
- ATtiny-Powered Arduino Projects
https://www.instructables.com/id/ATtiny-Powered-Arduino-Projects/ - 153 Projects tagged with "attiny" /
attiny85
https://hackaday.io/projects?tag=attiny
https://hackaday.io/projects?tag=attiny85 - Open Window Alarm mit ATtiny85
https://www.heise.de/make/meldung/Open-Window-Alarm-mit-ATtiny85-4630725.html
ATmega32U4 -Boards
Der ATTiny85 ist sehr klein und durch den USB-Anschluss auf dem Board einfach im Geldbeutel mitzuführen und Neugier zu wecken. Auf der anderen Seite sind die Einschränkungen schon immens (8k Speicher von dem 2 für eine USB-Emulation weg gehen. Mit dem ATmega32U4 gibt es einen ähnlich kleinen Chip, der aber USB 2.0 direkt selbst unterstützt und nicht viel mehr kostet.
- Meet PICO, the 0.6"x0.6" board that will
change the world of DIY-ers!
https://mellbell.cc/
https://www.kickstarter.com/projects/melbel/pico-the-worlds-smallest-arduino-board - Klein, kleiner, am kleinsten: das μduino-Board
https://www.heise.de/make/meldung/Arduino-kompatibel-und-winzig-Mikrocontroller-Pico-3788045.html - ATmega32U4
https://hackaday.com/tag/atmega32u4/ - TECNOIOT CJMCU Beetle Keyboard BadUSB
ATMEGA32U4 DC 5V 16MHz Mini Development
Board
https://www.amazon.de/TECNOIOT-Beetle-Keyboard-ATMEGA32U4-Development/dp/B07VL6G914 - USB ATMEGA32U4 MINI DEVELOPMENT BOARD
FOR ARDUINO
https://www.auselectronicsdirect.com.au/usb-atmega32u4-mini-development-board-for-arduino - Käfer Leonardo USB ATMEGA32U4 Mini
Entwicklung Bord
https://de.aliexpress.com/item/32617886318.html - ATMega32U4 BS Micro pro micro Boards
https://de.aliexpress.com/item/4000570380006.html
Ein ESP8266/ESP32 ist immer noch etwas größe aber braucht vor allem mehr Strom. Wer auf WLAN/BT verzichten kann und einfache Steuerungsaufgabe umsetzen will, wird mit dem ATTiny85 oder gleich dem kaum teueren ATmega32U4 liebäugeln.
Weitere Links
- Arduino Plattform
- Arduino Basics
- Arduino Plattform
-
Teams Controller
Erste Gehversuche eines "Teams-Keyboard" - Learn How to Use the ATtiny85 in UNDER 4
Minutes!
https://www.instructables.com/id/Learn-How-to-Use-the-ATtiny85-in-UNDER-4-Minutes/
Programmieren des Chips per Arduino. Da ist mir die Digispark-Variante lieber - mikrocontroller.net - AVR-Tutorial
https://www.mikrocontroller.net/articles/AVR-Tutorial - Datenlogger selber bauen - fast
kostenlos ! Atmel AVR Attiny
https://www.youtube.com/watch?v=TrUBfVLvlvw
Nutzt aber den Compiler BasCom - ATtiny: Winzlinge ganz groß
https://www.heise.de/developer/artikel/ATtiny-Winzlinge-ganz-gross-3329007.html - ATtiny & IR Remote Control Wiebelbot
https://www.instructables.com/id/Wiebelbot/ - Arduino-kompatible Winzig-Boards
https://www.heise.de/make/meldung/Arduino-kompatible-Winzig-Boards-1965576.html