Szukaj kodu

Kod Arduino i wideo dla czujnika odległości ultradźwiękowego HC-SR04

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.

How HC-SR04 ulrasonic sensor work

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

ProducentHC-SR04
Numer częściHC-SR04
Napięcie logiki/IO5 V
Napięcie zasilania5 V
Prąd wyjściowy (na kanał)15 mA
Prąd szczytowy (na kanał)20 mA
Zalecenia dotyczące częstotliwości PWMN/D
Progi logiczne wejścia0,3 V (niski), 0,7 V (wysoki)
Spadek napięcia / RDS(on) / nasycenieN/D
Limity termiczne0°C do 70°C
ObudowaModuł
Uwagi / wariantyMaksymalny 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

Arduino Wiring for HC-SR04 ulrasonic sensor
Arduino Wiring for HC-SR04 ulrasonic sensor
Arduino Wiring for HC-SR04 ulrasonic sensor
Arduino Wiring for HC-SR04 ulrasonic sensor

Aby podłączyć czujnik ultradźwiękowy HC-SR04 do Arduino, wykonaj następujące kroki:

  • Podłącz pin VCC czujnika HC-SR04 do pinu 5V na Arduino.
  • Podłącz pin GND czujnika HC-SR04 do pinu masy na Arduino.
  • Podłącz pin TRIG czujnika HC-SR04 (zwykle niebieski) do pinu cyfrowego 12 na Arduino.
  • Podłącz pin ECHO czujnika 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

Obrazy

Arduino Wiring for HC-SR04 ulrasonic sensor
Arduino Wiring for HC-SR04 ulrasonic sensor
Arduino Wiring for HC-SR04 ulrasonic sensor
Arduino Wiring for HC-SR04 ulrasonic sensor
HC-SR04 ulrasonic sensor
HC-SR04 ulrasonic sensor
How HC-SR04 ulrasonic sensor work
How HC-SR04 ulrasonic sensor work
42-This is the Arduino code for the HC-SR04 ultrasonic distance sensor.
Język: C++
/*
 * 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ć

Zasoby i odniesienia

Pliki📁

Brak dostępnych plików.