DIY Fingerprint Scanning Garage dörröppnare (8 / 12 steg)

Steg 8: Den Final koden

Nedan är en Arduino program jag har skrivit för projektet med hjälp av FPS och LCD-biblioteken. Jag har gjort mitt bästa att skriva kommentarer i kod för att beskriva vad varje del gör, men om du har några frågor, inte tveka att fråga mig!

Efter denna kod laddas upp, ska allt fungera. Nu allt som behöver göras för att integrera det!

Kod:

Kod för ATmega238:

/**
* FPSGarageDoorOpenner av Nodcah

* Öppnar en garageport om scannade fingeravtrycket är i
* den FPS' databas av utskrifter.
*
* FPS_GT511C3 bibliotek skapad av Josh Hawley, juli 23 2013
* Licensierad för icke-kommersiellt bruk, måste inkludera denna licens meddelande
* i princip, Känn dig fri att hacka bort på det, men bara ge mig kredit för mitt arbete =)
* TLDR; Wil Wheatons lag
*
* Version 1.00: Första utgåva
* Version 1.01: Fast bugg med openning garageporten på boot och Attiny timing
* Version 1,02:
+ Gjort överföring mellan ATtiny och ATmega timing mer tillförlitlig (linje 115)
+ Namn är nu associerad med ID
*/

#include "LiquidCrystal.h" //for skärmen
#include "FPS_GT511C3.h" //the fps (fingeravtryck avsökare) bibliotek
#include "SoftwareSerial.h" //used av fps bibliotek

Ställa in stiften för LCD och fps
LiquidCrystal lcd (2, 3, 4, 5, 6, 7, 8); Stifttilldelningar för LCD
FPS_GT511C3 fps (10, 11); RX, TX

booleska isFinger = false; sant om fps upptäcker ett finger på skannern

utgångsstift
CONST int buzzerPin = 13.
CONST int backlightPin = 9;
CONST int attinyPin = 12;
const String idNames [] =
{
"jaget", "Bro", "Ryan", "Mamma", "Pappa", "Tant", "Farmor", "Zeide", "Person", "person", "Tummen"};

void setup() {
Ställ in utgångar
pinMode (buzzerPin, produktionen);
pinMode (backlightPin, produktionen);
pinMode (attinyPin, produktionen);

för felsökning
Serial.BEGIN(9600);
FPS. UseSerialDebug = false; värdet true för fps felsökning via seriell

initierar bibliotek
LCD.BEGIN(16,2);
digitalWrite (backlightPin, hög); LCD-bakgrundsbelysning
FPS. Open();
FPS. SetLED(true); fps LED
starta upp ljud
för (int jag = 0; jag < 30; i ++) {
tonen (buzzerPin, 50 + 10 * i, 30);
Delay(30);
}
tonen (buzzerPin, 350);

skriva ut start meddelande
LCD.Print ("sätta fingret"); kommandot för att skriva ut på LCD-skärmen
lcd.setCursor (0, 1); ställer markören till kolumnen 0. 1: a raden
LCD.Print ("på skannern");
Delay(150);
noTone(buzzerPin); stoppar startljudet

}
void loop() {
Skanna och identifiera finger när man sätts på det
waitForFinger();

LCD.Clear(); rensar skärmen och ställer markören till 0,0
FPS. CaptureFinger(false); fångar finger för identifiering
int id = fps. Identify1_N(); identifierar print och lagrar id

om (id < = 10) {
LCD.Print ("tillgång beviljas"); meddelande
lcd.setCursor(0,1);

skriver ut namnet när garaget öppnar
Sträng meddelande = "Hej" + idNames [id] + "!";
LCD.Print(Message);

tonen (buzzerPin, 262, 1000);
Delay(1500);

en signal att öppna garageporten
digitalWrite (attinyPin, hög); första puls synkroniserar förseningar (10 MS)
Delay(5);
digitalWrite (attinyPin, låg);
Delay(3);
digitalWrite (attinyPin, hög); två öppna garaget
Delay(15);
digitalWrite (attinyPin, låg);
Delay(5);
digitalWrite (attinyPin, hög);
Delay(10);
digitalWrite (attinyPin, låg);
Delay(1000);

LCD.Clear();
LCD.Print ("Glöm inte att");
lcd.setCursor(0,1);
LCD.Print stänga ("mig!");
Delay(2000);

waitForFinger(); Tryck på för att fortsätta att registrera

While(true) {//save ett nytt fingeravtryck
skriver ut meddelande till lcd
LCD.Clear();
LCD.Print (centerText ("så du vill"));
lcd.setCursor(0,1);
LCD.Print (centerText ("Skanna ett nytt?"));
Delay(2000);

Kopieras och något modifierad från registrera exemplet:
int enrollid = 11;

att välja vilken id för att skriva över/skapa
släpp ditt finger när du vill skriva till id/namn tryckt på skärmen

waitForFinger(); väntar på fps ska pressas

While(enrollid==11) {
för (int jag = 1; jag < = 10; i ++) {
om ((fps. IsPressFinger() == true)) {
LCD.Clear();
String str = "ID" + String(i) + ":" + idNames [i]; concats en sträng w/id
LCD.Print(centerText(Str));
Delay(1000);
}
annat if(i>1) {
LCD.Print(i);
enrollid = i-1;
bryta;
}
}
}

varning om det finns redan data i denna slot med id
IF(fps. CheckEnrolled(enrollid)) {
LCD.Clear();
LCD.Print ("varning! ID #");
LCD.Print(enrollid);
lcd.setCursor(0,1);
LCD.Print ("har data. Okej? ");
Delay(2500);

waitForFinger(); väntar på fps ska pressas

FPS. DeleteID(enrollid); ta bort data
Delay(100);
}

Registrera
FPS. EnrollStart(enrollid);
LCD.Clear();
LCD.Print ("förlägger finger till");
lcd.setCursor(0,1);
LCD.Print ("registrera #");
LCD.Print(enrollid); utskrifter-id som är att vara inskrivna
waitForFinger(); väntar på fps ska pressas

fångar upp fingret och sparar i minnet tre gånger för korrekta uppgifter
bool bret = fps. CaptureFinger(true); hög kvalitet pic för registrering
int iret = 0; fel saker

om (bret! = false) {//first registrera
LCD.Clear();
LCD.Print ("ta bort finger");
FPS. Enroll1();
While(fps. IsPressFinger() == true) delay(100); väntar tills inget finger
LCD.Clear();
LCD.Print ("tryck igen");
waitForFinger(); väntar på fps ska pressas
Bret = fps. CaptureFinger(true);

om (bret! = false) {//second registrera
LCD.Clear();
LCD.Print ("ta bort finger");
FPS. Enroll2();
While(fps. IsPressFinger() == true) delay(100);
LCD.Clear();
LCD.Print ("Tryck återigen");
waitForFinger();
Bret = fps. CaptureFinger(true);

om (bret! = false) {//third registrera
IRET = fps. Enroll3();
om (iret == 0) {//checks att se om det finns några fel
LCD.Clear();
LCD.Print ("succé!");
Delay(2000);
beep(); stänger arduino
}
annat {//if registreringen misslyckas på något sätt
LCD.Clear();
LCD.Print ("misslyckas. Försök igen ");
Delay(1000);
}
}
LCD.Clear();
LCD.Print ("misslyckades 3."); fel på 3.
Delay(1000);
}
LCD.Clear();
LCD.Print ("misslyckades 2."); fel på 2.
Delay(1000);
}
LCD.Clear();
LCD.Print ("misslyckades 1."); fel på 1.
Delay(1000);
}
}

annat {
LCD.Print ("Fingerprint är"); om print inte är igen
lcd.setCursor(0,1);
LCD.Print ("Verifierad");
Delay(2000);
LCD.Clear();
LCD.Print ("försök igen");
lcd.setCursor(0,1);
LCD.Print ("användning pekaren"). Jag scannade allas pekaren finger
Delay(500);
}
Delay(250);
}

