Search Code

Msimbo wa Arduino na Video kwa Sensor ya Umbali ya Ultrasonic HC-SR04

Msimbo wa Arduino na Video kwa Sensor ya Umbali ya Ultrasonic HC-SR04

Katika mafunzo haya, tutachunguza jinsi ya kutumia kihisi cha umbali cha ultrasonic HC-SR04 na Arduino. HC-SR04 ni njia ya kiuchumi na yenye ufanisi ya kupima umbali kwa kutumia mawimbi ya ultrasonic. Kwa kutuma ishara na kupima muda unaochukua kwa mwangwi kurudi, tunaweza kuhesabu umbali wa kitu kwa usahihi.

How HC-SR04 ulrasonic sensor work

Mradi huu unahusisha kuweka kihisi na Arduino na kuandika programu rahisi ya kusoma na kuonyesha vipimo vya umbali. Programu itatumia maktaba ya NewPing kurahisisha mawasiliano na kihisi. Ikiwa unataka rejea ya kuona au ufafanuzi zaidi kuhusu hatua zozote, hakikisha umeangalia video (katika video saa 00:00).

Vifaa Vimeelezwa

Kihisi cha ultrasonic HC-SR04 kina sehemu kuu mbili: kisambazaji na kipokezi. Kisambazaji hutoa mipigo ya ultrasonic kwa masafa ya juu kuliko uwezo wa kusikia wa binadamu, wakati kipokezi kinasikiliza mwangwi wa mipigo hiyo baada ya kuruka kutoka kwenye kitu. Kwa kuhesabu muda kati ya kutuma pigo na kupokea mwangwi, tunaweza kuamua umbali wa kitu.

Kihisi kina pini mbili muhimu: pini ya trigger na pini ya echo. Pini ya trigger hutumiwa kuanzisha kipimo kwa kutuma ishara fupi ya juu, wakati pini ya echo inapokea ishara iliyoakisiwa na kupima muda unaochukua kwa mwangwi kurudi.

Maelezo ya Datasheet

MtengenezajiHC-SR04
Nambari ya sehemuHC-SR04
Voltage ya mantiki/IO5 V
Voltage ya usambazaji5 V
Mkondo wa pato (kwa kila chaneli)15 mA
Mkondo wa kilele (kwa kila chaneli)20 mA
Mwongozo wa mzunguko wa PWMHaupo
Vizingiti vya mantiki ya pembejeo0.3 V (chini), 0.7 V (juu)
Kushuka kwa voltage / RDS(on) / kuenezaHaupo
Mipaka ya joto0°C hadi 70°C
KifurushiModuli
Vidokezo / lahajaUpeo wa umbali 400 cm

  • Hakikisha usambazaji wa nishati sahihi (5 V).
  • Weka kihisi safi kwa usomaji sahihi.
  • Tumia pini ya trigger kuanzisha vipimo.
  • Usizidi umbali wa juu kwa matokeo ya kuaminika.
  • Dumisha njia wazi kwa mawimbi ya ultrasonic kurudi.
  • Tumia capacitors za decoupling karibu na pini za usambazaji wa nishati.
  • Kuwa makini kuhusu kelele za mazingira zinazoweza kuingilia usomaji.
  • Jaribu umbali tofauti ili kufahamiana na kihisi.

Maagizo ya Wiring

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

Ili kuunganisha kihisi cha ultrasonic HC-SR04 kwenye Arduino yako, fuata hatua hizi:

  • Unganisha pini ya VCC ya HC-SR04 kwenye pini ya 5V kwenye Arduino.
  • Unganisha pini ya GND ya HC-SR04 kwenye pini ya ardhi kwenye Arduino.
  • Unganisha pini ya TRIG ya HC-SR04 (ambayo kwa kawaida ni ya bluu) kwenye pini ya dijiti 12 kwenye Arduino.
  • Unganisha pini ya ECHO ya HC-SR04 (ambayo kwa kawaida ni ya kijani) kwenye pini ya dijiti 11 kwenye Arduino.

Hakikisha miunganisho ni thabiti ili kuepuka usomaji wa mara kwa mara usio thabiti. Ikiwa unatumia mpangilio tofauti au una wiring mbadala, rejea video kwa mwongozo wa ziada (katika video saa 00:00).

Mifano ya Msimbo na Maelezo

Msimbo ufuatao huanzisha maktaba ya NewPing na kuweka pini za kihisi cha HC-SR04. Sehemu kuu zinajumuisha kufafanua pini za trigger na echo, pamoja na umbali wa juu.

#define TRIGGER_PIN  12  // Pini ya trigger
#define ECHO_PIN     11  // Pini ya echo
#define MAX_DISTANCE 200  // Umbali wa juu kwa cm

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // Weka NewPing

Katika sehemu hii, TRIGGER_PIN na ECHO_PIN zimewekwa kwenye pini za dijiti 12 na 11, mtawalia. MAX_DISTANCE imefafanuliwa kama 200 cm, ambayo ni umbali wa juu unaotaka kupima.

Ifuatayo, tuna kazi ya setup ambapo kichunguzi cha serial kinawashwa ili kuonyesha matokeo:

void setup() {
  Serial.begin(115200); // Washa kichunguzi cha serial
}

Msimbo huu unafungua mawasiliano ya serial kwa kiwango cha baud 115200, ikituruhusu kuona vipimo vya umbali kwenye kichunguzi cha serial.

Hatimaye, kazi ya loop inapima umbali na kuangalia ikiwa ni chini ya au sawa na 12 cm:

void loop() {
  delay(50); // Subiri kati ya vipimo
  int distance = sonar.ping_cm(); // Pima umbali
  if(distance <=12){ // Angalia umbali
    Serial.println("Karibu sana"); // Chapisha ikiwa karibu sana
  }
}

Katika loop(), tunaanzisha kuchelewa kwa milisekunde 50 ili kudhibiti mzunguko wa vipimo. Umbali hupimwa, na ikiwa ni chini ya au sawa na sm 12, huchapisha "Karibu sana" kwenye mfuatiliaji wa serial.

Kwa msimbo kamili, tafadhali rejelea sehemu ya upakiaji chini ya makala.

Maonyesho / Nini cha Kutarajia

Unapoendesha programu, Arduino itaendelea kupima umbali wa kitu kilicho karibu zaidi. Inapaswa kuchapisha umbali kwa sentimita na kukujulisha kwa "Karibu sana" wakati kitu kinapogunduliwa ndani ya sm 12. Ikiwa kitu kiko karibu sana, unaweza kupata usomaji usio sahihi au kutokupata usomaji kabisa, kama ilivyobainishwa kwenye video (katika video saa 10:00).

Hakikisha kwamba sensa imewekwa vizuri na kwamba hakuna vizuizi vinavyozuia mawimbi ya ultrasonic. Ikiwa kila kitu kimewekwa vizuri, unapaswa kuona vipimo thabiti vinavyoonyeshwa kwenye mfuatiliaji wa serial.

Vidokezo vya Muda wa Video

  • 00:00 - Utangulizi wa HC-SR04
  • 01:30 - Kuunganisha sensa
  • 03:00 - Muhtasari wa msimbo
  • 05:00 - Kuendesha programu
  • 07:30 - Kupima umbali

Bilder

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.
Språk: 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");
  }
}

Tänker att du kanske behöver

Resurser och referenser

Filer📁

Inga filer tillgängliga.