Kod Arduino i wideo dla czujnika odległości ultradźwiękowego HC-SR04
W tym samouczku przyjrzymy się, jak używać ultradźwiękowego czujnika odległości HC-SR04 z Arduino. HC-SR04 to ekonomiczny i skuteczny sposób pomiaru odległości za pomocą fal ultradźwiękowych. Wysyłając sygnał i mierząc czas, jaki upływa do powrotu echa, możemy dokładnie obliczyć odległość do obiektu.

Ten projekt obejmuje podłączenie czujnika do Arduino oraz napisanie prostego programu do odczytu i wyświetlania pomiarów odległości. Program będzie wykorzystywał bibliotekę NewPing, aby usprawnić komunikację z czujnikiem. Jeśli potrzebujesz wizualnego odniesienia lub dalszych wyjaśnień dotyczących poszczególnych kroków, koniecznie sprawdź wideo (na wideo w 00:00).
Omówienie Sprzętu
Czujnik ultradźwiękowy HC-SR04 składa się z dwóch głównych elementów: nadajnika i odbiornika. Nadajnik emituje impulsy ultradźwiękowe o częstotliwości powyżej zakresu słyszalnego dla człowieka, podczas gdy odbiornik nasłuchuje echa tych impulsów po ich odbiciu od obiektu. Obliczając czas między wysłaniem impulsu a odebraniem echa, możemy określić odległość do obiektu.
Czujnik ma dwa istotne piny: pin wyzwalania (trigger) i pin echa (echo). Pin wyzwalania służy do inicjowania pomiaru poprzez wysłanie krótkiego sygnału wysokiego, natomiast pin echa odbiera odbity sygnał i mierzy czas, jaki upływa do powrotu echa.
Szczegóły z Karty Katalogowej
| Producent | HC-SR04 |
|---|---|
| Numer części | HC-SR04 |
| Napięcie logiki/IO | 5 V |
| Napięcie zasilania | 5 V |
| Prąd wyjściowy (na kanał) | 15 mA |
| Prąd szczytowy (na kanał) | 20 mA |
| Zalecenia dotyczące częstotliwości PWM | N/D |
| Progi logiczne wejścia | 0,3 V (niski), 0,7 V (wysoki) |
| Spadek napięcia / RDS(on) / nasycenie | N/D |
| Limity termiczne | 0°C do 70°C |
| Obudowa | Moduł |
| Uwagi / warianty | Maksymalny zasięg 400 cm |
- Zapewnij prawidłowe zasilanie (5 V).
- Utrzymuj czujnik w czystości, aby zapewnić dokładne odczyty.
- Użyj pinu wyzwalania do inicjowania pomiarów.
- Nie przekraczaj maksymalnej odległości, aby uzyskać wiarygodne wyniki.
- Zapewnij czystą ścieżkę dla fal ultradźwiękowych, aby mogły się odbić.
- Stosuj kondensatory odsprzęgające w pobliżu pinów zasilania.
- Uważaj na hałas otoczenia, który może zakłócać odczyty.
- Przetestuj różne odległości, aby zapoznać się z czujnikiem.
Instrukcje Podłączania


