Grundlegende Begriffe

Hardware

Wenn du mit etwas Neuem beginnst, dann kommt es vor, dass du über Begriffe stolperst, die du noch nie zuvor gehört hast. Ziel dieses Tutorials ist die grundlegenden Begriffe zu erklären, die dir begegnen werden, sobald du in die Arduino-Programmierung einsteigst. Bereit zu lernen, was ein Mikrocontroller eigentlich ist? Los gehts!

Arduino

Beginnen wir mit dem Begriff "Arduino" selbst. Wenn jemand "Arduino" sagt, dann meint er damit meist ein bestimmtes Board, den Arduino Uno. Arduino selbst ist viel mehr als nur dieses Board. Die Arduino-Plattform umfasst Hardware und Software sowie eine riesige Community mit reichlich Projektideen. Was ist das Besondere an Arduino? Warum ist es so beliebt? Die Arduino-Plattform wurde bewusst einfach designt. Traditionell benötigt man ein separates Gerät, einen Programmieradapter, um ein Programm auf einen Mikrocontroller hochzuladen. Für verschiedene Mikrocontroller benötigen man möglicherweise auch verschiedene Programmieradapter. Um tatsächlich ein Programm zu schreiben und dieses auf dem Mikrocontroller zu nutzen, musste man oft das Softwarepaket des Herstellers kaufen oder manuell eine Toolchain zum Kompilieren der Programme einrichten. Mit dem Arduino ist das nicht nötig. Arduino-Boards werden über USB mit dem Computer verbunden und programmiert, ohne dass zusätzliche Hardware erforderlich ist. Mit der kostenlosen Arduino IDE können eigene Programme geschrieben, kompiliert und auf das Arduino-Board hochladen werden. Darüber hinaus versucht Arduino, eine möglichst einheitliche Umgebung zum Programmieren verschiedener Mikrocontroller anzubieten. Bei der Programmierung wird eine einfach zu nutzende Sammlung an vordefinierten Funktionen genutzt, die sich größtenteils unabhängig vom eingesetzten Board nutzen lassen. Es ist also verhältnismäßig einfach sich in neue Boards einzuarbeiten und bestehende Programme auf das neue Board zu migrieren. Diese Konzepte machen Arduino so beliebt.

Die originalen Arduino-Boards werden in Italien hergestellt. Auf arduino.cc findest du alles, was du über die Boards wissen musst. Die Board-Layouts sind öffentlich verfügbar und die Software ist ebenfalls Open Source. Auf diese Weise können andere Hersteller ihre eigenen Arduino-Boards herstellen und in die Arduino IDE integrieren. Wenn du willst, könntest du dir also deinen eigenen Arduino bauen.

Arduino IDE

IDE steht für integrierte Entwicklungsumgebung. Eine IDE integriert alle Softwarekomponenten, die zum Schreiben, Kompilieren und Hochladen des Codes auf den Mikrocontroller erforderlich sind. Die Arduino IDE ist ein relativ einfach gehaltener Editor. Syntaxhervorhebung wird unterstützt, weitergehende Features wie beispielsweise Codevervollständigung waren bisher nicht verfügbar. Mit der kommenden Arduino IDE Version 1.9 wird diese Funktion endlich integriert. Die Arduino IDE lässt sich nicht mit professionellen IDEs wie Visual Studio oder Eclipse vergleichen, aber sie enthält alles, was du für den Einstieg benötigst. Sie enthält Compiler und Treiber für die von Arduino selbst produzierten Boards. Bibliotheken und Compiler für Boards verschiedener Hersteller können über den integrierten Board Manager installiert werden. Du kannst deine Programme in der IDE schreiben und dann direkt aus der IDE auf das Board hochladen.

Arduino Uno

