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.

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
| Mtengenezaji | HC-SR04 |
|---|---|
| Nambari ya sehemu | HC-SR04 |
| Voltage ya mantiki/IO | 5 V |
| Voltage ya usambazaji | 5 V |
| Mkondo wa pato (kwa kila chaneli) | 15 mA |
| Mkondo wa kilele (kwa kila chaneli) | 20 mA |
| Mwongozo wa mzunguko wa PWM | Haupo |
| Vizingiti vya mantiki ya pembejeo | 0.3 V (chini), 0.7 V (juu) |
| Kushuka kwa voltage / RDS(on) / kueneza | Haupo |
| Mipaka ya joto | 0°C hadi 70°C |
| Kifurushi | Moduli |
| Vidokezo / lahaja | Upeo 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


Ili kuunganisha kihisi cha ultrasonic HC-SR04 kwenye Arduino yako, fuata hatua hizi:
- Unganisha pini ya
VCCya HC-SR04 kwenye pini ya 5V kwenye Arduino. - Unganisha pini ya
GNDya HC-SR04 kwenye pini ya ardhi kwenye Arduino. - Unganisha pini ya
TRIGya HC-SR04 (ambayo kwa kawaida ni ya bluu) kwenye pini ya dijiti 12 kwenye Arduino. - Unganisha pini ya
ECHOya 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
/*
* 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
-
eBay
-
BanggoodPurchase HC-SR04 Ultrasonic Sensor from Banggoodbanggood.com
Resurser och referenser
-
Extern.HC-SR04 Ultrasonic Library from the Arduino official websiteplayground.arduino.cc
Filer📁
Inga filer tillgängliga.