Arduino® – praktische Mikrocontroller für individuelle Schalt- und Steueraufgaben
Seit August 2021 ist Conrad Electronic offizieller Arduino® Vertriebspartner. Damit haben wir nun die besten Voraussetzungen für eine optimale und kontinuierliche Warenverfügbarkeit.
Denn wir beziehen nun das aktuelle Sortiment, die neuesten Produkte und auch interessante Informationen direkt aus erster Hand. Davon profitieren nun alle, die Arduino bereits erfolgreich einsetzen oder erst noch einsetzen möchten.
Was einst als Experimentierprojekt für elektronikbegeisterte Menschen begonnen hat, zeichnet sich nun immer mehr auch als professionelle Lösung für industrielle Anwendungen ab.
Somit ist es nicht verwunderlich, dass bereits viele Leute den Namen Arduino gehört haben. Aber nicht alle wissen so ganz genau, was sich dahinter verbirgt.
Wenn dann noch von Mikrocontroller, Projekt, Plattform, Sketches, Shields und Sensoren gesprochen wird, ist die Verwirrung perfekt. Aus diesem Grund wollen wir einfach und anschaulich erklären, was ein Arduino-Mikrocontroller ist. Zudem möchten wir aufzeigen, welche scheinbar grenzenlosen Möglichkeiten beim Einsatz zur Verfügung stehen. Und das Beste: Es ist alles weit weniger kompliziert, als es sich im ersten Moment anhört.
Vereinfacht gesagt ist Arduino ein Steuersystem, bei dem die Ausgänge je nach Programmierung und in Abhängigkeit der Eingänge reagieren. Dadurch ist es möglich, bestimmte Abläufe automatisch zu steuern. Das reicht von einer simplen LED-Schaltung bis hin zu einer komplexen Maschinensteuerung.
Derartige Funktionen sind zum Beispiel bei einer Kaffeemaschine erforderlich, bei der bestimmte Abläufe in Abhängigkeit von Sensorwerten stehen. Denn erst wenn der Kartenscanner oder der Sensor im Münzprüfer eine Freigabe erteilt hat, wird das Auswahlmenü angezeigt. Der gewünschte Milchkaffee kann aber nur dann ausgewählt werden, wenn der Sensor bei den Kaffeebohnen und der Sensor im Milchbehälter bestätigen, dass die Behälter nicht leer sind.
Was im Prinzip recht einfach klingt, benötigt für die Umsetzung einen Arduino Mikrocontroller und einiges an technischem Knowhow. Der erste Arduino mit einem ATMEL ATmega8 Controller wurde im Jahr 2005 von Massimo Banzi und David Cuartielles in Italien entwickelt. Der Name „Arduino“ stammt von einer Bar in Ivrea, in der sich die Projektgründer gewöhnlich trafen.
Ein Arduino besteht grundsätzlich aus zwei Komponenten. Einmal die Hardware, also das Arduino-Board, und einer Software (Arduino-IDE), mit deren Hilfe das individuelle Schalt- oder Steuerprogramm (Sketch) erstellt wird. Da die Arduino-Boards als auch die Arduino Software als "Open Source Systeme" quelloffen sind, können anwendende Personen beides individuell an ihre Bedürfnisse anpassen.
Der Name Arduino bezeichnet nicht ein bestimmtes Board oder einen bestimmten Controller. Vielmehr bezeichnet Arduino eine komplette Produktfamilie bzw. die Marke. Anhand des Arduino Uno Bords möchten wir zunächst den Aufbau etwas näher erläutern.
Die wesentlichen Bestandteile eines Arduino-Boards
1. USB-Buchse
An diese Buchse wird ein USB-Kabel angeschlossen, um das individuelle Steuerprogramm auf den Arduino zu übertragen.
2. Reset-Taster
Mit diesem Taster kann der Arduino manuell zurückgesetzt werden, falls er aufgrund einer Störung nicht mehr selbsttätig läuft.
3. ICSP-Schnittstelle (USB-Interface)
Mit einer ICSP-Schnittstelle (In Circuit Serial Programming) lässt sich eine logische Schaltung direkt im Einsatzsystem programmieren.
4. I²C-Bus
Bei einem I²C-Bus werden Daten über die Leitungen SCL (Serial Clock) und SDA (Serial Data) vom Master zu den angeschlossenen Slaves übertragen.
5. Eingebaute LED
Die LED „L“ ist intern mit dem PIN 13 verbunden und dient zu Testzwecken.
6. Digitale Ein-/Ausgänge
Diese I/O Pins können als digitale Ein- oder Ausgänge konfiguriert werden. Sechs davon arbeiten bei Bedarf als pulsweitenmodulierte PWM-Ausgänge .
7. Anzeige LEDs
Die LEDs „RX“ und „TX“ zeigen die Datenübertragung vom PC zum Arduino UNO optisch an.
8. Betriebsspannungs-LED
Die LED „ON“ signalisiert die Spannungsversorgung des Mikrocontroller Boards. Sie leuchtet, wenn das Board mit Spannung versorgt wird.
9. Oszillatorquarz (Controller)
Der Quarz sorgt dafür, dass der Oszillator im Controller stabil und mit der immer gleichbleibenden Frequenz schwingt.
10. ICSP-Schnittstelle (Controller)
Über diese Schnittstelle könnte bei Bedarf der Controller programmiert werden. Da dies aber bereits ab Werk erfolgte, ist das in der Regel nicht erforderlich.
11. Mikrocontroller
Ein Mikrocontroller ist ein Halbleiterchip, in dem Prozessor, Peripherie und Speicher vereint sind. Teilweise werden sie auch SoC (System-on-a-Chip) bezeichnet.
12. Analoge Eingänge
Wenn als Eingangswerte analoge Spannungen von z.B. Sensoren zur Verfügung stehen, müssen diese sechs Eingänge genutzt werden.
13. Power-Pins
An diesen Pins können dem Mikrocontroller-Board Spannungen zugeführt werden oder auch Spannungen wie 3,3 V oder 5 V abgegriffen werden.
14. Gleichrichterdiode
Damit an der Netzteilbuchse sowohl Gleichspannung als auch Wechselspannung angelegt werden kann, ist eine Gleichrichterdiode vorhanden.
15. Ladekondensatoren
Die Ladekondensatoren glätten die Versorgungsspannung. Ein Kondensator ist vor dem 5 V Spannungsstabilisator geschaltet und ein Kondensator danach.
16. Netzteilanschluss
Damit das Mikrocontroller-Board nach der Programmierung auch ohne USB-Anschluss lauffähig ist, muss es über ein externes Netzteil zu versorgt werden.
17. Spannungsstabilisator
Der Spannungsstabilisator erzeugt aus der Netzteilspannung, die zwischen 7 und 12 V (AC oder DC) liegen sollte, eine stabile Spannung von 5 V.
18. Oszillatorquarz (USB-Controller)
Der Quarz sorgt dafür, dass der Oszillator im USB-Controller stabil und mit der immer gleichbleibenden Frequenz schwingt.
19. USB-Interface
Das USB-Interface wandelt die Signale, die über die USB-Schnittstelle eingespeist werden, in ein für den Controller passendes Format um.
Ein Controller mit diversen Ein- und Ausgängen ist im Prinzip bei jedem Arduino-Board vorhanden. Je nachdem, welcher Controller verwendet wird, gibt es eine grössere oder kleinere Anzahl an Aus- und Eingängen bzw. Anschlussmöglichkeiten. Zudem sind die Platinen der Arduino-Boards so aufgebaut, dass über die Steckbuchsen (Header) noch Ergänzungsplatinen (Shields) aufgesteckt werden können. Dadurch wird ein stapelbares System erreicht, das ohne grossen Verdrahtungsaufwand aufgebaut werden kann.
Die wohl beliebteste Arduino-Plattform ist das Board Arduino Uno. Doch neben dem Arduino Uno gibt es noch viele weitere Microcontroller-Boards von Arduino. Denn genauso vielfältig wie die unterschiedlichen Anwendungsszenarien, ist auch die Produktvielfalt bei den Arduino-Mikrocontroller Boards. Für die einfache Übersicht haben wir einige aktuelle und beliebte Boards in einer Tabelle zusammengefasst:
Übersichtstabelle der beliebtesten Arduino-Boards
Mikro- Controller |
CPU | Analoge Eingänge |
Digitale Ein- /Ausgänge |
Flash- Speicher |
Betriebs- spannung |
Abm. (L x B) |
|
---|---|---|---|---|---|---|---|
Arduino Zero | ATSAMD21G18 | 32-bit | 6 | 20 (davon 10 PWM) | 256 kB | 3,3 V | 68,6 x 53,4 mm |
Arduino Uno R3 | ATmega328P | 8-bit | 6 | 14 (davon 6 PWM) | 32 kB | 5 V | 68,6 x 53,4 mm |
Arduino Due | ATmelSAM3X8E | 32-bit | 12 | 54 (davon 12 PWM) | 512 kB | 3,3 V | 101,5 x 53,3 mm |
Arduino Mega 2560 | ATmega2560 | 8-bit | 16 | 54 (davon 15 PWM) | 256 kB | 5 V | 101,5 x 53,3 mm |
Arduino Leonardo | ATmega32u4 | 8-bit | 12 | 20 (davon 7 PWM) | 32 kB | 5 V | 68,6 x 53,4 mm |
Arduino Micro | ATmega32u4 | 8-bit | 12 | 20 (davon 7 PWM) | 32 kB | 5 V | 48,3 x 17,8 mm |
Arduino Nano | ATmega328 | 8-bit | 8 | 22 (davon 6 PWM) | 32 kB | 5 V | 45 x 18 mm |
Bei den einzelnen Typen gibt es zudem noch unterschiedliche Versionen, die sich in der Bauausführung bzw. in der Ausstattung unterscheiden. So gibt es zum Beispiel den Arduino Uno in einer SMD-Ausführung oder mit WiFi-Modul. Aber auch bei dem Micro und Nano gibt es unterschiedliche Exemplare mit abweichenden technischen Daten.
Unsere Produktempfehlungen
Arduino MKR
Arduino hat mit Arduino MKR eine eigene Arduino-Reihe speziell für Maker entwickelt.
Neben den vielfältigen Schalt- und Steueraufgaben liegt der Schwerpunkt von Arduino MKR in den Kommunikationsmöglichkeiten der Boards und Shields.
Diese reichen von SigFox für IoT-Anwendungen und WiFi für die drahtlose Netzwerkeinbindung bis hin zu zur Nutzung des GSM-Netzes.
Arduino PRO
Mit Arduino Pro hat Arduino ein leistungsstarkes System, das u. a. für komplexe Industrieanwendungen, Robotik und intelligente Maschinensteuerungen ausgelegt ist.
Entsprechend aufwändig und leistungsstark sind auch die Boards, wie z.B. das Portenta H7 mit einem Doppelkernprozessor, der komplexe Aufgaben in Echtzeit abarbeiten kann.
In Verbindung mit der Arduino IoT-Cloud ist eine zentrale Steuerung problemlos möglich.
Arduino Education
Für die Ausbildung hat Arduino auch das Bildungsprogramm Arduino® Education ins Leben gerufen. Anhand von verschiedenen Projekten wird so ein schneller und einfacher Einstieg in die Programmierung von Arduino-Boards erlernt.
Die Education-Produkte werden speziell für weiterführende Schulen, Berufsschulen sowie für Hochschulen entwickelt. Das durchgängige Lernkonzept soll Pädagogen bei der Wissensvermittlung der Themen Programmierung, Elektronik, Elektrotechnik und Mechatronik mit didaktischem Material und praktischen Kits unterstützen.
Deshalb sind die Education Kits individuell auf das Lernziel bzw. die Schülergruppe abgestimmt.
Für die Programmierung des Arduino-Boards wird die Software Arduino IDE benötigt. Die Arduino Software ist einerseits für Leute mit wenig Erfahrung leicht zu bedienen und bietet auf der anderen Seite erfahrenen Personen die erforderliche Fexibilität, um die geplanten Vorhaben perfekt umsetzen zu können. Die Arduino Software steht auf der offiziellen Arduino-Webseite für Windows, iOS oder Linux zum Download zur Verfügung. Alternativ dazu ist auch umfangreiche Fachliteratur erhältlich.
Anhand einer kleinen Aufgabe wollen wir auf die Funktionen der Software Arduino Desktop IDE eingehen und ein kleines und einfaches Arduino-Programm (Sketch) erstellen. Ziel ist es, ein automatisch startendes Lauflicht mit 10 LEDs zu erstellen. Durch den automatischen Start ist es nicht erforderlich, einen der Eingänge zu beschalten.
Aufbau der Testschaltung
Bevor es an die Programmierung geht, muss die Hardware aufgebaut werden. Für unser Testbeispiel dient ein Arduino Mega 2560. Es würde aber auch jedes andere Board funktionieren. Für die Ansteuerung der 10 LEDs werden die digitalen Ein-/Ausgänge 2 – 11 verwendet.
Für den physikalischen Aufbau der Schaltung hat sich eine kleine Steckplatine als ideal erwiesen. Da die LEDs nicht für eine Betriebsspannung von 5 V ausgelegt sind, muss zu jeder LED noch ein 220 Ω Widerstand in Serie geschaltet werden, um den Strom und damit auch die Spannung für die LED zu begrenzen. Dabei spielt es keine Rolle, ob der Widerstand vor oder nach der LED eingebaut wird.
Lediglich bei der LED muss darauf geachtet werden, dass die jeweils Anode mit dem digitalen Ein-/und Ausgang des Boards verbunden wird. Der gemeinsame Masseanschluss wird mit dem Anschluss GND des Boards verbunden. Damit ist der Aufbau der Testschaltung schon erledigt.
Da die Stromversorgung über den USB-Anschluss erfolgt, muss für unsere Testschaltung kein externes Netzteil angeschlossen werden.
Erstellen des Steuerprogramms
Software einstellen
Nach der Installation der Software muss unter dem Menüpunkt "Werkzeuge" das vorliegende Board und die verwendete Schnittstelle eingestellt werden.
Im Menü „Datei“ sind im Ordner „Beispiele“ einige Sketches zu finden, die bei Bedarf aufgerufen und gleich zum Arduino-Bord übertragen werden können.
In unserem Beispiel hingegen geht es darum, selber ein kleines Programm zu erstellen.
Die dafür notwendigen Befehle und die dazugehörigen Erklärungen sind auf der Arduino-Seite zu finden.
Definition der Ausgänge
In der ersten Zeile wird definiert, wie viele LEDs angesteuert werden sollen und welche physikalischen Anschlüsse (Pins) für die Ansteuerung der LEDs verwendet werden.
In unserem Fall werden die Anschlüsse 2 – 11 beschaltet.
Der nachfolgende Bereich besteht aus zwei Kernfunktionen, dem Setup und dem Loop.
Der Setup-Bereich wird lediglich einmal beim Start des Programms gelesen und ausgeführt.
Der nachfolgende Loop-Bereich hingegen, wird in ständig wiederkehrender Folge ausgeführt.
Setup
Im Setup-Bereich des Sketches muss definiert werden, dass die Pins 2 bis 11 als Output-Pins fungieren und demzufolge für die 10 LEDs (mit der Nummerierung 0 – 9) eine Spannung ausgegeben werden soll.
Dies könnte mit den Befehlen erfolgen:
pinMode (LEDPins[0],Output); für die 1. LED
pinMode (LEDPins[1],Output); für die 2. LED
·
·
pinMode (LEDPins[9],Output); für die 10. LED
Da dies viel zu umständlich ist, wurde eine „for“-Schleife angelegt, bei der die Variable „i“ für Index mit dem Startwert Null und der Abbruchbedingung kleiner 10 definiert wurde. Der Wert i++ sorgt dafür, dass pro Schleife der Wert „i“ um eins erhöht wird. Danach ist für die Zuordnung der zehn Pins nur noch eine Zeile im Code erforderlich:
pinMode (LEDPins[i],Output);
Loop
Auch im Loop-Bereich wird zu Beginn die „for“-Schleife genutzt, um die Eingaben nicht für jede einzelne LED machen zu müssen.
Mit den Befehlen:
digital Write (LEDPins[i],HIGH);
delay(100)
werden entsprechend der zuvor definierten Schleife die 10 LEDs nacheinander für 100 ms eingeschaltet. Durch eine Veränderung des Delay-Wertes kann die Leuchtdauer der LED und somit die Geschwindigkeit des Lauflichtes definiert werden.
Die Ausschaltung der LEDs erfolgt mit den Befehlen:
digital Write (LEDPins[i],LOW);
delay(0)
Durch den Verzögerungswert 0 schaltet sich sofort die nächste LED ein, wenn die vorherige erlischt. Es kann aber auch ein beliebiger Wert für eine Leuchtpause eingegeben werden.
Da das Lauflicht aber nicht nur in eine Richtung arbeiten soll, muss im nächsten Schritt die Leuchtreihenfolge umgedreht werden. Da bei der Änderung der Laufrichtung die jeweils äussere LED nicht doppelt angesteuert werden soll, umfasst die für den Rücklauf erforderliche Schleife lediglich die LEDPins 8 (i=8) bis 1 (i>0) und schaltet die LEDs in umgkehrter Reihenfolge (i--).
Die Ansteuerung der LEDs mit den Delay-Zeiten erfolgt nach demselben Schema wie beim Hinlauf.
Übertragen des Steuerprogramms auf den Arduino
Zum Abschluss kann der Sketch mit der kreisrunden Schaltfläche und dem nach rechts gerichteten Pfeil auf das Arduino Board übertragen werden.
Während der Übertragung blinken die beiden LEDs RX und TX am Board und anschliessend beginnt das Lauflicht zu arbeiten.
Sollte der Sketch einen Fehler haben, wird das beim Versuch einer Übertragung gleich angezeigt.
Da die Loop-Schleife ständig wiederholt wird, läuft das Lauflicht so lange, bis die Spannungsversorgung des Arduino-Boards abgeschaltet wird.
Mit unserem einfachen Programmierbeispiel haben wir versucht, das unglaubliche Potential von programmierbaren Microcontrollern aufzuzeigen. Um der scheinbar grenzenlosen Anwendungsvielfalt gerecht zu werden, gibt es die Arduino-Boards in den unterschiedlichsten Ausführungen mit einer Vielzahl von Anschlussmöglichkeiten. Aufsteckbare Zusatzmodule (Shields) mit Sensoren oder für die Motorsteuerung bzw. ein Ethernet Shield erweitern im Nu die Funktionen. Ohne aufwändige Verkabelung ergibt sich so ein stapelbares Entwicklerboard bzw. eine kompakte Steuerung. Damit erfüllt die Hardware alle Voraussetzungen für eine zielgerichtete und trotzdem flexible Entwicklungsumgebung.
Genauso einfach und flexibel ist auch die Software zur Programmierung gehalten. Wie am gezeigten Beispiel zu erkennen ist, reichen einige Zeilen aus, um ein individuell einstellbares Lauflicht mit 10 LEDs zu erstellen. Die Herausforderung liegt dabei in der Erstellung des Programmcodes (Sketch). Deshalb bieten bereits viele Schulen Programmier-Kurse an, damit aus den Schülerinnen und Schülern von heute die entwickelnden Fachleute von morgen werden.
Mittlerweile haben auch die Verantwortlichen in den Firmen das Potential erkannt und setzen verstärkt Arduino-Boards für Steuerungslösungen ein. Der grosse Vorteil liegt darin, dass junge Leute ihre bereits in den Schulen erworbenen Vorkenntnisse bezüglich Anwendung und Programmierung unverzüglich in anstehende Projekte einbringen können.
Aber auch quereinsteigende Elektronik-Fans sollten sich nicht abschrecken lassen, die ersten Erfahrungen mit programmierbaren Controllern zu machen. Dafür sind Starter-Kits bestens geeignet. Im Internet finden sich zudem unzählige Anregungen für Projekte, die mit Arduinos oder kompatiblen Boards gelöst werden. Und in der Arduino-Community, mit mehr als 28 Millionen teilnehmenden Menschen, tummeln sich reichlich kompetente Personen, die bei speziellen Fragen zur Arduino Software, Boards und Sensoren gerne weiterhelfen.