Suchen

Einstieg in Arduino für Software-Entwickler

| Autor / Redakteur: Mirco Lang / Stephan Augsten

Das Arduino-Universum mag für Software-Entwickler auf den ersten Blick nur nach schmutzigen Händen und dem Gestank von Lötzinn aussehen. Aber ein Blick lohnt sich, der Einstieg ist simpel und es gibt auch beliebtere Buzzwords wie C++ oder Python.

Dank der Arduino-Plattform erhalten Entwickler einen schönen Einblick in die Welt der Hardware-nahen Programmierung.
Dank der Arduino-Plattform erhalten Entwickler einen schönen Einblick in die Welt der Hardware-nahen Programmierung.
(Bild: Daniel Andrade / Unsplash)

Für den Einstieg in die Hardware-Programmierung muss man sich heute nicht mehr zwangsläufig mit Assembler, Registern und Speicherverwaltung auseinandersetzen. Mit Arduino genügt es, C++, Python oder gar JavaScript in Grundzügen zu beherrschen. Und damit dürfte für Software-Profis bereits ein Großteil der Aufgaben vertraut sein.

Auf der unbekannten Seite gibt es aber deutlich mehr abzuklären, angefangen damit, was Arduino überhaupt ist. Zu den größten Missverständnissen hat vermutlich die Nicht-Konkurrenz Raspberry Pi beigetragen.

Zwar werden beide Geräte gerne in ein und demselben Atemzug genannt, im Grund habe sie aber kaum etwas gemein. Der RasPi ist schlicht und ergreifend ein kleiner Computer auf einer einzelnen Platine – plus einige GPIO-Pins, also frei belegbare Ein-/Ausgabe-Kanäle.

Arduino meint hingegen das, was noch am ehesten als Microcontroller bezeichnet wird. Die Hauptattraktion sind hier die GPIO-Pins. Auf einem Raspberry Pi würde zum Beispiel ein Linux als Betriebssystem laufen und darüber eine Anwendungssoftware, die die Signale der GPIO-Pins verarbeitet. Beim Arduino läuft diese Anwendung direkt als Firmware auf der Hardware. Das Flashen läuft einfach über einen Upload aus der IDE heraus.

Diese kleine Arduino-Serie besteht aus drei Teilen: In diesem ersten Teil erfahren Sie, was es überhaupt mit Arduino auf sich hat, wie der grundsätzliche Arbeitsablauf aussieht, was sich mit Arduino anstellen lässt und natürlich, warum Sie als Software-Entwickler sich überhaupt damit befassen sollten. In den Teilen zwei und drei werden dann zwei bereits erwähnte Aspekte beleuchtet: Boards und IDEs. Denn es gibt Dutzende Boards mit unterschiedlichen Fähigkeiten, Dritthersteller und IDEs, die weit mehr können als die extrem simple Arduino-eigene Entwicklungsumgebung.

Was ist Arduino?

Es gibt nicht den einen Arduino. Arduino ist eine Plattform bestehend aus jeweils offenen Hard- und Softwarespezifikationen. Auf Produktseite heißt das: Es gibt eine offizielle IDE, über 20 verschiedene Boards im Preisbereich knapp 10 bis knapp 70 Euro, rund 20 so genannte Shields (Erweiterungen für die Boards) plus ein wenig Zubehör.

Da es sich um offene Spezifikationen handelt, gibt es die Bauteile nicht nur von Arduino selbst, sondern auch von Drittanbietern wie Elegoo, AZDelivery, Sunfounder und so weiter. Und so lässt sich das populärste Arduino-Board Uno für 20,00 Euro offiziell im Shop oder auch für unter 6 Euro bei Drittanbietern beziehen. Layout und Kompatibilität sind selbstverständlich identisch, bei der Verarbeitungsqualität gibt es aber durchaus Unterschiede, selbst bei einfachsten Bauteilen.

Der Arduino Uno ist das 20-Euro-Standard-Board im Arduino-Universum.
Der Arduino Uno ist das 20-Euro-Standard-Board im Arduino-Universum.
(Bild: Arduino)

