Articles

Cum să utilizați un HC-SR04 Ultrasonic Senzor de Distanță cu Arduino

HC-SR04 este ieftin, ușor de utilizat, cu ultrasunete, senzor de distanță, cu un interval de 2 până la 400 cm. Este frecvent utilizat în evitarea obstacolelor roboți și proiecte de automatizare. În acest tutorial, veți afla cum funcționează senzorul și cum să îl utilizați cu Arduino.

am inclus 5 Exemple cu o schemă de conexiuni și un cod, astfel încât să puteți începe să experimentați cu senzorul., Vom analiza mai întâi un exemplu care nu utilizează o bibliotecă Arduino. În continuare, vă voi arăta cum puteți utiliza biblioteca NewPing pentru a crea un cod mai compact.

Ieftine distanta cu ultrasunete/senzori de proximitate sunt mari, dar în unele proiecte, s-ar putea nevoie de un senzor rezistent la apa ca JSN-SR04T sau un senzor IR care nu este influențată de schimbările de temperatură.,on

20×4 character I2C LCD (optional) × 1 Amazon
AliExpress DHT11 sensor (optional) × 1 Amazon

Software

Arduino IDE

Makerguides.,com este un participant în programul de Amazon Associates LLC Servicii Program, un program de publicitate afiliat conceput pentru a oferi un mijloc pentru site-urile de a câștiga publicitate taxele de publicitate și legarea la produsele pe Amazon.com.

Cum poate un senzor ultrasonic distanță de muncă?

Senzorii ultrasonici funcționează prin emiterea de unde sonore cu o frecvență prea mare pentru ca un om să audă. Aceste unde sonore călătoresc prin aer cu viteza sunetului, aproximativ 343 m / s., Dacă există un obiect în fața senzorului, undele sonore se reflectă înapoi și receptorul senzorului ultrasonic le detectează. Măsurând cât timp a trecut între trimiterea și primirea undelor sonore, se poate calcula distanța dintre senzor și obiect.

distanta cu Ultrasunete senzori principiul de lucru. Sursa: https://www.maxbotix.com/

La 20°C, viteza sunetului este de aproximativ 343 m/s sau 0.034 cm/µs., Să presupunem că timpul dintre trimiterea și primirea undelor sonore este de 2000 de microsecunde. Dacă înmulțiți viteza sunetului cu timpul parcurs de undele sonore, obțineți distanța parcursă de undele sonore.

distanță = viteză x timp

dar acesta nu este rezultatul pe care îl căutăm. Distanța dintre senzor și obiect este de fapt doar jumătate din această distanță, deoarece undele sonore au călătorit de la senzor la obiect și înapoi de la obiect la senzor. Deci, trebuie să împărțiți rezultatul cu două.,

Distanța (cm) = Viteza sunetului (cm/µs) x Timp (µs) / 2

Și deci, de exemplu, aceasta devine:

Distanța (cm) = 0.0343 (cm/µs) x 2000 (µs) / 2 = 34.3 cm

dependența de Temperatură a vitezei de sunet

viteza sunetului, de fapt, depinde puternic de temperatură și la o mult mai mică măsură de umiditatea din aer. Wikipedia afirmă că viteza sunetului crește cu aproximativ 0, 6 m/s pe grad Celsius., Pentru cele mai multe cazuri la 20°C se poate folosi doar de 343 m/s, dar dacă doriți să obțineți mai multe citiri precise, se poate calcula viteza sunetului cu următoarea formulă:

V (m/s) = 331.3 + (0.606 × T)

V = Viteza sunetului (m/s)
T = Temperatura Aerului (°C)

Această formulă nu include umiditate, deoarece efectul său asupra vitezei de sunet este doar foarte mici.

mai jos puteți găsi un tutorial despre cum să utilizați un senzor de temperatură și umiditate DHT11 pentru a calibra viteza sunetului și pentru a obține o citire mai precisă a distanței cu HC-SR04.,

Cum HC-SR04 funcționează

