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).

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ător | HC-SR505 |
|---|---|
| Număr de piesă | HC-SR505 |
| Tensiune logică/IO | 3.3V - 20V |
| Tensiune de alimentare | 5V |
| Curent de ieșire (pe canal) | 20 mA |
| Curent de vârf (pe canal) | 100 mA |
| Ghid de frecvență PWM | N/A |
| Praguri logice de intrare | 0.3V (jos) / 2.5V (sus) |
| Cădere de tensiune / RDS(on) / saturație | 0.2V |
| Limite termice | +70 °C |
| Pachet | Modul |
| Note / variante | Factor 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

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:

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
/*
* 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
-
AmazonBuy relay shield from Amazonamzn.to
-
Amazon
-
AliExpressBuy 5V/12V 1, 2, 4, 6, or 8-channel relay modules.click.aliexpress.com
Resurse și referințe
Încă nu sunt resurse.
Fișiere📁
Fișă tehnică (pdf)
-
robojax-HC-SR505-manual.pdf
robojax-HC-SR505-manual.pdf0.09 MB
Fișier Fritzing
-
HC-SR501 Body Sensor Module
HC-SR501 Body Sensor Module.fzpz0.01 MB