In diesem Projekt möchte ich die bereits erzeugte und vorgestellte Arduino Projekt: Alarmanlage mit RFID Steuerung um einen Pyroelektrischer Infrarot Motion Sensor (PIR) erweitern.

Warum das Projekt PIR & RFID Alarmanlage?
Das Projekt entstand aus einem Kommentar zum Beitrag Arduino Projekt: Alarmanlage mit RFID Steuerung der Leser hatte mich hier gefragt wie denn ein PIR Sensor in die Schaltung integriert werden kann. Dieses habe ich zum Anlass genommen das Projekt neu aufzubauen und zwei PIR Sensoren zu integrieren.
Des Weiteren verwende ich nun auch eine RGB SMD Led statt zwei einzelne LEDs somit kann ich noch weitere Zustände farblich darstellen.
Benötigte Bauteile / Bauelemente
Bezeichnung | Preis | Link |
---|---|---|
Arduino Leonardo (oder vergleichbar) | 4,50 € | ebay.de* |
RFID Modul – RC522 | 3,50 € | ebay.de* |
PIR Modul – HC-SR505 | 1,09 € | ebay.de* |
PIR Modul – HC–SR501 | 2,85 € | ebay.de* |
NeoPixel Modul | 4,44 € | ebay.de* |
Piezo Buzzer | 1,40 € | ebay.de* |
400 PIN Breadboard | 3,85 € | ebay.de* |
Breadboardkabel | 1,90 € | ebay.de* |
Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!
Aufbau
Der Aufbau ist auf einem Breadboard, lötfrei und schnell erledigt. Die verbauten Module benötigen 10 digitale Pins somit reicht ein Arduino Leonardo völlig aus.
Sicherlich könnte man auch hier einen Arduino UNO oder sogar einen Arduino Nano verwenden, jedoch habe ich sehr gute Erfahrungen mit dem Leonardo gemacht.
Anschluss
Modul | Pin | Arduino Leonardo |
---|---|---|
RFID Modul – RC522 | ||
SDA | D10 | |
SCK | D19 | |
MOSI | D17 | |
MISO | D18 | |
IRQ | -bleibt frei- | |
GND | GND | |
RST | Reset | |
3.3V | 3.3V | |
PIR Modul – HC-SR505 | ||
+ | 5V | |
OUT | D5 | |
– | GND | |
PIR Modul – HC–SR501 | ||
VCC | 5V | |
OUT | D6 | |
GND | GND | |
NeoPixel Modul | ||
GND | GND | |
RED | D4 | |
GREEN | D2 | |
BLUR | D7 | |
Piezo Buzzer | ||
SIG | D3 | |
VCC | 5V | |
GND | GND |
Schaltplan
Quellcode
Für das Kompilieren und den Betrieb des Quellcodes wird die Bibliothek für das RFID Modul benötigt, diese kannst du von der Wiki Seite Electrodragon.com herunterladen.
#include <SPI.h> #include <RFID.h> //RGB LED #define BLUE_LED 7 /* PIN für die blaue LED */ #define RED_LED 4 /* PIN für die rote LED */ #define GREEN_LED 2 /* PIN für die grüne LED */ //Piezo Buzzer #define BUZZER 3 /* PIN für den Buzzer */ //RFID Modul - RC522 #define SS_PIN 10 /* PIN SDA für das RFID Modul */ #define RST_PIN 9 /* PIN RST für das RFID Modul */ RFID rfid(SS_PIN, RST_PIN); String ids[2] = {"453B56D16", "8C3B3924AA1"}; //Zugelassene ID's //PIR Modul HC-SR505 #define PIR505_PIN 5 /* PIN OUT für das PIR Modul HC-SR505 */ //PIR Modul HC-SR501 #define PIR501_PIN 6 /* PIN OUT für das PIR Modul HC-SR501 */ boolean isActive = false; void setup() { Serial.begin(9600); pinMode(PIR501_PIN, INPUT); pinMode(PIR505_PIN, INPUT); pinMode(BLUE_LED, OUTPUT); /* Setzt den PIN für die blaue LED als Ausgang. */ pinMode(RED_LED, OUTPUT); /* Setzt den PIN für die rote LED als Ausgang. */ pinMode(GREEN_LED, OUTPUT); /* Setzt den PIN für die grüne LED als Ausgang. */ pinMode(BUZZER, OUTPUT) ; /* Setzt den PIN für den Piezo Buzzer als Ausgang. */ SPI.begin(); rfid.init(); } void loop() { boolean foundId = false; if (rfid.isCard() && rfid.readCardSerial()) { Serial.println("drin"); String serial = parseId(rfid); //Ausgabe der ID auf dem Seriellen Monitor Serial.println("RFID Nummer: " + serial); //Schleife zum pruefen der erkannten RFID. int counter = 0; for (counter = 0; counter < sizeof(ids) - 1; counter++) { //Wenn die RFID bekannt ist so soll die Alarmanlage aktiviert bzw. deaktiviert werden. if (serial == ids[counter]) { isActive = !isActive; foundId = true; break; } } Serial.println(foundId); } if(isActive){ blinkActiveLED(); int pirHC505 = digitalRead(PIR505_PIN); int pirHC501 = digitalRead(PIR501_PIN); if(pirHC505 == HIGH || pirHC501 == HIGH){ tone(BUZZER, 500, 50); noTone(BUZZER); } } if(foundId){ lightUpLED(0, 255, 0); } else { lightUpLED(255, 0, 0); } delay(1500); } //Liesst eine ID aus dem Modul //und gibt diese als String zurueck. String parseId(RFID rfid) { String result = ""; int position = 0; for (position = 0; position <= 4; position++) { String pos = getNumPosAsHEX(rfid, position); result = result + pos; } result.toUpperCase(); return result; } //Liefert aus dem Wert des RFID Moduls und einer bestimmten //Position einen HEXADEZIMAL Codierten Wert zurueck. String getNumPosAsHEX(RFID rfid, int position) { return String(rfid.serNum[position], HEX); } void blinkActiveLED(){ lightUpLED(0, 0, 255); delay(350); lightUpLED(0, 0, 0); delay(350); lightUpLED(0, 0, 255); delay(350); lightUpLED(0, 0, 0); } void lightUpLED(int red, int green, int blue){ analogWrite(RED_LED, red); analogWrite(GREEN_LED, green); analogWrite(BLUE_LED, blue ); }
Die RFID-Biblothek „RFID.h“ ist am 4.02.2021 von der Seite https://www.electrodragon.com gelöscht worden.gibt es für das Sektch noch eine andere Möglichkeit.
Ich habe es mit der Adafruit_MFRC630.h versucht (include RFID.h auskommentiert)
aber das bringt mir einen fehler bei der überprüfung in der Zeile: RFID rfid (SS_Pin, RST_pin)
kannst du eine andere Bibliothek empfehlen und dein Beispiel-Sketch darauf anpassen?
Hi Henry,
ich werde da mal ein Update raushauen, schaue doch mal übermorgen auf meinen Blog vorbei 🙂
Gruß,
Stefan
Hallo.
Wo findet man denn dein Blog? Ich habe nämlich das gleiche Problem mit der RFID.h
Gruß Marco
Hi Marco,
du befindest dich gerade auf meinem Blog.
Zum RFID Sensor habe ich einen neuen Beitrag veröffentlicht welcher eine andere Bibliothek verwendet (welche zumindest verfügbar ist).
https://draeger-it.blog/rfid-kartenleser-rc522-am-arduino-betreiben-update-29-07-2021/
Gruß,
Stefan Draeger
Hallöle.
Ich möchte dieses System in meinem Wohnwagen einbauen.
Leider finde ich die benötigte Bibliothek mit der RFID.h nicht.
Der Link vom 19. Januar geht leider auch nicht mehr.
VG
Mirko
Hi,
bitte beachte das RFID nicht das sicherste System ist und die IDs mit speziellen Geräten kopiert werden können.
Ich habe die Links nun angepasst, du findest die Bibliothek als ZIP-Datei unter https://draeger-it.blog/wp-content/uploads/2016/06/Electrodragon-Rfid2.zip
Gruß, Stefan