void beep() {
PIP i hopp om att någon stänga fallet
LCD.Clear();
LCD.Print ("Stäng av");
lcd.setCursor(0,1);
LCD.Print ("fall!");
för (int jag = 0; jag < 8; i ++) {
tonen (buzzerPin, 262, 500);
Delay(1000);
}
Delay(5000); vänta på att någon att avsluta ärendet

om ingen gör det, stänga allt
LCD.Clear();
digitalWrite (backlightPin, låg);
FPS. SetLED(LOW);
While(true) delay(10000);
}

void waitForFinger() {
statisk int timer; innehåller timeout counter
timer = 0; återställer den timer varje gång denna funktion startar
While(!fps. IsPressFinger()) {//timeout åtta sekunder
timer ++;
Delay(100);
om (timer > = 80 & &! fps. IsPressFinger()) {
beep();
}
}
timer = 0; återställer den timer varje gång funktionen slutar
}

Sträng centerText(String s) {//centers text på LCD ser bättre
While(16-s.length() > 1) {//if text måste vara centrerad
s = " " + s + " "; skapar utrymme på båda sidor jämnt
}
returnera s;
}

Se Steg
Relaterade Ämnen

Fingerprint Scanning Dörrlåspinnar med access historia skrivare

Hej alla. Välkommen till min andra instructable. Idag kommer jag att visa dig hur man gör en Fingerprint Scanning Dörrlåspinnar som kan också skriva ut ut som kom i och om någon främling försökte detta också. För att göra detta kommer vi att använda...

DIY Arduino-Fingerprint Garage dörröppnare

kommentar eller meddelande om du har frågor, detta är min första instructable och im inte klar med projektet än, men ja det gör arbete. mer bilder snartSteg 1: Hur det fungerarså hur hela projektet fungerar.1. kablarna från knappen garaget monteras p...

DIY Smart Garage dörröppnare

Jag vet att du har fått 5 minuter på vägen och frågade dig själv, "gjorde jag stänga garageporten?".Nu, istället för att vrida runt eller lämnar ditt garage och hus sårbara för tjuvar, kan du kontrollera och stänga den med telefonen med ditt val...

