Digispark – die bequeme ATtiny85 Alternative

In meinem letzten Beitrag habe ich beschrieben, wie man seine Sketche auf einen ATtiny85 (oder 84, 45, 44, 25, 24) hochlädt. Dazu muss man seinen Arduino als Programmer einrichten oder sich einen anderen Programmer, wie z.B. den USBtinyISP zulegen. Eine in mancher Hinsicht bequemere Alternative, die ich hier vorstellen möchte, ist der Digispark, der original von der Firma Digistump stammt. 

Dabei handelt es sich um ein Modul welches auf einem ATtiny85 basiert und direkt über den USB Anschluss programmiert werden kann. Es ist also keine SPI – Verkabelung für das Hochladen notwendig und auch kein Programmer. Da zudem die Stromversorgung über den USB Anschluss bereitgestellt werden kann, werden die Schaltungen sehr übersichtlich.

Ein weiterer Vorteil des Digispark gegenüber dem ATtiny85 ist, dass er I2C mit der Wire Bibliothek beherrscht. Dann sei noch erwähnt, dass man bei dem (echten!) Digispark sechs Pins als I/O Pins nutzen kann. Beim ATtiny85 sind es nur fünf. Dazu weiter unten mehr. 

Preislich gibt es keinen großen Unterschied zum ATtiny85. Je nach Quelle und Abnahmemenge ist man zwischen knapp zwei und vier, manchmal fünf Euro dabei.

Nachteilig am Digispark ist der größere Platzbedarf und ein etwas kleinerer Speicher. Von den 8k Flash Speicher werden ca. 2k für den Bootloader verwendet. Hinzu kommt eine für Microcontroller sehr lange Bootzeit von mehreren Sekunden.

Der Digispark ist hier auf den Digistump Seiten sehr gut beschrieben. Wozu dann noch dieser Beitrag? Zum einen soll er als Schritt-für-Schritt Einführung und Überblick dienen, zum anderen möchte ich meine durchaus positive Erfahrung mit dem Modul teilen. Darüber hinaus gibt es noch ein paar speziellere Informationen zu den weitverbreiteten Klonen, die naturgemäß vom Hersteller nicht dokumentiert werden.

Update 2024: Dieser Beitrag ist insofern veraltet, als die Digispark-Seiten nicht mehr erreichbar sind. Das Boardpaket ist noch verfügbar, also könnt ihr prinzipiell noch gemäß den Anleitungen in diesem Beitrag arbeiten. Ich empfehle aber stattdessen das Paket ATTinyCore von Spence Konde zu verwenden, das den Digispark mit abdeckt. Das Paket habe ich hier beschrieben.

Pinout des Digispark

Der Digispark besitzt sechs programmierbare Pins, die als P0 bis P5 bezeichnet werden. Neben ihrer Aufgabe als digitale Ein- und Ausgänge haben die Pins folgende Zusatzfunktionen:
 
  • P0: I2C SDA, PWM („ohne Rev“: verbunden mit On-Board LED)
  • P1: PWM (Rev2, 3, 4: verbunden mit On-Board LED)
  • P2: I2C SCK, Analog In
  • P3: Analog In, USB+
  • P4: PWM, Analog In, USB-
  • P5: Analog In (dieser Pin liefert 3V, wenn er HIGH ist!)

Das ist dem ATtiny85 Pinout sehr ähnlich, was nicht verwundert, da der Digispark schließlich auf diesem basiert.

Zum Vergleich: Pinout des ATtiny85
Zum Vergleich: Pinout des ATtiny85

Verschiedene Versionen des Digispark

Es gibt verschiedene Versionen des Digispark. Revision 2, 3 und 4 haben eine entsprechende Kennzeichnung am USB Stecker (revx). Bei diesen Versionen ist die On-Board LED mit P1 verbunden, d.h. sie leuchtet, wenn P1 HIGH ist. Bei den Boards ohne Revisionsnummer ist P0 mit der On-Board LED verbunden. Habt ihr diese Version, dann müsst ihr die LED auslöten oder die Verbindung zu der LED kappen, wenn ihr mit I2C arbeiten wollt. Weitere Details dazu gibt es hier

Revision 3 ist laut Digistump eine Fälschung, die man deswegen eigentlich nicht kaufen sollte, auch wenn sie prinzipiell funktioniert. Andererseits ist die Revision 3 so weit verbreitet, dass man kaum eine andere bekommt. Und so habe ich selbst auch diese Version gekauft. Sie hat nur einen Nachteil: P5 ist bei diesem Modell als Reset Pin konfiguriert und deshalb nicht ohne Weiteres als I/O Pin nutzbar. Probiert es mal aus, wenn ihr einen „rev3“ habt. Startet einen Sketch und legt P5 kurz an GND – der Digispark startet neu. Entsprechend wird auch der Blink Sketch weiter unten mit P5 nicht funktionieren. Im letzten Abschitt des Beitrages erkläre ich wie man den Mangel beheben kann und den P5 zum I/O Pin macht. 

Um die Verwirrung komplett zu machen, gibt es auch Versionen ohne Revisionsnummer, die nicht original von Digistump stammen. Auch so ein Vertreter ist mir untergekommen und er funktionierte wie „rev3“. 

Einrichtung der Arduino IDE für den Digispark

Auch wenn das Arbeiten mit dem Digispark sehr einfach ist, muss man doch zunächst ein paar Vorbereitungen treffen. Das ist aber in wenigen Minuten erledigt. Ich setze dabei voraus, dass ihr eine Arduino IDE mit der Version >= 1.6.6 verwendet. 

Schritt 1: Treiberinstallation

Das Treiberinstallationsprogramm könnt ihr hier herunterladen. Wenn ihr, so wie ich, Windows benutzt, dann wählt auf der Seite den markierten Link: 

Digispark Treiber von Github herunterladen.

Entpackt die Zip-Datei und führt „Install Drivers.exe“ für ein 32-Bit System aus oder „DPInst64.exe“ für ein 64-Bit System:

Treiberauswahl in der Zip Datei.

Schritt 2: Boardverwalter URL eintragen

Dann geht ihr in die Arduino IDE und tragt die Boardverwalter URL

„http://digistump.com/package_digistump_index.json“

in den Voreinstellungen ein:

Boardverwalter URL für den Digispark in den Voreinstellungen eintragen.

Schritt 3: Digistump Paket installieren

Dann geht ihr in

Werkzeuge -> Board: xxxx -> Boardverwalter 

Der Weg in das Boardverwalter Menü.

… und sucht dort nach „digistump“, installiert das Paket und startet die Arduino IDE neu. Das war’s auch schon.

Suche und Installation des richtigen Paketes für den Digispark.

Den ersten Sketch hochladen

Zum Testen nehme ich einen einfachen Blink Sketch. Er unterscheidet sich nicht von einem Blink Sketch für Arduino Boards. Die Pins werden bei Verwendung von digitalWrite entsprechend ihrer „P-Nummer“ angesprochen. Das heißt: 0 ist P0, 1 ist P1, 2 ist P2, usw. Klingt trivial an dieser Stelle, ist aber bei analogRead anders. 

int ledPin = 1;

void setup() {
  pinMode(ledPin, OUTPUT);
}

void loop() {
  digitalWrite(ledPin, HIGH);   
  delay(1000);                     
  digitalWrite(ledPin, LOW);    
  delay(1000);                     
}

 

Was die Schaltung angeht: einfacher geht es nicht. Die LED kommt an GND bzw. P1. Der Digispark wird per USB an den PC angeschlossen, allerdings erst nach Aufforderung beim Hochladen (wird gleich klarer).

Schaltung für den Blink Sketch
Setup für den Blink Sketch

