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:
-
Generowanie sygnału – mikrokontroler (np. Arduino) wysyła krótki impuls na pin Trig, a czujnik generuje serię fal 40 kHz;
-
Rozchodzenie się fali – fale rozchodzą się w powietrzu i napotykają przeszkodę;
-
Odbicie sygnału – fala odbija się i wraca w kierunku czujnika;
-
Pomiar czasu powrotu – odbiornik rejestruje moment powrotu; pin Echo pozostaje w stanie wysokim przez czas przelotu;
-
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
-
Stałe
TRIG_PINiECHO_PINdefiniują piny podłączenia czujnika, co ułatwia późniejsze modyfikacje. -
W
setup()konfigurujemy kierunek pracy pinów: Trig jako wyjście, Echo jako wejście. -
W
loop()generujemy impuls 10 µs na Trig i czekamy na odpowiedź Echo. -
pulseIn()zwraca czas trwania stanu wysokiego na Echo (czas przelotu fali w obie strony). -
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).