Abstandsmessung mit Ardublock

Einführung

Hier möchte ich von meinen ersten Erfahrungen im Umgang mit der Arduino-Erweiterung Ardublock berichten und in einem ersten Beispiel zeigen, wie man damit einen Ultraschall-Abstandssensor programmiert.
Ardublock ist ein Addon für die Arduino-Programmierumgebung Arduino IDE und ebenso wie diese in Java geschrieben. Mit Ardublock lassen sich sehr einfach und schnell Programme für den Arduino schreiben, wobei schreiben hier nicht wirklich passend ist, vielmehr wird der Programmablauf aus grafischen Blöcken Stück für Stück zusammengeklickt, ohne auch nur eine Zeile Code schreiben zu müssen. Dies macht Ardublock insbesondere für Programmiereinsteiger und -einsteigerinnen interessant, da es dazu dient, grundsätzliche Programmierstrukturen wie Variablen, Schleifen oder Wenn-Dann-Anweisungsblöcke zu verstehen, ohne sich zu Beginn mit lästigen Syntaxfehlern herumschlagen zu müssen. Neben den Basisprogrammierstrukturen stehen auch eine Reihe von fertigen Blöcken für verschiedenste Sensoren und Bauelemente zur Verfügung, welche ohne Kenntnis über dahinter liegende Programmierung als Blackbox mit Ein- und Ausgaben genutzt werden können.

Installation

Ardublocks ist ein Addon für die Arduino IDE und die Installation sehr einfach. Dafür gibt es Ardublock in verschiedenen Ausführungen mit unterschiedlichem Funktionsumfang. Die verschiedenen Versionen stehen zum kostenlosen Download auf Sourceforge zu Verfügung. Man lädt eine bereits kompilierte Javadatei im .jar Format herunter. Diese muss nun nur noch am richtigen Ort gespeichert werden und schon ist Ardublock installiert. Dazu sucht man zunächst den Ordner „sketchbook“, welcher bei der Installation der Arduino IDE automatisch angelegt wurde. Dort erstellt man im Unterordner „tools“ einen neuen Ordner „ArduBlockTool“, darin einen weiteren Unterordner „tool“, wohinein die heruntergeladene .jar Datei gespeichert wird (kurz: sketchbook>tools>ArduBlockTool>tools>XYZ.jar). Hierbei ist auf die Groß- und Kleinschreibung zu achten.
Beim nächsten Start der Arduino IDE steht nun unter dem Menüpunkt Tools Ardublock zur Verfügung.

Benutzeroberfläche

Auf der linken Seite der Ardublock-Oberfläche befinden sich Programmblöcke in unterschiedlichen Kategorien wie Steueranweisungen, mathematische Operatoren oder das Schreiben von Variablen zur Verfügung. Ein Klick auf die Kategorien zeig die darin enthaltenen Blöcke an. Mit einem weiterem Klick auf den gewünschten Block erzeugt man eine neue Instanz dieses Block im großen Hauptfenster. Mit der Maus lässt sich der Block nun an der gewünschten Stelle andocken. Ob zwei Blöcke zusammenpassen ist an der Form der Verbindung ersichtlich. Möchte man einen Block löschen, schiebt man ihn einfach nach links aus dem Hauptfenster heraus. Variablennamen und -werte lassen sich durch nach einem Klick auf den Block einfach ändern. Im oberen Bereich des Fensters befinden sich das Menü zum öffnen und speichern von Projekten, dem Hochladen (und kompilieren) auf den Arduino und zum Anzeigen des Seriellen Monitors. Der von Ardublock generierte Programmcode ist übrigens in der herkömmlichen Arduino IDE zu sehen.

Ardublock-Benutzeroberfläche und Programm zur Abstandsmessung
Ardublock-Benutzeroberfläche und Programm zur Abstandsmessung

Beispiel: Abstandsmessung