In der Arduino IDE wählt ihr „Digispark (Default – 16.5mhz)“. Die Varianten mit „no USB“ und anderem Takt funktionieren aber auch. „Port“ ist ausgegraut. Keine Sorge, das gehört so, selbst wenn der Digispark eingestöpselt ist. 

Auswahl des richtigen Boards.

Wenn ihr den Sketch jetzt hochladet, bekommt ihr folgende Meldung:

"Plug in device now" Meldung

Jetzt schließt ihr den Digispark per USB an und bekommt – wenn alles gut geht – folgende Meldung:

Hochladen vollendet - Meldung

Die LED sollte nun auch blinken. Wenn ihr ein Digispark Modell der Revision 2, 3 oder 4 habt, blinkt auch die On-Board LED, da wir ja P1 als ledPin gewählt haben. 

Genauso könnt ihr die fünf anderen Pins für diesen Sketch benutzen, mit der Einschränkung, dass P5 drei Volt anstelle fünf Volt liefert oder gar nicht funktioniert, weil ihr die Revision 3 oder andere Klone habt.

Langsames Booten

Erstaunlich ist, dass der Digispark nach Einschalten der Spannungsversorgung gute fünf Sekunden braucht, bis er den Sketch startet. Da ist ein ATtiny85 mit dem Standard Bootloader schneller. In meinem Beitrag über Funksteckdosen und Handsender hatte ich einen Selbstbauhandsender auf Basis eines ATtiny85 vorgestellt. Die Funktaste war dabei ein Taster der den ATtiny85 mit Strom versorgt hat und so den Funksketch gestartet hat. Würde ich dasselbe mit dem Digispark bauen, müsste ich mindestens fünf Sekunden auf meine Funktaste drücken, was nicht besonders anwenderfreundlich wäre. Zugegebenermaßen ist so eine Anwendung aber eher die Ausnahme, sodass in den meisten Fällen diese Bootzeit nicht weiter störend sein dürfte. 

Analog Read mit dem Digispark

Analog Read ist an den Pins 2, 3, 4 und 5 möglich. Verwirrend ist jedoch, dass hier im Gegensatz zum Digital Read die physikalische Pinnummer nicht mit der Analog Read Nummer übereinstimmt. Diese Eigenschaft hat der Digispark vom ATtiny85 geerbt bei dem es sich genauso verhält. Die Zuordnung ist:

  • P2: analogRead(1)
  • P3: analogRead(3)
  • P4: analogRead(2)
  • P5: analogRead(0)

In meinem kleinen Beispiel dazu wird die Spannung an P2 überprüft. Überschreitet sie einen bestimmten Wert, leuchtet eine LED an P4. Der Sketch dazu sieht dann so aus: 

int ledPin = 4;
int analogInPin2 = 1; // analogRead(1) erfolgt an P2

void setup() {
  pinMode(ledPin, OUTPUT);
}

void loop() {
  if(analogRead(analogInPin2)>100){
    digitalWrite(ledPin, HIGH);   
  }
  else{                     
    digitalWrite(ledPin, LOW);    
  }                     
}

 

Und hier eine einfache Testschaltung dazu:

Schaltung: Besipiel für analogRead am Digispark

I2C mit dem Digispark

Wie schon erwähnt funktioniert die Ansteuerung von I2C Bausteinen direkt mit der Wire Bibliothek, was einen Vorteil gegenüber dem ATtiny85 darstellt. Als Beispiel habe ich die Steuerung des Portexpanders MCP23017 gewählt. Die gelbe Leitung an P0 ist SDA, die grüne Leitung an P2 ist SCL. Diese sind mit den entsprechenden SDA / SCL Pins am MCP23017 verbunden. Wichtig sind die 4.7 kOhm Pull-Up Widerstände an den I2C Leitungen. 

Der Digispark am MCP23017 - Ein Beispiel für eine I2C Anwendung
Der Digispark am MCP23017 – Ein Beispiel für eine I2C Anwendung

Der Vollständigkeit halber hier noch ein Beispielsketch dazu (wer mehr über den MCP23017 lesen möchte, kann dazu einen Beitrag von mir hier finden).  

#define MCP_ADDRESS 0x20 // (A2/A1/A0 = LOW) 
#include <Wire.h>
#include <MCP23017.h> // meine MCP23017 Bibliothek
MCP23017 myMCP(MCP_ADDRESS,5); // 5: Reset - brauchen wir hier nicht
int wT = 1000; // wT = waiting time

void setup(){ 
  Wire.begin();
  myMCP.Init();  
  myMCP.setPortMode(B11111111, A); 
  delay(wT);
}

void loop(){ 
  myMCP.setAllPins(A, ON); 
  delay(wT);
  myMCP.setAllPins(A, OFF);
  delay(wT);
  myMCP.setPin(0, A, ON); 
  delay(wT); 
  myMCP.setPin(4, A, ON);
  delay(wT);
  myMCP.setPin(7, A, ON); 
  delay(wT);
} 

 

P5 zum I/O Pin umfunktionieren

Beim ATtiny85 lassen sich grundsätzlich nur 5 Pins als I/O Pins nutzen. Pin 1 (PB5, RESET) des ATtiny85 ist nur über Umwege als I/O Pin einsetzbar. Das Problem ist, dass man dabei die Resetfunktion verliert und der ATtiny85 damit nicht mehr ohne Weiteres neu programmiert werden kann. Man sperrt sich sozusagen aus. Auch das lässt sich wieder beheben, aber nur mit Programmern, die über eine Hochspannungsfunktion verfügen. 

Beim Digispark braucht man die Resetfunktion am P5 nicht, da die Programmierung über USB erfolgt. Somit hat man 6 I/O Pins zur Verfügung. Die Produzenten der Revision 3 und anderer Klone hingegen haben die Resetfunktion an P5 beibehalten. Wenn ihr nur 5 Pins braucht oder vielleicht die Resetfunktion nutzen wollt, dann lasst alles wie es ist. Wenn ihr hingegen alle Pins als I/O Pins nutzen wollt, dann könnt ihr das mit dieser Anleitung ändern. 

Für die Aktivierung des P5 als I/O Pin bzw. die Deaktivierung der Resetfunktion muss das entsprechende Fuse-Bit (RSTDISBL) „eingeschaltet“ werden. Ich möchte hier zwei Möglichkeiten vorstellen, wie man das bewerkstelligt.  

Option 1: Mit WinAVR und Arduino UNO

Das Schöne an dieser Methode ist, dass die meisten einen Arduino UNO (Nano, Pro Mini, usw. gehen auch) haben und das benötigte Programm WinAVR nichts kostet. 

Als Erstes ladet ihr das Programm WinAVR z.B. hier herunter und installiert es. 

Im nächsten Schritt ladet ihr den ArduinoISP Sketch aus den Beispielen auf den Arduino. Durch diese Maßnahme wird der Arduino zum Programmer. 

ArduinoISP aus den Beispielen wählen
ArduinoISP aus den Beispielen wählen

Dann verbindet ihr den Digispark mit dem Arduino wie folgt:

  • P0 –> 11
  • P1 –> 12
  • P2 –> 13
  • P5 –> 10

Schließlich verbindet ihr noch GND mit GND, 5V mit 5V und setzt einen 10 µF Kondensator zwischen den Arduino Reset und GND (Polarität beachten: Minus des Kondensators an GND).

Schaltplan für die Programmierung des Digispark mittels Arduino

Dann öffnet ihr im PC ein Eingabeaufforderungsfenster. Je nachdem, ob ihr Pfade gesetzt habt oder nicht, müsst ihr vielleicht in das Verzeichnis wechseln, in dem ihr WinAVR installiert habt. Ihr gebt Folgendes ein, wobei ihr COM14 durch den Port ersetzt an dem euer Arduino hängt:

avrdude -P COM14 -b 19200 -c avrisp -p attiny85 -n

