DIY vingerafdruk scannen Garage deuropener (8 / 12 stap)

Stap 8: De definitieve Code

Hieronder is een Arduino-programma dat ik heb geschreven voor dit project de FPS en LCD-bibliotheken gebruiken. Ik heb mijn best gedaan om te schrijven van de opmerkingen in de code om te beschrijven wat elk onderdeel doet, maar als u vragen hebt, voel je vrij om te vragen!

Nadat deze code is geüpload, zou alles moeten werken. Nu alles wat moet worden gedaan om te integreren!

Code:

Code voor ATmega238:

 /** *FPSGarageDoorOpenner by Nodcah *Opens a garage door if the scanned fingerprint is in *the FPS' database of prints. * *FPS_GT511C3 library created by Josh Hawley, July 23rd 2013 *Licensed for non-commercial use, must include this license message *basically, Feel free to hack away at it, but just give me credit for my work =) *TLDR; Wil Wheaton's Law * * Version 1.00: Initial release * Version 1.01: Fixed bug with openning the garage door on boot and Attiny timing * Version 1.02: + Made transmission between ATtiny and ATmega timing more reliable (line 115) + Names are now associated with an ID */ #include "LiquidCrystal.h" //for the screen #include "FPS_GT511C3.h" //the fps (fingerprint scanner) library #include "SoftwareSerial.h" //used by fps library //Setting up the pins for the LCD and the fps LiquidCrystal lcd(2, 3, 4, 5, 6, 7, 8); //pinouts for LCD FPS_GT511C3 fps(10, 11); //RX, TX boolean isFinger = false; //true if the fps detects a finger on the scanner //output pins const int buzzerPin = 13; const int backlightPin = 9; const int attinyPin = 12; const String idNames[] = { "self","Bro", "Ryan", "Mom", "Dad", "Auntie", "Grandma", "Zeide", "Person", "person", "Thumb"}; void setup(){ //set outputs pinMode(buzzerPin, OUTPUT); pinMode(backlightPin, OUTPUT); pinMode(attinyPin, OUTPUT); //for debugging //Serial.begin(9600); fps.UseSerialDebug = false; //set to true for fps debugging through serial //initializing the libraries lcd.begin(16,2); digitalWrite(backlightPin, HIGH); //the LCD backlight fps.Open(); fps.SetLED(true); //the fps LED //boot up sound for(int i=0; i<30; i++){ tone(buzzerPin, 50+10*i, 30); delay(30); } tone(buzzerPin, 350); //print starting message lcd.print("Put your finger "); //the command to print to the LCD lcd.setCursor(0, 1); //sets the cursor to the 0th column in the 1st row lcd.print(" on the scanner "); delay(150); noTone(buzzerPin); //stops the startup sound } void loop(){ //scan and identify the finger when one is put on it waitForFinger(); lcd.clear(); //clears the screen and sets the cursor to 0,0 fps.CaptureFinger(false); //captures the finger for identification int id = fps.Identify1_N(); //identifies print and stores the id if(id <= 10){ lcd.print(" Access granted "); //success message lcd.setCursor(0,1); //prints name when the garage is opening String message = " Hey " + idNames[id] + "!"; lcd.print(message); tone(buzzerPin, 262, 1000); delay(1500); //sends a signal to open the garage door digitalWrite(attinyPin, HIGH); //first pulse syncs the delays (10ms) delay(5); digitalWrite(attinyPin, LOW); delay(3); digitalWrite(attinyPin, HIGH); //next two open the garage delay(15); digitalWrite(attinyPin, LOW); delay(5); digitalWrite(attinyPin, HIGH); delay(10); digitalWrite(attinyPin, LOW); delay(1000); lcd.clear(); lcd.print("Don't forget to "); lcd.setCursor(0,1); lcd.print(" shut me off! "); delay(2000); waitForFinger(); //tap to continue to enroll while(true){ //save a new fingerprint //prints message to lcd lcd.clear(); lcd.print(centerText("So you want to")); lcd.setCursor(0,1); lcd.print(centerText("scan a new one?")); delay(2000); //Copied and slightly modified from the enroll example: int enrollid = 11; //choosing which id to overwrite/create //release your finger when you want to write to the id/name printed on the screen waitForFinger(); //waits for the fps to be pressed while(enrollid==11){ for (int i = 1; i<=10; i++){ if((fps.IsPressFinger() == true)){ lcd.clear(); String str = "ID " + String(i) + ": " + idNames[i]; //concats a string w/the id lcd.print(centerText(str)); delay(1000); } else if(i>1){ lcd.print(i); enrollid = i-1; break; } } } //warning if there is already data in this id slot if(fps.CheckEnrolled(enrollid)){ lcd.clear(); lcd.print(" Warning! ID #"); lcd.print(enrollid); lcd.setCursor(0,1); lcd.print(" has data. OK? "); delay(2500); waitForFinger(); //waits for the fps to be pressed fps.DeleteID(enrollid); //delete data delay(100); } //Enroll fps.EnrollStart(enrollid); lcd.clear(); lcd.print("Place finger to "); lcd.setCursor(0,1); lcd.print("enroll #"); lcd.print(enrollid); //prints id that is being enrolled waitForFinger(); //waits for the fps to be pressed //captures the finger and saves to memory three times for accurate data bool bret = fps.CaptureFinger(true); //high quality pic for enrollment int iret = 0; //error stuff if (bret != false){ //first enroll lcd.clear(); lcd.print(" Remove finger "); fps.Enroll1(); while(fps.IsPressFinger() == true) delay(100); //waits until no finger lcd.clear(); lcd.print(" Press again "); waitForFinger(); //waits for the fps to be pressed bret = fps.CaptureFinger(true); if (bret != false){ //second enroll lcd.clear(); lcd.print(" Remove finger "); fps.Enroll2(); while(fps.IsPressFinger() == true) delay(100); lcd.clear(); lcd.print("Press yet again "); waitForFinger(); bret = fps.CaptureFinger(true); if (bret != false){ //third enroll iret = fps.Enroll3(); if (iret == 0){ //checks to see if there are any errors lcd.clear(); lcd.print(" Success! "); delay(2000); beep(); //shuts arduino off } else{ //if the enrollment fails in any way lcd.clear(); lcd.print("Fail. Try again "); delay(1000); } } lcd.clear(); lcd.print(" Failed 3rd "); //error on 3rd delay(1000); } lcd.clear(); lcd.print(" Failed 2nd "); //error on 2nd delay(1000); } lcd.clear(); lcd.print(" Failed 1st "); //error on 1st delay(1000); } } else{ lcd.print("Fingerprint is"); //if print isn't recognized lcd.setCursor(0,1); lcd.print(" unverified "); delay(2000); lcd.clear(); lcd.print("Please try again"); lcd.setCursor(0,1); lcd.print("Use your pointer"); //I scanned everyone's pointer finger delay(500); } delay(250); } void beep(){ //beeps in hopes of someone closing the case lcd.clear(); lcd.print("Please close the"); lcd.setCursor(0,1); lcd.print(" case! "); for(int i=0;i<8;i++){ tone(buzzerPin, 262, 500); delay(1000); } delay(5000); //wait for someone to close the case //if no one does, shut everything off lcd.clear(); digitalWrite(backlightPin, LOW); fps.SetLED(LOW); while(true) delay(10000); } void waitForFinger(){ static int timer; //contains timeout counter timer = 0; //resets the timer everytime this function starts while(!fps.IsPressFinger()){ //timeout of eight seconds timer++; delay(100); if (timer>=80 && !fps.IsPressFinger()){ beep(); } } timer = 0; //resets the timer everytime this function ends } String centerText(String s) { //centers text on the LCD to look better while(16-s.length()>1){ //if the text needs to be centered s = " " + s + " "; //creates space on both sides evenly } return s; } 

