RFID och Bluetooth dörrlås (4 / 4 steg)

Steg 4: Koden - (uppdaterad den 16 April 2016)

/*
* ----------------------------------------------------------------------------
* Typisk pin layout används:
* -----------------------------------------------------------------------------------------
* MFRC522 Arduino Arduino Arduino Arduino Arduino
* Läsare/PCD Uno Mega Nano v3 Leonardo Micro Pro Micro
* Signal Pin Pin Pin Pin Pin Pin
* -----------------------------------------------------------------------------------------
RST/Reset RST 9 5 D9 RESET/ICSP-5 RST
* SPI SS SDA(SS) 10 53 D10 10 10
* SPI MOSI MOSI 11 / ICSP-4 51 D11 ICSP-4 16
* SPI MISO MISO 12 / ICSP-1 50 D12 ICSP-1 14
* SPI SCK SCK 13 / ICSP-3 52 D13 ICSP-3 15
*
*/

#include
#include
#include
#include
#include
#include

#define RST_PIN 9 / / kan konfigureras, se typiska pin layout ovan
#define SS_PIN 10
#define Green_LED 6 //pin för gröna "dörren olåst" indikator ledde
#define Red_LED 7 //pin för röda "dörren låst" indikator LED
String inputString = "";
String kommando = "";
Strängvärde = "";
Sträng lösenord = "startrek"; Detta är lösenordet för att öppna och stänga din dörr
Du kan ange någon pasword du gillar med hjälp av siffror och symboler
booleska stringComplete = false;
char matris1 [] = "Känga till Lås upp"; strängen för att skriva ut på LCD-skärmen
char matris2 [] = "Dörren låst";
char array3 [] = "Dörren olåst";
char array4 [] = "Låsa";
char array5 [] = "Unlocking";
char array6 [] = "Accepterade";
char array7 [] = "Känga till Lock";
int tim = 1; värdet av fördröjningstiden
initiera bibliotek med numrerar av gränssnittet stiften
LiquidCrystal_I2C lcd(0x27,16,2); inställd 0x27 LCD adressen för en 16 tecken och 2 linje
MFRC522 mfrc522 (SS_PIN, RST_PIN); Skapa MFRC522 instans.
Servo myservo;
Sträng read_rfid; NFC-Taggar ID
String ok_rfid_1 = "94e68de2";
String ok_rfid_2 = "f5642a50";
String ok_rfid_3 = "43ef222993c81";
int addr = 1; initalise eeprom adress
int eVal = 0; initalise värde lagras i eeprom
int lockPosition; initiera lockPosition, brukade värde till öm i eVal
int servo_position;
int Knapp1 = 8. initialisera stifts ingång av låsa/låsa upp knappen
void setup() {
Serial.BEGIN(9600); Initiera seriell kommunikation med PC
tag (!. Seriell);
SPI.begin();
mfrc522. PCD_Init();
inputString.reserve(50); reservera 50 byte i minnet att spara för string manipulation
Command.Reserve(50);
Value.Reserve(50);
booleska stringOK = false;
{
LCD.init(); initiera lcd
LCD.backlight(); Öppna bakgrundsbelysningen
LCD.BEGIN(16,2);
}

uppsättningar pin-lägen ingång/utgång och lampor ledde
pinMode (Green_LED, OUTPUT);
pinMode (Red_LED, OUTPUT);
digitalWrite (Green_LED, låg);
digitalWrite (Red_LED, hög);
pinMode(BUTTON1,INPUT);
myservo.attach(5); servo pin-kod
uppsättningar inledande locl position
lockPosition = EEPROM.read(1);
Serial.Print(EEPROM.Read(1));
IF(lockPosition == 1) {
digitalWrite (Red_LED, låg);
digitalWrite (Green_LED, hög);
}
annat {
digitalWrite (Red_LED, hög);
digitalWrite (Green_LED, låg);
lockUnlock();
}
swipeText();
}
/*
* Dumpa en byte-array som hex värden till följetong.
*/
void dump_byte_array (byte * buffert, byte bufferSize) {
read_rfid = "";
för (byte jag = 0; jag < bufferSize; i ++) {
read_rfid = read_rfid + sträng (buffert [i], HEX);
}
}
void lockUnlock() {/ / låser eller låser upp dörren
myservo.attach(5);
IF(lockPosition == 1) {
lock1();
servo_position = 0;
myservo.write(servo_position);
digitalWrite (Red_LED, hög);
digitalWrite (Green_LED, låg);
Delay(2500);
lockPosition = 2;
eVal = lockPosition;
EEPROM.write(1,eVal);
Serial.Print(eVal);

}
annat if(lockPosition == 2) {
Lock2();
servo_position = 180;
myservo.write(servo_position);
digitalWrite (Red_LED, låg);
digitalWrite (Green_LED, hög);
Delay(2500);
lockPosition = 1;
eVal = lockPosition;
EEPROM.write(1,eVal);
Serial.Print(eVal);
}
myservo.detach();
}
void swipeText() / / skickar texten till LCD-skärmen
{
IF(lockPosition == 1) {
LCD.Clear(); Clear LCD-skärmen och placerar markören i det övre vänstra hörnet.
lcd.setCursor(0,0); ställa markören till kolumn 15, linje 0
för (int positionCounter1 = 0; positionCounter1 < 15; positionCounter1 ++)
{
LCD.Print(array3[positionCounter1]); Skriv ut ett meddelande till LCD-skärmen.
Delay(tim); vänta på 250 mikrosekunder
}
lcd.setCursor(0,1); ställa markören till kolumn 15, linje 1
för (int positionCounter = 0; positionCounter < 15; positionCounter ++)
{
LCD.Print(array7[positionCounter]); Skriv ut ett meddelande till LCD-skärmen.
Delay(tim); vänta på 250 mikrosekunder
}
}
annat if(lockPosition == 2) {
LCD.Clear(); Clear LCD-skärmen och placerar markören i det övre vänstra hörnet.
lcd.setCursor(0,0); ställa markören till kolumn 15, linje 0
för (int positionCounter1 = 0; positionCounter1 < 15; positionCounter1 ++)
{
LCD.Print(array2[positionCounter1]); Skriv ut ett meddelande till LCD-skärmen.
Delay(tim); vänta på 250 mikrosekunder
}
lcd.setCursor(0,1); ställa markören till kolumn 15, linje 1
för (int positionCounter = 0; positionCounter < 15; positionCounter ++)
{
LCD.Print(array1[positionCounter]); Skriv ut ett meddelande till LCD-skärmen.
Delay(tim); vänta på 250 mikrosekunder
}
}
}
void lock1() / / skickar texten till LCD-skärmen låsa
{
LCD.Clear();
lcd.setCursor(0,0);
för (int positionCounter1 = 0; positionCounter1 < 15; positionCounter1 ++)
{
LCD.Print(array6[positionCounter1]);
Delay(tim);
}
lcd.setCursor(0,1);
för (int positionCounter1 = 0; positionCounter1 < 10; positionCounter1 ++)
{
LCD.Print(array4[positionCounter1]);
Delay(tim);
}
}
void lock2() / / skickar texten till LCD-skärmen för att låsa upp
{
LCD.Clear();
lcd.setCursor(0,0);
för (int positionCounter1 = 0; positionCounter1 < 15; positionCounter1 ++)
{
LCD.Print(array6[positionCounter1]);
Delay(tim);
}
lcd.setCursor(0,1);
för (int positionCounter1 = 0; positionCounter1 < 12; positionCounter1 ++)
{
LCD.Print(array5[positionCounter1]);
Delay(tim);
}
}
void loop() {

kontroller för låsa/låsa upp tryck på knapp
IF(digitalRead(BUTTON1) == hög) {
lockUnlock();
swipeText();
}
kontrollerar om bluetooth har skickat ett kommando
om arduino får en sträng uppsägning karaktär som \n stringComplete vilja sätta till sann
om (stringComplete) {
Serial.println(inputString);
Delay(100);
identifierade posiion av '=' i sträng och ange dess index till pos variabel
int pos = inputString.indexOf('=');
pos variabelns värde > eller = 0 betyder '=' i fått sträng.
om (pos > -1) {
delsträng (start, stopp) funktionen klippa en del av sträng från början att stoppa
Här kommer kommandot att mottagna strängen till '='
Låt mottagna sträng är öppen = test123
sedan är kommandot "öppna"
kommandot = inputString.substring (0, pos);
värdet kommer att vara från efter = newline-kommandot
i exemplet ovan är värde test123
vi bara ignorerar den '=' tar första parametern i delsträng som "pos + 1"
Vi använder '=' som avgränsare mellan kommandot och vale
utan '=' kan alla andra tecken användas
Vi använder = betyder vårt kommando eller lösenord inte måste innehåller någon '=', annars det kommer att orsaka fel
värde = inputString.substring (pos + 1, inputString.length()-1); extrahera kommandot upp till \n studerandena
Serial.println(Command);
Serial.println(Value);
kontrollerar lösenord från bluetooth och är rätt låser eller låser upp dörren
password.compareTo(value) jämför mellan lösenordssträngen tring och värde, om matcha avkastning 0
IF(!Password.compareTo(Value) & & (kommandot == "Öppna")) {
om lösenord matchade och kommandot "Öppna" än bör dörren öppna
lockUnlock(); funktionen Ring upp lockUnlock()
Serial.println ("öppna"); skickade öppen feedback till telefon
Delay(100);
swipeText();
}
IF(!Password.compareTo(Value) & & (kommandot == "Nära")) {
om lösenordet matchas och kommandot Stäng' än dörren ska stänga
lockUnlock();
Serial.println ("Stäng"); skickade "Stäng" strängen till telefonen
Delay(100);
swipeText();
}
IF(Password.compareTo(Value)) {
om lösenordet inte matchas än skickade fel feedback till telefon
Serial.println ("fel");
Delay(100);
swipeText();
}
}
Rensa strängen för nästa iteration
inputString = "";
stringComplete = false;
}
sökning efter RFID-tagg presenteras
om (! mfrc522. PICC_IsNewCardPresent())
hemkomst.
Välj ett av korten
om (! mfrc522. PICC_ReadCardSerial())
hemkomst.
dump_byte_array (mfrc522.uid.uidByte, mfrc522.uid.size);

kontrollerar om en rfid Taggar ID matchar lagrade listan om så det kommer då låsa eller låsa upp dörren
Serial.println(read_rfid);
om (read_rfid == ok_rfid_1) {
OK, öppna dörren.
lockUnlock();
swipeText();
}
Lägga till nedan så många "nycklar" som du vill
om (read_rfid == ok_rfid_2) {
även ok, öppna dörren
lockUnlock();
swipeText();
}
Lägga till nedan så många "nycklar" som du vill
om (read_rfid == ok_rfid_3) {
även ok, öppna dörren
lockUnlock();
swipeText();
}
}
void serialEvent() {
samtidigt (Serial.available()) {
få den nya byten:
char inChar = (char)Serial.read();
Serial.write(inChar);
Lägg till det inputString:
inputString += inChar;
om den inkommande karaktären är en ny rad eller en vagnretur, ange en flagga
så den viktigaste loopen kan göra något åt det:
om (inChar == '\n' || inChar == '\r') {
stringComplete = sant;
}
}
}