Der Arduino Uno ist das bekannteste Arduino-Board. Die meisten Projekte und auch zusätzliche Hardwarekomponenten wie Arduino Shields nutzen dieses Board. Das Herzstück des Arduino Unos ist der ATMega328P-Mikrocontroller mit 32 KB Flash, 1 KB EEPROM und 2 KB RAM. Er wird mit einer Spannung von 5 V und 16 MHz Taktrate betrieben. Es wird kein Betriebssystem genutzt und es kann auch nur ein einziges Programm auf dem Arduino Uno ausgeführt werden. Der 32 KB-Flash wird zur Ablage des Programms verwendet, während das EEPROM zum Speichern von Konfigurations- oder Messdaten verwendet werden kann. Das EEPROM kann flexibler als der Flash genutzt werden und lässt sich zudem öfters beschreiben. Vielleicht werde ich diesen Unterschied in einem späteren Tutorial noch etwas detaillierter erläutern. Im Moment reicht es zu wissen, dass dein Programm in den 32 KB großen Flashspeicher geladen wird und von dort ausgeführt wird.

Angesichts des geringen Speicherplatzes und der geringen RAM-Größe, fragst du dich vielleicht, warum jemand eine Plattform mit dieser geringen Leistung verwenden möchte. Hier kommt die Erklärung, was einen Mikrocontroller von einem PC oder einem Raspberry Pi unterscheidet. Dein PC, aber auch ein Raspberry Pi sind viel leistungsfähiger und verfügen über mehr RAM und Speicherplatz. Es gibt auch weniger leistungsstarke Mikroprozessoren, aber eines haben sie mit deinem PC oder einem Raspberry Pi gemeinsam: RAM und Speicher werden über einen externen Bus mit dem Prozessor verbunden. Mikrocontroller besitzen einen integrierten RAM und Speicher. Noch wichtiger ist jedoch, dass sie auch E/A-Bausteine integrieren. Der Arduino Uno enthält Analog-Digital-Wandler (ADCs) sowie digitale Ein- und Ausgänge, die per Software gesteuert werden können. Die Fähigkeit, Dinge über die integrierten E/A-Bausteine zu steuern (engl. control), gibt Mikrocontrollern ihren Namen. Zusammenfassend lässt sich sagen, dass Mikrocontroller zwar weniger Rechenleistung haben, aber alles enthalten, was zur Steuerung externer Komponenten und Schaltkreise erforderlich ist. Schauen wir uns an, was der Arduino Uno zu bietet hat.

Schematische Darstellung eines Arduino mit beschrifteten Komponenten

Spannungsversorgung

Normalerweise wird der Arduino Uno über den USB-Anschluss mit Strom versorgt. Es gibt jedoch auch die Möglichkeit, die DC-Buchse zu verwenden. Sie wird typischerweise verwendet, um den Arduino Uno mit einer 9-V-Batterie zu versorgen. Über die DC-Buchse kann der Arduino mit einer Spannung zwischen 7 V und 12 V versorgt werden.

USB-zu-Seriell-Konverter

Das Arduino Uno verwendet einen USB-zu-Seriell-Konverter, da der ATMega328P selbst kein USB unterstützt. Der Konverter wird verwendet, um vom PC aus mit dem Arduino zu kommunizieren. Du kannst ihn in Verbindung mit dem seriellen Monitor in der Arduino IDE verwenden. Der Konverter wird ebenfalls verwendet, um den Arduino Uno zu programmieren. Warum erzähle ich all dies? Normalerweise arbeitet der Konverter im Hintergrund und du bemerkst ihn gar nicht. Möglicherweise ist es aber erforderlich einen Treiber auf deinem PC installieren, um ihn verwenden zu können. Ein fehlender Treiber kann der Grund sein, warum du deinen Arduino Uno nicht vom PC aus programmieren kannst. Aber keine Sorge, ich werde dir im nächsten Tutorial zeigen, wie du die Arduino IDE und die erforderlichen Treiber installierst.

Pins

