Kitabı oku: «Mit Arduino die elektronische Welt entdecken», sayfa 2
Wie ich die Bastelprojekte gestaltet habe
Wie schon erwähnt, bauen die Bastelprojekte aufeinander auf. Was du in einem Projekt gelernt hast, kannst und sollst du auch in den Folgeprojekten anwenden. Benötigst du Grundlagenwissen, dann präsentiere ich es an der Stelle, an der es benötigt wird. Die Projekte haben alle einen ähnlichen Aufbau.
Codeanalyse: Schritt für Schritt gehe ich den Programmiercode durch und erkläre genau jeden Aspekt des Programms.
Schaltplan: Der Schaltplan ist die schematische Darstellung des Bastelprojektes, sozusagen der Bauplan.
Schaltungsaufbau: Wie die Schaltung dann auf einem Breadboard aufgesteckt oder auf einer Platine aufgelötet aussieht, das stelle ich mit Fotos dar.
Troubleshooting: Die systematische Fehlersuche ist IMHO eine der besonderen Fertigkeiten, die ich gern jedem angehenden E-Bastler nahebringen möchte. Deshalb habe ich sie zum festen Bestandteil meiner Bastelprojekte gemacht.
Benötigte Bauteile: Ich gebe dir einen Überblick über die in diesem Bastelprojekt benötigten Bauteile. So kannst du auf einen Blick feststellen, ob dir die Bauteile bereits vorliegen.
Programmcode: Der für die Bastelprojekte verwendete Programmiercode wird vorgestellt, manchmal in kleinen Häppchen.
Gelegentlich biete ich Quick-and-Dirty-Lösungen an, die auf den ersten Blick etwas umständlich erscheinen mögen. Anschließend folgt eine verbesserte Variante, was als Anregung dienen soll, nach weiteren Lösungsmöglichkeiten zu suchen und – im Idealfall – eigene Lösungen zu entwerfen. Wenn das geschieht, habe ich genau das erreicht, was ich beabsichtigt habe. Falls nicht, auch gut. Jeder geht seinen eigenen Weg und kommt irgendwann ans Ziel.
Meine Website mit weiteren Arduino- und Elektronikthemen
An dieser Stelle möchte ich auch auf meine Internetseite
hinweisen, auf der du unter anderem einiges zum Thema Arduino findest. Hier kannst du auch alle Programme herunterladen, die ich in meinen Bastelprojekten verwende. Zu den schönsten Momenten für einen Autor gehört es, wenn er Feedback von Lesern erhält. Ich bin manchmal richtig gerührt, wenn mir ein Leser mitteilt, wie viel Spaß ihm mein Buch beim Lesen und Basteln gemacht hat. Darüber freue ich mich sehr und möchte jeden dazu ermuntern, mir mitzuteilen, wie er mein Buch fand, was ihm besonders gefallen hat und auch, was er für verbesserungswürdig an meinem Buch hält. Meine E-Mail-Adresse lautet:
Sie ist auf meiner Internetseite auch noch einmal aufgeführt.
Voraussetzungen
Die einzige persönliche Voraussetzung, die du mitbringen solltest, ist Interesse am Basteln und Tüfteln. Du musst kein Elektronik-Nerd sein und auch kein Computerexperte, um die im Buch gezeigten Bastelprojekte nachvollziehen und nachbauen zu können. Da wir sehr moderat beginnen, besteht absolut keine Gefahr, dass irgendjemand auf der Strecke bleibt. Setz dich also nicht unter Druck und mach die Dinge nicht schwieriger, als sie sind. Der Spaß steht immer an erster Stelle.
Benötigte Bauteile
Das Arduino-Board für sich alleine ist zwar ganz nett und wir können uns daran erfreuen, wie klein und schön alles konzipiert wurde, doch auf Dauer reicht das natürlich nicht aus. Wir sollten uns daher im nächsten Schritt ansehen, was wir alles von außen an das Board anschließen können. Falls du noch nie in irgendeiner Weise mit elektronischen Bauteilen (wie Widerständen, Kondensatoren, Transistoren oder Dioden, um nur einige zu nennen) in Berührung gekommen bist, ist das nicht weiter schlimm. Die benötigten Teile erkläre ich dir ausführlich, so dass du nachher weißt, wie sie einzeln und innerhalb der Schaltung reagieren. Zu Beginn eines Arduino-Bastelprojektes stelle ich, wie schon oben kurz erwähnt, eine Liste mit den erforderlichen Teilen zur Verfügung, mit deren Hilfe du dir diese Dinge besorgen kannst. Zentraler Bestandteil ist natürlich immer das Arduino-Board, das ich nicht immer explizit erwähnen werde.
Falls du dich an dieser Stelle fragen solltest, was wohl ein Arduino-Board kosten mag und ob du nach dieser Investition deinen gewohnten Lebensstil fortführen kannst, kann ich nur sagen: Yep, du kannst! Das Board kostet um die 25€, und das ist wirklich nicht viel. Ich verwende in allen grundlegenden Kapiteln das Arduino Uno-Board. Und auch die anderen Bauteile, die wir in den Bastelprojekten verwenden werden, sind bezahlbar.
Abb. 1: Der Arduino Uno – das Original
Verhaltensregeln
Wenn du dich so richtig im Brass befindest und voll konzentriert bist auf etwas, was dir unheimlich viel Spaß macht, treten folgende Effekte auf:
Verminderte Nahrungsaufnahme, die zu kritischem Gewichts- und besorgniserregendem Realitätsverlust führen kann.
Unzureichende Flüssigkeitszufuhr bis hin zu Dehydrierung und vermehrter Staubentwicklung in der Umgebung.
Vernachlässigung sämtlicher hygienischer Maßnahmen wie Waschen, Duschen, Zähneputzen, verbunden mit erhöhtem Auftreten von Ungeziefer.
Abbruch jeglicher zwischenmenschlicher Beziehungen.
Lass es nicht so weit kommen und öffne ab und zu das Fenster, um zugewanderten Insekten das Verlassen des Zimmers zu ermöglichen und Frischluft und Sonnenlicht hereinzulassen. Um den oben genannten Effekten entgegenzuwirken, kannst du den Wecker stellen, damit du in regelmäßigen Zeitabständen zu einer Unterbrechung deiner Tätigkeit aufgefordert wirst. Ich möchte mich nach der Veröffentlichung dieses Buches nicht mit einer Beschwerdewelle konfrontiert sehen, die von erbosten Partnern oder vernachlässigten Freunden über mich hereinbricht. Sag also nicht, ich hätte dich nicht vor den Risiken gewarnt. Ich wünsche dir nun eine Menge Spaß und viel Erfolg beim Basteln mit deinem Arduino-Board!
Kapitel 1:
Arduino: Die Hardware
Wie in der Einleitung erwähnt, wurde das Arduino-Projekt in Ivrea (Italien) an der dortigen Kunsthochschule entwickelt. In einer Kneipe nahe der Hochschule trafen sich gelegentlich Massimo Banzi und David Cuartielles, die 2005 das erste Arduino-Board entwickelten. Die Kneipe war nach Arduin von Ivrea benannt, der um das Jahr 1000 König von Italien war. Arduino ist seitdem die Bezeichnung sowohl für die Software als auch für die Hardware dieses Open-Source-Projektes.
In diesem Kapitel werde ich auf die Arduino-Hardware eingehen. Dabei werde ich auch wichtige Grundbegriffe und -themen erklären, die für die Mikrocontroller-Technik insgesamt von Bedeutung sind. Ich erkläre ausführlich, welche Bauteile zu einem Mikrocontroller gehören. Diese Komponenten befinden sich praktisch in jedem Mikrocontroller-Board, deshalb gehe ich ausführlich darauf ein. Und nebenher frische ich deine Physikkenntnisse ein wenig auf, indem ich einige Grundbegriffe wie Spannung oder Strom behandle.
Ich werde in diesem Kapitel – wie auch im gesamten Buch – mit dem Arduino Uno-Board arbeiten. Das Arduino-Uno-Board war das erste Board, das von den Arduino-Machern entwickelt und produziert wurde. Weitere Arduino-Boards kamen dann später hinzu, die technisch etwas besser wurden. Was bedeutet eigentlich besser? Wenn man sich Kennwerte wie Prozessortakt oder verfügbarer Arbeitsspeicher als Entscheidungskriterium für den Kauf eines neuen Arduino-Boards aussucht, dann gibt es sicherlich Boards, die besser geeignet sind, weil sie schneller arbeiten und größere Programme speichern und verarbeiten können. Doch das ist eben nicht immer besser. Für einen geeigneten Einstieg in die elektronische Bastlerwelt ist das Arduino-Uno-Board eben in meinen Augen die bessere Wahl, weil es sehr robust ist und sehr weite Verbreitung gefunden hat.
Der Arduino Yún beispielsweise ist sicherlich ein interessantes Board, das einiges an Erweiterungen wie das Betriebssystem Linux bietet. Dennoch hat sich das Board in der Bastler- und Hobbywelt nicht so richtig durchgesetzt, vermutlich auch, weil der Raspberry Pi bereits auf dem Markt war, als Arduino Yún erschien. Scheller und mehr ist eben nicht zwangsläufig auch besser.
Dennoch möchte ich einige wirklich gute Arduino-Bords anführen:
Arduino Leonardo
Arduino Mega 2560
Arduino Nano
Die genannten Boards unterscheiden sich hinsichtlich ihrer 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 demselben Prinzip und können durch die einheitliche Arduino-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 diese sind recht klein und passen wunderbar in kleine Gehäuse. Sie kommen dort zur Anwendung, wo das Platzangebot beschränkt ist.
Das Universalgenie ist in meinen Augen jedoch der Arduino Uno und er wird es wohl noch eine lange Zeit bleiben. Er bietet eine ideale Plattform für den Einstieg in die Mikrocontroller-Welt. Für ihn finden sich im Internet auch die meisten Tutorials, Projekte und Diskussionen. Steigen die Ansprüche für deine Projekte, ist es kein Problem, sich ein weiteres 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:
Arduino Uno: https://www.arduino.cc/en/Main/ArduinoBoardUno
Arduino Mega: https://www.arduino.cc/en/Main/ArduinoBoardMega2560
Arduino Leonardo: https://www.arduino.cc/en/Main/ArduinoBoardLeonardo
Arduino Micro: https://www.arduino.cc/en/Main/ArduinoBoardMicro
Arduino Nano: https://www.arduino.cc/en/Main/ArduinoBoardNano
Es gibt noch weitere zahlreiche Arduino-Boards und Erweiterungen, die unter den folgenden Adressen zu finden sind:
Das Arduino-Uno-Board
Zu Beginn nehmen wir das Arduino-Board unter die Lupe. Auf der folgenden Abbildung habe ich einige der wichtigsten Komponenten auf der Platine markiert und beschriftet:
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äutere.
Abb. 1: Der Arduino Uno
Der Mikrocontroller
Der Mikrocontroller ist das Herzstück des ganzen Arduino-Boards. Er ist quasi das Rechenzentrum des Arduino-Boards. Beim Arduino Uno kommt der Atmel AVR-Mikrocontroller vom Typ ATmega328 zum Einsatz. In der vorigen Abbildung 1 ist es das große schwarze Bauteil mit den vielen Anschlüssen. Dieser Baustein wird von der amerikanischen Firma Microchip Technology Inc. hergestellt und ist in vielen Boards zu finden.
Hier eine kurze Übersicht der wichtigsten technischen Daten des Arduino Uno:
Tabelle 1: Ein paar nennenswerte Eckdaten des Arduino-Uno-Boards | |
Bezeichnung | Details |
---|---|
Mikrocontroller | ATmega328 |
Arbeitsspannung | 5V |
Eingangsspannung (empfohlen) | 7V bis 12V |
Eingangsspannung (Limit) | 6V bis 20V |
Digitale Ein-/Ausgabe-Pins | 14 (6 stellen PWM zur Verfügung) |
Analoge Eingänge | 6 |
DC Strom pro Ein-/Ausgabe-Pin | 40mA |
DC Strom für 3,3V-Pin | 50mA |
Flash-Speicher | 32 KByte (ATmega328) davon werden 0,5 KByte vom Bootloader genutzt |
SRAM | 2 KByte (ATmega328) |
EEPROM | 1 KByte (ATmega328) |
Taktrate | 16 MHz |
Weitere Detailinformationen sind unter der folgenden Adresse zu finden:
http://www.arduino.cc/en/Main/ArduinoBoardUno
Die Ein- und Ausgänge
Um mit einem Mikrocontroller zu kommunizieren, braucht man irgendeine Form der physikalischen Verbindung. Diese Ein- und Ausgänge am Arduino-Board nennt man Ports. Wie du aus der gezeigten Liste in Tabelle 1 entnehmen kannst, steht uns zur Kommunikation mit dem Arduino-Board eine bestimmte Anzahl von Ein- und Ausgängen 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:
Abb. 2: Die Ein- und Ausgänge des Arduino Uno
Du siehst hier den Mikrocontroller, der über bestimmte Schnittstellen mit uns kommunizieren kann. Manche Ports sind als Eingänge, andere als Ein- und Ausgänge vorhanden.
Was ist ein Port?
Ein Port ist ein definierter Zugangsweg zum Mikrocontroller, sozusagen eine Tür ins Innere, die wir nutzen können, um mit ihm zu kommunizieren. Einzelne Ein-/Ausgabe-Pins werden in der Regel in Ports organisiert, die meistens einem Register in einem Mikrocontroller zugeordnet sind, wobei ein Register einen bestimmten Speicherbereich darstellt.
Wirf noch einmal einen Blick auf das Board, und du wirst an der Ober- beziehungsweise Unterkante jeweils schwarze Buchsenleisten erkennen. Du wirst dich möglicherweise fragen, wie denn zum Beispiel bei den digitalen Ein- oder Ausgängen entschieden wird, welche als Eingäge und welche als Ausgänge arbeiten. Vielleicht arbeiten ja einige nur als Eingänge und andere wiederum nur als Ausgänge. Das würde das Ganze aber recht unflexibel machen und deswegen gibt es eine viel bessere Lösung. Und wie sieht es mit den analogen Ausgängen aus? Die fehlen hier komplett.
Beginnen wir mit den digitalen Pins, wobei ein einzelner Pin ein separater Anschluss eines Ports ist, der mehrere Pins in sich vereint. Wie den Spezifikationen zu entnehmen ist, verfügt der Arduino Uno über 14 digitale Ein-/Ausgabe-Pins, die abgekürzt I/O-Pins genannt werden, wobei I/O für Input/Output steht. Über die Programmierung kann jetzt sehr flexibel entschieden werden, welcher der 14 Pins als Eingang und welcher als Ausgang arbeiten soll. Dieser Vorgang wird Konfiguration genannt.
Doch nun zu den analogen Pins. Unser Arduino-Board ist nicht mit separaten analogen Ausgängen versehen. Das hört sich erst einmal recht merkwürdig an, doch bestimmte digitale Pins können als analoge Ausgänge genutzt werden. Du fragst dich bestimmt, wie das funktionieren soll. Ich greife etwas vor auf das, was im Bastelprojekt 1 ü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 unser 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 entsprechende Kapitel erreichen. Einen offensichtlich entscheidenden Nachteil hat diese Art der Portverwaltung schon. Verwendest du einen oder mehrere analoge Ausgänge, geht das zulasten 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. In den Spezifikationen wurde kurz der Begriff Bootloader erwähnt, was einer Erklärung bedarf.
Was ist ein Bootloader?
Ein Bootloader ist ein kleines Programm, welches auf dem Mikrocontroller ATmega328 einmalig installiert werden muss. Wird ein Arduino-Board gekauft, ist dieser Bootloader vom Hersteller schon vorinstalliert. Dieses Programm wurde in einem bestimmten Bereich des Flash-Speichers auf dem Mikrocontroller abgelegt und ist unter anderem für das Laden des eigentlichen Programms nach der Verbindung mit der Stromversorgung verantwortlich. Ist ein derartiges Programm vorhanden, wird es ausgeführt. Andernfalls wird so lange gewartet, bis es im Speicher abgelegt wird.
Der zur Verfügung stehende Flash-Speicher wird dadurch natürlich um die Größe des Bootloaders verkleinert. Normalerweise wird ein Mikrocontroller über eine zusätzliche Hardware, zum Beispiel einen ISP-Programmer, mit dem Arbeitsprogramm versehen. Durch den Bootloader entfällt diese Notwendigkeit, und so gestaltet sich der Upload der Software wirklich komfortabel. Nach dem erfolgreichen Übertragen des Arbeitsprogramms in den Arbeitsspeicher des Controllers wird es unmittelbar zur Ausführung gebracht. Angenommen, du müsstest deinen Mikrocontroller ATmega328 auf der Platine aus irgendeinem Grund austauschen, dann würde der neue Mikrocontroller nicht wissen, was zu tun wäre, da der Bootloader standardmäßig noch nicht geladen ist. Für diese Prozedur gibt es verschiedene Verfahren, die ich aus Platzgründen hier nicht erklären kann. Im Internet finden sich aber genügend Informationen, wie du den passenden Bootloader für den Mikrocontroller installieren kannst.
Die Spannungsversorgung
Fangen wir mit der Spannungsversorgung an, denn ohne die geht es wirklich nicht. Es gibt verschiedene Möglichkeiten. Wenn wir mit dem Arduino arbeiten oder ihn programmieren, dann ist natürlich eine USB-Verbindung zum Rechner notwendig. Diese Verbindung hat zwei Aufgaben:
die erforderliche Spannungsversorgung von 5V herzustellen und
einen Kommunikationskanal zwischen Rechner und Arduino-Board bereitzustellen.
Beide Punkte erfolgen über die silberfarbene USB-Buchse, die in der Abbildung mit USB-Anschluss bezeichnet ist. Wie der Anschluss genau aussieht, von welchem Typ er ist und wie die Installation der notwendigen Software vonstattengeht, sehen wir im nachfolgenden Kapitel. Für das Entwickeln und Testen von Programmen ist dieser Weg zum Board genau richtig. Jetzt gibt es aber noch eine zweite Buchse, die sich direkt rechts daneben befindet und hier mit Power-Anschluss gekennzeichnet ist. Dieser Anschluss wird benötigt, um das Arduino-Board nach der Programmierung unabhängig vom Rechner zu machen, über den es zuvor programmiert wurde. Was könnte ein Grund dafür sein, diesen Weg zu beschreiten? Ganz einfach! Angenommen, wir haben ein Roboterfahrzeug gebaut und der Arduino soll jetzt per Funk Befehle von einem Sender empfangen und entsprechende Fahraktionen ausführen. Da wäre ein USB-Kabel sehr hinderlich und würde den Aktionsradius sehr einschränken. Wir benötigen lediglich eine Spannungsversorgung für das Board und gegebenenfalls eine zusätzliche für die Motoren, denn die Programmierung ist abgeschlossen. Ganz nach dem NASA-Spruch beim Raketenstart: Guidance is internal. Der Arduino ist auf sich allein gestellt! Auf der folgenden Abbildung 3 sehen wir die Möglichkeit der externen Spannungsversorgung über eine 9V-Blockbatterie, was jedoch auf Dauer auch keine Lösung darstellt:
Abb. 3: Der Arduino Uno mit externer Spannungsversorgung über eine Batterie
Die vorgeschlagene Spannung sollte sich im Bereich von 7V bis 12V (DC = Direct Current/Gleichspannung) bewegen. Die beste Variante hinsichtlich einer externen Spannungsversorgung stellt ein Steckernetzteil mit einem 2,1mm-Plug dar, was für unter 10€ zu bekommen ist. Also sollte es zum Beispiel 9VDC/1A liefern:
Abb. 4: Eine Spannungsversorgung mit einem Steckernetzteil
Außerdem gibt es noch einen Pin mit dem Namen Vin, der ebenfalls zur Spannungsversorgung genutzt werden kann. Detailinformationen sind unter den folgenden Adressen zu finden:
Grundbegriffe verstehen
Apropos Spannungsversorgung. Was ist eigentlich Spannung und wie kommt sie zustande? Wir haben auch noch nicht über Strom gesprochen. Du kannst jetzt deine Elektronikgrundkenntnisse auffrischen, das kann dir mehr Möglichkeiten mit deinem Arduino eröffnen.