La fața HC-SR04 senzor, puteți găsi două de argint cilindri (traductoare ultrasonice), unul este emițător de unde de sunet, iar celălalt este receptor. Pentru a permite senzorului să genereze o explozie sonică, trebuie să setați știftul Trigger ridicat pentru cel puțin 10 µs. Senzorul creează apoi o explozie de ultrasunete cu 8 cicluri la 40 kHz.această explozie sonică se deplasează cu viteza sunetului și se întoarce și este recepționată de receptorul senzorului. Pinul Echo emite apoi timpul în care undele sonore au călătorit în microsecunde.,

puteți utiliza funcția pulseIn() din codul Arduino pentru a citi lungimea impulsului de la pinul Echo. După aceea, puteți utiliza formula menționată mai sus pentru a calcula distanța dintre senzor și obiect.,ncy

40 kHz domeniul de Măsurare 2 – 400 cm Rezoluție 3 mm Măsurarea unghiului 15 grade Declanșa semnalul de intrare 10 µs puls ridicat Cost Verifica pret

Pentru mai multe informații puteți verifica foaia de date de mai jos:

Cabluri – Conectarea HC-SR04 la Arduino UNO

schema de mai jos vă arată cum să se conecteze la HC-SR04 senzorul de la Arduino.,

HC-SR04 cu Arduino, schema de conexiuni

exemple de cod de mai jos folosi digital pin 2 și 3 pentru a declanșa și echo pin-ul respectiv, dar, desigur, puteți schimba acest lucru la orice pin digital vrei.,C-SR04 Connections

HC-SR04 Arduino
VCC 5 V
Trig Pin 2
Echo Pin 3
GND GND

Example code for HC-SR04 with Arduino

Now that you have wired up the sensor it is time to connect the Arduino to the computer and upload some code., Puteți încărca următorul exemplu de cod în Arduino utilizând IDE-ul Arduino. În continuare, vă voi explica cum funcționează codul.

cum funcționează codul

În primul rând, PIN-ul de declanșare și echo pin-ul sunt definite. Le numesc trigPinși EchoPin. Pinul de declanșare este conectat la pinul digital 2 și pinul echo la pinul digital 3 de pe Arduino.

instrucțiunea #define este utilizată pentru a da un nume unei valori constante., Compilatorul va înlocui orice referință la această constantă cu valoarea definită atunci când programul este compilat. Deci, oriunde menționați trigPin, compilatorul îl va înlocui cu valoarea 2 atunci când programul este compilat.

// Define Trig and Echo pin:#define trigPin 2#define echoPin 3

Apoi am definit două variabile: duration și distance. Durata stochează timpul dintre trimiterea și primirea undelor sonore. Variabila de distanță este utilizată pentru a stoca distanța calculată.,

// Define variables:long duration;int distance;

În setup(), începe prin stabilirea trigPin ca o ieșire și echoPin ca o intrare. Apoi inițializați comunicarea serială la o rată de transfer de 9600. Mai târziu, veți afișa distanța măsurată în Monitorul serial, care poate fi accesat cu Ctrl+Shift+M sau instrumente > monitor Serial. Asigurați-vă că rata baud este de asemenea setată la 9600 în Monitorul serial.

în loop(), declanșați senzorul setând trigpinul ridicat pentru 10 µs., Rețineți că pentru a obține un semnal curat, începeți să ștergeți trigpinul setându-l scăzut timp de 5 microsecunde.apoi, trebuie să citiți lungimea pulsului trimis de echoPin. Folosesc funcția pulseIn() pentru aceasta. Această funcție așteaptă ca pinul să treacă de la scăzut la înalt, începe sincronizarea, apoi așteaptă ca pinul să meargă scăzut și oprește sincronizarea.

după aceea, puteți calcula distanța folosind formula menționată în introducerea acestui tutorial.în cele din urmă, distanța calculată este imprimată în Monitorul serial.,

Exemplu de cod HC-SR04 cu Arduino și NewPing bibliotecă