Aby podłączyć czujnik ultradźwiękowy HC-SR04 do Arduino, wykonaj następujące kroki:
- Podłącz pin
VCCczujnika HC-SR04 do pinu 5V na Arduino. - Podłącz pin
GNDczujnika HC-SR04 do pinu masy na Arduino. - Podłącz pin
TRIGczujnika HC-SR04 (zwykle niebieski) do pinu cyfrowego 12 na Arduino. - Podłącz pin
ECHOczujnika HC-SR04 (zwykle zielony) do pinu cyfrowego 11 na Arduino.
Upewnij się, że połączenia są pewne, aby uniknąć nieregularnych odczytów. Jeśli używasz innej konfiguracji lub masz alternatywne okablowanie, zapoznaj się z wideo, aby uzyskać dodatkowe wskazówki (na wideo w 00:00).
Przykłady Kodów i Omówienie
Poniższy kod inicjalizuje bibliotekę NewPing i konfiguruje piny dla czujnika HC-SR04. Główne elementy obejmują zdefiniowanie pinów wyzwalania i echa oraz maksymalnej odległości.
#define TRIGGER_PIN 12 // Pin wyzwalania
#define ECHO_PIN 11 // Pin echa
#define MAX_DISTANCE 200 // Maksymalna odległość w cm
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // Konfiguracja NewPing
W tym fragmencie TRIGGER_PIN i ECHO_PIN są ustawione odpowiednio na piny cyfrowe 12 i 11. MAX_DISTANCE jest zdefiniowane jako 200 cm, co jest maksymalną odległością, którą chcesz mierzyć.
Następnie mamy funkcję setup, w której inicjalizowany jest monitor szeregowy w celu wyświetlania wyników:
void setup() {
Serial.begin(115200); // Inicjalizacja monitora szeregowego
}
Ten kod otwiera komunikację szeregową z szybkością transmisji 115200, co pozwala nam zobaczyć pomiary odległości w monitorze szeregowym.
Na koniec funkcja pętli mierzy odległość i sprawdza, czy jest ona mniejsza lub równa 12 cm:
void loop() {
delay(50); // Czekaj między pomiarami
int distance = sonar.ping_cm(); // Zmierz odległość
if(distance <=12){ // Sprawdź odległość
Serial.println("Bardzo blisko"); // Wydrukuj, jeśli bardzo blisko
}
}
W loop() wprowadzamy opóźnienie 50 milisekund, aby kontrolować częstotliwość pomiarów. Odległość jest mierzona, a jeśli jest mniejsza lub równa 12 cm, program wypisuje "Bardzo blisko" na monitorze szeregowym.
Pełny kod znajdziesz w sekcji ładowania poniżej artykułu.
Demonstracja / Czego się spodziewać
Po uruchomieniu programu Arduino będzie ciągle mierzyć odległość do najbliższego obiektu. Powinno wypisywać odległość w centymetrach i informować komunikatem "Bardzo blisko", gdy obiekt zostanie wykryty w odległości do 12 cm. Jeśli obiekt jest zbyt blisko, możesz otrzymać niedokładne odczyty lub żadne, jak zauważono w filmie (na filmie w 10:00).
Upewnij się, że czujnik jest prawidłowo ustawiony i że żadne przeszkody nie blokują fal ultradźwiękowych. Jeśli wszystko jest poprawnie skonfigurowane, powinieneś zobaczyć spójne pomiary wyświetlane na monitorze szeregowym.
Znaczniki czasu w filmie
- 00:00 - Wprowadzenie do HC-SR04
- 01:30 - Podłączanie czujnika
- 03:00 - Przegląd kodu
- 05:00 - Uruchamianie programu
- 07:30 - Pomiar odległości
/*
* This is the Arduino code for the HC-SR04 Ultrasonic Distance Sensor
* to measure the distance using Arduino for a robotic car and other applications
* Watch the video https://youtu.be/QI9541YQq7M
*
* Written by Ahmad Shamshiri for Robojax Video
* Date: December 21, 2017, in Ajax, Ontario, Canada
* Permission granted to share this code given that this
* note is kept with the code.
* Disclaimer: this code is "AS IS" and for educational purposes only.
*
*/
/* Original Code
// https://playground.arduino.cc/Code/NewPing
* Modified for Robojax video on December 21, 2017
*/
// ---------------------------------------------------------------------------
// Example NewPing library sketch that does a ping about 20 times per second.
// ---------------------------------------------------------------------------
#include <NewPing.h>
#define TRIGGER_PIN 12 // Arduino pin tied to trigger pin on the ultrasonic sensor.
#define ECHO_PIN 11 // Arduino pin tied to echo pin on the ultrasonic sensor.
#define MAX_DISTANCE 200 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm.
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.
void setup() {
Serial.begin(115200); // Open serial monitor at 115200 baud to see ping results.
}
void loop() {
delay(50); // Wait 50ms between pings (about 20 pings/sec). 29ms should be the shortest delay between pings.
Serial.print("Ping: ");
Serial.print(sonar.ping_cm()); // Send ping, get distance in cm and print result (0 = outside set distance range)
Serial.println("cm");
int distance = sonar.ping_cm();// store the distance value in "distance" variable
if(distance <=12){ // if distance is less than 12, do something. For example, here just print "very close"
Serial.println("Very close");
}
}
Rzeczy, których możesz potrzebować
-
Allegro
-
BanggoodPurchase HC-SR04 Ultrasonic Sensor from Banggoodbanggood.com
Zasoby i odniesienia
-
ZewnętrznyHC-SR04 Ultrasonic Library from the Arduino official websiteplayground.arduino.cc
Pliki📁
Brak dostępnych plików.