Czujnik odległości HC-SR04 to jedno z najpopularniejszych rozwiązań do mierzenia dystansu w projektach Arduino i nie tylko.

To tani, precyzyjny i łatwy w użyciu moduł do pomiaru odległości z wykorzystaniem fal ultradźwiękowych. Dzięki niemu zbudujesz roboty omijające przeszkody, systemy alarmowe czy inteligentne systemy pomiarowe. Poniżej znajdziesz omówienie budowy, zasady działania oraz praktycznych zastosowań.

Specyfikacja techniczna HC-SR04

Zanim przystąpisz do implementacji, poznaj kluczowe parametry pracy czujnika:

Parametr Wartość
Napięcie zasilania 5 V
Pobór prądu około 15 mA
Zakres pomiarowy 2–400 cm
Rozdzielczość 3 mm
Kąt detekcji 15°
Częstotliwość pracy 40 kHz
Wymiary 45 × 20 × 15 mm

W różnych źródłach można spotkać odmienne zakresy (np. 2–200 cm lub 2–500 cm). Różnice wynikają z warunków testowych i czułości układu, a w praktyce zakres 2–400 cm jest najczęściej w pełni wystarczający.

Budowa czujnika – wyprowadzenia i połączenia

HC-SR04 posiada cztery piny, z których każdy pełni określoną funkcję:

  • VCC – napięcie zasilania (+5 V);
  • GND – masa zasilania (uziemienie);
  • Trig – pin wejściowy do wyzwalania cyklu pomiarowego;
  • Echo – pin wyjściowy informujący o czasie powrotu fali (5 V sygnału).

Struktura połączeń jest prosta i przyjazna dla początkujących.

Zasada działania – jak działa ultradźwięk?

Działanie HC-SR04 opiera się na emisji i odbiorze fal ultradźwiękowych. Pomiar przebiega następująco:

  1. Generowanie sygnału – mikrokontroler (np. Arduino) wysyła krótki impuls na pin Trig, a czujnik generuje serię fal 40 kHz;

  2. Rozchodzenie się fali – fale rozchodzą się w powietrzu i napotykają przeszkodę;

  3. Odbicie sygnału – fala odbija się i wraca w kierunku czujnika;

  4. Pomiar czasu powrotu – odbiornik rejestruje moment powrotu; pin Echo pozostaje w stanie wysokim przez czas przelotu;

  5. Obliczenie odległości – dystans wyznacza się na podstawie czasu i prędkości dźwięku (ok. 343 m/s), dzieląc wynik przez 2, ponieważ fala pokonuje drogę w obie strony.

Praktyczne podłączenie do Arduino Uno

Skorzystaj z poniższego schematu połączeń między Arduino Uno a HC-SR04:

Pin Arduino Pin HC-SR04
5 V VCC
GND GND
Pin 3 Trig
Pin A5 Echo

Zawsze odłącz zasilanie (USB/5 V) przed podłączaniem lub rozpinaniem przewodów – to najprostszy sposób, by uniknąć uszkodzenia modułu i płytki.

Kod Arduino – implementacja praktyczna

Poniżej znajdziesz kompletny przykład programu do pomiaru odległości i prezentacji wyniku w centymetrach:

// Definicja pinów
const int TRIG_PIN = 3;
const int ECHO_PIN = A5;

void setup() {
Serial.begin(9600);
pinMode(TRIG_PIN, OUTPUT); // Trig jako wyjście
pinMode(ECHO_PIN, INPUT); // Echo jako wejście
}

void loop() {
int Time;
double Distance;

// Wysyłanie impulsu wyzwalającego
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);

// Pomiar czasu trwania impulsu
Time = pulseIn(ECHO_PIN, HIGH);

// Przeliczenie na odległość w centymetrach
Distance = Time / 58.0;

// Wyświetlenie wyniku
Serial.print("Dystans: ");
Serial.print(Distance);
Serial.println(" cm");

delay(100);
}