NewPing biblioteca scris de Tim Eckel poate fi folosit cu mai multe distanta cu ultrasunete senzori. Ultima versiune de această bibliotecă poate fi descărcat de aici de pe bitbucket.org. S-ar putea observa că codul de mai jos, care utilizează NewPing bibliotecă, este mult mai scurtă decât cea de cod am folosit înainte. În plus, biblioteca NewPing include și alte caracteristici frumoase. Vă permite să setați o distanță maximă de citit, nu va rămâne o secundă completă atunci când nu se primește ecou și are un filtru median încorporat.,

puteți instala biblioteca accesând schița > Include biblioteca > adăugați .Biblioteca ZIP în Arduino IDE.

Biblioteca include câteva exemple pe care le puteți utiliza, dar va trebui să le modificați pentru a se potrivi cu configurația hardware. Am inclus un exemplu de cod modificat de mai jos, care poate fi utilizat cu aceeași configurație de cabluri ca înainte.

de asemenea, puteți utiliza distance = sonar.ping_cm() sau distance = sonar.ping_in() care returnează distanța măsurată în toată centimetri sau inci., Cu această funcție nu este necesar să efectuați o măsurare a duratei și să calculați distanța.Biblioteca NewPing face, de asemenea, ușor de interfață cu senzori cu ultrasunete în timp ce utilizați numai 1 i/o pin. Acest lucru poate fi util dacă aveți foarte puțini pini I/O disponibili sau dacă doriți să utilizați un senzor ultrasonic cu 3 pini, cum ar fi ping-ul Parallax.pentru a crea o configurare cu 3 pini (GND, 5V și SIG), trebuie să conectați atât pinul declanșator, cât și pinul echo la același pin digital de pe Arduino., În cod, singurul lucru pe care trebuie să-l schimbați este linia 6-7 și definiți același pin atât pentru trigPin, cât și pentru echoPin. De exemplu pin digital 2.

//Define Trig and Echo pin#define trigPin 2#define echoPin 2

Cum să utilizați ping_median() filtru digital

Cel mai important lucru mi place despre NewPing biblioteca este că ea are un built-in filtru median. Acest filtru poate îmbunătăți considerabil precizia citirilor HC-SR04. Funcția ping_median() ia multe măsurători de durată la rând, aruncă citirile din afara intervalului și apoi medii pe cele rămase., În mod implicit, va dura 5 lecturi, dar puteți specifica cât de multe ar trebui să ia. Înlocuiți linia 19 cu liniile de mai jos.

int iterations = 5;duration = sonar.ping_median(iterations);

Exemplu de cod HC-SR04 cu I2C LCD și Arduino

Pentru a afișa distanța măsurată pe un 2004 sau 1602 I2C LCD, tot ce trebuie să faceți este să facă următoarele conexiuni și încărcați codul de mai jos. Senzorul HC-SR04 este conectat în același mod ca înainte.

HC-SR04 cu Arduino și I2C LCD diagrama de cablare.,

I2C LCD Connections

I2C LCD Arduino
GND GND
VCC 5 V
SDA A4
SCL A5

If you are not using an Arduino Uno, the SDA and SCL pins can be at a different location., Un Arduino Uno cu aspectul R3 (1.0 pinout), are, de asemenea, SDA (linie de date) și SCL (linie de ceas) anteturile pini aproape de pin Aref. Verificați tabelul de mai jos pentru mai multe detalii.,f43445″>

Arduino Uno A4 A5 Arduino Nano A4 A5 Arduino Micro 2 3 Arduino Mega 2560 20 21 Arduino Leonardo 2 3

Arduino Due 20 21
I2C pin locations for different Arduino boards

The code uses the LiquidCrystal_I2C library, which you can download here on GitHub., Asigurați-vă că aveți instalată această bibliotecă exactă! De asemenea, include firul.h bibliotecă, care vă permite să comunice cu dispozitive I2C. Această bibliotecă ar trebui să vină preinstalată cu IDE Arduino.dacă doriți să aflați mai multe despre cum să controlați un LCD I2C cu Arduino, puteți consulta tutorialul complet aici.

  • cum de a controla un caracter I2C LCD cu Arduino