Der Arduino Uno verfügt über vierzehn digitale und sechs analoge Pins. Der Begriff "Pin" heiß übersetzt "Stift" und bezieht sich auf die Metallstifte, die aus dem Mikrocontroller herausgeführt sind. Sie sind mit dem eigentlichen Chiplet im Kunststoffgehäuse verbunden und ermöglichen den Anschluss an externe elektronische Komponenten. Alle Pins können als digitaler Ein- oder Ausgang verwendet werden. Digitale Pins erlauben nur zwei Zustände, die als "High" und "Low" oder 1 und 0 bezeichnet werden. Du kannst einen Pin als Ausgang verwenden und ihn über dein Programm entweder mit 0 V oder 5 V verbinden, wobei der 0 V-Zustand als "Low" und der 5 V-Zustand als "High" bezeichnet wird. Der Arduino Uno erlaubt einen Strom von 40 mA pro Pin, jedoch insgesamt nicht mehr als 200 mA.
Du kannst einen Pin auch als Eingang nutzen. In diesem Fall wird eine Spannung unter 0,5 V als 0 und eine Spannung über 4,5 V als 1 gelesen. Eine Spannung im Bereich dazwischen erzeugt ein undefiniertes Ergebnis und wird entweder als 1 oder 0 gelesen. Dies ist eine Falle, in die du beispielsweise tappst, wenn sie einen Taster direkt an einen Eingangspin des Arduino anschließt. Solange der Taster gedrückt wird, ist der Pin mit 0 V, also dem Minuspol verbunden und alles ist gut. Sobald der Taster aber losgelassen wird, ist der Pin überhaupt nicht mehr verbunden. Er ist weder an 0 V noch an 5 V angeschlossen. Dies wird als "Floating Pin" bezeichnet. In deinem Programm liest du jetzt manchmal 0 und manchmal 1. Ein solcher Fehler kann einen verrückt werden lassen, wenn der Code dadurch nicht wie vorgesehen funktioniert. Um diese Situation zu vermeiden, besitzt der Arduino einen internen 20-50 kΩ Pull-up-Widerstand, der genutzt werden kann, um die Spannung des Pins auf 5 V ziehen, wenn die Taste nicht gedrückt wird. Mit dem Pull-up-Widerstand werden wir uns im Tutorial zu den digitalen Eingängen des Arduinos noch einmal genauer beschäftigen.

Mit den sechs analogen Pins können Spannungen zwischen 0 V und 5 V gemessen werden. Dieser Spannungswert wird in eine Zahl zwischen 0 und 1023 umgewandelt, wobei 0 0 V und 1023 5 V entspricht. Wenn du keine stabile 5-V-Versorgungsspannung hast, kannst du auch die interne 1,1 V-Referenzspannung verwenden und so Spannungen zwischen 0 V und 1,1 V messen. Dies kann verwendet werden, um die aktuelle Batteriespannung zu bestimmen.

Es gibt außerdem noch einige spezielle Pins. Die beiden I²C-Pins SDA und SCL ermöglichen den Anschluss digitaler Sensormodule an den Arduino Uno. Die UART-Pins (RX und TX) kannst du zur Kommunikation mit anderen Arduinos, einem Raspberry Pi oder einer ähnlichen Boards nutzen, so wie du über den USB-Seriell-Konverter mit deinem PC kommunizieren kannst. Auf dem Arduino Uno befindet sich auch eine integrierte LED. Sie ist an Pin D13 angeschlossen.

Shields und Module

Wenn du mehr als nur die integrierte LED blinken lassen möchtest, ohne eigene Schaltkreise auf einem Breadboard zu entwerfen, kannst du Shields und Module nutzen. Shields sind Erweiterungsboards mit zusätzlichen Komponenten, die sich einfach auf den Arduino gesteckt werden können. Die Pins des Shields passen genau in die Buchsenleisten deines Arduino-Boards. Module sind eine weitere Möglichkeit, externe Komponenten an deinen Arduino-Board anzuschließen. Ein Modul ist eine Leiterplatte, auf die bereits alle nötigen Komponenten für einen Sensor oder Aktor aufgelötet sind. Um es mit deinem Arduino zu verwenden, musst du es lediglich mit ein paar Kabeln verbinden. Module und Shields enthalten normalerweise eine Beschreibung, wie du sie verkabelst und einsetzt. Im Internet findest du die notwendigen Informationen zu deinen Modulen und Shields. Auch ich werde in zukünftigen Tutorials einige Module vorstellen und dir zeigen, wie du sie nutzt.

Vorheriger Beitrag Nächster Beitrag