Gerelateerde Artikelen

DIY Arduino-Fingerprint Garage deuropener

DIY Arduino-Fingerprint Garage deuropener

Opmerking of bericht hebt u vragen, dit is mijn eerste instructable en im niet gedaan met het project nog, maar ja het werkt. binnenkort meer foto 'sStap 1: Hoe het werktDus hoe werkt het hele project.1. de draden van de garage-knop op de muur gemont
Spion auto Garage deuropener :)

Spion auto Garage deuropener :)

Ik kon niet het vinden van een goede plek om te houden van mijn garage deuropener. De zonnekleppen in mijn auto werden dikker dan de klem op de opener, dus ik nam de klem en probeerde verschillende plekken om te houden van de opener. Ik kwam met het
Garage deuropener

Garage deuropener

Gebruik een Raspberry Pi en een smartphone (of laptop) om te openen, sluiten en bewaken van een garagedeur. Openen en sluiten van de deur veilig met behulp van zelf-ondertekende certificaten geïnstalleerd op familieleden mobiele telefoons maken Als d
Installeren van een Garage deuropener Wired aan motorfiets Hi-Beam

Installeren van een Garage deuropener Wired aan motorfiets Hi-Beam

ik was moe van het hebben van om op en van mijn fiets te openen en sluiten van de garagedeur telkens ik uit het hoofd.  Terwijl mijn vrouw en ik buiten de stad waren vonden we een project bij een dealer waardoor je de garagepoort via de hi-beam-switc
IPhone Garage deuropener (Updated!)

