Pomiar odległości z wykorzystaniem Arduino i czujnika HC-SR04 lub US-015
Przedstawione czujniki umożliwiają pomiar odległości przy pomocy ultradźwięków. Czujnik wysyła falę, która po odbiciu od przeszkody wraca do niego. Obliczając czas między wysłaniem, a odebraniem impulsu jesteśmy w stanie określić odległość od obiektu.
Będziemy potrzebować następujące elementy:
Podłączenie czujnika z Arduino:
W celu obsługi czujnika z wykorzystaniem Arduino należy połączyć układ w następujący sposób:
| Pin BH1750 | Pin Arduino |
|---|---|
| VCC | 5 V |
| GND | GND |
| TRIG | 2 |
| ECHO |
3 |
Schemat połączenie czujnika ultradźwiękowego z Arduino Uno.
Program do Arduino
W przykładzie został wykorzystany następujący kod:
int Trig = 2; //pin 2 Arduino połączony z pinem Trigger czujnika
int Echo = 3; //pin 3 Arduino połączony z pinem Echo czujnika
int CM; //odległość w cm
long CZAS; //długość powrotnego impulsu w uS
void setup()
{
Serial.begin(9600); //inicjalizaja monitora szeregowego
pinMode(Trig, OUTPUT); //ustawienie pinu 2 w Arduino jako wyjście
pinMode(Echo, INPUT); //ustawienie pinu 3 w Arduino jako wejście
Serial.println("Test czujnika odleglosci");
}
void loop()
{
pomiar_odleglosci(); //pomiar odległości
Serial.print("Odleglosc: "); //wyświetlanie wyników na ekranie w pętli co 200 ms
Serial.print(CM);
Serial.println(" cm");
delay(200);
}
void pomiar_odleglosci ()
{
digitalWrite(Trig, LOW); //ustawienie stanu wysokiego na 2 uS - impuls inicjalizujacy - patrz dokumentacja
delayMicroseconds(2);
digitalWrite(Trig, HIGH); //ustawienie stanu wysokiego na 10 uS - impuls inicjalizujacy - patrz dokumentacja
delayMicroseconds(10);
digitalWrite(Trig, LOW);
digitalWrite(Echo, HIGH);
CZAS = pulseIn(Echo, HIGH);
CM = CZAS / 58; //szerokość odbitego impulsu w uS podzielone przez 58 to odleglosc w cm - patrz dokumentacja
}
W celu obliczenia odległości od obiektu, czas odpowiedzi jest dzielony przez 58 (wg dokumentacji). Dlaczego akurat tyle? Ta wartość pochodzi ze wzoru:
CZAS / [1/(0.34 / 2 )/10]
- wartość w nawiasie kwadratowym równa jest 58:
- 0.34 - prędkość fali w m/ms (340 m/s) dzielona przez 2 (ponieważ fala przebyła drogę w dwie strony).
- Dodatkowo wszystko dzielne przez 10, by zamienić milimetry na centymetry
Wynik programu możemy obejrzeć na monitorze szeregowym:
Zrzut ekranu szeregowego monitora.

