Ultraschall-Kartierung mit Arduino Yun – Schritt-für-Schritt-Anleitung
Komponenten und Zubehör
| Komponente | Menge |
|---|---|
| Arduino Yun (oder kompatibles Board) | 1 |
| Ultraschallsensor HC-SR04 | 1 |
| Servo Tower Pro MG996R | 1 |
| Jumper-Kabel (gemischt) | 10 |
Software & Online-Dienste
- Arduino IDE
- MATLAB (für Datenverarbeitung & Visualisierung)
Über das Projekt
Schritt 1: Theorie
Der HC-SR04 sendet Ultraschallwellen (>20 kHz) aus und misst die Laufzeit des Echos. Abstand = (Laufzeit/2) × Schallgeschwindigkeit. Ein Servo dreht den Sensor über 180° und liefert so ein 180°-Sichtfeld – ähnlich wie Fledermäuse oder Sonar.


Schritt 2: Materialbeschaffung
- Arduino Uno/Yun (jedes Arduino-Formfaktor-Board funktioniert)
- Arduino Prototyping Shield
- HC-SR04 Ultraschallsensor
- Servo Tower Pro SG90 (kompakt)
- Software: Arduino IDE, MATLAB
Schritt 3: Mechanischer Aufbau
- Kleines Lochraster-Platinchen als Adapter für HC-SR04 löten, mit doppelseitigem Klebeband am Servo-Horn befestigen.
- Servo ebenfalls mit doppelseitigem Klebeband an der hervorstehenden Ecke des Proto-Shields fixieren (optional, macht kompakter).
- Ergebnis erinnert an Wall-Es Bauch.



Schritt 4: Arduino-Code
Der Sketch steuert den Servo (1°-Schritte), liest den Ultraschallsensor 10× pro Winkel, mittelt die Werte und sendet sie über Serial (9600 Baud) an den PC.
- Bibliotheken einbinden (
Servo.h,NewPing.h) - Variablen & Pins definieren
- Servo-Objekt & Serial initialisieren
- 3 s warten
- Schleife: Servo 1° drehen → 10 Messungen → Mittelwert → Serial.println()
Schritt 5: MATLAB-Code
MATLAB liest die seriellen Daten (Winkel + Distanz = Polarkoordinaten), wandelt sie in kartesische Koordinaten um (x = r·cosθ, y = r·sinθ) und plottet das Ergebnis.

Testaufbau in einer Kartonschachtel – der Plot zeigt Wände und Öffnungen recht gut.

Schritt 6: Fazit

Das System liefert brauchbare Tiefenschätzungen. Fehlerquellen: Servo-Vibrationen während der Bewegung und gelegentliche Ausreißer des Ultraschallsensors. Für Experimente zur Tiefenwahrnehmung und einfache Computer-Vision-Projekte gut geeignet.
Code
MATLAB-Code (auf PC ausführen)
MATLAB
theta = 0:(pi/180):pi;
s = serial('COM10');
s.BaudRate = 9600;
fopen(s);
i = 0;
inc = 1;
while i < 180
A = fgets(s);
num(i+1) = str2num(A);
i = i + 1;
end
fclose(s);
j = 1;
while j < 181
tab(j,1) = (j-1)*inc;
tab(j,2) = num(j);
tab(j,3) = num(j)*cosd((j-1)*inc);
tab(j,4) = num(j)*sind((j-1)*inc);
j = j + 1;
end
% figure; polar(theta,num);
plot(tab(:,3), tab(:,4));
Arduino-Code (für Arduino Yun)
Arduino
#include <Servo.h>
#include <NewPing.h>
#define TRIGGER_PIN 12
#define ECHO_PIN 11
#define MAX_DISTANCE 200
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
Servo myservo;
int pos = 0;
int it = 10;
void setup() {
myservo.attach(9);
Serial.begin(9600);
delay(3000);
}
void loop() {
int i = 0, t = 0, a = 0;
for (i = 0; i < 180; i++) {
unsigned int uS = sonar.ping();
myservo.write(i);
delay(20);
for (t = 0; t < it; t++) {
uS = sonar.ping();
a = uS / US_ROUNDTRIP_CM + a;
delay(30);
}
a = a / (it - 1);
t = 0;
Serial.println(a);
a = 0;
}
}
Schaltplan
Fritzing-Datei für Servo- und Ultraschallsensor-Verkabelung: YunConfig.fzz
Herstellungsprozess
- Monitor-Ambilight selbst bauen mit Arduino Nano & WS2812B LEDs
- Arduino-Uno-Roboter zur Personenerkennung – Sensorintegration Schritt für Schritt
- Ultraschall-Schwebegerät mit Arduino bauen – Akustische Levitation Schritt für Schritt
- FlickMote: Gestensteuerung per Ultraschall & IR für Smart Home (Arduino 101)
- Intelligentes Voltmeter mit Arduino & Smartphone bauen – Einfaches DIY-Projekt
- Echtzeit-IoT-Herzfrequenzmonitor mit Arduino & MAX30100
- Android-gesteuertes Roboterfahrzeug mit Raspberry Pi Motor Shield
- Smart IoT-Glas bauen: Füllstand überwachen mit ESP8266, Arduino & Ultraschall
- Arduino UNO WiFi Webserver: LED per Browser steuern
- Autonomer Linienfolger-Roboter mit Arduino UNO