Użycie czujnika ruchu HC-SR501 z przekaźnikiem i kodem Arduino
W tym samouczku dowiemy się, jak używać czujnika ruchu HC-SR501 wraz z przekaźnikiem do sterowania żarówką AC lub innym rodzajem obciążenia za pomocą Arduino. HC-SR501 to podczerwony czujnik ruchu, który może wykrywać ruch z odległości do 7 metrów, co czyni go idealnym do różnych zastosowań, takich jak alarmy bezpieczeństwa czy automatyczne systemy oświetleniowe. Wykorzystując ten czujnik i przekaźnik, możesz stworzyć projekt, który włącza światło po wykryciu ruchu.

Przedstawimy szczegółowy przewodnik dotyczący konfiguracji sprzętu, instrukcji podłączenia oraz kodu Arduino potrzebnego do osiągnięcia tej funkcjonalności. Aby lepiej zrozumieć proces, obejrzyj powiązane wideo (na wideo o 00:00).
Wyjaśnienie Sprzętu
Główne komponenty w tym projekcie to czujnik ruchu HC-SR501, moduł przekaźnika oraz płytka Arduino. Czujnik HC-SR501 ma trzy piny: VCC, GND i OUT. Pin VCC łączy się ze źródłem zasilania (5V), pin GND łączy się z masą, a pin OUT wysyła sygnał do Arduino po wykryciu ruchu.
Moduł przekaźnika działa jak przełącznik, który może sterować urządzeniami wysokiego napięcia. Ma trzy główne piny: COM (wspólny), NO (normalnie otwarty) i NC (normalnie zamknięty). W tej konfiguracji użyjemy pinu NO, który łączy się z obciążeniem po aktywacji przekaźnika. Pozwala to Arduino sterować przekaźnikiem na podstawie sygnału otrzymanego z czujnika ruchu.
Szczegóły z Karty Katalogowej
| Producent | HC-SR501 |
|---|---|
| Numer części | HC-SR501 |
| Napięcie logiczne/IO | 5 V |
| Napięcie zasilania | 5–20 V |
| Pobór mocy | 65 mA |
| Kąt detekcji | 120 stopni |
| Odległość detekcji | 3–7 m |
| Temperatura pracy | -15 do 70 °C |
| Typ wyjścia | Cyfrowy |
| Obudowa | Moduł |
- Zapewnij odpowiednie zasilanie (5–20 V) dla czujnika.
- Dostosuj potencjometr czułości, aby uzyskać optymalny zasięg detekcji.
- Użyj pinu NO przekaźnika, aby skutecznie sterować obciążeniem.
- Zachowaj ostrożność co do prądu znamionowego przekaźnika (maks. 10 A).
- Przetestuj zasięg detekcji czujnika ruchu przed ostateczną instalacją.
- Rozważ odprowadzanie ciepła, jeśli używasz przekaźnika do dużych obciążeń.
Instrukcje Podłączenia