IPhone Garage deuropener (Updated!)

UPDATED!ik overgeschakeld naar een 12 volt Relais, een vak project toegevoegd en bevorderde het auto relay uit recept. Vreugde.Hallo.Ik schaam me een beetje van deze hack, aangezien het meestal maakt gebruik van bestaande technologieën, maar ik-it an
Verborgen Garage deuropener (UPDATED)

Verborgen Garage deuropener (UPDATED)

Ik wilde een garagedeur opener die zou niet hoeft te veranderen batterijen en kon blijven verborgen, niet het maken van lawaai rammelen tijdens het rijden.Tijdens het zoeken naar een idee, vond ik een capacitieve sensor op ebay dat zou kunnen werken
Garage deuropener met positie - ESP2866

Garage deuropener met positie - ESP2866

IntroductieDeze Internet-Garage deuropener gebruikt een OLIMEX ESP8266 EVB-module en een versnellingsmeter voor het meten van de positie van de schakelopties tilt-a-deur en limiet. Het besturingselement via WiFi of Internet is via pfodApp. 128-bits b
IOT Garage deuropener (Android en Intel Edison)

IOT Garage deuropener (Android en Intel Edison)

Dit instructable een methode die gebruikmaakt van een Intel Edison en een Android telefoon/tablet-app als afstandsbediening garage deur zal beschrijven. Dit is niet echt een nieuw idee en ik ben me bewust van vergelijkbare projecten reeds daar op het
Z-Wave Garage deuropener Switch

Z-Wave Garage deuropener Switch

Welkom bij mijn eerste Instructable!Achtergrond:Ik heb leren meer en meer over domotica en hebben gekozen voor het gebruik van z-wave apparaten voor de meeste van mijn systeem.  Met de toevoeging van de SQ Blaster en SQ Remote iPad app heb ik staat o
Arduino WiFi Garage deuropener

Arduino WiFi Garage deuropener

Ooit komen thuis in de regen te vinden de deur vergrendeld en uw sleutels elders? No? Gelukkig je dan! Voor degenen die dergelijke ervaring hebben gehad of nooit willen, zal dit project laat u uw garagedeur openen met nay maar een smartphone/tablet/l
Bluetooth Garage deuropener & auto Starter

Bluetooth Garage deuropener & auto Starter

Als u als me bent, u bijna altijd draag uw telefoon of zijn vaak op een computer. Ik vind het vaak handiger als ik met de dingen om me heen als de deuren van de garage auto starter, sprinklers, elektrische dekens, decoraties voor de feestdagen, etc.
Android Garage deuropener - geen Andriod programmering, No solderen vereist.

Android Garage deuropener - geen Andriod programmering, No solderen vereist.

Update: nu kunt u uw eigen aangepaste menu om te openen de garagedeur en schakelaar Relais aan en uit met behulp van pfodDesigner . De gratis pfodDesigner alle code zal genereren voor u en pfodApp zal het kleurrijke menu tonen op uw mobiele telefoon.
Maak een 30 Pin iPod Cradle uit een Garage deuropener Remote!

Maak een 30 Pin iPod Cradle uit een Garage deuropener Remote!

It's Saturday afternoon. Het regent. Je je verveelt. Je hebt een paar uur te doden. Wat voor werk doe je?Bouw een rad iPod-draagtoestel uit een oude garage deuropener natuurlijk! Duh.Iedereen heeft gezien deze iPod wiegen in hun lokale Best Buy of Fu
Android gecontroleerd Garage deuropener

Android gecontroleerd Garage deuropener

Mijn project is een Android gecontroleerd Garage deuropener. Dit soort projecten is gedaan vóór, maar met uitgebreide hardware dergelijke Arduino boards arduino boards, servers, etc., en betrokken complexe codering, en geld. Ik deed het allemaal met