- kollino.de - https://elektronik.skyline-service.de -

Arduino Pro Mini 3.3V programmieren (mit Arduino Uno oder USB-Programmer)

Arduino Pro Mini

Nehmen wir uns mal einen Arduino Pro Mini [1] in der Variante mit 3.3V vor, um ihn zu programmieren.
Wie auch schon im Blog zum programmieren eines ATtiny-Mikrocontrollers [2] zeige ich Euch wie Ihr entweder mit einem Arduino (Uno) oder einem USB-Programmer einen Pro Mini mit einem Sketch versehen könnt. Dort beschreibe ich auch ausführlich den USB-Programmer samt Kabelanschluss.

 

Ganz wichtig!!! Ihr braucht unbedingt eine Stromversorgung die konstant nicht mehr als 3.3 Volt liefert, sonst könnte es sein, dass Ihr Euren Pro Mini schrottet. Die USB-Buchse Eures Computers liefert je nach USB-Port eine Spannung, die darüber liegt.
Benutzt Ihr die 5V-Variante, könnt Ihr sie ohne Spannungswandler direkt mit dem Strom aus der USB-Buchse versorgen.

Folgende Übersicht zeigt Euch die Spannung und die Stromstärke an, die Euer USB-Port bereitstellt.

Ihr könnt nun entweder zwei AA(A)-Batterien als Stromquelle nehmen, dann habt Ihr eine Spannung von rund 3 Volt, oder Ihr baut Euch einen kleinen Spannungsregler auf einem Breadbord auf, oder lötet gleich einen auf eine Lochrasterplatine (üben, üben, üben 🙂 ), wenn Ihr regelmäßig 3.3 V Mikroprozessoren auf dem Breadboard programmieren möchtet.
Schaut Euch hierzu die folgenden zwei Seiten an. Dort findet Ihr einen Spannungsregler von 9V->5V->3.3V und einen kleinen, den man wunderbar für den USB-Port verwenden kann, da er die rund 5V des USB-Anschlusses ohne großen Verlust in 3.3V wandelt.

fingerzeig Spannungsregler 9V [3]
fingerzeig Spannungsregler 5V [4]

 

Programmieren mit dem USBasp-Programmer

Schauen wir uns zuerst einmal die Pinbelegung an, um die Leitungen zu finden, die wir zum programmieren benötigen:

ProMini-Pinout [5]

Somit ergibt sich folgende Belegung:

Programmer Arduino Pro Mini [1]
MOSI Pin 1 <-> Pin 11
RESET Pin 5 <-> RST
SCK Pin 7 <-> Pin 13
MISO Pin 9 <-> Pin 12
VCC Pin 2 <-> VCC
GND Pin 4 <-> GND

 

Los gehts. Verkabeln wir nun unseren Pro Mini nach der ermittelten Pinbelegung.

Zum Vergrößern Bild anklicken [6]

Zum Vergrößern Bild anklicken

Die vier benötigten Datenleitungen sind mit den roten Kabeln auf dem Breadboard verkabelt. +5V und GND laufen vom Programmer direkt in den Spannungswandler und regeln sie auf konstante 3.3 V herunter. Von dort aus geht es mit +3.3V und GND an die entsprechenden Pins des Pro Minis.

Jetzt verbinden wir den Programmer mit unserem USB-Anschluss und laden unsere Arduino-IDE.

Arduino-IDE-ProMini [7]

Zum Vergrößern Bild anklicken

In der IDE gehen wir auf „Werkzeuge“ und wählen als „Board“ das „Arduino Pro or Pro Mini“ aus.
Als „Processor“ den „ATMega328 (3.3 V, 8 MHz)
Dort könnt Ihr auch einen grundlegenden Unterschied zur 5 Volt Variante erkennen, denn die 3.3V-Variante hat auf Grund ihrer geringeren Spannungsaufnahme nur einen 8Mhz-Quarz.

Der „Port“ ist egal, aber bei „Programmer“ müssen wir „USBasp“ auswählen.

 

 

Im Anschluss laden wir einen kleinen Testsketch hoch. Da es sich ja um einen ATMega328 handelt, ist die Pinbelegung wie auf unserem Uno nahezu gleich. Daher können wir auch das Beispielsketch aus „Datei“ -> „Beispiele“ -> „01. Basics“ -> „Blink“ unverändert übernehmen. Auf dem Board ist auch eine SMD-LED auf Pin 13.

Hier ist aber der Sketch noch einmal:

Wenn der Prozessor unter „Werkzeuge“ und der Programmer korrekt festgelegt wurden, können wir unseren Sketch auf den Pro Mini schieben.

Achtung: Wenn Ihr nur auf  „Sketch“ -> „Hochladen“ oder den Rechtspfeil anklickt, wird folgende Fehlermeldung ausgegeben:

avrdude: ser_open(): can’t open device „\\.\COMx“: Das System kann die angegebene Datei nicht finden.

Das ist völlig normal, denn am COMx-Port hängt ja derzeit kein Gerät. Wir müssen entweder „Sketch“ -> „Hochladen mit Programmer“ oder die Großschreibtaste gedrückt halten und mit der Maus den Rechtspfeil auswählen, damit unser Sketch über den Programmer auf den Pro Mini kopiert wird.

Wenn der Sketch fehlerfrei kompiliert und übertragen wurde, fängt unsere eingebaute rote LED an zu blinken und wir haben unseren ersten Pro Mini 3.3 V mit einem Programmer programmiert.

