Caută cod

Cod Arduino și Video pentru Senzorul de Mișcare HC-SR501

Cod Arduino și Video pentru Senzorul de Mișcare HC-SR501

În acest tutorial, vom explora senzorul de mișcare HC-SR501, care este conceput pentru a detecta mișcarea prin tehnologia infraroșu. Senzorul poate declanșa o ieșire, permițându-vă să controlați dispozitive precum LED-uri sau alarme pe baza detectării mișcării. Până la sfârșitul acestui tutorial, veți avea o înțelegere clară a modului de conectare a senzorului și de implementare a codului Arduino pentru a-l face să funcționeze eficient. (în videoclip la 00:45)

Hardware Explicat

Senzorul de mișcare HC-SR501 este un modul compact care măsoară 32 pe 24 de milimetri, capabil să funcționeze într-un interval de tensiune de 5 până la 20 de volți. În centrul său se află senzorul infraroșu LHI 778, care detectează mișcarea prin sesizarea modificărilor în radiația infraroșie. Acest lucru îl face potrivit pentru diverse aplicații, inclusiv sisteme de securitate și proiecte robotice.

Acest modul are trei pini principali: VCC pentru alimentare, GND pentru masă și OUT pentru semnalul de ieșire. Când este detectată mișcarea, pinul OUT trimite un semnal înalt (3,3 volți TTL), care poate fi folosit pentru a declanșa alarme sau alte dispozitive. Senzorul include, de asemenea, setări reglabile pentru sensibilitate și întârziere de timp, permițându-vă să personalizați funcționarea acestuia în funcție de nevoile dumneavoastră specifice.

Detalii din Fișa Tehnică

ProducătorHC-SR501
Număr de piesăHC-SR501
Tensiune logică/IO3,3 V
Tensiune de alimentare5–20 V
Curent de ieșire (pe canal)≤ 20 mA
Curent de vârf (pe canal)≤ 50 mA
Ghidare frecvență PWMNu este aplicabil
Praguri logice de intrare0,8 V (LOW), 2,0 V (HIGH)
Cădere de tensiune / RDS(on) / saturație0,1 V
Limite termice0°C până la 70°C
PachetModul
Note / varianteSensibilitate și întârziere de timp reglabile

  • Asigurați-vă de tensiunea corectă de alimentare (5-20 V).
  • Folosiți un rezistor în serie cu LED-urile pentru a limita curentul.
  • Reglați potențiometrul de sensibilitate pentru raza de detectare.
  • Setați întârzierea de timp pentru a controla cât timp rămâne ieșirea înaltă.
  • Fiți atenți la intrările flotante; folosiți rezistențe de pull-up sau pull-down după cum este necesar.

Instrucțiuni de Cablare

Arduino wiring for HC-SR501 Motions sensor
Arduino wiring for HC-SR501 Motions sensor

Pentru a cabla senzorul de mișcare HC-SR501, începeți prin conectarea pinului VCC la ieșirea de 5V de pe Arduino. Apoi, conectați pinul GND la masă (GND) de pe Arduino. Pinul OUT ar trebui conectat la pinul digital 2 de pe Arduino, care va citi semnalul de detectare a mișcării.

Dacă folosiți un LED pentru feedback vizual, conectați anodul (pinul lung) al LED-ului la pinul digital 8 de pe Arduino. Catodul (pinul scurt) ar trebui conectat la un terminal al unui rezistor de 680 de ohmi, celălalt terminal al rezistorului mergând la masă. Această configurare permite Arduino-ului să controleze LED-ul pe baza detectării mișcării.

Exemple de Cod și Explicații

Codul Arduino pentru această configurare inițializează monitorul serial și configurează pinii de intrare și ieșire. Identificatorii cheie din cod includ motion, care stochează starea senzorului de mișcare, și pinii digitali folosiți pentru citirea intrării și controlul LED-ului.

void setup() {
  Serial.begin(9600);// configurare Monitor Serial pentru afișarea informațiilor
  pinMode(2, INPUT);// Intrare de la senzor
  pinMode(8, OUTPUT);// Ieșire către alarmă sau LED
}

În acest fragment, funcția setup() inițializează comunicarea serială și setează modurile pinilor pentru senzor și LED. Pinul 2 este setat ca intrare pentru a citi ieșirea senzorului de mișcare, în timp ce pinul 8 este setat ca ieșire pentru a controla LED-ul.

void loop() {
  int motion = digitalRead(2);
  if(motion){
    Serial.println("Mișcare detectată");
    digitalWrite(8, HIGH);
  }else{
    Serial.println("===nimic nu se mișcă");
    digitalWrite(8, LOW);
  }
  delay(500);
}

Acest fragment de cod reprezintă bucla principală în care programul verifică continuu starea senzorului de mișcare. Dacă este detectată mișcare, se afișează "Mișcare detectată" pe monitorul serial și LED-ul se aprinde. Dacă nu este detectată mișcare, se afișează "===nimic nu se mișcă" și LED-ul se stinge.

Demonstrație / Ce să Vă Așteptați

Când configurarea este completă și codul este încărcat pe Arduino, ar trebui să vă așteptați ca LED-ul să se aprindă atunci când mișcarea este detectată de senzorul HC-SR501. În plus, monitorul serial va afișa mesaje care indică dacă mișcarea este detectată sau nu. Dacă ajustați setările de sensibilitate și întârziere de timp de pe senzor, puteți observa modificări în cât de rapid răspunde senzorul la mișcare (în videoclip la 05:30).

Capcanele comune includ cablarea incorectă, cum ar fi inversarea conexiunilor pentru VCC și GND, ceea ce ar putea deteriora senzorul. Asigurați-vă că pinul de ieșire al senzorului este conectat corect la pinul de intrare desemnat de pe Arduino pentru a evita intrările flotante.

Marcaje de Timp în Videoclip

  • 00:00 Introducere
  • 00:45 Prezentare Hardware
  • 02:30 Instrucțiuni de Cablare
  • 04:00 Explicația Codului
  • 05:30 Demonstrație

Imagini

HC-SR501 back
HC-SR501 back
HC-SR501 module
HC-SR501 module
Arduino wiring for HC-SR501 Motions sensor
Arduino wiring for HC-SR501 Motions sensor
48-This is the Arduino code for the HC-SR501 motion sensor.
Limba: C++
/*
 * This is the Arduino code for HC-SR501 Motion Sensor
 * to detect motion of humans or objects using Arduino for robotic car and other applications
 * Watch the video https://youtu.be/mZCJNOf69JI
 * 
 * Written by Ahmad Shamshiri for Robojax Video
 * Date: Dec 27, 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.
 * 
 */

void setup() {
  Serial.begin(9600);// setup Serial Monitor to display information
  pinMode(2, INPUT);// Input from sensor
  pinMode(8, OUTPUT);// OUTPUT to alarm or LED
}

void loop() {
  int motion =digitalRead(2);
  if(motion){
    Serial.println("Motion detected");
    digitalWrite(8,HIGH);
  }else{
     Serial.println("===nothing moves");
     digitalWrite(8,LOW);
  }
  delay(500);

}

Resurse și referințe

Încă nu sunt resurse.

Fișiere📁

Alte fișiere