Do-it-Yourself-Projekt: iXduino – Arduino on a Breadboard

Der Pragmatische Architekt  –  1 Kommentare

Im ersten Projekt geht es darum, ein eigenes DiY-Arduino-System ("iXduino") auf einem Breadboard zusammenzubauen. Wegen des Preises lohnt es sich zwar nicht – kompatible Arduino Uno Boards gibt es bereits für wenige Euro bei eBay oder Amazon –, dafür macht es aber Spaß und vermittelt noch dazu wichtige Kenntnisse.

Die Konstruktion eines eigenen Arduino-Kons ist nicht weiter schwierig, weil der Microcontroller ATmega328 als SoC (System on a Chip) die wichtigsten Features wie Arbeits- und Flash-Speicher sowie Ein- und Ausgänge bereits mitbringt. Zum Aufbau eines Arduino-Boards fehlen nur noch Stromversorgung, USB-Eingang, Taktgeber, Platine/Steckbrett, ein paar LEDs, Widerstände, Kondensatoren, ein Reset-Taster, und natürlich Verbindungsdrähte.

Benötigt werden also diverse Bauteile, deren Kosten sich im Bereich von 10 bis 15 Euro bewegen. Es gibt auf eBay und Amazon fertige Bausätze für 4 bis 10 Euro (ohne Breadboard, ohne Drähte und ohne FTDI-USB-Platine – diese müssen Sie separat erwerben, beispielsweise hier: http://tinyurl.com/arduinobausatz, oder hier: http://tinyurl.com/arduinobausatz2). Die meisten Bausätze liefern einen bereits programmierten Arduino-ATmega-Prozessor aus, sodass Sie sich das spätere Programmieren des Chips sparen können.

Teileliste (Bill of Material)

  • Mikrocontroller ATMEGA328P im DIP-Gehäuse
  • optional: 1 x 28 Pin IC-Halter, falls Sie den Mikrocontroller nicht direkt aufs Steckbrett stecken wollen
  • Breadboard (z.B. eines mit 840 Kontakten)
  • ein Mikrotaster als Reset-Knopf
  • 16-MHz-Oszillator
  • zwei Keramikkondensatoren mit 22pF
  • eine grüne LED
  • eine rote LED
  • ein LM8705-Spannungsregulator, um die USB-Spannung auf die benötigten 5V für den Arduino zu transformieren
  • zwei Elektrolytkondensatoren mit je 10 yF
  • ein 10-KOhm-Widerstand
  • zwei 220-Ohm-Widerstände
  • diverse Verbindungsdrähte (Jumper Wires)
  • FTDI-Platine für den USB-Anschluss (Stromversorgung, Datenübertragung)
Arduino on a Breadboard (Bild: arduino.cc)

Die Schaltung ist aus folgendem Diagramm ersichtlich, das von notesandvolts.com stammt.

Schaltkreis für den eigenen Uno (Bild: notesandvolts.com)

Bauanleitung

Auf arduino.cc findet sich eine genaue Bauanleitung. Trotzdem möchte ich die Schritte kurz erläutern:

  • Den Mikroprozessor setzen Sie mit der Kerbe nach oben auf das Steckbrett (alle ICs haben dort eine Markierung, wo sich der obere Teil des Bausteins befindet). Die Zählung der Pins startet dann im Gegenuhrzeigersinn mit dem oberen linken Pin.
  • Die Versorgungsstränge des Steckbords links und rechts werden später über den Ausgang des Spannungsregulators versorgt und nicht (!!!) durch Batterie oder USB-Eingang.
  • An Pin 9 und 10 des ATmega328 muss der 16-Mhz-Quarzkristall anliegen. Um die Impulse zu glätten, verbinden Sie die beiden Elektroden (Pin 9, 10) des Oszillators über je einen der Keramikkondensatoren mit Erde.
  • Pin 7 muss auf Versorgungsspannung (= Ausgangsspannung des Regulators), Pin 8 auf Erde liegen.
  • Pin 22 liegt auf Erde, Pin 20 und 21 auf Versorgungsspannung (= Ausgangsspannung des Regulators).
  • Den Spannungsregulatoreingang (linker Verbindungsfuß) verbinden Sie später mit der Versorgungsspannung aus der FTDI-Platine oder einer Batterie. Die Mitte (= mittlerer Verbindungsfuß) des Bausteins legen Sie auf Erde. Die Erdung der Eingangsspannung und die Erdung der Ausgangsspannung sind daher mit dem mittleren Verbindungsfuß des Spannungsregulators verbunden. Sowohl zwischen Erde und Eingang als auch zwischen Erde und Ausgang (rechter Fuß des Spannungsregulators) platzieren Sie mit richtiger Polung je einen der Elektrolytkondensatoren.
Unsere Schaltung von oben
  • An Pin 19 des IC (= logischer Arduino-Digitalpin 13) legen Sie über einen Verbindungsdraht einen 220-Ohm-Widerstand und in Serie dazu die grüne LED. Deren negativen Pol verbinden Sie mit Erde. Das Ende des Verbindungsdraht vom Pin 19 sollte außerhalb des Bereichs liegen, wo sich der ATmega befindet. Auf echten Arduino-Boards befindet sich immer eine LED, die am Digital-Pin 13 liegt.
  • Am Ausgang des Spannungsregulators platzieren Sie einen weiteren 220-Ohm-Widerstand, danach in Serie die rote LED, die Sie mit Erde verbinden. Leuchtet diese LED, wissen Sie, dass eine Stromversorgung anliegt.
  • Den Pin 1 des ATmega (RESET-Eingang) legen Sie über einen 10-KOhm-Widerstand an die Versorgungsspannung (Ausgang des Spannungsregulators). Dieser Widerstand dient als Pull-up-Widerstand, der ein versehentliches RESET durch Fluktuationen im Stromkreis verhindert. Achtung: der RESET-Eingang ist invertiert. Ein Reset erfolgt also bei O-V-Spannung.
  • Zudem verbinden Sie den Pin 1 mit einem Taster, dessen andere Verbindung Sie erden. Dadurch können Sie den Prozessor gezielt reseten, indem Sie den Taster betätigen.
  • Nun verbinden Sie die Spannung des FTDI-Boards mit dem Eingang des Spannungsregulators und führen dessen GND-Ausgang auf das GND des Spannungsregulators.
  • Den RX-Pin des FTDI-Boards verbinden Sie mit dem TX-Pin 3 des ATmega328.
  • Den TX-Pin des FTDI-Boards verbinden Sie mit den RX-Pin 2 des ATMega328.

Nachdem Sie die Schaltung nochmals eingehend geprüft haben, verbinden Sie den USB-Eingang ihres Computers mit dem USB-Eingang des FTDI. Oder legen Sie alternativ die Spannung einer Batterie an. Nun sollte die rote LED leuchten.

Oben sehen Sie das Bild des Schaltungsaufbaus ohne Spannungsversorgung. Diese müsste oben rechts zum Spannungsregulator geführt werden, genau gesagt zum linken und mittleren Standbein.

Programmierung der Firmware

Dummerweise enthält ein "nackter" ATmega328 weder die benötigte Firmware noch einen geeigneten Bootloader. Dazu könnte man einen Programmer kaufen oder den ATmega328 von einem anderen Arduino Board rausziehen und in der eigenen Schaltung platzieren.

Wenn Sie bereits ein Arduino-Uno-Board ihr Eigen nennen, lässt sich der Uno als Programmer nutzen.

Arduino als Programmer
  • Verbinden Sie einfach die Pins 13,12,11 ihres Original-Arduino-Boards mit den Pins 19,18,17 des selbstgebastelten Arduino-Boards. Verwenden Sie die Versorgungsspannung des als Programmer verwendeten Original-Boards zur Speisung des DiY-Boards und verbinden Sie auch das GND des DiY-Boards mit dem des Programmers.
  • Verbinden Sie Port 10 des Programmerboards mit dem Pin 1 (RESET) des selbstgebauten Boards. Der Programmer muss den RESET steuern, wenn der Programmiervorgang gestartet wird.
  • Laden Sie in der Arduino IDE das Beispielprogramm ArduinoISP (Pulldown-Menü Examples) und lassen Sie es ablaufen. Läuft alles gut, haben Sie die Firmware erfolgreich auf Ihrem eigenen DiY-Board installiert.

Den Bootloader brennen

Sie können zusätzlich auch noch den Bootloader in das neue Board einprogrammieren. Das ist nur einmal nötig und empfiehlt sich.

  • Im Tools-Menü müssen Sie neben den Typ Ihres Original-Bords (Uno), MEGA ... auch den richtigen seriellen Port einstellen.
  • Als Programmer wählen Sie im Menü "Arduino as ISP".
  • Wählen Sie "Burn bootloader" im Tools-Menü.
  • Nun laden Sie über Examples/Basics das Blinkbeispiel.
  • Halten Sie die Hochstelltaste während Sie in der IDE den Run-Knopf drücken (einen gelb umrahmten Pfeil ).
  • Dadurch wird das Programm nicht auf Ihr Originalboard geladen, sondern auf Ihr DiY-Board.
  • Ist alles gut gegangen, müsste jetzt die grüne LED im Einsekundentakt blinken.

Auf der Erfolgsspur

Glückwunsch, Sie haben einen eigenen Arduino gebaut und erfolgreich getestet. Sie könnten natürlich das Board um Steckbrücken erweitern, die dieselben physikalischen Anordungen haben wie ein Arduino Uno Board. Dadurch ließen sich sogar Shields betreiben.

Es empfiehlt sich, ein wenig die Schaltung zu studieren, um mit der Funktionsweise Ihres selbstgebauten Arduino-Boards vertraut zu werden. Und natürlich zu experimentieren.

In den nächsten Folgen werden wir uns mit entsprechenden Projekten beschäftigen.