Zum Vergrößern Bild anklicken [8]

Zum Vergrößern Bild anklicken

 

Programmieren mit dem Arduino Uno als Programmer

Vom Grundprinzip zum programmieren mit einem USB-Programmer ist das hier nicht viel anders. Im Internet gibt es so viele Anleitungen die alle darauf abzielen, dass man auf seinem Uno den Prozessor runtermacht – so fern man wie ich einen mit DIP-Sockel hat und den man im Gegensatz zu den SMD-Versionen auch runtermachen kann, aber das ist irgendwie gar nicht nötig. Wir gehen genau so vor, als würden wir einen ATtiny programmieren mit einem Uno und reißen ihm nicht seinen Prozessor von der Platine.

Als erstes müssen wir jetzt wissen, wo auf unserem Uno die entsprechenden Datenleitungen sind die wir benötigen. Das wären MOSI, RESET, SCK und MISO. So wie natürlich +3.3 V und GND.

Arduino-Uno-R3-Pinbelegung [9]

Zum Vergrößern Bild anklicken

Parallel wieder das Pinout zum Pro Mini:

ProMini-Pinout [5]
Somit ergibt sich folgende Belegung:

Arduino Uno Arduino Pro Mini [1] 3.3 V
MOSI Pin 11 <-> Pin 11
RESET Pin 10 <-> RST
SCK Pin 13 <-> Pin 13
MISO Pin 12 <-> Pin 12
3.3V <-> VCC
GND <-> GND

 

Haben wir auf unserem Uno noch kein ArduinoISP-Programmer-Sketch aus den Beispielen hochgeladen, so müssen wir das als Erstes tun.
Hierzu öffnen wir den Sketch unter „Datei“ -> „Beispiele“ ->“11.ArduinoISP“ -> „ArduinoISP“ und übertragen ihn wie gewohnt per USB auf unseren Uno.
Jetzt ist er bereit und kann weitere Chips programmieren.

Jetzt können wir unser Breadboard mit dem Pro Mini drauf mit dem Uno verbinden. Achtet darauf, dass Ihr 3.3 V und nicht 5 V nehmt.

Zum Vergrößern Bild anklicken [10]

Zum Vergrößern Bild anklicken

Hier brauchen wie definitiv einen Elektrolyt-Kondensator mit einem Wert von rund 10 µF den wir zwischen GND und dem Reset-Pin des Arduinos setzen. Unbedingt auf Polarität achten! GND = Minus, Reset = Plus.
Als ich die Schaltung ohne ELKO verwenden wollte, kam es beim Hochladen eines Sketches immer zu folgender Fehlermeldung:

Problem beim Hochladen auf das Board. Hilfestellung dazu […]
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x70

Abschließend verbinden wir unseren Arduino mit dem USB-Kabel mit dem Computer und laden das Standard-Blink-Sketch wie hier aufgeführt:

Ich habe ein Delay von 100 ms eingefügt, da wir im vorherigen Versuch mit dem USBasp-Programmer ein Delay von 1000 hatten. Somit blinkt jetzt unsere LED viel schneller.

Arduino-IDE-ProMini [7]Bevor wir unser Sketch auf den Pro Mini hochladen können, müssen wir in der IDE  „Werkzeuge“ anklicken und wählen als „Board“ das „Arduino Pro or Pro Mini“ aus.
Als „Processor“ den „ATMega328 (3.3 V, 8 MHz)
Der „Port“ ist egal, aber bei „Programmer“ müssen wir „Arduino as ISP“ auswählen.

Nun laden wir unseren Sketch hoch, verwenden dafür aber entweder unter „Sketch“ den Menüpunkt „Hochladen mit Programmer„, oder halten unsere Großschreibtaste gedrückt und klicken den „Hochladen“-Pfeil an. Es erscheint dann auch nicht wie gewohnt der Text „Hochladen“, sondern „Hochladen mit einem Programmer“.

Wenn alles fehlerfrei kompiliert und hochgeladen wurde, stellen wir etwas ungewöhnliches fest: Auf dem Uno und auf dem Pro Mini blinken die LED synchron.
Das liegt aber nur daran, dass ja beide Prozessoren mit dem Pin 13 verbunden sind. Euer Sketch ist nicht auf dem Uno gelandet, sondern auf dem Pro Mini.

Zum Vergrößern Bild anklicken [11]

Zum Vergrößern Bild anklicken

Abschließend trennen wir nun den Uno vom Pro Mini und versorgen diesen mit einer externen Stromquelle. Ich habe hierzu wieder meinen Spannungswandler genommen, an dem ich eine 9 V-Blockbatterie dranhängen habe. Diese werden für den Pro Mini auf 3.3 V umgewandelt und wir sehen, dass unser Blink-LED-Sketch auch ohne angeschlossenen Arduino Uno als Programmer wieder läuft.

Zum Vergrößern Bild anklicken [12]

Zum Vergrößern Bild anklicken

So, das waren zwei der Wege wie man weitere Prozessoren programmieren kann. Man braucht immer einen Programmer, wenn man „nackte“ Prozessoren programmieren will. Dabei ist es gleich, ob wir den Arduino verwenden und ihn mit einem Sketch zu einem Programmer umfunktionieren, oder beispielsweise den USBasp-Programmer verwenden, der ja ebenfalls auf seinem verbauten ATtiny ein Programm installiert hat, was ihn auch zu einem Programmer macht.