Physical Computing mit dem Arduino

By | 17. Januar 2017

Unter Physical Computing werden Systeme verstanden, die sich mit der Beziehung zwischen dem Menschen und der digitalen Welt befassen. Dabei werden Sensoren und Mikrocontroller verwendet, um analoge Eingaben Software-Anwendungen verfügbar zu machen und/oder elektromechanische Geräte wie Motoren, Servos, um andere Hardware zu steuern. Die so erstellten Systeme, bei denen ein Mikrocontroller innerhalb eines Gerätes arbeitet, werden im professionellen Bereich eingebettete Systeme genannt.

Die Mikrocontroller-Programmierung gilt vielfach als undurchsichtig, kompliziert und relativ teuer. Arduino-Systeme sind hingegen kostengünstig und die Entwicklungsumgebung ist bewusst einfach gehalten, sodass man sehr schnell damit zurechtkommt. Auch wenn die Arduino-Plattform gemeinhin als ein System für Einsteiger angesehen wird, ist sie für die Erschließung von professionellen Anwendungen im Embedded-Bereich bestens geeignet.

Arduino ist eine aus Soft- und Hardware bestehende Physical-Computing-Plattform. Beide Komponenten sind im Sinne von Open Source quelloffen. Die Hardware besteht aus einem einfachen E/A-Board mit einem Mikrocontroller und analogen und digitalen Ein- und Ausgängen. Die Entwicklungsumgebung sind so gestaltet, dass einerseits Standard Sprachen verwendet werden andererseits soll auch technisch weniger Versierten der Zugang zur Programmierung von Mikrocontrollern erleichtert werden. Die Programmierung selbst erfolgt in C bzw. C++, wobei technische Details wie Header-Dateien vor den Anwendern weitgehend verborgen werden und umfangreiche Bibliotheken und Beispiele die Programmierung vereinfachen.

Das Arduino-Board ist eine kleine Platine, auf der sich ein ATMEL Microcontroller befindet. Auf den Microcontroller kann man C-ähnliche Programme, so genannte Sketche, übertragen und ausführen. Das Arduino-Board gibt es in verschiedenen Ausführungen (UNO, MEGA, NANO,...) und besteht neben dem Mikrocontroller aus Schnittstellen-Bausteinen, Buchsen und Steckleisten für Erweiterungen.Über verschiedene Ein- und Ausgänge kann der Arduino Kontakt zu seiner Umgebung aufnehmen und beispielsweise Leuchtdioden, Motoren und Servos ansteuern.

Über sogenannte "Shields" kann man jedes Arduino-Grundsystem schnell um weitere Hardware erweitern. Shields sind Erweiterungen, die einfach auf das Arduino-Board gesteckt werden. Diese Erweiterungen lassen sich ganz einfach in der Entwicklungsumgebung ansprechen. Neben den offiziellen Quellen sind diese Shields oft auch über chinesische Quellen erhältlich und spottbillig. Hier zeigt sich der Vorteil eines OpenSource Ansatzes: Auf der ganzen Welt können Entwicklungen legal und standardisiert erfolgen.  Anwendungsbeispiele und fertige Bibliotheken sind im Internet massenweise verfügbar. Der eigenen Fantasie sind Software- und Hardware-seitig fast keine Grenzen gesetzt.

Die grundlegende Programmstruktur eines Arduino-Programms setzt sich aus zwei Methodenblöcken zusammen. Die erste Methode ist void setup(). Hier werden Grundeinstellungen (z.B. ob ein Kanal ein In- oder Output ist) vorgenommen. Diese Methode wird nur beim Programmstart ausgeführt, also genau ein Mal. Über dem Setup kann man noch Bibliotheken einbinden und globale Variablen deklarieren. Die void loop() Methode wird im Gegensatz zum Setup ständig wiederholt. Hier wird der eigentliche Programmablauf geschrieben.

Der Arduino besitzt Ein- und Ausgänge. Jeder Pin kann sowohl als Eingang- als auch als Ausgangs-Port verwendet werden. Dazu gibt es eine Funktion pinMode (PinName, Modus), die legt im Setup fest, ob ein Pin als Eingang (INPUT) oder als Ausgang (OUTPUT) verwendet wird.