Was genau die Boards leisten – die Unterschiede sind immens -, lesen Sie im zweiten Teil der Serie. Und wenn das noch nicht komplex genug ist: Mit Arduino Pro gibt es mittlerweile auch noch eine Cloud-basierte Plattform für industrielle IoT-Produkte.

Was kann Arduino?

Im Grunde erledigen Arduino-Boards einfach die EDV-Grundlage schlechthin, EVA (Eingabe, Verarbeitung, Ausgabe): Über die GPIO-Pins werden Daten eingelesen, die Firmware/das Arduino-Skript (Sketch im Arduino-Jargon) verarbeiten diese Daten und schlussendlich werden wieder Daten über GPIO-Pins ausgegeben.

Für die Eingabe stehen dann allerlei Geräte zur Verfügung, insbesondere Sensoren und Schalter. Die Sensoren decken dabei alles Denkbare ab, Abstände, Licht, Schall, Erschütterungen, Bewegungen und so weiter. Mit Schaltern wiederum lassen sich Aktionen manuell antriggern, sei es auf Hard- oder Softwareebene.

Die Verarbeitung übernimmt in der Standard-IDE die Arduino-Programmiersprache, ein vereinfachter C++-Slang. Da Arduino von Anfang an für einen einfachen Einstieg konzipiert war, werden Nutzer mit „komplizierten“ Dingen wie Headern komplett verschont. Die Sketches sind immer gleich aufgebaut in Deklarationen, eine setup-Funktion zum Initialisieren und eine Endlosschleife, innerhalb der sich der eigentliche Spaß abspielt. Sofern Sie C++ verstehen, sind Sie mit der kompletten Referenz an einem Nachmittag durch. Wie Sie mit Python, JavaScript oder anderen IDEs arbeiten, sehen Sie im dritten Teil der Arduino-Serie.

Die Arduino-IDE ist minimalistisch, tut aber ihren Dienst.
Die Arduino-IDE ist minimalistisch, tut aber ihren Dienst.
(Bild: Arduino)

Auf der Ausgabeseite kann es nun wiederum jegliche Art von Aktor sein, sprich Motoren, Relais, Lampen und so weiter. Besonders interessant ist aber natürlich die Ausgabe an andere Rechner – denn um wirklich etwas Aufwändiges zu rechnen sind die Arduino-Boards viel zu schwach. Bei Standalone-Projekten, etwa einem Roboter, kommen Arduino und Raspberry Pi daher auch gerne im Duo vor: Arduino erledigt vor allem Ein- und Ausgaben, der RasPi die Verarbeitung der Daten.

Mit dem passenden Board lassen sich Arduino-Ausgaben aber auch schlicht per USB als Tastatur- oder Mauseingaben an einen PC weiterleiten – und spätestens damit dürften auch reine Software-Entwickler plötzlich Ideen im Kopf haben, wozu so ein Arduino alles gut sein kann. Vorher aber noch kurz ein Blick auf den Grundsätzlichen Workflow, falls Sie noch nie nah an der Hardware gearbeitet haben:

In der Regel werden Sie zunächst hardwareseitig Komponenten auf ein Steckbrett stecken, mit Jumper-Kabeln mit Arduino-GPIO-Pins und der Stromversorgung verbinden und das Board dann per USB an einen PC hängen. Softwareseitig können Sie über die simple IDE Sketche schreiben, Bibliotheken verwalten, Arduino-Ausgaben im seriellen Monitor verfolgen und die Daten auf den Chip hochladen.

Wozu Arduino – als Software-Mensch?

Über die Arduino-Plattform lässt sich alles Mögliche realisieren, von einer Schalterleiste für das Smart Home über vollautomatische Gewächshäuser bis hin zu satellitengesteuerten Traktoren. Vor allem aber ist die Arduino- auch eine Prototyping-Plattform.

Für alle Hardware-nahen Entwickler dürfte Arduino die schnellste Möglichkeit sein, Teilprojekte oder auch nur Konzepte und Code-Fragmente live in Aktion zu sehen oder zu präsentieren. Ein Arduino eignet sich hervorragend, um Daten aus der echten Welt zu sammeln, beispielsweise Lichtverhältnisse in einem Büro, die etwa für die Konfiguration von Smart-Home-Komponenten herangezogen werden könnten.

Auch bezüglich der eigenen Karriere ganz allgemein lohnt sich die Beschäftigung mit Arduino. Da wäre zunächst mal die Erweiterung des Horizonts: Wenn Sie Kollegen haben, die noch nie im Leben zehn Zeilen Code produziert haben, werden Sie dort vermutlich nicht auf viel Verständnis treffen, wenn Sie sich über die grauenhaften Auswirkungen von Einrückungen via TAB statt Leerzeichen (oder umgekehrt …) auslassen. Wer die Erfahrung einmal gemacht hat, ist viel schneller mit im Boot. Und ja, umgekehrt ist es genauso: Hardware-Entwicklung bringt eigene Tücken und Detailproblemchen mit sich.

Schon nach ein paar Stunden Hands-on wird vermutlich jedem klar, warum der Elektrotechniker-Kollege viel mehr vorausplant – Trial-and-Error-Verfahren machen bei Hardware deutlich weniger Spaß. Copy and Paste und STRG+Z funktionieren eben nicht, wenn man gerade 30 Kabel anlöten muss. Längst wird angehenden Software-Entwicklern auch ein gewisses Maß an Managementwissen angedient, und so könnte es auch mit den Hardwaregrundlagen gehen.

Hardware-Entwicklung bringt eigene Challenges mit sich.
Hardware-Entwicklung bringt eigene Challenges mit sich.
(Bild: Arduino)

Natürlich bieten sich auch konkrete berufliche Perspektiven. Einerseits gibt es – selten – tatsächlich Stellen, die direkt auf die Arbeit mit Arduino abzielen. Andererseits ist Arduino der Einstieg in etwas durchaus populäres, das sich just heute zum Beispiel in der Stellenbörse Stepstone unter folgender Anforderung finden ließ: „Kenntnisse in der hardwarenahen Softwareentwicklung für Embedded-Systeme ...“. Bei derlei Anforderungen geht es schließlich selten um etwas Konkretes, sondern meist darum, für ein Thema sensibilisiert zu sein.

Ein dritter Themenkomplex könnte unter „Arbeitsplatzerweiterung“ fallen. Viele Entwickler haben einen ausgeprägten Spieltrieb – und der lässt sich mit Arduino perfekt ausleben. Kleine Schalttafeln können zum Beispiel als Ersatz für ausufernde Tastenkürzel oder auf der Tastatur fehlende Makrotasten sein. Sensoren könnten für perfekte Licht- und Temperaturverhältnisse sorgen, ein Bewegungssensor könnte den Arbeitsplatz automatisch abschließen und öffnen, ein Display die Auslastung des Build-Servers anzeigen und so weiter. Das mag nicht immer direkt der Produktivität dienen, der Kreativität hingegen schon.

Der vielleicht beste Grund, sich mit Arduino als Entwickler zu beschäftigen: Dank der Einfachheit macht es schnell Spaß. Der Software-Part wird Ihnen keine Probleme bereiten, auch dank der vielen verfügbaren Bibliotheken, die zum Beispiel die Nutzung eines Schalters auf ein simples „If-Button-Pressed-Then ...“ reduzieren.

Hardwareseitig ist das Vorgehen auch trivial: Bauteile werden in ein Breadboard gesteckt, deren einzelne Pins nach Anleitung mit Arduino-Pins verbunden und dann wie vorgegeben initialisiert – der Rest ist Software-Logik in Arduino, Python oder JavaScript. Eines übrigens können Sie völlig umgehen, den Geist, der immer als Hemmung im Hinterkopf spukt: Das Löten.

Im Arduino-Universum lassen sich sämtliche Prototypen, kurzlebige Bastelprojekte und selbst echte Geräte, auf die keine physischen Kräfte einwirken, mit Steck-, Klemm- und Schraubverbindungen realisieren. Allerdings macht Löten das Leben einfacher. Verbindungen sind stabiler, die Zubehörauswahl ist wesentlich größer, da es nicht alles vorverdrahtet gibt, und es lässt sich wesentlich kompakter bauen.

Dieser Beitrag erschien zuerst auf unserem Partnerportal Dev-Insider.de.

(ID:46931875)

Über den Autor

 Mirco Lang

Mirco Lang

Freier Journalist & BSIler