Ihr bestätigt mit Enter, gebt die nächste Zeile ein und bestätigt wieder mit Enter:

avrdude -P COM14 -b 19200 -p attiny85 -c avrisp  -U hfuse:w:0x5F:m 

Wenn alles gut geht, solltet ihr Meldungen ähnlich wie diese hier bekommen:

Rückmeldungen von avrdude beim setzen des Fuse-Bits im Digispark

Jetzt könnt ihr den Blink Sketch von vorhin auch mit P5 als ledPin hochladen – nun blinkt die LED. Nur eben etwas weniger hell als an den anderen Pins, da P5 nur 3 Volt liefert. 

Option 2: mit Atmel (Microchip) Studio und geeignetem Programmer

Was man braucht

Diese Methode ist weniger kryptisch, sie erfordert aber die Installation des recht großen, dennoch kostenlosen Softwarepaketes Atmel (Microchip) Studio (derzeit Version 7). Zusätzlich benötigt ihr noch einen kompatiblen Programmer. Atmel Studio 7 bekommt man hier. Wer tiefer in die Programmierung von Atmel Microcontrollern auf Registerebene und in „C“ einsteigen möchte, sollte sich sowieso mit diesem Programm beschäftigen. Um nur mal ein Fuse-Bit zu ändern, ist es schon ein wenig übertrieben sich dieses mächtige Werkzeug auf die Festplatte zu beamen. In einem späteren Beitrag werde ich noch einmal detaillierter auf Atmel Studio eingehen.

Die Programmer für Atmel Studio sind relativ teuer. Einer der günstigeren ist der USB ISP-Programmer von Tremex/Diamex, den ihr für ca. 20 Euro bei z.B. hier bei Amazon bekommt. Ich habe ihn ausprobiert und er funktioniert absolut problemlos mit Atmel Studio. Bei Verwendung von Windows 10 muss nicht einmal ein Treiber installiert werden.

Besser, aber auch teurer sind der AVR Dragon oder der Atmel-ICE. Ersterer ist für 50-80 Euro zu haben, letzterer ab 120 Euro. Mit diesen beiden Modellen ist auch Debugging möglich. Darüber hinaus beherrscht der Dragon HVSP (High Voltage Serial Programming) womit man den Eingriff am P5 auch wieder rückgängig machen kann. Der Atmel-ICE kann das nicht, wird dafür aber im schicken Gehäuse geliefert. 

AVR Dragon, Atmel-ICE und USB ISP-Programmer von Tremex/Diamex
Von links nach rechts: AVR Dragon, Atmel-ICE, USB ISP-Programmer (Tremex/Diamex)

Wenn ihr in einen Programmer investiert, dann empfehle ich euch auch gleich einen Breadboardapter wie diesen hier zu besorgen:

Breadboardadapter - sinnvoll für die Programmierung des Digispark

Es erleichtert einem die Arbeit und vermeidet Fehler bei der Schaltung. Kaufen kann man so ein Teil z.B. hier oder mit 2 x 3 Pinleiste hier.

Die Schaltung

Das Anschlussschema von Programmer und Digispark sieht folgendermaßen aus:

Schaltung Digispark und Programmer

Zu beachten ist, dass der AVR Dragon den Digispark nicht mit Strom versorgen kann. Man benötigt eine separate Stromquelle. Der günstige USB ISP-Programmer hingegen kann das, sofern die Dipschalter 1 und 2 auf „ON“ sind. 

Atmel Studio 7 verwenden

Wenn ihr einen Dragon oder Atmel-ICE verwendet, sollten diese von Atmel Studio automatisch erkannt werden. Den USB ISP-Programmer von Tremex/Diamex müsst ihr zunächst integrieren. Dazu geht ihr im Menü auf

Tools –> Add Target… –> Select Tool 

Wählt STK500 und den Port, dann bestätigt mit „Apply“.

In der Menüleiste findet ihr ein kleines Symbol für „Device Programming“. Klickt darauf.  

Auwwahl Menü des Atmel Studios

Falls das Tool im nächsten Fenster noch nicht ausgewählt ist, wählt es hier im Drop-Down Menü. Als Device wählt ihr den ATtiny85. Interface ist ISP. Dann klickt auf „Apply“.

Device Programming Fenster - Auswahl von Tool und Device

Ihr könnt dann die Versorgungsspannung überprüfen und ob die richtige Signatur vorhanden ist. Es sollte 0x1E930B sein. Geht nun auf den Menüpunkt „Fuses“.

Device Programming Fenster - weitere Auswahlen

Macht einen Haken hinter „HIGH.RSTDISBL“, klickt auf „Program“ und auf „Continue“ im aufpoppenden Warnfenster. Wenn alles geklappt hat, sollte unten in den Meldungen „Verify Registers …. OK“ stehen.

Device Programming Fenster - Auswahl der Fuse-Bits

P5 sollte jetzt als I/O Pin einsatzfähig sein. 

Wenn ihr Lust habt mehr über Atmel Studio 7 zu erfahren, dann haltet die Augen offen – in einem der nächsten Beiträge werde ich eine Einführung geben. 