Wyjaśnienie kodu

  1. Stałe TRIG_PIN i ECHO_PIN definiują piny podłączenia czujnika, co ułatwia późniejsze modyfikacje.

  2. W setup() konfigurujemy kierunek pracy pinów: Trig jako wyjście, Echo jako wejście.

  3. W loop() generujemy impuls 10 µs na Trig i czekamy na odpowiedź Echo.

  4. pulseIn() zwraca czas trwania stanu wysokiego na Echo (czas przelotu fali w obie strony).

  5. Dzielenie przez 58 przelicza mikrosekundy na centymetry (ok. 58 µs przypada na 1 cm drogi tam i z powrotem).

Monitorowanie wyników

Po wgraniu programu otwórz Monitor portu szeregowego w Arduino IDE (Narzędzia → Monitor portu szeregowego). Wartość odległości będzie aktualizowana co 100 ms, dzięki czemu łatwo ocenisz stabilność pomiaru.

Praktyczne zastosowania

HC-SR04 sprawdza się w wielu projektach hobbystycznych i edukacyjnych:

  • roboty omijające przeszkody – czujnik wykrywa i pozwala omijać przeszkody na drodze robota;
  • systemy alarmowe – wykrywanie zbliżających się obiektów i inicjowanie sygnału ostrzegawczego;
  • automatyzacja domowa – automatyczne otwieranie drzwi, załączanie oświetlenia lub liczenie osób;
  • inteligentne systemy pomiarowe – precyzyjny pomiar dystansu w zadanych zakresach;
  • robotyka edukacyjna – nauka podstaw elektroniki, czujników i programowania.

Wersja ulepszona – HC-SR04P

Na rynku dostępny jest też HC-SR04P – wariant zgodny z zasilaniem 3–5,5 V, co ułatwia pracę z mikrokontrolerami 3,3 V (np. ESP32, STM32, Raspberry Pi). Zakres pomiaru zależy od napięcia zasilania: 2–450 cm przy 5 V oraz 2–400 cm przy 3 V.

Dla szybkiego porównania obu wersji spójrz na poniższe zestawienie:

Cecha HC-SR04 HC-SR04P
Napięcie zasilania 5 V 3–5,5 V
Zakres pomiaru (5 V) 2–400 cm 2–450 cm
Zakres pomiaru (3,3 V) wymaga konwersji poziomów, zależny od warunków ok. 2–400 cm
Wyjście Echo 5 V (konieczny dzielnik przy MCU 3,3 V) zgodne logicznie z 3,3 V

Wskazówki praktyczne i rozwiązywanie problemów

Jeśli pomiary są niestabilne lub niespójne, pomogą Ci poniższe wskazówki:

  • czujnik nie rejestruje przeszkód – sprawdź przewody, szczególnie Trig i Echo; upewnij się, że zasilanie 5 V jest stabilne;
  • niestabilne odczyty – dodaj krótkie opóźnienie między pomiarami, uśredniaj kilka wyników lub użyj rezystora pull-down na Echo;
  • zbyt duży pobór prądu – moduł pobiera około 15 mA, zadbaj o wydajne źródło 5 V;
  • martwa strefa poniżej 2 cm – minimalny dystans pomiaru to 2 cm, bliższe obiekty będą raportowane błędnie;
  • powierzchnie miękkie lub pod kątem – materiały tłumiące dźwięk (tkaniny) i powierzchnie silnie pochylone odbijają fale poza czujnik, powodując brak echa;
  • praca z MCU 3,3 V – dla standardowego HC-SR04 zastosuj dzielnik napięcia lub konwerter poziomów na linii Echo (5 V → 3,3 V), aby chronić wejścia mikrokontrolera.

Kompatybilność z innymi platformami

HC-SR04 współpracuje z wieloma mikrokontrolerami, w tym Raspberry Pi, ESP32 i STM32. Zasada działania pozostaje taka sama – należy jedynie dopasować piny i poziomy logiczne. Pamiętaj, że wyjście Echo = 5 V w wersji HC-SR04 wymaga zabezpieczenia przy sterownikach 3,3 V (dzielnik lub konwerter poziomów).