Se Steg
Relaterade Ämnen

LED T-Shirt med LCD-skärm och Bluetooth

Hemgjord LED T-Shirt med 324 adresserbara WS2812B LED. Kontrolleras med Arduino kopplat pro micro till LCD-pekskärm och Bluetooth till Android telefon app. allt gjorts i huset (kretskort, skjorta kod, telefon app, skjorta layout, LED Ribbon strängar)...

Motorstyrning i Linkit ONE använder GSM och Bluetooth

Hej... Detta instructable är om hur du styr en motor med GSM aswell som BLuetooth och datalog dess temperatur och på/av tid till SD-kort... Jag fick en Linkit en fri giveaway styrelse... dess en utmärkt ombord med inbyggd GSM, GRP, GPS, RTC, BLUETOOT...

Väckarklocka med IR- och Bluetooth-högtalare

INTRODUKTIONHej, mitt namn är Ben Hur Gonçalves, jag är en mekatroniska ingenjör utexaminerades Universidade de São Paulo, Brasilien i 2010. Arbetar numera jag med verkligheten, men jag gör dessa projekt med arduino på helgerna, bara på kul. Detta va...

Arduino och Bluetooth HC-05 ansluter enkelt

Hej varje kropp, detta är min första artikel på Instructable.com, jag är så glad för det, och jag börjar med att ansluta arduino med bluetooth, jag lidit en hel del problem när jag försöker ansluta den så spindelväv och instructable artikel gjorde, s...