69 thoughts on “Digispark – die bequeme ATtiny85 Alternative

  1. Hallo Wolfgang!

    Die DigiSpark Site is down!
    Stattdessen wird der ATtiyCore empfohlen: https://github.com/SpenceKonde/ATTinyCore

    ATtinyCore lässt sich per Arduino IDE nicht automatisch installieren, da die Zertifikate abgelaufen sind.
    Ich hab hier mal die Infos / Workaround zusammenkopiert, die ich mir zusammengegooglet habe:

    https://github.com/SpenceKonde/ATTinyCore/discussions/865

    Downlod this *.JSON File and save it in your Scetchbook folder:
    https://github.com/ConzZah/ATTinyCore/blob/v2.0.0-devThis-is-the-head-submit-PRs-against-this/package_drazzy.com_index.json

    Link to this file in your boardmanager:
    save the file to disk and then in your IDE you can use for Windows
    file:///PATH TO FILE.package_drazzy.com_index.json.
    Example: file:///C:\USER\Documents\Arduino\package_drazzy.com_index.json

    ATtinyCore von Spencer Konde installieren. Treiber werden normalerwise automatisch mitinstalliert.

    Board: ATtiny85 (Miconucleus / DigiSpark)

    Falls nötig:
    Manual Install of the Windows USB Driver for the Board from the attached folder:
    Digistump.Drivers.zip (1.6 MB)
    https://forum.arduino.cc/uploads/short-url/cMw5fnHVHxqVfOCBJE1XT6CYvcb.zip

    Damit funktioniert bei mir alles wieder.

    Grüße
    Rick

    1. Hallo Rick,

      vielen Dank für den Hinweis. Bei mittlerweile 116 Beiträgen wird es zunehmend schwierig, alle aktuell zu halten.

      Man kann das Digispark Paket immer noch installieren, da die Dateien. auf GitHub liegen. In der Tat ist es aber über ATTinyCore einfacher, weil das Paket die Unterstützung mitbringt. ATTinyCore habe ich übrigens hier beschrieben:
      https://wolles-elektronikkiste.de/attiny-mit-arduino-code-programmieren

      Das Zertifikat für die Seite, auf der sich die Boardverwalter-URL befindet, ist nicht abgelaufen, sondern anscheinend ist Spence Konde nicht dazu gekommen, das Zertifikat zu beantragen:
      https://github.com/SpenceKonde/ATTinyCore/issues/783
      Klingt nach Überarbeitung und Hilferuf. Es ist auch lange nichts mehr aktualisiert worden. Ich hoffe Spence Konde hat nicht endgültig die Lust verloren.

      VG, Wolfgang

  2. Hallo Wolfgang,

    danke für diese schöne Seite, die hat mir durchaus weiter geholfen. Mittlerweile hab ich für einige Geräte eine Art „Lüftersteuerung“ mit dem Digispark realisiert. Kurz gesagt, NTC per Analog eingang auswerten, und je nach Temperaturschwelle entweder Lüfter aus, Lüfter halbe Leistung, oder volle Leistung.
    Realisiert hab ich das mit simplen Reedrelais (mit Freilaufdiode intern), die entweder eine einstellbare Spannung oder die vollen 12V auf die Lüfter legen.
    Soweit so gut, das läuft, und ich hab davon 10 Platinen gemacht mit dem Digispark drauf.

    MEIN PROBLEM ist aber nun, dass manche Digisparks nach einiger Zeit (Teilweise Tage / Wochen) plötzlich nicht mehr gehen…..
    Also noch die 1.6er Firmware drauf war, konnte ich einfach das Programm wieder drauf laden, und dann gingen sie wieder.
    Um den Fehler zu „beheben“ hab ich gemäß https://github.com/ArminJo/micronucleus-firmware einen neueren Bootloader drauf (Version müsst ich jetzt nachschauen)…. ABER auch da passiert das Problem, jetzt aber sogar so, dass die Digispark dann am USB Anschluss quasi nicht mehr erkannt werden, und somit (für mich) quasi kaputt sind.
    Hast Du eine Idee, wo ich da am besten mit der Ursachensuche ansetzen könnte?
    An P0 hab ich ein ReedRelais, und ne rote LED (12V auf Lüfter)
    An P2 hab ich den NTC als Spannungsteiler am Analogen Eingang
    An P3 hab ich nur eine grüne LED (mit Vorwiderstand natürlich)
    An P4 das zweite ReedRelais mit Gelber LED (6V an Lüfter)
    Mittlerweile hab ich P4 über einen Widerstand auf 5V (weil ich dachte, womöglich resettet sich das ding irgendwie).

    Ich bin leider mittlerweile ziemlich Ratlos, und mir bliebe nur, einen „anständigen Arduino“ zu verwenden, in der Hoffnung, dass das dann zuverlässiger klappt.
    Vielleicht hast Du ja einen Gedanken, der mich der Lösung näher bringt.

    1. Hi, schwierig zu beurteilen aus der Entfernung, was das Problem sein könnte. Funktioniert vielleicht die Freilaufdiode nicht richtig und das schädigt den ATtiny85 auf dem Digispark? Reine Spekulation. Als Erstes würde ich mal schauen, ob der ATtiny85 noch funktioniert. Dazu würde ich versuchen,
      ihn direkt über ISP zu programmieren und zwar mit dem AttinyCore – Paket:
      https://wolles-elektronikkiste.de/attiny-mit-arduino-code-programmieren
      Dafür musst dem ResetPin erst einmal seine Resetfunktion zurückgeben. Das geht alles über das Boardpaket. Wobei mir gerade einfällt, dass du dafür evtl. auch erst einmal über USB gehen musst. Ich würde es trotzdem mal versuchen. Vielleicht ist der neue Bootloader ja nicht richtig drauf und der Resetpin aktiv.

      Dann würde ich auch nochmal in der Gerätesteuerung in Windows schauen, als was der Digispark angezeigt wird. Vielleicht kann man da irgendetwas sehen.

      Ein ATtiny85 vergisst eigentlich keine Einstellungen. Deswegen würde ich am ehesten vermuten, dass es irgendein Problem mit Überspannungen gibt.

      VG, Wolfgang

      1. hmm… bezüglich der Freilaufdiode… müsste ich die nicht eigentlich messen können? ( je nach Polarität der Messspitzen unterschiedlicher Widerstand)… hmmmmmm….

          1. Howdy….
            die Diode ist ja intern im Reed-Relais.
            Mit Diodentester Multimeter kann ich da kurioserweise nix messen, ABER mit nem Oszi und Rechtecksignal an der Spule sieht man recht schön, dass die Diode wohl arbeitet, weil die Spannung beim Abschalten der 5V auf ca. -0,7V Geht (für ne Weile, hab die Zeit nicht gemessen).
            Auch wenn man das Relais einfach mit Labornetzteil betreibt, und verpolt, merkt man sofort, dass da eine Diode sein muss.
            ==> So gesehen kann ich wohl die Spule erstmal als Ursache ausschließen?
            Tatsächlich konnte ich eine Ähnliche Beschreibung der Problematik auch schon wo anders im Web finden (weis aber nicht mehr wo). Lösung war da aber auch keine dabei gestanden 🙂
            Aktuell hab ich erstmal folgende Änderung gemacht, ich habe GND des Geräts am Schutzleiter, wie ich das eigentlich schon immer bei den Projektoren früher gemacht habe. Bei diesen Geräten (China) war GND vom Gerät nicht auf PE … somit auch nicht GND vom Digispark, usw. Wer weis, ob es da nicht was rein geballert hat.

            1. Ja, ich denke mit der Freilaufdiode ist alles OK. Scheint dann doch eher ein Problem mit dem Digispark zu sein. Ob sich das auf einen bestimmten Herstellungszeitraum oder bestimmte Hersteller oder Modelle beschränkt, vermag ich nicht zu sagen. Aber würde das Problem generell auftreten, würde häufigere Meldungen darüber im Netz erwarten. Aber vielleicht hilft ja Deine Maßnahme. Wenn es funktioniert, wäre eine Info darüber sehr hilfreich.

              1. Servus Wolfgang,

                nun, ich hab weiterhin noch „Ärger“ damit.. wenn gewünscht kann ich dir gern mal mein Layout zeigen, vielleicht siehst Du ja einen „typischen Pfuscher Fehler“ 😉
                Vielleicht liegts auch an dem einstellbaren StepDown Regler der mit auf der Platine ist. Ich bin halt leider nicht Elektroniker genug um das anderes zu machen.

                Aber im Detail:
                Ich habe ja nun diese GND PE Verbindung bei allen Platinen gemacht (ich habe 7 Geräte mit der Platine am Laufen).
                Beim Testen der Geräte (laufen lassen, belasten, damit die Regelung aktiev wird,) ist wieder eins aufgefallen.
                KURIOS war das Fehlerbild:

                Der Einschaltvorgang ist nämlich normalerweise so:
                1) Power on ==> Digispark wartet kurz auf USB, dann wird der Bootloader verlassen, und die void setup Routiene vom Arduino Programm läuft. Dabei wird jeder Ausgang mal für par Sekunden eingeschaltet (Lüfter schnell, Lüfter langsam, Lüfeter aus)… danach kommen wir in den Loop, und je nach Temperatur ergibt sich dann der dazugehörige Zustand.

                Bei der nun (wiedermal) defekten Platine lief definitiev die void setup Routiene gelaufen! Die Lüfterzustände wurde nacheinander ab geklappert, ABER dann war ende (am Ende von Setup gehen alle Ausgänge auf low). Das war es dann auch… der void LOOP wurde nicht mehr aufgerufen.
                Ich also Platine wieder raus, Digispark an USB angeschlossen ==> gerät wird nicht erkannt…. Programmcode lässt sich nicht mehr übertragen…
                Nun gut…
                Ich hab also wieder den Digispark gewechselt (kostet ja nix)… hab dem dann über VCC und GND auch noch einen KerKo gegönnt (hab bisserl gegoogelt)…. auch noch mit Oszi drann rum gemessen, ob ich da irgendwelche Peaks sehe oder so…
                Dann eingebaut ==> Läuft… alles okay.

                DECKEL auf den Laserprojektor gebaut, eingeschaltet ==> ZACK, wieder kaputt…
                Ich kann garnicht verstehen, was da so sehr stöhrt, dass dies immer wieder passiert.
                LEIDER habe ich mir nicht aufgeschrieben gehabt, bei welchen Projekotren das immer wieder passiert, mittlerweile hab ich den Eindruck es sind immer die gleichen 2 (von 7)…

                Naja, so bin ich nun halbwegs ratlos… ich werde nun wieder den Digispark wechseln, UND AUCH den StepDown Wandler (vielleicht hat der ja ne Macke, was aber dem Digispark egal sein sollte)….

                Und wenn es nicht besser wird, dann schmeiß ich das raus, und fang bei dem Projekt nochmal von Null an, gleich mit ner anderen CPU, und vielleicht auch besser designt.

                Vielleicht hast ja eine Idee, wenn ich dir mal Layout usw. zukommen lassen soll, sag bescheid. Wenn nicht, is auch verständlich.

                Viele Grüße
                Erich

                1. Hallo Erich,
                  ja, sende mir mal dein Layout (wolfgang.ewald@wolles-elektronikkiste.de). Vielleicht sehe ich ja tatsächlich etwas.
                  VG, Wolfgang

  3. Hallo Wolfgang,
    der Attiny85 bietet sich für meine geplante Schaltung an, mit der ich ca. jede halbe Stunde den Widerstand eines LDR abfragen will und bei Unterschreiten eines Schwellwertes eine 5 mm Led dauerhaft einschalten und bei Überschreiten eines Schwellwertes die LED dauerhaft ausschalten will (Tags LED aus, nachts LED an). Dazwischen soll sich der Attiny85 schlafen legen um Energie zu sparen, da die Schaltung mit einer 3V Knopfzelle CR 2450 betrieben werden soll.

    Hierbei bin ich auf diese Seite von Dir und den Digispark gestoßen, der ja wie von mir gewünscht per USB und Arduino-IDE programmiert werden kann und auch sehr klein ist.

    1. Kann ich für meinen 3V Batteriebetrieb einfach den Spannungsregler umgehen und die 3V-Batteriespannung am Ausgang des Spannungsreglers einspeisen?

    2. Müssen evtl. noch weitere Komponenten auf der Platine, wie z.B LED entfernt werden um einen batterieschonnenden Betrieb erreichen zu können?

    3. Werden keine zusätzlichen Komponenen benötig, wenn man einen bereits programmierten Attiny85 auf einer selbstgefertigten Platine mit 3V Batteriespannung betreiben will?

    Danke im Voraus für deine Rückmeldung!

    1. Hallo Rüdiger,

      eine Schaltung zum Digispark gibt es hier:
      https://s3.amazonaws.com/digistump-resources/files/97a1bb28_DigisparkSchematic.pdf

      Die Widersände und Zenerdioden dienen nur dem Schutz der USB-Schnittstelle, damit die keine 5 V auf die Datenleitungen gehen, die mit 3.3 V laufen. Wenn kein USB mehr dran ist, und du mit 3 V arbeitest, dann sollten die Komponenten nicht stören.

      Also deshalb:
      1) Ich würde sagen ja.
      2) LEDs verbrauchen Strom, also ja, entfernen ist besser.
      3) Nein, sofern du den verbauten Attiny85 nicht doch nochmal später neu programmieren möchest. Grundsätzlich kann jedoch ein Kondensator zu Stabilisierung der Stromversorgung von Vorteil sein.

      Aber wenn du sowieso alles vom Digispark entfernen willst, dann frage ich mich, wieso du überhaupt einen soclchen verwendest. Dann ist es doch einfacher, einen ATtiny85 direkt per ISP zu programmieren. Das spart auch den Bootloader. Schau vielleicht mal hier:
      https://wolles-elektronikkiste.de/attiny-mit-arduino-code-programmieren

      Im selben Artikel steht auch, wie du einen Digispark selber baust. Also wenn du unbedingt per Digispark Bootloader programmieren möchtest, dann könntest du den Digispark nach der Ableitung selbst zusammenstecken und entfernst einfach später alles an Widerständen und Dioden und verwendest nur den programmierten Attiny.

      VG, Wolfgang

  4. Hallo Wolfgang,
    in dem vielbeachteten Artikel „ ATtiny mit Arduino Code programmieren“ hast Du uns gezeigt wie man eine ATTiny zum Digisparkmacht, indem man Micronucleus als bootloader verwendet. Geht es auch umgekehrt? Kann man den Digispark in einen ATTiny „zurückverwandeln“ und so den Vorteil der auf dem Modul vorhandenenSpannungsregelung nutzen, ohne den Nachteil der langen „Bootzeit“ und zum Preis, dass man einen Arduino-ISP benötigt?
    In meinem aktuellen Projekt wäre das Gold wert, leider kriege ich es nicht hin den Digispark per Arduino-ISP anzusprechen. Liegt es an mir, oder sind da besondere Kniffe erforderlich?
    Viele Grüße und herzlichen Dank!

    1. Hallo Leif, das ist eine sehr interessante Frage. Und wenn ich so beginne, dann heißt das, dass ich selbst erst einmal darüber etwas nachdenken musste. Dass du Probleme damit hast, könnte daran liegen, dass dem Reset Pin (PB5 / Pin 1) die Resetfunktion entzogen wurde. Bei einigen Digisparks ist das so, bei anderen nicht. Es gibt aber eine Möglichkeit, ihm die Resetfunktion zurückzugeben. Gehe dazu mal in diesen Artikel:

      https://wolles-elektronikkiste.de/attiny-mit-arduino-code-programmieren

      Voraussetzung ist, dass du das Boardpaket ATTinyCore von Spence Konde nutzt (eine Weiterentwicklung des attiny Paketes von Dave A. Mellis). Du stellst dort als Board „ATtiny85 (Micronucleus / Digispark) ein. Als Option wählst du zum einen „Reset Pin (only set on Bootload via ISP): Reset“. Zum anderen wählst du als „Burn Boot Loader Method“: „Upgrade (via USB)“. Dann brennst du den Bootloader über USB und hast die Resetfunktion zurück. Damit kannst du dann über ISP auf den ATtiny zugreifen. Dann wählst du als Board „ATtiny25/45/85 (no Bootloader)“ und brennst den Bootloader (ich denke das geht nur über ISP, aber Versuch macht klug!). Bootloader brennen klingt verwirrend, da kein Bootloader gebrannt wird, sondern nur ein paar Fuse Bits gesetzt werden. Hat also seine Richtigkeit.

      Viel Erfolg!

      1. Vieln Herzlichen Dank fürs darüber nachdenken. Ich war im festen Glauben, dass meinen billigen Clons den Resetpin nicht entzogen wurde. Glauben ist aber nicht wissen und ich werde genau das nochmals prüfen und zum Wochenende das Experiment wiederholen 🙂 Vielen Dank, fürs Kopf zurechtrücken!

    1. Hallo Stefan,
      es ist mir nicht bekannt, dass die PATH Variable gelöscht wird. Ich habe keine Probleme gehabt. Wenn du dir unsicher bist, dann gehe in Windows auf das Suchen-Symbol, such nach „System“, dann gehst du auf Systemeigenschaften, dann findest dort einem Link „Erweiterte Systemeinstellungen“ und dann ist dort ein Button „Umgebungsvariablen…“. Dort findest du die Systemvariable „Path“. Doppelklicke darauf und wähle „Text bearbeiten“. Dann kannst du die Path Variable kopieren. Und wenn dann etwas schief geht, kannst du den Wert später wieder zurückschreiben.
      VG, Wolfgang

      1. Vermutlich liegt es am Installer. Wenn man nur die EXE oder eine portable Version nimmt, gibts die Probleme wohl nicht.

        Noch eine Frage:
        Wie hoch ist die Stromaufnahme des Digispark im Leerlauf, wenn es über Vin mit 12V versorgt wird?
        Wird der 7805 warm?

        1. Er braucht ca. 20 mA, das wären 140 mW Leistungsverlust. Damit dürfte er ein bisschen warm, aber nicht heiß werden. Allzu viel dranhängen würde ich bei 12 Volt-Betrieb aber nicht.

  5. Hallo Wolfgang,

    vielen Dank für die verständliche Anleitung. Damit steht meim erstes Digispark Projekt hoffentlich nichts im Weg.
    Vorab hätte ich noch ein paar Fragen zur grundsätzlichen Machbarkeit.
    Ich möchte den Digispark als IC Slave betreiben (dazu habe ich auch bereits ein Software Beispiel gefunden).
    Als Master ist ein Raspberry Pi vorgesehen. Läuft der Digispark I2C auch wenn ich die Pull Up Widerstände des Pi verwende, die ja auf 3.3V liegen? Oder noch schlimmer zerstöre ich was auf dem PI?
    Mit dem Digispark möchte ich dann einen HC-SR04 Ultraschall Sensor betreiben. Der HC-SR04 liefert ein 5V TTL Signal. Ist es korrekt, dass der Digispark nur 3.3V an den Eingängen kann? Dann müsste man das Echo Signal mit einem Spannungsteiler halt runter teilen. Was ja kein Problem wäre. Vielmehr würde mich interessieren ob beim Digispark der Befehl pulesIn() im micro Sekunden Bereich auch korrekt läuft um das Echo Signal korrekt zu vermessen. Sonst müsste ich evtl. auf eine andere Hardware umsteigen.

    Vielen Dank schon mal im Voraus.

    Viele Güße Daniel

    1. Hallo Daniel,

      1) zum HC-SR04 04: der Digispark läuft auf 5 Volt, Eingang wie Ausgang. Ist also kein Problem. Und ich wüsste keinen Grund, warum pulseIn nicht funktionieren sollte.

      2) zum Raspberry Pi: 3.3 Volt würde der Digispark als HIGH Signal werten. Das Problem liegt darin, dass der Digispark die I2C Leitung auf 5 Volt setzt und das mag der Raspberry Pi nicht. Ist aber kein Problem mit einem Logic Level Converter. Die Dinger gibt es für weniger als 1 Euro / Stück bei Amazon oder eBay. Gib dort einfach „logic level converter 3.3v 5v“ als Suchbegriff ein.

      Viel Spaß und Erfolg,

      Wolfgang

  6. Hallo Wolfgang,
    danke für deinen tollen Beitrag.

    Zur langen Bootzeit des Digispark ist zu sagen, dass er beim Start prüft ob ein Upload für ein neues Programm anliegt. Der Timeout dafür beträgt – wer hätte es gedacht – 5 Sekunden.

    Auf den Digistump Seiten gibt es dazu ein Tutorial wie man eine alternative Firmware installieren kann, so dass ein Programm-Update per Taster an P5 erzwungen werden kann.

    Grüße

  7. Hallo Wolfgang,
    vielleicht hast Du einen Tipp. Ich nutze ein Digispark Attiny85 Board mit USB.
    pb3 und pb4 dienen als Eingänge zur Spannungsmessung über einen Spannungsteiler.
    PB4 läuft wie gewünscht. PB3 liefert immer 2,7v.
    Ich vermute USB. Habe keine Lösung.
    Viele Grüsse
    Uwe

    ….
    ptc_value = analogRead(ptcPIN);

    ptc_value = map(ptc_value, 0, 1023, 0, 255);
    ..
    //——Akku laden————————————————-

    if( akku_value < 150) { //Justieren 0 …255

    digitalWrite(AKKU_led, HIGH); // turn the LED on
    analogWrite(PWMPin, 0); // Motoren aus
    }
    else {

    digitalWrite(AKKU_led, LOW); // turn the LED off

    }

    //——————————————————————————

    if ( ptc_value < 100 ) { // Behälter leeren oder Akku zu heiss
    analogWrite(PWMPin, 0); // Motoren aus

    digitalWrite(AKKU_led,HIGH); // Blink
    delay(1000);
    digitalWrite(AKKU_led,LOW);
    delay(1000);

    }

    1. Hallo Uwe, ich habe keine Fehler im Programmcode entdeckt. Merkwürdig ist, dass PB4 funktioniert und PB3 nicht. Wenn es ein USB-Problem gäbe, dann wüsste ich nicht warum es sich nur an PB3 bemerkbar macht. Hast du den richtigen Pin ausgewählt? Wie ist ptcPin definiert?Die Nummerierung ist ja bei Analog Input anders als bei Digital. Ansonsten könnte es vielleicht mit der Schaltung zusammenhängen? Wenn du einen Schaltplan oder ein Foto hast, kannst du es mir per mail zusenden (wolfgang.ewald@wolles-elektronikkiste.de). Und vielleicht auch den vollständigen Sketch. VG, Wolfgang

      1. Hallo Wolfgang,
        Erst einmal vielen Dank für die schnelle Antwort. Schicke morgen beides per Mail
        Viele Grüße Uwe

  8. Hallo Wolfgang
    Herzlichen Dank für diese zielführenden Informationen.
    P5 ist bei mir jetzt als IO nutzbar.
    Ich wollte WinAVR nicht installieren und habe mir deshalb das Programm als „Portable“ besorgt.

    1. Hallo Rainer, danke für den Hinweis. Manchmal ist es ja auch wirklich übertrieben für eine einmalige oder seltene Aufgabe gleich wieder ein ganzes Programm zu installieren. Gut, wenn es dann eine portable Version gibt die sich rückstandslos entfernen lässt. VG, Wolfgang

  9. Hallo Wolfgang,
    danke für die schnelle Antwort!
    Dämlicher Fehler von mir, sorry, hätte ich auch selbst drauf kommen können!
    Natürlich, du hast recht, werden beide Taster zusammen gedrückt leuchtet die LED.
    Schöne Grüße aus dem sonnigen Wilhelmshaven
    Enno

  10. int ledPin = 4;
    int analogInPin2 = 1;
    int analogInPin5 = 3;
    void setup()
    {
    pinMode(ledPin, OUTPUT);
    }
    void pin5_taster()
    {
    if(analogRead(analogInPin5)>100)
    {
    digitalWrite(ledPin, HIGH);
    }
    else
    {
    digitalWrite(ledPin, LOW);
    }
    }
    void loop()
    {
    if(analogRead(analogInPin2)>100)
    {
    digitalWrite(ledPin, HIGH);
    }
    else
    {
    digitalWrite(ledPin, LOW);
    }

    pin5_taster();
    }

    Ohne Aufruf von void pin5_taster() funktionierts, aber mit nicht!

    1. Hallo Enno,
      mit diesem Sketch geht die LED nur an, wenn du beide Taster drückst (ich gehe mal davon aus, dass der Tasterdruck für ein HIGH bzw. analogRead >100 sorgt). Die beiden Pinabfragen hängen nicht voneinander ab, d.h. sie werden mit jedem loop Durchlauf unabhängig von den Tasterzuständen ausgeführt. Das heißt, du drückst z.B. nur auf den Taster an analogPin2 –> LED soll angehen. Mikrosekunden später wird analogPin5 abgefragt und es folgt die Anweisung: LED soll ausgehen. Und wenn die LED im Mikrosekundentakt an und ausgehen soll (ich hab’s nicht ausprobiert), dann bleibt sie wahrscheinlich aus. Drück mal beide Taster – geht es dann? Müsste eigentlich – oder ich habe irgendetwas übersehen, ist schon spät…

  11. Hallo Wolfgang,
    ich möchte am DigiSpark zwei Taster anschließen, aber sobald ich einen zweiten Taster anschließe, funktioniert der Sketch nicht mehr. Weder der eine noch der andere Taster wird erkannt. Wird nur ein Taster angeschlossen wie in deinem Beispiel, ist alles ok. Was mache ich falsch?
    Schöne Grüße
    Enno

  12. Moin,

    die Erklärung hier ist klasse. nach dutzenden von Versuchen habe ich dadurch an einem Rechner das Ding zum „Laufen“ bekommen. Jedoch erst an einem zweiten Rechner.

    An dem ersten Rechner, an dem ich eigentlich Progammiere, wird das Board nur als „Unknown Devise“ im Geräremanager angezeigt. Dadurch ist ein Programmierne nicht möglich, da es eben nicht erkannt wird.

    Ich habe bereits die Treiber mehrfach deinstalliert und neu installiert. Aber es ändert sich nix.
    Achso: Win7 auf beiden Rechnern.

    eine idee, woran es liegen könnte?

    Gruß
    Harald

    1. Das ist ja merkwürdig, wenn es auf dem einen Rechner funktioniert und auf dem anderen nicht. Eine heiße Vermutung habe ich nicht, nur ein paar Anregungen:
      1) Wähle mal DPinst.exe anstelle von „Install Drivers“ (bei einem Windows mit 32 Bit). Wenn du ein 64 Bit Windows hast, hast du DPinst64 genommen? Das wäre eigentlich auch die richtige Wahl.
      2) Sitzt der Digispark an einem USB Hub (also so ein USB Verteiler)? Da habe ich schon mal mit anderen Bauteilen Problemen gehabt. Falls ja, geh mal an eine USB Buchse direkt am PC.
      3) Doppelklicke auf das unbekannte Gerät im Gerätemanager. Im aufpoppenden Fenster geh auf Treiber, dann müsste da so etwas stehen wie Treiber manuell installieren oder akutalisieren und dann navigieren dorthin, wo die Treiber liegen, also wohin du sie entpackt hast.
      Mehr fällt mir auf die Schnelle nicht ein. VG, Wolfgang

  13. Hallo Wolfgang, erstmal großen Dank für die ausführliche Beschreibung.
    Leider hänge ich jetzt ein bisschen fest. Ich bin bis zu dem Punkt mit dem Blinksketch hochladen gekommen, funktioniert auch. Doch jetzt läßt sich nichts mehr ändern, kein anderer PIN, keine andere DelayZeit. Das heißt ändern schon, doch es wird im Digispark nicht aktualisiert. Es läuft auch beim zweiten Digispark nur der ersthochgelandene Sketch. Woran könnte das liegen?
    Grüße Frank Stange

    1. Hallo Wolgang, ich habe mir die Frage eben selbst beantwortet.
      Ich muß den Digispark erst kurz vorm hochladen in den USB-Anschluß stecken, da er nur ein kleines Zeitfenster zur erneuten Progammaufnahme hat.
      Grüße Frank Stange

  14. Gibt es für den Digispark die möglichkeit Pins als RS232 Schnittstelle zu verwenden?

    Das Board wäre Prädestiniert als RS232 Adapter mit „filter“?

    Gibt es eine USB HID interface ähnlich dem Leonardo? So könnte man Knopfe als Keyboard Button Senden

    1. Hallo Eugen, da bin ich nicht unbedingt Fachmann. Der Digispark basiert auf dem ATtiny85 und der hat kein UART, sondern nur ein USI Schnittstelle. Um seriell kommunizieren zu können, muss man da erstmal drauf aufbauen. Also ist es zumindest nicht ganz trivial. Das könnte zumindest als Startpunkt dienen:

      http://www.fadstoobsessions.com/Learning-Electronics/ATTINY-Microcontrollers/ATtiny85-RS232.php
      https://marcelmg.github.io/software_uart/
      VG, Wolfgang

  15. Hallo Wolfgang Ewald,
    nochmal Danke für die Anleitung, kurz Status, ich hab es zum laufen gebracht.
    Aber ein kleiner Hinweis, es wäre ,möglich, dass das Programm avrdude wohl bei der Installation von WinAVR nicht mehr unter Win10 installiert wird, bei mir war es nicht auf der Platte. Oder es unter dem Download-Link nicht mehr dabei…
    Aber egal, das Tool kurz aus dem Netz nachgeladen, und unter WinAVR abgelegt, und es ging.
    Gruß
    Martin

    1. Also eigentlich kann WinAVR ohne avrdude nicht funktionieren. Es ist unter WinAVR/bin zu finden. Ich habe auch Windows 10.

  16. Hallo Wolfgang,

    danke für den Artikel. Kann man auch den Arduino-Bootloader flashen und den eigentlichen USB-Stecker zu Flashen eines Sketches nutzen?

    Grüße
    Peter

    1. Meinst du den „normalen“ Bootloader für den Arduino UNO? Und dann Sketche hochladen wie beim UNO? Wäre schön wenn man sich so das Gestöpsel bei jedem Flashen sparen könnte. Das Ganze geht aber schon allein deswegen nicht, weil der Arduino (UNO) Bootloader einen ATmega328P erwartet.

  17. Guten Morgen,
    danke für die Antwort.
    OK, ich dachte mit der installation von WinAVR wird das Programm avrdude mit installiert?
    OK, muss ich mich beizeiten nochmals auf die Suche machen…
    Gruß
    Martin

    1. Ja, avrdude wird mit installiert. Nur weiß ich nicht ob bei der Installation auch ein Pfad in den Systemvariablen gesetzt wird. Wenn nicht, dann muss man avrdude aus dem Verzeichnis aufrufen, in dem es installiert ist. Sonst kann Windows nichts damit anfangen.

  18. Hallo und erstmal Danke für die Anleitung,
    aber ich hätte da eine Frage zur Option 1.
    Wenn ich das ArduionISP Sktech in meine Nano geladen habe, und dann mit der Eingabeaufforderung den Befehl „avrdude -P COM7 -b 19200 -c avrisp -p attiny85 -n“ eingebe bekomme ich die Meldung Der Befehl „avrdude“ ist entweder falsch geschrieben oder
    konnte nicht gefunden werden.
    was könnte ich flasch gemacht haben?
    Gruß
    Martin

    1. Hallo Martin, das heißt, dass Windows das Programm avrdude nicht findet. Du musst es entweder aus dem Verzeichnis aufrufen, in dem sich avrdude.exe befindet oder einen Pfad in den Systemumgebungsvariablen anlegen. VG, Wolfgang

  19. Hallo, toller ausführlicher Beitrag. Ich hatte auch massive Probleme beim Upload (Win10 & IDE 1.8.13), mal klappte es mal nicht. Geholfen hat bei mir der Tipp => USB Hub mit externer Stromversorgung zwischenschalten. Jetzt klappt jeder Upload.

  20. Wenn die Platine keinen Port kennt, funktioniert dann die serielle Schnittstelle mit USB?
    Wie denn?

    1. Du brauchst in der Arduino IDE nur den Digispark als Board auszuwählen. Es wird dann über das Betriebssystem gefunden.

  21. Hallo Wolfgang, das ist wirklih eine sehr verständliche Anleitung. Ich versuche gerade mit WINAVR den Pin 5 neu zu konfigurieren. Leider bekomme ich ständig die folgende Fehlermeldung:
    avrdude: Device signature = 0x000000
    avrdude: Yikes! Invalid device signature.
    Kannst Du mir weiterhelfen? Was Mache ich falsch?

    Danke

    1. Hallo Michael, Fehlersuche kann sowieso schon schwierig sein, auf die Ferne umso mehr. Ich gehe davon aus du hast die Option 1 probiert? Ich würde erstmal nach den naheliegenden Dingen suchen: 1) Alle Kabel überprüfen (ich habe auch schon mal stundenlang einen Fehler gesucht und dann war es schlicht ein defektes Steckbrückenkabel) 2) Ist der ArduinoISP Sketch auf dem Arduino? 3) Hast du den richtigen COM Port ausgewählt (die 14 in meinem Beispiel muss man ja ersetzen) 4) Hast du den Kondensator zwischen Rest und GND (richtig herum) angeschlossen? 5) Ist die Verkabelung hinsichtlich der Anschlüsse korrekt? So sehr viel mehr kann man eigentlich nicht verkehrt machen. Viel Glück bei der Suche.

    2. Bonjour,
      même pb pour moi
      le tuto bien fonctionner broche P5 fonctionnel jusqu’au changement de sketch puis plus rien le digispark ne répond plus
      avrdude : Device signature = 0x000000
      avrdude : Yikes ! Signature d’appareil non valide.

      comment réassigné la signature ??

      1. Bonjour,

        Vous ne pouvez pas modifier la signature d’un microcontrôleur. Le message : Device signature = 0x000000 signifie que le Digispark n’est pas accessible.

        Est-ce que le Digispark ne peut plus être programmé de manière normale ? Ou est-ce que vous recevez ce message uniquement lorsque vous essayez de reprogrammer la broche 5 ?

          1. Bonjour,
            J’ai quelques questions à vous poser pour comprendre le problème. Vous avez modifié la Prozedur pour que la broche 5 devienne une broche d’entrée/sortie, n’est-ce pas ? Cette broche n’était-elle pas auparavant une broche d’E/S ? Est-ce que vous avez eu un problème avec l’allumage d’une LED ? Est-ce qu’il y a un message d’erreur („Fusibles OK“) ? Oder gab es bei dieser Prozedur schon die Fehlermeldung ? C’est ce que Michael a vécu. Il n’a pas eu le problème que le Digispark ne fonctionnait pas après la procédure.
            Et maintenant votre Digispark ne fonctionne plus du tout ? Cela signifie que vous essayez de télécharger des programmes via l’IDE Arduino, où vous avez choisi le digispark comme Board. Et quand on te demande d’insérer le Digispark, tu reçois le message „Yikes !
            Le problème est qu’une fois que tu as changé la broche de réinitialisation en broche d’entrée/sortie, tu ne peux plus y accéder via l’ISP.

            Traduit avec http://www.DeepL.com/Translator (version gratuite)

  22. Liebe Gruppe vielleicht kann mir wer weiterhelfen.
    Ich würde gerne am PIN 1 oder Pin 2 die serielle Info von einem RF433MHZ Empfänger abfragen und dann einen bestimmten Key über HID USB ausgeben.
    DigiKeyboard.h funktioniert, aber geht auch gleichzeitig die serielle Abfrage ?

    Danke

  23. Hallo Wolfgang,
    danke für diese Anleitung.
    Habe IDE 1.8.2 unter WIN10
    Microluneus als Programmer, Driver installiert usw.
    Er kompiliert und geht sofort auf Hochladen fertig
    Das Board am USB wird ignoriert, die Zeitschleife wird nicht runter gezählt
    Hast Du einen Tipp
    Grüße Jörg

    1. Erstmal eine Frage, die dich hoffentlich nicht beleidigt: hast du den Digispark richtig herum reingesteckt? Leuchtet die LED auf dem Teil? Das wäre das einfachste.

      Was passiert, wenn du den Digispark einfach so in den USB steckst, also ohne einen Sketch hochzuladen? Taucht er im Gerätemanager auf? Du solltest ihn unter „libusb-win32 Usb Devices“ als „Digispark Bootloader“ sehen. Wenn das nicht der Fall ist, dann hat schon die Treiberinstallation nicht geklappt. Das ist dann schwierig aus der Ferne zu diagnostizieren, wo das Problem liegt. Aber immerhin ist es auf den Teil eingegrenzt. Dann würde ich die Installation nochmal wiederholen.

  24. Hallo,

    eine kurze Frage zum P5 des Digisparks. Wenn der P5 als reset funktioniert, kann man dann auch die analogRead() Funktion nicht nutzen?

    Grüße
    Frank

    1. Hallo Frank, analogRead geht nicht, allein schon aus einem Grund. Stelle dir vor du hast 0V an P5 – woher sollte der Digispark dann wissen ob du die 0V auslesen oder resetten möchtest? Grüße, Wolfgang

  25. Hallo Wolfgang,
    zuerst möchte ich ein großes Lob loswerden, Kaum eine Anleitung die
    man im Netz über dieses Thema findet, ist so gut beschrieben. *****
    Ich versuche schon seit einigen Stunden das Digispark USB- Platinchen
    ansprechen zu können.
    Kann es sein, dass dies unter Windows 10 nicht funktioniert oder was muss
    da beachtet werden.

    Grüße
    Micha

    1. Hallo Micha,
      bei mir ging es unter Windows 10. Fehlersuche auf die Entfernung ist natürlich schwierig. Die Treiber hast du sicherlich wie beschrieben installiert!? Vielleicht mal den Rechner neu starten (Standard Tipp aller IT Experten). Manchmal arbeiten Treiber erst nach Neustart richtig. Was anderes fällt mir spontan nicht ein.
      Viel Glück, Wolfgang

    2. Ich dachte auch bis vor kurzem: Windows & DigiSpark => geht nicht.
      Bei mir war der Fehler, dass ich auf die „Meldungen“ geachtet habe, die Windows macht („Klingeln“ beim Einstecken und Abziehen von USB-Geräten): Die sind in dem Zusammenhang einfach irreführend! Ein DigiSpark ist auch (normalerweise) *überhaupt kein* USB-Gerät.

      Ich vermute bei mir folgende „Fehlerquellen“:
      1) Windows-USB-„Meldungen“
      (Standardmäßig „bimmelt“ Windows, wenn ein USB-Gerät eingesteckt oder abgemeldet wird) Grob gesagt: Beim DigiSpark sind die irreführend/irrelevant.
      Am besten ignoriert man sie.
      2) USB-Treiber-Installation
      Bei Windows macht es einen Unterschied, in welchem Port ein Gerät eingesteckt wird. Genau kenne ich es auch nicht, aber im Zweifelsfall sollte man im Gerätemanager (ohne Admin-Rechte) „prüfen“, ob beim Einstecken desDigiSpark vorübergehend ein Zweig „libusb-Devices“ o.ä., darunter ein Gerät „Digispark Bootloader“ erscheint. Wenn das nach wenigen Sekunden verschwindet: Gut!
      3) Sketch-Upload
      Früher hat die Arduino-IDE sogar noch einen COM-Port angegeben (totaler Blödsinn). Wichtig ist die – für „normale“ Arduinos ziemlich unsinnige Reihenfolge:
      IDE zum Upload anweisen, während der DigiSpark *nicht* eingesteckt ist. Erst, wenn im Meldungs-Fenster gebeten wird, den DigiSpark einzustecken, das auch tun. Nach der Abschlussmeldung „>> Micronucleus done. Thank you!“ kann man den DigiSpark abziehen – oder auf Neustart warten.
      Wann Windows währenddessen neue/verscheindende USB-Geräte meldet, ist egal.

  26. Hallo Monte, stimmt, da war ein Fehler. Ich habe ihn korrigiert. Vielen Dank für den Hinweis!
    Schöne Grüße, Wolle

  27. hi danke für die Anleitung.
    Im Text ist ein Fehler 😉
    Und zwar steht bei dem Abschnitt zum aktivieren des P5 als I/O mit Arduino UNO:
    „Dann verbindet ihr den Digispark mit dem Arduino wie folgt:

    P0 –> 11
    P1 –> 12
    P2 –> 13
    P3 –> 10“

    Aber P5 auf 10 wäre richtig im Bild vom Arduino ist es dann richtig.

    Trotzdem Danke für die Tolle Arbeit
    Schöne Grüße

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert