Open-Source im Unternehmen

April 20, 2023 Off By Anna Katherina Ibeling

Im “Big Business” gibt es nach wie vor viele Vorurteile gegen Open-Source-Lösungen wie die Arduino-Plattform. Oft lässt der Open-Source-Ursprung diese Systeme auf den ersten Blick unattraktiv und unsicher erscheinen. Dennoch lohnt sich ein zweiter Blick. In diesem Artikel erfahren Sie mehr über die Vorteile und Chancen, die Arduinos „Schwachpunkte“ im B2B-Umfeld auszugleichen.

Open-Source mit Arduino eignet sich für viel mehr als viele glauben!
Open-Source mit Arduino eignet sich für viel mehr als viele glauben!

Warum Open-Source mit Arduino?

Zunächst bietet das Arduino-System die passende Entwicklungsumgebung für Innovationen, entweder kostenlos oder für einen fairen Preis. Dementsprechend überrascht der häufige weltweite Einsatz von solchen Open-Source-Lösungen in Tech-Startups kaum. Dabei ist zwischen “kostengünstig” und “billig” zu unterscheiden, denn letzteres hat häufig den faden Beigeschmack unzureichender Qualität in den Ergebnissen.

Diese Unterscheidung ist wichtig, denn auch der Erfolg von Arduino-Projekten hängt immer von den Bedingungen „vor Ort“ und der Expertise menschlicher Programmierer (m/w/d) ab. Konkret bedeutet das: Wenn ein IT-Team Open-Source-Projekt sorgfältig und zielgruppengerecht durchführt, kann zum Beispiel Arduino zu deutlich niedrigeren Entwicklungskosten führen als kommerzielle „Fertiglösungen“.

Open-Source mit Arduino “unter der Nutzeroberfläche”

Das Arduino-Ökosystem bringt erfolgreich Hardware- und Softwarekomponenten zusammen und ergibt ein „rundes“ Gesamtbild. Die beliebte Open-Source- Entwicklungsumgebung beinhaItet sowohl Hardware und Software als auch eine eigene Programmiersprache (basierend auf C oder C++) für eine einfache Bedienung. In diesem Kontext kann man alle Bauteile und Boards auch in IoT-Umgebungen verwenden. Beispielsweise verlassen wir und unsere Partnerfirmen uns für unsere USB-Pushbuttons, USB-Pushboxen und alle Lösungen rund um Mähroboter auf diese Technologie.

Boards und Pins: “harte Fakten”

Prinzipiell lassen sich Arduino-Boards mit ganz unterschiedlichen Komponenten bestücken. Jedes Board verfügt aber grundsätzlich über die folgenden Bauteile.

  1. Mikrocontroller – “Gehirn und Erinnerung” eines Arduino-Boards, das Programme empfängt. Grundsätzlich funktioniert dies wie bei einem Minicomputer mit reduzierter Anzahl an Vorgängen.

  2. USB-Port – verbindet das Arduino-Board mit einem Computer.

  3. USB-to-Serial-chip – unterstützt das Auslesen von Daten, die von einer externen Datenquelle auf den integrierten Microkontroller gesendet werden.

  4. Digitale Pins –beruhen auf digitaler Logik (0,1 oder LOW/HIGH). Man verwendet sie oft für Schalter und LEDs, um diese ein-, aus- und umzuschalten.

  5. Analoge Pins – lessen analoge Werte aus (10-Bit-Auflösung, 0-1023).

  6. 5V / 3.3V-Pins – versorgen externe Komponenten mit Energie.

  7. GND – “ground”, “negative” (Erdung, negative) oder einfach dafür verwendet, einen Stromkreis mit einer Spannung von 0 Volt zu schließen.

  8. VIN – steht für “Voltage In”, als Möglichkeit, um externe Versorger anzuschließen.

Generell hat jedes Aduino-Board eine sogenannte “Basic Operation” im Mikrocontroller eingebaut. Dabei handelt es sich um ein automatisches, je nach mitgeliefertem Core API (oder: „Paket“) einzelnes Programm. Gängige Varianten dieses “Pakets” sind das Auslesen eines Sensors, das Aufleuchten einer LED, des Überprüfens einer Eigenschaft oder alles gleichzeitig.

Schaltkreise und Signale

Prinzipiell, also auch bei Open-Source-Lösungen, beruht jeder Schaltkreis auf einem Board auf dem Zusammenspiel von Pins und Kabeln. Für einen LED-Stromkreis muss man beispielsweise nur einen Pin mit dem GND-Pin verbinden. Bei einem “LOW”-Status erlischt die LED, bis der Stromfluss wieder einen “High”-Status erreicht hat. Für gewöhnlich bildet man einen Stromkreis schematisch ab, als sogenannten “Blueprint”.

Beispiel für die Bestückung eines Arduino-Boards
Beispiel für die Bestückung eines Arduino-Boards (Quelle: Arduino-Doku)

Weitere wichtige Aspekte eines Schaltkreises sind analoge und digitale Signale. Dabei sind analoge Signale immer an eine Spannungsgrenze gebunden. In der Open-Source-Umgebung von Arduino beträgt diese “erlaubte Spannung” üblicherweise 0-5V oder 0-3,3V. Mit Hilfe eines Potentionmeters lässt sich diese Spannungsgrenze allerdings manuell verändern (zwischen 0 und 5 Volt). Bei Arduino entsprechen diese Werte einer Spannungsreichweite von 0-1023 oder auch einer 10-Bit-Auflösung. Die Spanungsreichweite lässt sich aber auch verändern, zum Beispiel kann man via Pulse-Width Modulation (PWM) analoge Signale manuell festlegen. Die mögliche Reichweite beträgt somit 0 bis 255 bei einer 8-Bit-Auflösung.

Im Gegensatz dazu zeigen digitale Signale nur zwei binäre Statusoptionen (0 oder1) an, die das Programm als “high” oder “low” ausliest. In vielen modernen Technologielösungen sind digitale Signale inzwischen die erste Wahl, so auch in gängigen Open-Source-Lösungen wie Arduino. Auf den ersten Blick erscheinen diese Signale sehr simpel, bieten aber eine Vielzahl an Einsatzmöglichkeiten. Beispielsweise lassen sich aus seiner schnellen, wiederkehrenden Abfolge von “high” und “low” binäre Sequenzen oder auch sogenannte Bitstreams erstellen.

Digitale Signaleauf einem ArduiNno-Board (Quelle: Arduino-Doku)
Digitale Signaleauf einem ArduiNno-Board (Quelle: Arduino-Doku)

So funktionieren Sensoren und Aktoren

Mit Arduino zu arbeiten, bedeutet auch immer, sich mit Sensoren und Aktoren auseinanderzusetzen. Dementsprechend ist es auch entscheidend, die Unterschiede zwischen diesen Bauteilen zu kennen. Im Großen und Ganzen registriert ein Sensor physische Parameter und wandelt sie in elektronische Signale um. Wenn der Status eines Stromkreises sich beispielsweise auf Knopfdruck ändert, stellen sich die elektronischen Signale von “low” auf “high” um (oder von 0 auf 1). Diesen Vorgang findet man überall im Alltag, zum Beispiel bei Haushaltsgeräten. Auf einem Arduino-Board befinden sich grundsätzlich sowohl analoge als auch digitale Sensoren.

Ein Aktor hingegen verändert immer einen physischen Zustand. Einige bekannte Beispiele hierfür sind LEDs, Motoren und Schalter. Generell wandeln Aktoren elektrische Signale immer in Licht oder mechanische Energie (z.B. Bewegung) um. Die Einstellung von Aktoren hängt natürlich vom individuellen Bauteil ab. Ein Gerät auf diese Weise ein- und auszuschalten ist einfach. Ein wenig mehr Aufwand erfordert das Ziel, die ankommende Spannung über Aktoren zu regulieren. Alles in allem empfängt und “liest” ein Sensor eintretende Reizauslöser, damit ein Aktor diese Reize im Anschluss in ein gewünschtes physisches Ergebnis umwandeln kann.

Arduino-Board mit integriertem Sensor (Quelle: Arduino-Doku)
Arduino-Board mit integriertem Sensor (Quelle: Arduino-Doku)

Vom einfachen Speicher zu W-Lan und IoT

Auf der Open-Source-Plattform Arduino lassen sich gleich mehrere Arten serieller Protokolle erstellen – besonders während digitale Datensignale übertragen werden. Unter allen verfügbaren Protokolltypen sind UART, SPI und I²C sicher die bekanntesten. Der sogenannte Serial Bus auf dem Board, an einen festgelegten Pin angeschlossen, steuert dabei automatisch jegliche serielle Kommunikation. Natürlich haben Arduino-Boards abseits der Protokolle einen internen Speicher, üblicherweise eine Flash- oder SRAM-Memory.

Während eine SRAM-Memory nach jedem Ausschalten automatisch neu startet, tut eine Flash-Memory eben dies nicht und legt alle gespeicherten Daten dauerhaft ab. Die vorhandene Speicherkapazität hängt dabei vom jeweiligen Board ab. Wer sich einen Teil der Programmierarbeit sparen möchte, entscheidet sich für eine Boardversion mit einem integrierten Sensor – also für eine neuere Generation von Arduino-Boards.

Integrierte Sensoren als Gamechanger

Beliebt ist hier zum Beispiel das Board “Nano 33 BLE Sense” mit sieben integrierten Sensoren auf der Größe eines Daumens (45x18mm). Alle Sensoren sind dabei durch das I²C –Protokoll verbunden und verfügen über eine eigene Adresse. Es gibt aber noch einen weiteren Aspekt, der Open-Source-Lösungen mit Arduino-Boards zu einer hilfreichen Basis für IoT-Projekte macht. Hierbei handelt es sich um ein integriertes Radiomodul. Solche Module kennt man unter anderem unter den Bezeichnungen Wi-Fi, Bluetooth®, LoRa®, GSM und NB-IoT, aber es gibt natürlich noch viele weitere Varianten. Ebenso wie serielle Protokolle kommunizieren Radiomodule untereinander mit eigenen Protokolltypen, beispielsweise HTTP, MQTT und UPD.

 

Board mit integriertem WiFi-Modul
Board mit integriertem WiFi-Modul (Quelle: Arduino-Doku)

Open-Source mit Arduino - ein paar Programmierfakten

Wer in Open-Source-Umgebungen wie Arduino programmiert, muss für ein “rundes Ergebnis” sowohl Hardware- als auch Softwareentwicklung im Auge behalten. Wie bereits oben erwähnt, verfügt Arduino über einen eigenen Programmierschnittpunkt für seine Projekte, auch bekannt als “Die Arduino API”. Diese API besteht aus mehreren Funktionen, Variablen und Strukturen auf C/C++-Basis. Im Folgenden eine kurze Begriffseinordnung für “Nicht-Programmierer” … Funktionen führen Operationen auf dem Arduino-Board durch und überprüfen sie. Variablen sind für die Konstanten, Datentypen und Umwandlung des Projekts “zuständig”. Strukturen enthalten letztendlich die vorhandenen Elemente des Arduino-Codes. Projekte in Arduino nennt man auch “Sketches”. An diesem Punkt können wir nicht allzu tief in die Eigenheiten “Sketches”, “Void Loops”, “Void Setups” und “Core Specific API” eintauchen. Für die Überprüfung von Details eignet sich viel besser die ursprüngliche Arduino-Dokumentation!

Zusätzlich zur Hardwareseite sind im Arduino-“Ökosystem” auch spezifische Software-Tools von Bedeutung. Das hier oft erwähnte Arduino IDE bietet hier eine komplette integrierte Entwicklungsumgebung. Um ein Board zu programmieren, müssen Sie zunächst ein Programm schreiben, dieses Programm dann in maschinell lesbaren Code übertragen und es schließlich zum Board “senden”.

IDE-Versionen für jedes Open-Source-Projekt

Arduino IDE ist eine Anwendung, das man entweder herunterladen oder direkt online nutzen kann. Hiermit lässt sich die gesamte Codeentwicklung steuern. Das Programm vereinfacht die Erstellung und Durchführung eines Arduino-Projekts enorm, selbst wenn der Nutzer vorher nur über geringe Programmierkenntnisse verfügt. Inwischen kann man frei zwischen drei Versionen der Open-Source-Anwendung wählen, nämlich Arduino IDE 1.8.x (klassisch), Arduino IDE 2.0.x (neu) und Arduino Web Editor (online). Zusätzlich sollten Sie passende Verzeichnisse mit fertigen Codebeispielen herunterladen, um das Programmieren einfacher zu gestalten. Übrigens ist die Arduino IoT Cloud zielgenau auf aufwendige, komplexe Open-Source-Projekte zugeschnitten.

Der Arduino Web Editor - von überall erreichbar! (Quelle: Arduino-Doku)
Der Arduino Web Editor - von überall erreichbar! (Quelle: Arduino-Doku)

Ihr erstes Open-Source-Projekt mit Arduino in fünf Schritten

Wer ein Arduino-Board vorbereitet und es mit Code versorgt, folgt in der Regel einer festen, mehrschrittigen Routine. Die Arduino-Dokumentation beschreibt dieses planvolle Vorgehen als “typischen Workflow”.

1. Bestücken und installieren Sie Ihr Board vollständig! Um es verwenden zu können, benötigen Sie die passende “Core Specific API”, auch kurz als “Programm” bekannt. Dieses Paket lässt sich direkt in der IDE installieren.

2. Schreiben Sie das Basisprogramm (“Sketch”) für Ihr Projekt! Auf diesem bauen schließlich alle späteren Anpassungen im Code auf. Dieses Programm beinhaltet alle Befehle, die derMikrocontroller ausführen soll.

3. Kompilieren Sie Ihr Programm! In diesem Schritt überprüfen Sie den geschriebenen Code auf Fehler und “übersetzen” ihn in eine Binärdatei aus “Einsen und Nullen”. Treten Konflikte in der Programmierung auf, informiert Sie die Fehlerkonsole darüber. Wichtig zu merken: Der Ursprungscode verändert sich automatisch, wenn Sie ihn auf Ihr Board hochladen.

4. Laden Sie Ihren Sketch hoch! Waren Überprüfung und Konvertierung aus Schritt 3 erfolgreich, können Sie nun den Open-Source-Code auf Ihr Board übertragen. Verbinden Sie hierfür physisch das Board mit einem Computer und wählen Sie immer den korrekten seriellen Port aus!

5. Optional, aber nützlich: Setzen Sie den Serial Monitor ein! Besonders bei nicht-proprietären Open-Source-Projekten ist es wichtig, alle Vorgänge auf den Boards im Blick zu behalten. Im Fall von Arduino finden Sie diese Möglichkeit in Form des Serial-Monitor-Tools. Dieses ist in der IDE enthalten und sendet Kontrolldaten vom Board auf Ihren Computer.

Sechs gute Gründe für Open-Source-Projekte mit Arduino

Sind Sie sich noch nicht sicher, ob und wie Open-Source-Projekte auf Arduino-Basis Ihrem Unternehmen Vorteile bringen? Vorab: Es gibt nicht “den einen Weg” zum Erfolg und nicht jeder kann in gleichem Ausmaß von Open-Source profitieren. Dennoch sollte jeder auch die Hauptargumente für den Einsatz der Arduino-Plattform kennen und nicht nur dagegen.

1. Es kostet nichts! Besonders kleine und noch aufstrebende Unternehmen müssen ihre Entwicklungskosten im Blick behalten. Allerdings gilt das auch für “Big Players” auf dem Tech-Markt!

2. Es ist für die meisten Entwickler*innen einfach anzuwenden! Die Arduino-Plattform vereinfacht es Open-Source-Entwickler*innen enorm, ihre Projekte “aus einem Guss” umzusetzen. Hier sind auch die unterschiedlichen IDE-Versionen hilfreich.

3. Arduino ist ein standardisiertes, vernetztes “Ökosystem”! Das war, wie bei allen Innovationen, natürlich nicht immer so. Anfangs brauchte man für Open-Source-Projekte mit Arduino noch eine Menge Coding-Vorwissen und alle Prozesse waren komplizierter. Im Gegensatz dazu ist Arduino heute eine “Entwicklungsumgebung für alle”, auch dank neuer IDE-Versionen.

Mit Arduino IDE haben Sie Ihr Open-Source-Projekt immer selbst in der Hand!
Mit Arduino IDE haben Sie Ihr Open-Source-Projekt immer selbst in der Hand!

4. Sie können allen Code in Ihren Projekten jederzeit überwachen und an neue Anforderungen anpassen. Natürlich gibt es immer Menschen und Unternehmen, die “fertige” Lösungen bevorzugen und keinen tieferen Einblick in die IT-Infrastruktur brauchen. Viele kommerzielle IT-Systeme werden mit einer Erfolgsgarantie geliefert. Treten dennoch Fehler auf, erhalten die Nutzer*innen jedoch keinen Einblick in die Funktionsweise und können nichts anpassen. Hierin liegt wiederum ein großer Vorteil von Open-Source-Umgebungen wie Arduino. Ein wenig mehr Eigenarbeit und Gug-Fixing steht der vollen Kontrolle über Ihre Code-Projekte entgegen.

5. Open-Source ist vielseitig und eignet sich für viele Branchen! Arduino kann Sie zum Beispiel dabei unterstützen, Ihre Produktion zu automatisieren, IoT-basierte Hardwareprojekte (wie auch bei unseren Partnern) ins Leben zu rufen. Das System lässt sich weiterhin im Smart-Home-Bereich und generell in der Gebäudetechnik einsetzen.

6. Die Arduino-Community ist mehr als ein “digitales Dorf”. Wie viele Open-Source-Lösungen (und die Computertechnik an sich) hat auch Arduino einen “Bastlerursprung”. Inzwischen ist die Plattform aber zu einer weltweiten Gemeinschaft versierter Entwickler*innen “herangewachsen”. Sie wird regelmäßig gewartet,optimiert und auf den neuesten Stand gebracht. Dabei können alle Beteiligten sowohl zur IoT-Cloud, zu den Verzeichnissen und den IDE-Versionen etwas beitragen als auch von der Weiterentwicklung durch andere profitieren.

 

Haben Sie bereits gute Erfahrungen mit Arduino gemacht?
Haben Sie bereits gute Erfahrungen mit Arduino gemacht?

Konnten Sie bereits Erfahrungen mit Arduino-Tools in Ihren Hardware- und Softwareprojekten sammeln? Welchen Vorteilen und Herausforderungen sind Sie in dieser Entwicklungsumgebung begegnet? Da auch wir regelmäßig mit Open-Source-Systemen wie Arduino arbeiten, sind wir neugierig auf Ihre Perspektive!