Använda Arduino och Bluetooth kontroll en två-bil

vi bara ändrat en två-förare bil kontroll av Arduino och Bluetooth-modulen. Kontrollera sidan används Freaduino 328 och två Joystick modul och Bluetooth sköld för skicka data. Andra sidan används Arduino Pro och Bluetooth Bee för mottagna data och st...

MacBook 13" reparation - högtalare och Bluetooth borttagning

denna video visar dig hur du tar bort den högtalare och Bluetooth församlingen i de 13" Macbook. Som tillhandahålls av PowerbookMedic.com...

HackerBoxes 0005: LED pixlar, 2D matris, 4 x 4 x 4 kub och Bluetooth

Få LED ut! Denna månad, arbetar abonnenter till HackerBoxes med lysdioder serveras tre olika sätt. Först är adresserbara LED galenskap med WS2812-baserade RGB pixlar. Det andra sättet är i en tvådimensionell matris baserat på MAX7219 seriellt gränssn...

Hem säkerhet System med RFID och Reed Switch kontrolleras med hjälp av Arduino Microcontroller

Detta projekt har genomfört två lager säkerhetsarkitektur med mikro-controller. Primär/första lager av säkerhet kommer att genomföra användaren autentiseringssystem med smarta RFID-kort. Listan över auktoriserade RFID kommer att hållas som en databas...

