Arduino Pro Mini programmieren

Allgemeines

Wer sein Projekt fest in Draht und Lot verewigen möchte, macht das üblicherweise nicht mit einem Arduino UNO, sondern wählt entweder einen ATtiny oder ATmega Microcontroller oder ein kleines Board wie z.B. den Arduino Nano oder den hier beschriebenen Arduino Pro Mini. Ich werde zunächst etwas über die verschiedenen Ausführungen des Pro Mini schreiben, dann über den Sketch Upload mittels USB-zu-TTL Modul und mich schließlich dem Trouble Shooting widmen. Arduino Pro Mini Programmieren ist sehr bequem!

Verschiedene Ausführungen

Zunächst gibt es vier verschiedene Ausfertigungen hinsichtlich des verwendeten Microcontrollers, der Betriebsspannung und der Taktrate:

  •  ATmega 328P, 5 V, 16 MHz
  •  ATmega 328P,  3.3 V, 8 MHz
  •  ATmega 168, 5 V, 16 MHz
  •  ATmega 168, 3.3 V, 8 MHz

Hat man sein Projekt mit dem UNO entwickelt, dann bietet sich die 328P Variante mit 5 V an, da die volle Kompatibilität gewährleistet ist. Verwendet man 3.3 V Bauteile wie z.B. bestimmte Sensoren, kann auch die 3.3 V Variante interessant sein. Ich selbst habe nur 328P / 5 V Modelle probiert. Bei Amazon bekommt man die Boards ab 3 Euro. 

Darüber hinaus unterscheiden sich die Boards z.T. im Layout, insbesondere in der Lage der Pins A4 (SDA) und A5 (SCL), welche man für die I2C Kommunikation benötigt. Bei den oben abgebildeten Modellen liegen Sie am schmalen Ende neben dem Resetknopf (linkes Modell) und oberhalb A2 und A4 (rechtes Modell). Dummerweise kann man bei beiden Modellen A4 und A5 nicht nach unten ausführen wenn man eine Lochrasterplatine verwendet. Warum man sich nicht an das Rastermaß hält ist mir ein Rätsel. 

Praktische Stromversorgung

Sehr praktisch ist, dass man den Pro Mini über den Raw Eingang mit Spannungen zwischen 5 und 12 V betreiben kann. Unabhängig von der exakten Spannung habe ich saubere 5 V an VCC gemessen. Es bietet sich z.B. ein Betrieb mit einem 9 V Block an. Eine Versorgung mit 5 V über den VCC Pin ist natürlich auch möglich, man braucht dann aber eine geregelte Versorgung. 

Sketch Upload über die Arduino IDE

Für den Sketch Upload benötigt man ein USB-zu-TTL Konverter Modul wie eines der hier abgebildeten: 

Man bekommt diese Module z.B. bei Amazon für 5 – 10 Euro. Sie unterscheiden sich im Wesentlichen im Format des USB-Anschlusses, in der Ausgabespannung (3.3 und / oder 5 V)  und im Vorhandensein oder Nichtvorhandensein eines DTR (Data Terminal Ready) Pins. Bequemer ist es mit DTR wie wir gleich sehen werden. Darüber hinaus verwenden die Module unterschiedliche Chips, man findet FT232, CP2102 oder CH340G. Geht alles, nur braucht man u.U. noch einen Treiber. Die findet man problemlos im Netz. Überprüfen kann man die Betriebsbereitschaft des Moduls bei Windows im Gerätemanager. Hier ist z.B. alles OK:

Upload mit DTR

Zunächst wird der Arduino Pro Mini wie abgebildet mit dem USB-zu-TTL Modul verbunden: 

Dann in der Arduino IDE:

  •  den richtigen Port mit dem USB-zu-TTL Modul wählen 
  •  als Board „Arduino Pro oder Pro Mini“ wählen
  •  die richtige Variante wählen
  •  den Sketch auswählen und hochladen – und das war’s auch schon.

Upload ohne DTR

