Caută cod

Cod Arduino și video pentru un modul senzor de mișcare HC-SR505 cu releu

Cod Arduino și video pentru un modul senzor de mișcare HC-SR505 cu releu

În acest tutorial, vom construi un sistem de detectare a mișcării folosind senzorul de mișcare HC-SR505 și un modul de releu. Această configurație vă va permite să porniți dispozitive precum lumini sau sonerii atunci când este detectată mișcare. Releul acționează ca un comutator pentru a controla în siguranță dispozitivele de înaltă tensiune. Până la sfârșitul acestui ghid, veți avea o configurație funcțională de senzor de mișcare care poate activa diverse aparate pe baza detectării mișcării. Pentru o înțelegere mai clară, asigurați-vă că vizionați videoclipul asociat (în videoclip la 0:00).

HC-SR505 motion sensor

Hardware Explicat

Componentele principale ale acestui proiect includ senzorul de mișcare HC-SR505, un modul de releu și o placă Arduino. HC-SR505 este un senzor pasiv în infraroșu (PIR) care detectează mișcarea prin sesizarea schimbărilor în radiația infraroșie. Funcționează măsurând căldura emisă de obiectele din câmpul său vizual. Când este detectat un obiect în mișcare, senzorul trimite un semnal către Arduino.

Modulul de releu este folosit pentru a controla un dispozitiv de înaltă tensiune, cum ar fi un bec. Acesta acționează ca un comutator operat electric, permițând Arduino-ului să pornească sau să oprească dispozitivul în siguranță. Releul are două configurații principale: normal deschis (NO) și normal închis (NC), care determină starea implicită atunci când releul nu este activat.

Detalii din Fișa Tehnică

ProducătorHC-SR505
Număr de piesăHC-SR505
Tensiune logică/IO3.3V - 20V
Tensiune de alimentare5V
Curent de ieșire (pe canal)20 mA
Curent de vârf (pe canal)100 mA
Ghid de frecvență PWMN/A
Praguri logice de intrare0.3V (jos) / 2.5V (sus)
Cădere de tensiune / RDS(on) / saturație0.2V
Limite termice+70 °C
PachetModul
Note / varianteFactor de formă mic; consum redus de energie

  • Asigurați o disipare adecvată a căldurii pentru sarcini de curent ridicat.
  • Utilizați condensatoare de decuplare pentru o alimentare stabilă.
  • Fiți precauți cu conexiunile de înaltă tensiune; asigurați siguranța.
  • Testați senzorul cu ieșiri simple înainte de a-l conecta la relee.
  • Verificați orientarea senzorului PIR pentru o detectare optimă.

Instrucțiuni de Cablare

Arduino wiring for  HC-SR505 motion sensor
Arduino wiring for HC-SR505 motion sensor

Pentru a cabla senzorul de mișcare HC-SR505, conectați mai întâi pinul de alimentare (marcat cu +) la ieșirea de 5V de pe Arduino. Apoi, conectați pinul de masă (marcat cu -) la unul dintre pinii de masă ai Arduino-ului. Pinul de semnal (pinul din mijloc) ar trebui conectat la pinul digital 2 de pe Arduino.

Pentru modulul de releu, conectați pinul VCC la ieșirea de 5V de pe Arduino și pinul de masă la masa Arduino-ului. Pinul de intrare al releului ar trebui conectat la pinul digital 9 de pe Arduino. În final, conectați terminalul pozitiv al soneriei la pinul digital 8 și terminalul negativ la masă. Asigurați-vă că conectați pinii comuni și normal deschiși ai releului în mod corespunzător pentru a controla dispozitivul dumneavoastră.

Exemple de Cod și Explicații

Codul pentru acest proiect inițializează pinii pentru senzor, sonerie și releu. Folosește funcția digitalRead() pentru a verifica mișcarea și răspunde în consecință. Mai jos este un extras din funcția de configurare:


void setup() {
  Serial.begin(9600); // configurează Monitorul Serial
  pinMode(PIR, INPUT_PULLUP); // definește pinul ca Intrare pentru senzor
  pinMode(BUZZER, OUTPUT); // definește pinul ca IEȘIRE pentru sonerie
  pinMode(RELAY, OUTPUT); // definește pinul ca IEȘIRE pentru releu
}