Aby podłączyć czujnik ruchu HC-SR501 i przekaźnik do Arduino, zacznij od połączenia pinu VCC czujnika ruchu z pinem 5V na Arduino. Następnie podłącz pin GND czujnika do jednego z pinów GND na Arduino. Pin OUT z czujnika ruchu powinien być podłączony do pinu cyfrowego 2 na Arduino.
Dla modułu przekaźnika podłącz pin VCC do pinu 5V na Arduino, a pin GND do masy. Pin wejściowy (często oznaczony jako IN lub podobnie) przekaźnika powinien być podłączony do pinu cyfrowego 4 na Arduino. Upewnij się, że sprawdziłeś orientację przekaźnika, aby był ustawiony na normalnie otwarty (NO) w tej konfiguracji. Na koniec podłącz obciążenie (np. żarówkę AC) do przekaźnika zgodnie ze specyfikacją przekaźnika, upewniając się, że połączenia są bezpieczne.
Przykłady Kodu i Omówienie
W kodzie Arduino definiujemy stałe dla pinów czujnika i przekaźnika. Pin czujnika jest ustawiony jako SENSOR_PIN, który jest przypisany do pinu cyfrowego 2, a pin przekaźnika jest ustawiony jako RELAY_PIN, przypisany do pinu cyfrowego 4. Ta konfiguracja pozwala nam odczytywać wyjście czujnika i odpowiednio sterować przekaźnikiem.
const int SENSOR_PIN = 2; // pin Arduino podłączony do wyjścia czujnika
const int RELAY_PIN = 4; // pin Arduino podłączony do sterowania przekaźnikiem
W funkcji setup() inicjalizujemy monitor szeregowy do debugowania i ustawiamy tryby pinów dla czujnika i przekaźnika. Zapewnia to, że Arduino wie, które piny są wejściami, a które wyjściami.
void setup() {
Serial.begin(9600); // konfiguracja monitora szeregowego do wyświetlania informacji
pinMode(SENSOR_PIN, INPUT); // zdefiniuj SENSOR_PIN jako wejście z czujnika
pinMode(RELAY_PIN, OUTPUT); // zdefiniuj RELAY_PIN jako wyjście dla przekaźnika
}
W funkcji loop() ciągle sprawdzamy stan czujnika ruchu. Jeśli wykryty zostanie ruch, wyświetlamy komunikat na monitorze szeregowym i włączamy przekaźnik, ustawiając go na niski poziom. Jeśli nie wykryto ruchu, wyświetlamy inny komunikat i wyłączamy przekaźnik, ustawiając go na wysoki poziom.
void loop() {
int motion = digitalRead(SENSOR_PIN); // odczytaj pin czujnika
if (motion) {
Serial.println("Wykryto ruch");
digitalWrite(RELAY_PIN, LOW); // Włącz przekaźnik
} else {
Serial.println("===Nic się nie porusza");
digitalWrite(RELAY_PIN, HIGH); // Wyłącz przekaźnik
}
delay(500);
}
Demonstracja / Czego Się Spodziewać
Gdy czujnik ruchu wykryje ruch, przekaźnik zostanie aktywowany, umożliwiając przepływ prądu do podłączonego obciążenia, takiego jak żarówka AC. Powinieneś zobaczyć, jak żarówka włącza się natychmiast po wykryciu ruchu. Jeśli czujnik nie wykryje żadnego ruchu, żarówka pozostanie wyłączona. Należy pamiętać, że ustawienia czułości czujnika wpływają na jego zasięg detekcji, więc regulacje mogą być konieczne dla optymalnej wydajności (na wideo o 05:00).
Typowe problemy obejmują nieprawidłowe podłączenie lub przekroczenie limitów prądu przekaźnika, co może prowadzić do awarii. Upewnij się, że wszystkie połączenia są bezpieczne i przetestuj konfigurację w kontrolowanym środowisku przed ostatecznym użyciem.
Znaczniki Czasowe Wideo
- 00:00 Start
- 00:35 Wyjaśnienie sprzętu
- 04:35 Moc znamionowa przekaźnika
- 06:00 Wyjaśnienie okablowania
- 07:53 Wyjaśnienie kodu Arduino
- 09:48 Demonstracja tego projektu
/*
* This Arduino code uses an HS-SR501 motion sensor and a relay
* and switches an alarm or a device using the relay when motion is detected.
* The device can be an alarm, a light, or any other device.
*
* Written by Ahmad Shamshiri on August 5, 2018, at 12:36 PM for Robojax.com
* in Ajax, Ontario, Canada
* Watch the video instruction for this code: https://youtu.be/QQ7iDagQnQM
* This code has been downloaded from Robojax.com
*/
const int SENSOR_PIN = 2;// the Arduino pin connected to the output (middle) wire of the sensor
const int RELAY_PIN = 4;// the Arduino pin which is connected to control the relay
void setup() {
Serial.begin(9600);// setup Serial Monitor to display information
Serial.println("Robojax Arduino Tutorial");
Serial.println("HC-SR501 sensor with relay");
pinMode(SENSOR_PIN, INPUT);// Define SENSOR_PIN as Input from sensor
pinMode(RELAY_PIN, OUTPUT);// Define RELAY_PIN as OUTPUT for relay
}
void loop() {
// Robojax.com HC-SR501 motion sensor tutorial August 5, 2018
int motion =digitalRead(SENSOR_PIN);// read the sensor pin and stores it in "motion" variable
// if motion is detected
if(motion){
Serial.println("Motion detected");
digitalWrite(RELAY_PIN, LOW);// Turn the relay ON
}else{
Serial.println("===Nothing moves");
digitalWrite(RELAY_PIN,HIGH);// Turn the relay OFF
}
delay(500);
// Robojax.com HC-SR501 motion sensor tutorial August 5, 2018
}
Rzeczy, których możesz potrzebować
-
Amazon
-
Allegro
-
AliExpressPurchase HC-SR501 HC-SR505 HW-MS03 motion sensor from AliExpresss.click.aliexpress.com
Zasoby i odniesienia
Brak zasobów.
Pliki📁
Brak dostępnych plików.