Drahtloses Arduinolineal mit Ultraschallsensor

Der Ultraschallsensor ist ein typisches Beispiel dafür, dass der Mensch sich Errungenschaften einfach aus der Natur klaut. Hier wurde bei der Fledermaus abgekupfert. Das Prinzip: Die Fledermaus sendet einen Ultraschallimpuls aus. Der Schall trifft irgendwann auf einen Gegenstand, was ein Echo verursacht – der Schall wird zurück zum Absender geworfen. Die Fledermaus kann durch die Dauer dieses Prozesses errechnen, ob und wie weit sich ein Gegenstand vor ihr weg befindet. Ich zeige euch heute, wie ihr das technisch mit einem Ultraschallsensor nachempfinden könnt.

Was wird benötigt?

  • ein Arduinoboard
  • ein Breadboard
  • einen arduinofähigen Ultraschallsensor (Mein Modell: HC-SR04 von Sainsmart (Amazon-Link))

Wie funktioniert der Ultraschallsensor?

Bild des HC-SR04
Bild des HC-SR04
Bildquelle: Ojitos digitales Sensor ultrasónico HC-SR04 von Gustavo Reyes auf flickr.com
(CC-BY-NC 2.0)

 

Antwort: Wie eine Fledermaus! Am auffälligsten sind die zwei Zylinder, die sich auf der Platine befinden und Lautsprecher-ähnliche Züge haben. Diese „Lautsprecher“ erzeugen jedoch für den Menschen unhörbare Töne im Ultraschallbereich. Der Sensor hat vier Pins: Zwei für die Stromversorgung mit 5 Volt (VCC und GND) und zwei Datenpins, die mit „Echo“ und „Trig“ bezeichnet sind. Bei der Programmierung ist Trig ein Output-Pin und Echo ein Input-Pin. Bei der Benutzung sendet man einen Impuls (10 Microsekunden) an den Trig-Pin. Dadurch sendet der Sensor einen Ultraschallton aus, der dann eine gewisse Zeit wieder vom Sensor empfangen wird, wenn der Schallimpuls von einem Gegenstand zurückgeworfen wird. Dieser Impuls, der zurück zum Sensor gelangt, wird dann durch den Echo-Pin zum Arduino geleitet, der diesen Impuls irgendwie auswertet. Von dem, was der Arduino zu diesem Zeitpunkt macht, habe ich keine Ahnung. Fakt ist, dass am Ende eine Zahl herauskommt, die ziemlich genau sagt, wie weit sich ein Gegenstand von dem Sensor weg befindet. Zentimetergenau!

Schritt 1: Das Verdrahten

Das ist ziemlich einfach, weshalb ich jetzt auch auf meine üblichen Schaltpläne verzichte. Kurz zusammengefasst:

  1. VCC an 5V
  2. GND an GND
  3. Echo an einen beliebigen Digitalpin
  4. Trig an einen beliebigen Digitalpin

Es empfiehlt sich, den Ultraschallsensor ganz an den Rand eines Breadboards zu setzen (Breadboardverbindungen beachten!), da die Breadboardkante sich gut zum Anlegen des Lineals eignet.

Schritt 2: Das Programmieren

Eine .ino-Datei für die IDE könnt ihr euch am Ende dieses Beitrages herunterladen!

Das Endergebnis:

Hier habe ich das Ganze mal aufgebaut: Links im Bild sieht man einen zwei Meter langen Zollstock, der von der Wand bis zum Ultraschallsensor ausgelegt wurde. Der Sensor ist mit dem Arduino verbunden, der Arduino mit dem Notebook in der rechten Bildhälfte. Das Notebook empfängt die Daten vom Arduino. Ich habe hier TeraTerm statt dem SerialMonitor der Arduino-IDE benutzt. Damit die Werte erkennbar sind, habe ich mit der Windows Bildschirmlupe die untersten Zeilen etwas vergrößert. Ihr könnt sie in der linken Bildschirmhälfte sehen. Die Angaben natürlich in Zentimeter. Ihr seht: Der Sensor ist ziemlich genau und zeigt das Zimmerende auf ungefähr 200 cm Entfernung an.

arduino-ultraschall-100

Im diesem Bild habe ich nun auf einen Meter Entfernung die Verpackung des Arduinos gelegt. Innerhalb einer Anzeige, änderte sich die errechnete Entfernung zum nächsten Gegenstand auf ca. 100 cm, wie ihr auf dem Notebook sehen könnt.

Wofür braucht man das?

Ich habe euch hier nur gezeigt, wie der Ultraschallsensor funktioniert, nicht wie man ihn anwenden kann. Hier einige Ideen:

  • Als Vermessungsgerät für Faule
  • Als Lichtschrankenersatz (Ereignis, wenn errechnete Entfernung zum nächsten Hindernis kleiner ist als ein bestimmter Wert)
  • Als Hinderniserkennung für Roboter oder ferngesteuerte oder autonome Fahrzeuge
  • Als Einparkhilfe an einem Auto (Nichts ist unmöglich!)

 Download des Sketches

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.