rețineți că am folosit un ecran LCD de 20 x 4. Dacă aveți un LCD de dimensiuni diferite (16 x 2 este de asemenea obișnuit), trebuie să schimbați linia 20 la LiquidCrystal_I2C lcd(0x27,16,2);., Dacă LCD-ul dvs. nu are adresa implicită I2C, 0x27, consultați tutorialul complet I2C unde vă explic cum puteți afla care este adresa.

exemplu de cod HC-SR04 cu senzor de temperatură DHT11 și Arduino

după cum am menționat anterior, viteza sunetului depinde puternic de temperatura aerului. Dacă doriți să măsurați distanțe lungi (3-4 m), poate fi o idee bună să adăugați un senzor de temperatură și umiditate DHT11 sau DHT22 la configurația dvs. Acest lucru vă va permite să calibrați viteza sunetului în timp real și, prin urmare, să creșteți precizia măsurătorilor.,

adăugarea unui senzor DHT11 este foarte simplă. Diagrama de cablare de mai jos vă arată ce conexiuni trebuie să faceți. Rețineți că eu sunt folosind un DHT11 cu o placă breakout, așa că am nevoie doar de sârmă în sus 3 pini. Asigurați-vă că verificați eticheta senzorului, ordinea pinilor poate fi diferită în funcție de producător. Senzorul HC-SR04 este conectat în același mod ca înainte.

HC-SR04 cu Arduino și DHT11 diagrama de cablare.,

DHT11 Connections

DHT11 Arduino
VCC (+) 5 V
Signal (s) Pin 4
GND (-) GND

The code below uses the Adafruit DHT Humidity & Temperature Sensor library which you can download here on GitHub., Această bibliotecă funcționează numai dacă aveți instalată și Biblioteca Adafruit_Sensor, care este disponibilă și pe GitHub. De asemenea, puteți descărca cele două biblioteci făcând clic pe butoanele de mai jos:

puteți face clic pe butonul din colțul din dreapta sus al câmpului de cod pentru a copia codul.

Exemplu de cod HC-SR04 cu DHT11 si I2C LCD

HC-SR04 cu Arduino, DHT11 si I2C LCD diagrama de cablare.

codul De mai jos poate fi folosit pentru a combina toate cele 3 exemple de mai sus., Afișează atât temperatura, viteza sunetului, cât și distanța măsurată pe ecranul LCD.

HC-SR04 dimensiuni

mai jos puteți găsi dimensiunile senzorului ultrasonic HC-SR04. Am observat că există unele diferențe mici între producători, așa că vă recomand să verificați dublu împotriva propriului senzor.

HC-SR04 Dimensiuni

HC-SR04 CAD

am creat de bază desene CAD de HC-SR04 senzor ultrasonic pe care le puteți descărca de mai jos.,în acest articol, v-am arătat cum funcționează senzorul de distanță ultrasonică HC-SR04 și cum îl puteți folosi cu Arduino. Sper că ați găsit-o utilă și informativă. Dacă ați făcut-o, vă rugăm să o împărtășiți cu un prieten care îi place și electronica!

proiect Personal: acum câteva luni am construit o instalație interactivă de perete cu niște prieteni. Am folosit aproximativ 30 de senzori de distanță cu ultrasunete pentru a detecta oamenii care merg în fața peretelui. Peretele a inclus lumini și efecte sonore care s-au schimbat în funcție de cât de departe stăteau oamenii.,

Foto: Guus Schoonewille

mi-ar plăcea să știu ce proiecte aveți în plan să construiți (sau au deja construite), cu HC-SR04 senzor de distanță. Dacă aveți întrebări, sugestii sau dacă credeți că lucrurile lipsesc în acest tutorial, vă rugăm să lăsați un comentariu mai jos.