W tym artykule omówimy czujnik odległości HC-SR04, zostanie przedstawione połączenie do arduino, oraz wykorzystamy go w praktyce i będziemy robić pomiar na jakim dystansie znajduje się przeszkoda.

Spis treści
- Opis czujnika
- Specyfikacja
- Podłączenie czujnika do arduino
- Zaprogramowanie arduino
Opis czujnika
Czujnik ultradźwiękowy działający w zakresie 2-200 cm. Zasilany napięciem 5 V. Wyjściem jest sygnał, którego czas trwania jest proporcjonalny do mierzonej odległości. Kompatybilny z Arduino czujnik odległości – czujnik ultradźwiękowy HC-SR04.
Specyfikacja
Napięcie zasilania: 5 V
Średni pobór prądu: 15 mA
Zakres pomiarowy: od 2 cm do 200 cm
Wyjście: sygnał częstotliwościowy
Częstotliwość pracy: 40 kHz
Wymiary: 45 x 20 x 15 mm
Kompatybilny z Raspberry Pi i Arduino czujnik ultradźwiękowy odległości
Podłączenie czujnika do arduino
Zaczniemy od podłączenia czujnika, będzie ono dosyć proste, wystarczy spojrzeć na oznaczenia nad pinami i następująco podpiąc je do arduino. Pin GND z czujnika idzie do GDN na arduino, a VCC do 5V, TRIG posłuży nam do wysyłania sygnału oraz ECHO do jego odbierania. TRIG podpinamy do pinu 8 na arduino, a ECHO do pinu 7. Schemat połączenia znajduje się poniżej.

Zaprogramowanie arduino
Zaczniemy od funkcji setup gdzie ustawimy piny na wejście oraz wyjście, zaczniemy transmisję do portu szeregowego, lecz na początku zdefinujemy piny ECHO oraz TRIG.
#define echo 8//zdefiniowanie pinu 8 jako echo
#define trig 7//zdefiniowanie pinu 7 jako trig
void setup() {
Serial.begin(9600);
pinMode(echo, INPUT);//ustawienie wejscia dla echo
pinMode(trig, OUTPUT);//ustawienie wyjscia dla trig
}Zdefiniujemy teraz dwie zmienne które posłużą nam do przechowania czasu powrotu sygnału odczytanego z czujnika, oraz obliczonego juz dystansu w centymetrach. Następnie ustawiamy stan niski, wysoki, niski, na pinie trig, aby czujnik wysłał sygnał, zapisujemy do zmiennej w jakim czasie został odebrany i wyświetlamy go w monitorze portów szeregowych.
void loop() {
long czas, dystans;//zdefiniowanie zmiennej czas i dystans
digitalWrite(trig, LOW);//ustawienie stanu niskiego na pinie trig
delayMicroseconds(2);//opóźnij o 2 mikrosekundy
digitalWrite(trig, HIGH);//ustawienie stanu wysokiego na pinie trig
delayMicroseconds(10);//opóźnij o 10 mikrosekund
digitalWrite(trig, LOW);//ustawienie stanu niskiego na pinie trig
czas = pulseIn(echo, HIGH);//zapisz czas w jakim sygnał wrócił do zmiennej
dystans = czas / 58;//korzystamy ze wzoru który przedstawił producent i otrzymujemy odległość w cm
Serial.println(dystans);//wyświetlenie zwróconego dystansu w monitorze portu szeregowego
delay(500);
}Wgrywamy program do arduino i otwieramy monitor portów szeregowych, powinniśmy ujrzeć wartość zwracaną w centymetrach w zależności od tego na jakim dystansie jest przeszkoda np. ściana.






