Billiga smarta RFID-paket för fukt upptäckt (4 / 6 steg)
Steg 4: Inhägnad för att identifiera tid för Tag upptäckt
Som jag hade köpt två olika RFID-läsare ville jag kunna identifiera när var och en hade hittat en RFID-tagg individuellt.
Det första målet var att hitta ett sätt att identifiera när en tagg hade hittats på RFID-läsare kretskort, efter lite tester en hittade en un-lödde stift, som utdata en 1 när en tagg identifierades, jag antar detta användes under verifieringen av styrelsen. Den första bilden ovan visar kretskortet för mina RFID-läsare, PIN-koden i den röda cirkeln var min RFID-trigger PIN-kod.
Har här jag kan nu utforma en krets som skulle använda en Arduino för att övervaka varje utlösare från RFID-läsare, om en gick hög det skulle uppdatera LCD tid att ange vilka läsare hade utlösts samt titta på modulen realtid klocka (RTC) att skriva ut tiden för händelsen. Den slutliga krets konfigurationen kan ses i den andra bilden.
Programvaran som sprang på Arduino kan beskrivas i den tredje bilden av systemet dataflödesdiagram
Slutliga Arduino koden finns nedan
#include Time.h
#include Wire.h
#include DS1307RTC.h
#include liquidCrystal.h
Arduino Pin Layout
LiquidCrystal lcd (12, 11, 5, 4, 3, 2);
CONST int RFIDRead1 = 8;
CONST int RFIDRead2 = 7.
CONST int ledPin1 = 9;
CONST int RST = 6;
Variabel försäkran
int tagState1 = 0;
int tagState2 = 0;
int RESET = 0;
void setup() {
Ställa in vilka stift är indata eller utdata
LCD.BEGIN (20, 4);
pinMode (ledPin1, produktionen);
pinMode (RFIDRead1, indata);
pinMode (RFIDRead2, indata);
pinMode (RST, indata);
Starta upp värden för utgångar, ställa in LCD-Display och LED värde
digitalWrite (ledPin1, låg);
lcd.setCursor (0, 0);
LCD.Print("");
lcd.setCursor (0, 1);
LCD.Print("");
lcd.setCursor (0, 2);
LCD.Print ("ingen upptäckt");
lcd.setCursor (0, 3);
LCD.Print("");
Serial.BEGIN(9600); Testning kod för att säkerställa att RTC modulen fungerar
setSyncProvider(RTC.get); funktionen för att få tiden från RTC
IF(timeStatus()! = tidInställning)
Serial.println ("kan inte synkronisera med RTC");
annat
Serial.println ("RTC har angett systemtiden");
}
void loop() {
Mappning av digital Läs värden till ints
tagState1 = digitalRead(RFIDRead1);
tagState2 = digitalRead(RFIDRead2);
ÅTERSTÄLLA = digitalRead(RST);
om (tagState1 == hög) {/ / när RFID-Läs 1 går högt ange denna loop
digitalWrite (ledPin1, hög);
lcd.setCursor (0, 0);
LCD.Print ("Patient 1");
lcd.setCursor (0, 2);
LCD.Print ("Tag upptäckt");
lcd.setCursor (0, 3);
LCD.Print("");
digitalClockDisplay();}
om (tagState2 == hög) {/ / när RFID Reader 2 går högre ange denna loop
digitalWrite (ledPin1, hög);
lcd.setCursor (0, 1);
LCD.Print ("Patient 2");
lcd.setCursor (0, 2);
LCD.Print ("Tag upptäckt");
lcd.setCursor (0, 3);
LCD.Print("");
digitalClockDisplay();}
om (Återställ == hög) {/ / när återställa putton tryckte tydlig skärm och inaktivera LED
digitalWrite (ledPin1, låg);
lcd.setCursor (0, 0);
LCD.Print("");
lcd.setCursor (0, 1);
LCD.Print("");
lcd.setCursor (0, 2);
LCD.Print ("ingen upptäckt");
lcd.setCursor (0, 3);
LCD.Print("");
}
}
När koden och krets hade testat, designade jag en PCB att hjälpa klara upp hemska bakbord röran var jag med. Bild 4 ovan visar den slutliga bakbord designen (ja det kunde ha gjorts mindre, men storleken var inte ett verkligt problem med lådan jag hade valt)