Der Pro Mini muss vor dem Upload ein Reset bekommen. Genau das übernimmt der DTR Anschluss. Hat man keinen, muss man den Reset manuell über die Resettaste auf dem Pro Mini vornehmen. Wann man die Taste drückt ist nicht wichtig, entscheidend ist aber wann man sie loslässt. Dazu „Hochladen“ in der Arduino IDE wählen, warten bis die Kompilierung fertig ist und die Resettaste loslassen, wenn er hochladen will (wenn die weiße Schrift erscheint):

Und wenn ich kein USB-zu-TTL Modul habe?

Geht auch, wenn man einen Arduino UNO hat. Beschreibung gibt’s hier. Ich würde aber so oder so in ein USB-zu-TTL Modul investieren. Das gehört für mich zur Standardausrüstung. 

Hilfe! – Troubleshooting

Fehlermöglichkeiten gibt es unendlich viele. Die Ursache lässt sich natürlich besser eingrenzen, wenn man die Fehlermeldung kennt. Hier aber einige allgemeine Punkte, die man immer überprüfen kann:

  •  Installation des Moduls überprüfen
  •  Verkabelung prüfen, Kabel tauschen 
  •  RX und TX tauschen, ist manchmal falsch auf Modulen 
  •  Einstellungen in der IDE prüfen

Fehlender, falscher oder kaputter Bootloader

Bekommt ihr beim Hochladen von der Arduino IDE die folgende hässliche Meldung: „avrdude: stk500_getsync(): not in sync: resp=0x00“, dann könnte es mit dem Bootloader zusammenhängen. Keine Sorge, man kann ihn neu brennen und das geht folgendermaßen:

  •  Arduino UNO an den PC anschließen
  •  in der Arduino IDE wählen: Datei – Beispiele – ArduinoISP – ArduinoISP
  •  Board: Arduino UNO wählen, richtigen Port wählen
  •  Hochladen
  •  dann Arduino Pro Mini als Board wählen, richtige Variante aussuchen
  •  Programmer: „Arduino as ISP“ (nicht: ArduinoISP!)
  •  verkabeln wie auf diesem Schema:
  • Dann im Menü wählen: Werkzeuge – Booloader brennen. 

Wenn es immer noch nicht geht, dann hilft es vielleicht die Fehlermeldung zu googeln. Eine detailliertere Meldung beim Hochladen bekommt man übrigens, wenn man in den Einstellungen folgenden Haken setzt: 

Noch ein wichtiger Hinweis: wenn ihr Sketche über die ISP – Methode hochladet, dann wird der Bootloader überschrieben. Vor dem Wechsel auf die serielle Methode (USB-zu-TTL) müsst ihr deshalb den Bootloader per ISP brennen.

Na dann, viel Spaß mit dem Pro Mini! Habt Ihr Anmerkungen, Ergänzungen, Verbesserungen oder Fragen? Immer raus damit, ich freue mich über jeden Kommentar. 