Garage dörröppnare och kamera

Mitt projekt använder Arduino Mega 2560, avstånd kollision undvikande sensor, echo avstånd sensor, relä växlar, RTC klocka och trådbunden anslutning till garage dörröppnare. Jag kan övervaka status för garageporten, Visa video kamera, öppna/stänga dö...

Enklare Bluetooth Garage dörröppnare

Kolla in Internet din sak WiFi version på kicken - det kommer att kunna öppna din garageport eller öppna en sällskapsdjur kennel dörr när du närmar dig.För några månader sedan, skapade jag en Instructable som visade dig hur till bluetooth aktivera di...

Android kontrollerade Garage dörröppnare

Mitt projekt är en Android kontrollerade Garage dörröppnare. Denna typ av projekt har gjort innan, men med omfattande hårdvara, sådan arduino styrelser, servrar, etc., och involverade komplicerad kodning och pengar. Jag gjorde det alla med minimal hå...

FJR1300 Integrerade Genie GM3T-BX Garage dörröppnare

I detta instructable jag ska visa dig hur man sätter detta garage dörröppnare i kåpa däcket på din fjr var uppvärmd kontroll nob skulle gå. Jag valde den här panelen eftersom det är uppoffrande. Men om du vill placera den någon annanstans, det borde...

Installera ett Garage dörröppnare Wired till motorcykel Hi-Beam

jag var trött på att gå och av min cykel att öppna och stänga garageporten varje gång jag åkte. Medan min fru och jag var bortrest hittade vi ett projekt på en återförsäljare som får dig att manövrera garagedörren via växeln Hej-beam. Det var $120 oc...

Installera ett Garage dörröppnare på din motorcykel

när jag flyttade in i min första huset jag var glad att äntligen få min motorcykel i ett garage. Jag köpte extra garage dörröppnare för att göra det bekvämare för lastbilen och en för varje cykel (fru Rider också). Problemet jag hade med detta är:A)...

Android Garage dörröppnare - ingen Android-programmering, nr lödning behövs.

Uppdatering: du kan nu skapa din egen anpassade meny för att öppna garageporten och växla reläer och på med hjälp av pfodDesigner . Den fria pfodDesigner kommer att generera all kod för dig och pfodApp visas den färgglada menyn på din mobil. Se puls...

Bluetooth Garage dörröppnare & bil förrätt

Om du är som mig, du nästan alltid bära telefonen eller är vanligt på en dator. Jag tycker det ofta mer praktiskt när jag kan interagera med sakerna omkring mig som garageportar, bil förrätt, sprinkler, elektriska filtar, julpynt, etc. via min telefo...

ESP8266 Garage dörröppnare

!!!!!!!!! Varning det kommer att svänga om du träda andra tutorials!Jag försökte transistorn och också använder optisk-isolator ansluten till marken men båda pull ESP för nära marken, shorts ut och kommer att hålla återställa sig själv. För de andra...

Garage dörröppnare

Använd en Raspberry Pi och en smartphone (eller laptop) för att öppna, stänga och övervaka en garageport. Att öppna och stänga dörren säkert genom att använda självsignerade certifikat installerat på familjemedlemmarnas mobiltelefoner. Om dörren är ö...

Spionera bil Garage dörröppnare :)

Jag kunde inte hitta ett bra ställe att hålla mitt garage dörröppnare. Solskärmar i min bil var tjockare än klämman på öppnaren, så jag lyfte klämman och provat olika ställen för att hålla öppnaren. Jag kom upp med idén om att ta bort elektroniken fö...

"2 Player" Garage dörröppnare

Jag är inte bara en gamer, jag är en gaming entusiasten. Jag föddes samma år som Pong, jag granska spel på Game Vortex och PlayStation illustreras även skapat och undervisade en Intro till videospel utveckling kurs på L.S.U. medan jag var en undergra...

IOT Garage dörröppnare (Android och Intel Edison)

Detta instructable kommer att beskriva en metod som använder en Intel Edison och en Android-telefon/tablett app som garage dörren fjärrkontroll. Detta är egentligen inte en ny idé och jag är medveten om liknande projekt redan ute på nätet, men detta...

Elektriska Imp Garage dörröppnare

Jag har tappat räkningen på hur många gånger har vi iväg på en resa bara för att vända tillbaka för att se om vi mindes att stänga garageporten. Detta "vänners kompatibla visar dig hur du ansluter den elektriska Imp till ditt garage dörröppnare, hur...

Dolda Garage dörröppnare

dilemma... Att hålla ett garage dörröppnare bekvämt och tillgängligt i din bil och inte vilja lämna en väg in i ditt hus.Detta instructable visar hur du integrerar en dold garage dörröppnare i din vehical som kommer att öppna ditt garage enkelt och s...

Hur man installerar ett Garage dörröppnare i en instrumentpanel

Jag hade ett problem... Vi har en hantverkare garage dörröppnare, och två fjärrkontroller. Problemet är att fjärrkontrollerna höll vilse eftersom de hade inga klipp på dem. Min frus bil har inte en inbyggd i garage door-knappen, så jag började tänka...