Kapitel 1: Das Arduino-Board
Gerüchteweise ist eine Kneipe im italienischen Ivrea der Namensgeber für das Arduino-Projekt. Die Kneipe war nach Arduin von Ivrea benannt worden, der von 1002 bis 1014 König von Italien war. Hier trafen sich gelegentlich Massimo Banzi und David Cuartielles, die 2005 das erste Arduino-Board entwickelten. Arduino ist seitdem die Bezeichnung für die Software- und Hardware-Plattform.
Ich werde in diesem Buch hauptsächlich mit dem am weitesten verbreiteten Board arbeiten, dem Arduino Uno Board. Warum verwende ich gerade dieses Board, da es doch etliche weiterer Arduino-Boards zur Auswahl gibt? Auf der folgenden Abbildung sehen wir vier der Arduino-Boards, die im Laufe der Zeit vom Arduino-Team entwickelt wurden.
Abbildung 1-1: Die Arduino-Familie (eine kleine Auswahl)
Die Boards unterscheiden sich auf den ersten Blick in Größe und Anzahl der Buchsen, also der Anschlussmöglichkeiten, um mit der Außenwelt in Verbindung zu treten. Des Weiteren haben sie unterschiedliche Prozessoren, Taktfrequenzen und Speichervolumen. Und dennoch arbeiten sie alle nach dem gleichen Prinzip und können durch eine einheitliche Entwicklungsumgebung angesprochen und programmiert werden. Je nach Anwendungsgebiet und Erfordernissen ist das eine Arduino-Board vielleicht besser geeignet als das andere. Die einen benötigen ein Board mit vielen I/O-Pins und entscheiden sich beispielsweise für den Arduino Mega oder den Due. Andere wählen den Arduino Micro oder Nano aus, denn dieser ist recht klein in den Ausmaßen und passt wunderbar in kleine Gehäuse und kommt dort zur Anwendung, wo das Platzangebot beschränkt ist.
Das Universal-Genie ist in meinen Augen jedoch der Arduino Uno und er wird es wohl noch eine lange Zeit bleiben. Er bietet gerade eine ideale Plattform für den Einstieg in die Mikrocontrollerwelt. Für ihn finden sich im Internet auch die meisten Tutorials, Projekte und Diskussionen. Steigen die Ansprüche für die Projekte, ist es kein Problem, sich ein weiteren Arduino-Modell zuzulegen, denn die Preise sind wirklich moderat. Viele Bastler legen sich im Laufe der Zeit mehrere unterschiedliche Boards zu, um darüber auch mehr und mehr Erfahrungen zu sammeln, was in meinen Augen ein ganz normaler Entwicklungsfortschritt ist. Über die nachfolgenden Links bekommst du Detailinformationen zu den gezeigten Boards.
Es gibt noch weitere Arduino-Boards, die ich hier nur per Link erwähnen möchte. Hinweise dazu sind unter den folgenden Adressen zu finden:
Um Himmels Willen! Wie soll man denn da durchblicken und wie entscheiden? Die Vielfalt bringt ja mehr Verwirrung als Klarheit.
Ich sagte schon, Ardus, dass wir uns hauptsächlich mit dem Arduino Uno beschäftigen werden, denn dieses Board ist die erste Wahl, wenn es darum geht, einen geeigneten Einstieg in die Welt der Elektronik zu finden. Alle anderen Boards bauen aber auf ein Arduino-Board auf und besitzen zusätzliche Möglichkeiten wie beispielsweise eine höhere Anzahl von I/O-Pins, einen anderen Mikrocontroller oder andere Taktfrequenzen. Doch da die Programmierung über die Arduino-Entwicklungsumgebung mit der Auswahl des verwendeten Boards erfolgt, gibt es dort keine Probleme, denn das Wissen, was wir mit dem Arduino Uno erlagen, ist später für andere Ardunio-Boards gut zu gebrauchen.
Schauen wir uns das Arduino Uno Board einmal genauer an. Auf der folgenden Abbildung habe ich einige der wichtigsten Komponenten auf der Platine markiert und beschriftet.
Abbildung 1-2: Der Arduino Uno
Wenn ich nun im Folgenden Details über das Arduino Uno Board aufliste, wird dir das eine oder andere vielleicht noch nicht ganz verständlich sein, aber ich verspreche, dass ich alle Details später ausführlich erläutern werde.
Der Mikrocontroller ist das Herzstück des ganzen Arduino-Boards. Beim Arduino Uno, den wir ja in unserem Buch verwenden, kommt der Atmel AVR-Mikrocontroller vom Typ ATmega328 zum Einsatz. In der vorigen Abbildung ist es das große schwarze Bauteil mit den vielen Anschlüssen. Hier eine kurze Zusammenfassung der wichtigsten Eckdaten.
Eingangsspannung | 7V bis 12V |
Eingangsspannung (Limit) | 6V bis 20V |
Digitale I/O-Pins | 14 (6 stellen PWM zur Verfügung) |
DC Strom für 3,3V Pin | 50mA |
Flash-Speicher | 32 KByte (ATmega328), 0,5 KByte vom Bootloader genutzt |
EEPROM | 1 KByte (ATmega328) |
Tabelle 1-1: Ein paar nennenswerte Eckdaten des Boards
Weitere Detailinformationen sind unter der folgenden Adresse zu finden:
Ich habe da mal eine Frage: Wenn ich den Mikrocontroller programmieren will, dann muss ich ja irgendwie mit ihm kommunizieren.Wie funktioniert das eigentlich?
Wie du aus der eben gezeigten Liste entnehmen kannst, steht uns zur Kommunikation mit dem Arduino-Board eine bestimmte Anzahl Ein- und Ausgänge zur Verfügung. Sie stellen die Schnittstelle zur Außenwelt dar und ermöglichen uns, Daten an den Mikrocontroller zu senden und von ihm zu empfangen. Wirf’ einen Blick auf das folgende Diagramm.
Abbildung 1-3: Die Ein- und Ausgänge des Arduino Uno
Auf der linken Seite siehst du den Arduino-Mikrocontroller, der über bestimmte Schnittstellen mit uns kommunizieren kann. Manche Ports sind als Eingänge, andere als Ein- und Ausgänge vorhanden. Ein Port ist dabei ein definierter Zugangsweg zum Mikrocontroller, quasi eine Tür ins Innere, die wir uns nutzen können, wenn wir wissen wie. Wirf’ noch einmal einen Blick auf das Board, und du wirst an der Ober- beziehungsweise Unterkante jeweils schwarze Buchsenleisten erkennen.
Moment! Irgendetwas stimmt hier nicht. Unser Mikrocontroller sollte doch analoge wie digitale Ein- beziehungsweise Ausgangsports vorweisen. Im Diagramm sehe ich jedoch von den analogen Ports nur Eingänge. Wo sind die Ausgänge? Da hast du sicherlich etwas vergessen!
Das hast du gut beobachtet, Ardus! Ich muss dir aber sagen, dass das Diagramm vollkommen korrekt ist. Der Grund ist folgender (er wird später noch näher beleuchtet): Unser Arduino-Board ist nicht mit separaten analogen Ausgängen bestückt. Das hört sich erst einmal recht merkwürdig an, doch bestimmte digitale Pins werden als analoge Ausgänge genutzt. Du fragst dich bestimmt, wie das funktionieren soll. Ich mache einen kleinen Vorgriff auf das, was noch im Kapitel über die Puls-Weiten-Modulation, auch PWM genannt, kommt. Das ist ein Verfahren, bei dem ein Signal mehr oder weniger lange An- und Aus-Phasen vorweist. Ist die An-Phase, also wenn der Strom fließt, länger als die Aus-Phase, leuchtet zum Beispiel eine angeschlossene Lampe augenscheinlich heller, als wenn die Aus-Phase länger ist. Ihr wird also mehr Energie in einer bestimmten Zeit in Form von elektrischem Strom zugeführt. Aufgrund seiner Trägheit kann unseres Auge sehr schnell wechselnde Ereignisse nicht unterscheiden und auch die Lampe weist beim Hin- und Herschalten zwischen den beiden Zuständen Ein und Aus eine gewisse Trägheit auf. Dadurch hat es für uns den Anschein einer sich verändernden Ausgangsspannung. Klingt etwas merkwürdig, nicht wahr? Du wirst es ganz sicher besser verstehen, wenn wir das konkret in einem Projekt behandeln. Einen offensichtlich entscheidenden Nachteil hat diese Art der Portverwaltung schon. Verwendest du einen oder mehrere analoge Ausgänge, geht das zu Lasten der digitalen Portverfügbarkeit. Du hast dafür eben weniger zur Verfügung. Doch das soll uns nicht weiter stören, denn wir kommen nicht an die Grenzen, die eine Einschränkung unserer Versuchsaufbauten bedeuten würde.
Bevor du weiter in dem Tempo erzählst, muss ich...