Inomhus Security System med RFID och Status Display av LCD med hjälp av Arduino Micrcontroller

Det är en Inomhus Security System som automatiserar dörren öppna/stäng rörelse. Användarautentiseringen är gjort med hjälp av smarta RFID -kort som kommer att autentisera och auktorisera användaren att skriva in in i lokalerna genom att öppna och stä...

JabberBot! Arduino roboten med en ATMega hjärnan och bluetooth braun! :-)

JabberBot styrs via en Android ansökan över en seriell bluetooth-anslutning.Modet i det baseras på en I2C anpassning av Adafruit WaveShield och MotorShield.Bluetooth-modulen är en Bluetooth Mate Silver från Sparkfun.Vad är det här?Android app körs på...

Slå på datorn av RFID och IR (uppdaterad)

Hej killar!I detta instructable vi ska switch på och avstängning datorn med en IR-närhet sensor eller en RFID-läsare. På grund av mina studier, jag kan inte skriva detta instructable detaily och jag hoppas du förstår, vänligen känna gratis att be THE...

Remote Control bil med Arduino och Bluetooth

Projektet består i att göra en fjärrkontroll bil använder en bluetooth-anslutning. Denna bil är tänkt att användas i en ballong poppar konkurrens mot andra liknande bilar. Den trådlösa anslutningen uppnås genom att använda en bluetooth-modul som är a...

LCD-Display ombord med en Linkit och Bluetooth

HejI detta instructable lär du dig gränssnitt LCD med Linkit en och hur man styr samma med BluetoothSteg 1: Komponenter som krävs Linkit en styrelseArduino UNO16 * 2 LCD LCD sköldBluetooth-antenn (hittade tillsammans med en Linkit)SmartPhonesladdarSt...

Kör motorn med android använder arduino och bluetooth

Hej vänner! Detta är min första instructable någonsin och idag jag ska visa dig hur man kör 2 motorer med android använder arduino och en billigt Bluetooth-modul. Detta projekt kan vara till stor hjälp för dig att bygga robotar som kan kontrolleras a...

Interaktiva duk-Rack (med Raspberry Pi, Arduino Pro Mini och Bluetooth HC-05)

Detta är min första Instructable! Så om jag har gjort några misstag, förlåt mig :)Syftet är att ge kunderna en helt ny upplevelse när du handlar.Varje vibration som kunderna gör när de väljer kläder genom att flytta galgar eller ta i/ut ovanpå klädhä...

Mobil robotik med repa: hur man kan integrera Scratch, Arduino och Bluetooth

Länge kämpade vi med uppgiften att skapa en enkel, billig, plattformsoberoende, tillförlitlig och stabil strategi att integrera Scratch och Arduino så att du kunde använda Scratch att lära ut de principer och programmering av mobila robotar (inklusiv...

Resväska Stereo (nu med batteri, sol och Bluetooth)

detta är en berättelse om hur jag gjorde en resväska till en stereo, eftersom jag ville.Steg 1: materialEn nära omfattande lista över material som behövs:-resväska-par högtalare (min var 3" inches i diameter)-Lepai 2020a + förstärkare-Dremel / slipa...

Arduino RFID och/eller QR kod Windows-inloggning

Det är mitt senaste kort kul projekt med min Arduino leonardo pro micro.I detta instructable jag satte två korta, nästan samma exempel.Först: logga in till windows med RFID-kort.Andra: Använd din android-telefon, skanna QR koden och logga in till win...

Dubbel trådlös RC lastbil (2 x trådlös kommunikation remote och bluetooth) på Arduino

Hej alla. Jag bara bestämde sig att göra något enkelt och tillgängligt för alla. Jag såg en massa filmer och beskrivningar hur man bygger en distans kontrollerbar bilar, lastbil. Så min poäng är att investera så lite som möjligt för insatser och peng...