32 thoughts on “Arduino Pro Mini programmieren

  1. Hallo Wolfgang,
    erstmal vielen Dank für den Artikel. Als Einstieg war er sehr hilfreich.
    Ich möchte an den Pro Mini ein Display 240×64 mit t6963 Controller anschließen. Für dieses Display benötige ich 13 Steuersignale. Bin mir noch nicht ganz sicher ob ich die Spi oder i2c Schnittstelle für die Daten zum Display benutzen werde. Deswegen möchte ich sie erstmal frei lassen. Ist es möglich PD0 und PD1 für den 8 Bit Datenport zum Display und auch gleichzeitig noch zum Programmieren über einen USB serial Wandler zu benutzen?

    Vielen Dank für die Antwort.
    Gruß Karsten

    1. Hallo Karsten,
      es kann gut gehen, wenn du etwas an die Pins 0 und 1 hängst, es muss aber nicht. Solange sich die Anschlüsse am Display neutral verhalten während des Uploads wird nicht passieren. „Neutral“ heißt, dass sie selbst keine Signale abgeben einen gewissen Eingangswiderstand aufweisen. Tut mir leid, dass ich das nicht genauer sagen kann. Das Beste ist: einfach mal ausprobieren!
      VG, Wolfgang

  2. Hallo Herr Wolfgang Ewald
    auf meinem Weg einen TEA5767+Nokia5110+Röhrenverstärker ( das drei Generationen-Projekt) zu bauen,
    bin ich auf den Arduino pro mini 3,3 Volt , 8 MHz gestoßen. Ohne Ihren wertvollen Hinweis, hier
    Upload ohne DTR, wäre ich kläglich gescheitert. Vielen Dank für Ihre tolle Webseite !
    Mit freundlichen Grüßen
    Klaus Wellmann

  3. Hallo Wolfgang,

    ich bin über diesen Blogpost gestolpert, als ich einen eigenen Post zum Thema „Pimp your Pro Mini“ (https://hinterm-ziel.de/index.php/2021/08/09/pimp-your-pro-mini/) geschrieben habe. Dabei fiel mir auf, dass Deine Anleitung zum Verbinden von Pro Mini und USB-UART-Konverter komplizierter als notwendig ist. Man kann den Stecker einfach aufstecken, bzw. eine Eins-zu-Eins-Verbindung ziehen, da die Pins GND und BLK auf dem Pro Mini elektrisch verbunden sind (d.h. CTS wird immer auf Low gezogen). Ansonsten: Sehr informative Website!

    Besten Dank,
    Bernhard

  4. Hallo Wolle,
    Danke schön für die ausführliche Erklärung!
    Ich hatte folgendes Problem:
    Das Board und der USB-TTL Konverter haben einen DTR-Pin.
    Zunächst hatte ich die miteinander verbunden und viele Versuche gestartet.
    Erfolg hatte ich erst als ich DTR getrennt habe und händisch den Reset wie von Dir beschrieben bedient habe.
    Vielleicht hilft das ja anderen bei der Fehlersuche…

    Grüße
    Wolfram

    1. Hallo Wolfgang et al.
      der Reset über den FTDI-Adapter ist nicht nur hier ein Thema.
      Auch ich habe mir damit beholfen, DTR nicht zu verbinden und den Reset-Taster zu betätigen. Auf der Suche nach einer Lösung bin ich auf einen Youtube-Beitrag gestoßen, bei dem ein RC-Glied verwendet wurde (R10k, Elko 10µ) und das funktionierte bei mir auf Anhieb.

      Bei weiteren Versuchen habe ich erfolgreich den Widerstand weggelassen und für den den Elko 1µ (hatte es nicht kleiner) verwendet (+ an DTR, – an RST).

      BTW: ich verwende das FTDI-Modul auf dem Bild in der Mitte.

      VG Wolfram

  5. Hallo Wolfgang,

    Ich habe mir auch ein USB zu TTL-Modul bestellt, kann dafür aber den Treiber nicht finden. Das Modul verwendet keinen original FTDI-Chip, darüber hinaus führen die schlecht übersetzten Anleitungen für die Treiberinstallation schnell in die Irre. Mein Modul sieht in etwa so aus wie das mittlere auf deinem Bild. Vielleicht hast du ja auch anfangs das Problem mit dem Treiber gehabt.

    Viele Grüße
    Moritz

    1. Hallo Moritz,

      ich habe meinen Treiber hier heruntergeladen:

      https://ftdichip.com/drivers/vcp-drivers/

      Da gibt es eine Tabelle. Der oberste Reihe ist Windows und dort in der letzten Spalte gibt es einen Link „setup executable“. Da kommst du zu einer zip Datei. Einfach entzippen und dann die Datei ausführen. Sollte gehen, solange es sich um einen FTDI Klon handelt. Wenn es nicht geht, dann sag mir nochmal genau, was auf dem Chip steht. Viel Glück!

      VG, Wolfgang

  6. Hallo Wolfgang, echt toll beschrieben, Spitze und danke.
    Habe folgendes Problem:
    Habe meinen Pro Mini mit ‚Basis Blink‘ programmiert, funzt. Habe Strand… hochgeladen, abgeschlossen, soweit gut.
    Wenn ich jetzt die Datenleitung an programmierten Pin(Pin 6) schließe, leuchten alle Ws2812b(20-separate Stromversorgung, Masse zusammen) sehr hell weiß. Was mache ich falsch?

    1. Hallo Maik, ich verstehe das noch nicht ganz. Was heißt denn „Strand hochgeladen“? Benutzt du eine Bibliothek für den LED Streifen? Ich habe die Dinger noch nicht ausprobiert, aber zum Beispiel hier etwas gefunden:
      https://www.control-led.de/init/default/show_post/9/Elektronik-Arduino/Adressierung-von-LED-Strips-%28WS2812B%29-mit-dem-Arduino
      Mir klingt das jetzt eher nach einem Anwendungsproblem mit dem WS2812b, als ein Arduino Pro Mini spezifisches Problem.

      1. Wolfgang,
        super schnelle Antwort! ??
        Der Sketsch heißt Strandtest,glaube ich und funzt mit Arduino UNO, sowie Glone davon mit dem Ws2812b einwandfrei.
        Mit dem Pro Mini ist es wie folgt:
        Alle Verbindungen gemacht (separate Stromquelle stabil 5 Volt genügend Ampere) sobald ich den Daten-in des Ws2812b mit dem programmierten Pin 6 verbinde, leuchten die LED’s sehr hell Weiß. Entferne ich jetzt die Masse vom Ws2812b, leuchtet er ca.50% Rot weiter, also holt er sich wohl trotz Widerstand ( 330 Ohm) Masse über das Dateninfokabel, oder?

        1. Also, wie gesagt, ich habe den WS2812b nicht ausprobiert, deswegen kann ich nicht soviel dazu sagen. Wenn es mit dem UNO funktioniert, müsste es auch mit dem Pro Mini gehen, es liegt ja derselbe Microcontroller zugrunde. Zur anderen Frage: wenn der Strom fließt, obwohl du die Masse abgeklemmt hast, dann muss er wohl über den Daten Pin abfließen. Jeder I/O-Pin, der OUTPUT/LOW ist, ist praktisch Masse. Bei dem Stromverbrauch eines WS2812b sollte man das aber nicht zu lange so laufen lassen. Auch als Stromsenke haben die I/O Pins nur eine begrenzte Toleranz für Ströme.

  7. Ich hab versehentlich 2 Pro Mini statt einem anderen Modell bestellt. Dachte erst ich könnte sie nicht programmieren ohne einen Adapter zu besorgen, dann hab ich in der Bastelkiste noch einen CH340 TTL Adapter gefunden. War skeptisch ob das mit dem geht, hat aber (u.a. dank deiner Anleitung) auf Anhieb geklappt. Der Tipp mit dem Reset button (bei fehlendem DTR) war super. Hab den Pro Mini schon mehrfach programmiert, klappt problemlos. Wichtig ist nur den Reset Button schon rechtzeitig vorher zu drücken und zu halten. Danke!!

  8. Hallo Wolfgang,

    ich habe einen Arduino pro mini aber weiß nicht mit welcher Taktrate und Versorgungsspannung der arbeitet. Gibt leider keine Markierung auf meiner Platine.

    Würde es erst mit 3,3V versuchen und dann 5V falls er nicht anspringt aber kein Plan was die Mhz angeht.

    Frohes Neues Jahr 2021
    Constantin

    1. Hallo Constantin,

      dir auch ein frohes, neues Jahr. Die Taktrate sollte leicht erkennbar sein. Der ovale, silberne Oszillator auf dem Board ist normalerweise beschriftet. Wahrscheinlich läuft das Board sowohl mit 3.3 wie auch mit 5 Volt. Zumindest dem ATmega328P auf dem Board ist das egal.

      Viel Spaß & Erfolg, Wolfgang

  9. Hallo, gut verständliche Erklärung! Ich habe eine Frage. Und zwar habe ich einen Arduino MKR Wifi 1010, bei dem der USB-Anschluss abgebrochen ist. Kann ich den denn auch so wie beschrieben über ein USB-zu-TTL Modul programmieren? Mein Arduino hat keinen DTR-Pin, kann ich stattdessen auch den RESET-Pin verwenden?
    LG Paul

    1. Hallo Paul, das Problem ist, dass der MKR Wifi 1010 einen SAM Microcontroller hat. Da läuft der Sketchupload grundsätzlich anders. Ich habe auf die Schnelle leider keine Möglichkeit gefunden. Weder seriell (RX/TX) noch über ISP scheint es so einfach möglich zu sein. Wenn jemand anderes eine Möglichkeit kennt, immer raus damit!

      1. Schade, dass das nicht so einfach funktioniert. Trotzdem Danke für die schnelle Antwort! Ich werde im Arduino-Forum nachfragen, vielleicht kann mir dort jemand weiterhelfen.

  10. Gute Erklärung, verständlich für mich als Anfänger.
    Aber:
    Leider geht der Link bezüglich „Und wenn ich kein USB-zu-TTL Modul habe? “ auf eine englisch gehaltene Seite…

  11. Einfach genial,
    habe gerade eine Reha angetreten, bin gestern über die Sensoren bei Dir reingestolpert
    und heute lese ich gerade über genau den Mini, den ich vorletztes Jahr bei meinem Regenwassermanagement verbaut habe. Hätte ich deinen Artikel damals schon gehabt, es wäre um einiges schneller gegangen und ein Mini wäre noch am Leben gewesen 🙂
    Auf jeden Fall jetzt schon danke danke danke, es wird eine interessante Reha und ich freu mich schon nach Hause.

  12. Frage zur Abbildung von „Arduino Pro Mini wie abgebildet mit dem USB-zu-TTL Modul „??
    Die beiden „Verbindung“ RXI / TXO am Linken Bord und am rechten Modul RXI /TXO sind auf der „Zeichnung“ nicht an den selben Punkten “ Verbunden“. Li RXI-> Re TXO; Li TXO -> Re RXI ist das so richtig?? Sollten die nicht „über Kreuz“ (Li TXO -> Re TXO und Li RXI -> Re RXI) verbunden sein?? oder habe ich da was falsch verstanden in der Anleitung.
    Bitte um Info / Hilfe (bin noch Anfänger auf dem Gebiet)
    LG Mäx

    1. Hallo Mäx, es ist schon richtig, so wie es auf der Schaltung zu sehen ist. Über RXI und TXO läuft die serielle Kommunikation. „R“ steht dabei für „Receive“, „I“ für „In“ und „T“ für „Transmit“ und „O“ für Out. Die Benennung der Pins erfolgt aus Sichtweise des jeweiligen Moduls oder Controllers. Die Leitung, die aus Sicht des einen Bauteils ein Ausgang (Transmitter) ist, ist aus Sicht des anderen Bauteils ein Eingang (Receiver) und umgekehrt. Falls du die Anschlüsse mal vertauschst, nimmt übrigens keine Seite Schaden. Du bekommst lediglich eine Fehlermeldung, dass du deinen Sketch nicht hochladen kannst.
      Viel Spaß und Erfolg! LG, Wolle

  13. Das ist ja mal ein toller Artikel! Gut und sehr verständlich geschrieben, genau das, was man braucht – vielen Dank!

    1. Finde ich auch absolut. Mein Sohn Philipp macht sich auch seit kurzem an der Arduino Programmierung mit FRANZIS Baubox (https://kinderprogrammieren.de/spielsachen/experimentierkaesten/franzis-baubox-programmier-werkstatt-erfahrungsbericht/). Mit diesem Experimentierkasten hat er bereits einiges umsetzen können: u.a. Töne spielen. Ich als Mutter finde es faszinierend, wie Kinder bereits mit 13 Jahren mit Hilfe der Arduino Programmierung so tolle Sachen hinbekommen. Das hätte ich mir früher nie träumen lassen, als ich in dem Alter war. Einfach toll!

Schreibe einen Kommentar

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