În acest extras, pinii sunt setați fie în modul intrare, fie în modul ieșire. Serial.begin(9600) inițializează comunicarea serială pentru depanare.

Bucla principală verifică mișcarea și activează soneria și releul atunci când este detectată mișcare. Iată un extras focusat din funcția buclei:

Wirig relay module to AC load

void loop() {
  int motion = digitalRead(PIR); // citește senzorul
  if(motion) {
    Serial.println("Mișcare detectată");
    digitalWrite(BUZZER, HIGH); // pornește soneria
    digitalWrite(RELAY, LOW); // pornește releul
  } else {
    Serial.println("===nimic nu se mișcă");
    digitalWrite(BUZZER, LOW); // menține soneria oprită
    digitalWrite(RELAY, HIGH); // oprește releul
  }
  delay(500);
}

Acest extras citește starea senzorului PIR și activează sau dezactivează soneria și releul pe baza mișcării detectate. Întârzierea de 500 de milisecunde asigură că bucla verifică senzorul la un interval rezonabil.

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

Când este detectată mișcare, lumina conectată la releu se va aprinde, iar soneria va suna. Dacă nu este detectată mișcare, releul va opri lumina, iar soneria va fi tăcută. Fiți conștienți că HC-SR505 are o întârziere încorporată care menține ieșirea activă pentru o scurtă perioadă după detectarea mișcării (până la 8 secunde), care nu poate fi ajustată (în videoclip la 5:30).

Marcaje Temporale din Videoclip

  • 00:00 – Introducere în proiect
  • 01:30 – Explicația componentelor
  • 03:15 – Instrucțiuni de cablare
  • 05:30 – Explicația codului
  • 07:00 – Demonstrația configurației

Imagini

Wirig relay module to AC load
Wirig relay module to AC load
HC-SR505 motion sensor
HC-SR505 motion sensor
HC-SR505 motion sensor
HC-SR505 motion sensor
HC-SR505 motion sensor
HC-SR505 motion sensor
HC-SR505 motion sensor
HC-SR505 motion sensor
HC-SR505 motion sensor
HC-SR505 motion sensor
Arduino wiring for  HC-SR505 motion sensor
Arduino wiring for HC-SR505 motion sensor
74-This is the Arduino code for the HC-SR505 motion sensor (small) with relay.
Limba: C++
/*
 * This is the Arduino code for HC-SR501 Motion Sensor
 * to detect motion of human or objects using Arduino for robotic car and other applications
 * Watch HC-SR505 video https://youtu.be/qhThpxiXubI
 * 
// Written by Ahmad S. for Robojax.com on 
// February 10, 2018 at 11:41 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.
 * 
 */


#define PIR 2 // define pin 2 for sensor
#define BUZZER 8 // define pin 8 as for buzzer
#define RELAY 9 // define pin 9 as for relay

void setup() {
  // HC-SR505 Motion Sensor Code by Robojax.com 20180210
  Serial.begin(9600);// setup Serial Monitor to display information
  pinMode(PIR, INPUT_PULLUP);// define pin as Input sensor
  pinMode(BUZZER, OUTPUT);// define pin as OUTPUT for buzzer or LED
  pinMode(RELAY, OUTPUT);// define pin as OUTPUT for relay
}

void loop() {
  // HC-SR505 Motion Sensor Code by Robojax.com 20180210
  int motion =digitalRead(PIR);// read the sensor 
  if(motion){
    Serial.println("Motion detected");
    digitalWrite(BUZZER,HIGH);// turn the buzzer ON
    digitalWrite(RELAY,LOW);// turn the relay ON
  }else{
     Serial.println("===nothing moves");
     digitalWrite(BUZZER,LOW);// keep the buzzer OFF
     digitalWrite(RELAY,HIGH);// turn the relay OFF
  }
  delay(500);
 // HC-SR505 Motion Sensor Code by Robojax.com 20180210
}

Lucruri de care ai putea avea nevoie

Resurse și referințe

Încă nu sunt resurse.

Fișiere📁

Fișă tehnică (pdf)

Fișier Fritzing