RFID ve Arduino ile RGB Işıklar: 3 Adım

RFID ve Arduino ile RGB Işıklar: 3 Adım

İçindekiler:

Anonim

Batı Özerk Üniversitesi Dijital Video ve Televizyon kursu "Etkileşimli öyküler senaryosu" olarak adlandırılan ortak proje için kullanılan ışık denetleyicisi. Bu kontrolörün amacı, gece ve gündüz ışıklarını kontrol etmek, yani istediğiniz zaman dilimini göstermek için ışık miktarını kontrol etmektir.

Proje aşağıdaki gibi farklı aşamalardan oluşmaktadır:

  1. Devre inşaatı ve gerekli elektronik bileşenler.
  2. Tanıma sisteminin yanı sıra ışıkların kontrolüne yönelik yazılım sisteminin oluşturulması.

Kullanılacak malzemeler:

  • Protokol görmek
  • bilgisayar
  • Arduino UNO görmek
  • RFID sensörü 522 bkz.
  • 12V akü
  • Süveter telleri bkz.
  • Transistör TIP31 bkz.
  • Led şerit görmek

Malzemeleri:

Adım 1: Devreyi Monte Et

Grafikte gösterildiği gibi, devrenin montajı akünün kutupları dikkate alınarak bu şekilde yapılır, LED şeridi kırmızı, yeşil, mavi ve beyaz renklere karşılık gelen 4 telden oluşur.

Renklerin her biri grafikte gösterilir, beyaz renk kaynağın pozitifine bağlı olan toprağa (GND) karşılık gelir, bu durumda 12V akü.

Adım 2: RFID Modülünü Bağlayın

Işıkları kontrol etmek için, RFID kullanılır, burada kartı her geçtiğimizde, Arduino taslağında tanımlanan renklere bağlı olarak ışıkların renk değiştirmesi gerekir.

Adım 3: Arduino'nun Kroki

Bir sonraki çizimde, bu uygulamayı gerçekleştirmek için yazılım yapılandırmasını bulabilirsiniz.

#include

#include

#define RST_PIN 5 // RC522'nin sıfırlanması için Pin 9

#define SS_PIN 10 // RC522'nin SS (SDA) için 10 Pin'i

MFRC522 mfrc522 (SS_PIN, RST_PIN); /// RC522 için nesneyi yaratıyoruz

int redrojo = 1;

int led yeşil = 2;

int ledazul = 3;

geçersiz kurulum () {

Seri.begin (9600); // Seri haberleşmeye başladık

pinMode (kızıl saçlı, ÇIKIŞ); // Bir çıkış olarak Kırmızı LED

pinMode (yeşil led, ÇIKIŞ); // Bir çıkış olarak Yeşil LED

pinMode (ledazul, ÇIKIŞ); // Bir çıkış olarak Mavi LED

SPI.begin (); // SPI Bus’a başlıyoruz

mfrc522.PCD_Init (); // MFRC522'yi başlatıyoruz

//Serial.println ("--- Okuma kartları ---");

}

bayt ActualUID 4; // Tag kodunu oku

bayt günü 4 = {0xD3, 0xAD, 0x3B, 0x5B};

geç bayt 4 = {0xD7, 0x22, 0x1D, 0x01};

gece baytı 4 = {0xA0, 0x78, 0xBD, 0x4F};

int contdia = 0, conttarde = 0, contnot = 0;

boşluk döngüsü () {

if (mfrc522.PICC_IsNewCardPresent ()) {

boşluk döngüsü () {

if (mfrc522.PICC_IsNewCardPresent ()) {

// UID'nizi ciddiye gönderiyoruz

Serial.println ("Id targejta:");

(bayt i = 0; i <mfrc522.uid.size; i ++) {

Serial.print (mfrc522.uid.uidByte i <0x10? "0": "");

Seri baskısı (mfrc522.uid.uidByte i, HEX);

CurrentUID i = mfrc522.uid.uidByte i;

}

Seri.println ("");

// kullanıcılarımızdan biri olup olmadığını belirlemek için UID'yi karşılaştırırız

if (compareArray (ActualUID, day)) {

contdia ++;

eğer (contdia == 1) {

analog yazma (kızıl saçlı, 75);

analog yazma (ledverde, 75);

analogWrite (ledazul, 255);

Serial.println ("Veriler 1 gün");

} else eğer (contdia == 2) {

contdia = 0;

analog yazma (kızıl saçlı, 0);

analogWrite (ledverde, 0);

analogWrite (ledazul, 0);

Seri.println ("Veri 2 gün");

}

}

if (compareArray (ActualUID, geç)) {

conttarde ++;

eğer (conttarde == 1) {

analog yazma (kızıl saçlı, 255);

analog yazma (ledverde, 75);

analogWrite (ledazul, 93);

Serial.println ("Veri 1 öğleden sonra");

} else eğer (conttarde == 2) {

conttarde = 0;

analog yazma (kızıl saçlı, 0);

analogWrite (ledverde, 0);

analogWrite (ledazul, 0);

Serial.println ("Veriler 2 geç");

}

}

if (compareArray (GerçekUID, gece)) {

contn ++;

eğer (contnoche == 1) {

analogWrite (kızıl saçlı, 87);

analog yazma (ledver, 87);

analogWrite (ledazul, 87);

Serial.println ("Dato 1 noche");

} else eğer (contnoche == 2) {

contnoche = 0;

analogWrite (ledrojo, 0);

analogWrite (ledverde, 0);

analogWrite (ledazul, 0);

Serial.println ("Dato 2 noche");

}

}

// Terminamos la lectura de la tarjeta tarjeta fiili

mfrc522.PICC_HaltA ();

}

}

}

// Función para comparar dos vektörleri

boolean compareArray (bayt dizisi1, bayt dizisi2) {

if (array1 0! = array2 0) return (yanlış);

if (array1 1! = array2 1) return (yanlış);

if (array1 2! = array2 2) return (yanlış);

if (array1 3! = array2 3) return (yanlış);

dönüş (doğru);

}