Projekt miał na celu uzyskać wynik taki że po uruchomieniu przekaźnik jest wyłączony, po przyłożeniu odpowiedniej karty bądź breloka, przekaźnik się uruchamia, a po ponownym przyłożeniu karty przekaźnik wraca do pozycji początkowej. Przełącznik ON/OFF. Zastosowanie głównie do uruchamiania światła, listw etc.
Wykorzystane elementy:
- klon Arduino NANO V3
- przekaźnik
- moduł RFID-RC522
Wykorzystane biblioteki i sketche:
Schemat podłączenia w większej rozdzielczości: link
Kod na odczytanie karty:
#include <SPI.h> #include <MFRC522.h> #define SS_PIN 10 #define RST_PIN 9 MFRC522 rfid(SS_PIN, RST_PIN); MFRC522::MIFARE_Key key; void setup() { Serial.begin(9600); SPI.begin(); rfid.PCD_Init(); } void loop() { if (rfid.PICC_IsNewCardPresent() && rfid.PICC_ReadCardSerial()) { Serial.print("UID: {"); Serial.print(rfid.uid.uidByte[0] < 0x10 ? "0x0" : "0x"); Serial.print(rfid.uid.uidByte[0], HEX); Serial.print(rfid.uid.uidByte[1] < 0x10 ? ", 0x0" : ", 0x"); Serial.print(rfid.uid.uidByte[1], HEX); Serial.print(rfid.uid.uidByte[2] < 0x10 ? ", 0x0" : ", 0x"); Serial.print(rfid.uid.uidByte[2], HEX); Serial.print(rfid.uid.uidByte[3] < 0x10 ? ", 0x0" : ", 0x"); Serial.print(rfid.uid.uidByte[3], HEX); Serial.println("}"); rfid.PICC_HaltA(); rfid.PCD_StopCrypto1(); } }
Po wgraniu kodu na Arduino, uruchomiamy monitor portu szeregowego, przykładamy kartę do modułu RFID i odczytujemy kod karty, w moim przypadku wygląda tak:
Następnie zapisujemy kod karty, który wpiszemy w następny kod który umożliwi wykonanie założeń projektu.
#include <SPI.h> #include <MFRC522.h> #define przekaznik 8 const byte UID[] = {0x00, 0x00, 0x00, 0x00}; // brelok int stan = 0; int poprzedni_stan = 0; MFRC522 rfid(10, 9); MFRC522::MIFARE_Key key; void setup() { Serial.begin(9600); SPI.begin(); rfid.PCD_Init(); pinMode(przekaznik, OUTPUT); digitalWrite(przekaznik, HIGH); } void wlacz_przekaznik() { digitalWrite(przekaznik, LOW); } void wylacz_przekaznik() { digitalWrite(przekaznik, HIGH); } void loop() { if (rfid.PICC_IsNewCardPresent() && rfid.PICC_ReadCardSerial()) { if ( rfid.uid.uidByte[0] == UID[0] && rfid.uid.uidByte[1] == UID[1] && rfid.uid.uidByte[2] == UID[2] && rfid.uid.uidByte[3] == UID[3] ) { if (stan == 0) { Serial.println("GOOD: LIGHT ON"); Serial.println(""); wlacz_przekaznik(); poprzedni_stan = 1; stan = 1; } else { if (poprzedni_stan == 1) { Serial.println("GOOD: LIGHT OFF"); Serial.println(""); wylacz_przekaznik(); poprzedni_stan = 0; stan = 0; } } } else { Serial.println("BAD"); } rfid.PICC_HaltA(); rfid.PCD_StopCrypto1(); } }
W miejsce zmiennej
const byte UID[] = {0x00, 0x00, 0x00, 0x00}; // brelok
wpisujemy kod własnej karty tak jak na moim przykładzie:
const byte UID[] = {0x96, 0x09, 0xF1, 0x30}; // brelok
W przyszłości pokaże jak wykorzystałem ww. projekt w praktyce.
Jest to mój pierwszy post i liczę w komentarzach na konstruktywną opinię pozytywną i negatywną! 🙂