Als erstes Programmierbeispiel mit Ardublock programmieren wir den Ultraschall Abstandssensor HC-SR04. Dieser sendet einen kurzen Ultraschallpuls aus und wartet auf dessen Echo. Aus der Laufzeit des Pulses zwischen Aussenden und Empfang kann der Abstands eines Hindernisses bestimmt werden. Aus dem Datenblatt kann die Steuerung des Sensors entnommen werden: Zuerst muss der Trigger-Pin für mindestenes zehn Mikrosekunden auf HIGH gesetzt werden. Nachdem er wieder auf LOW liegt, wird der Puls ausgesendet und der Echo-Pin ist solange LOW, bis das Echo des Pulses eintrifft. Danach liegt am Echo-PIN ein HIGH-Puls an, dessen Dauer der Laufzeit entspricht. Die Laufzeit des Pulses entspricht der doppelten Weglänge zwischen Hindernis und Sensor und daraus kann mit der Schallgeschwindigkeit der Abstand berechnet werden. Der Arduino stellt bereits eine fertige Funktion zum Auslesen einer Pulslänge bereit: pulseln(). Für diese steht in Ardublock jedoch kein Block zur Verfügung, daher erstellen wir uns ein kleines Workaround. Nachdem wir den Puls durch Setzen des Trigger-Pins ausgesendet haben, warten wir darauf, dass der Echo-Pin HIGH gesetzt wird. Sobald das der Fall ist, zählen wir eine Variable nach oben, solange der Pin HIGH ist.
Da wir auf diese Weise nicht direkt die Pulsdauer bestimmen können, sondern nur einen dazu proportionalen Zähler haben, müssen wir den Sensor noch kalibrieren, um später den tatsächlichen Abstand bestimmen zu können. Dazu notieren wir zu bestimmten Abständen den Zählerwert und können aus diesen Wertepaaren durch eine lineare Regression eine Berechnungsgleichung für den Abstand bestimmen. Konkret haben wir hier das Programm zur Kalibrierung dahingehend erweitert, dass zu jedem Abstand immer 1000 Messungen vorgenommen werden und den Mittelwert des Zählers notiert.Für den vorliegenden Sensor existiert auch ein fertiger Block in Ardublock, welcher nur die Pins als Input benötigt und direkt den Abstand in cm zurückgibt. Wir konnten feststellen, dass unsere Routine nach der Kalibrierung genauer misst, als der fertige Block, welcher zu um etwa zwei cm zu kurzen Abständen tendiert. Bei der Bestimmung des Abstands aus der Laufzeit und der Schallgeschwindigkeit muss auch berücksichtigt werden, dass letztere vom Luftdruck und der Temperatur abhängt.

Ultraschall Abstandssensor am Arduino
Ultraschall Abstandssensor am Arduino

Fazit

Ardublock weist zwar einen beschränkten Funktionsumfang auf, was aber, wie in diesem Beispiel, die Kreativität fördert und eine Reduktion auf die grundlegenden Steuerblöcke eines Programms erzwingt. Durch seine sehr einfache und Intuitive Bedienung ist Ardublock insbesondere für Programmierneulinge geeignet und eignet sich hervorragend dafür, fast allen Programmiersprachen gemeinsame Elemente wie Variablen, Schleifen und Abfragen unabhängig von einer konkreten Sprache und ohne Konzentration auf die Syntax der Sprache zu verinnerlichen. Darüber hinaus besteht zusätzlich die Möglichkeit, den den Blöcken entsprechenden Code auch in der Arduino IDE anzusehen.

Quellen und Code

  • Arduino Uno
  • Ultraschall Abstandssensor HC-SR04, Hersteller ELEC Freaks (Datenblatt)
  • Steckbrett, Steckbrücken
  • Programm Abstandsmessung Ardublock, download in unserer Didaktik Digital Dropbox
6. Oktober 2016 | Veröffentlicht von Sebastian Tillack
Veröffentlicht unter Allgemein, Arduino

Schreiben Sie einen Kommentar

(erforderlich)