- అవసరమైన భాగాలు
- సర్క్యూట్ రేఖాచిత్రం మరియు వివరణ
- పిఐసి మైక్రోకంట్రోలర్తో వేలిముద్ర సెన్సార్ ఆపరేషన్
- ప్రోగ్రామింగ్ వివరణ
కొన్ని సంవత్సరాల క్రితం సైన్స్ ఫిక్షన్ సినిమాల్లో మనం చూసే ఫింగర్ ప్రింట్ సెన్సార్, వివిధ ప్రయోజనాల కోసం ఒక వ్యక్తి యొక్క గుర్తింపును ధృవీకరించడానికి ఇప్పుడు చాలా సాధారణమైంది. ప్రస్తుత సమయంలో, మన దైనందిన జీవితంలో ప్రతిచోటా వేలిముద్ర ఆధారిత వ్యవస్థలను చూడవచ్చు, కార్యాలయాలకు హాజరు కావడం, బ్యాంకుల్లో ఉద్యోగుల ధృవీకరణ, నగదు ఉపసంహరణ లేదా ఎటిఎంలలో డిపాజిట్లు, ప్రభుత్వ కార్యాలయాలలో గుర్తింపు ధృవీకరణ కోసం. మేము దీనిని ఇప్పటికే ఆర్డునో మరియు ఇంటర్ఫేస్ చేసాము. రాస్ప్బెర్రీ పైతో, ఈ రోజు మనం ఫింగర్ ప్రింట్ సెన్సార్ను పిఐసి మైక్రోకంట్రోలర్తో ఇంటర్ఫేస్ చేయబోతున్నాం. ఈ PIC మైక్రోకంట్రోలర్ PIC16f877A ఫింగర్ ప్రింట్ సిస్టమ్ను ఉపయోగించి, మేము సిస్టమ్లో కొత్త వేలిముద్రలను నమోదు చేయవచ్చు మరియు ఇప్పటికే తినిపించిన వేలిముద్రలను తొలగించవచ్చు. సిస్టమ్ యొక్క పూర్తి పని వీడియోలో చూపబడింది వ్యాసం చివరిలో ఇవ్వబడింది.
అవసరమైన భాగాలు
- PIC16f877A మైక్రోకంట్రోలర్
- వేలిముద్ర మాడ్యూల్
- పుష్ బటన్లు లేదా కీప్యాడ్
- 16x2 LCD
- 10 కే కుండ
- 18.432000 MHz క్రిస్టల్ ఓసిలేటర్
- బ్రెడ్ బోర్డ్ లేదా పిసిబి (జెఎల్సిపిసిబి నుండి ఆర్డర్ చేయబడింది)
- జంపర్ వైర్లు
- LED (ఐచ్ఛికం)
- రెసిస్టర్ 150 ఓం -1 కె ఓం (ఐచ్ఛికం)
- 5v విద్యుత్ సరఫరా
సర్క్యూట్ రేఖాచిత్రం మరియు వివరణ
ఈ పిఐసి మైక్రోకంట్రోలర్ ఫింగర్ ప్రింట్ సెన్సార్ ఇంటర్ఫేసింగ్ ప్రాజెక్ట్లో, మేము 4 పుష్ బటన్లను ఉపయోగించాము: ఈ బటన్లు మల్టీఫంక్షనింగ్ కోసం ఉపయోగించబడతాయి. సిస్టమ్లో వేలిముద్రను నిల్వ చేసేటప్పుడు లేదా తొలగించేటప్పుడు వేలి ముద్రణ మరియు ఇంక్రిమెంట్ వేలిముద్ర ఐడిని సరిపోల్చడానికి కీ 1 ఉపయోగించబడుతుంది. కీ 2 కొత్త వేలిముద్రను నమోదు చేయడానికి మరియు సిస్టమ్లో వేలిముద్రను నిల్వ చేసేటప్పుడు లేదా తొలగించేటప్పుడు వేలిముద్ర ID తగ్గడానికి ఉపయోగించబడుతుంది. సిస్టమ్ నుండి నిల్వ చేసిన వేలిని తొలగించడానికి కీ 3 ఉపయోగించబడుతుంది మరియు కీ 4 సరే కోసం ఉపయోగించబడుతుంది. ఒక LED వేలిముద్ర కనుగొనబడిందని లేదా సరిపోలినట్లు సూచించడానికి ఉపయోగించబడుతుంది. ఇక్కడ మేము UART లో పనిచేసే వేలిముద్ర మాడ్యూల్ని ఉపయోగించాము. కాబట్టి ఇక్కడ మేము ఈ వేలిముద్ర మాడ్యూల్ను పిఐసి మైక్రోకంట్రోలర్తో దాని డిఫాల్ట్ బాడ్ రేటుతో 57600 గా ఇంటర్ఫేస్ చేసాము.
కాబట్టి, మొదట, దిగువ సర్క్యూట్ రేఖాచిత్రంలో చూపిన విధంగా మేము అవసరమైన అన్ని కనెక్షన్లను తయారు చేయాలి. కనెక్షన్లు చాలా సులభం, మేము వేలిముద్ర మాడ్యూల్ను PIC మైక్రోకంట్రోలర్ యొక్క UART కి కనెక్ట్ చేసాము. అన్ని సందేశాలను ప్రదర్శించడానికి 16x2 LCD ఉపయోగించబడుతుంది. ఎల్సిడితో 10 కె పాట్ కూడా దీనికి విరుద్ధంగా నియంత్రించడానికి ఉపయోగించబడుతుంది. 16x2 LCD డేటా పిన్లు PORTA పిన్లతో అనుసంధానించబడి ఉన్నాయి. LCD యొక్క d4, d5, d6 మరియు d7 పిన్లు వరుసగా PIC మైక్రోకంట్రోలర్ యొక్క పిన్ RA0, RA1, RA2 మరియు RA3 లతో అనుసంధానించబడి ఉన్నాయి. నాలుగు పుష్ బటన్లు (లేదా కీప్యాడ్) PORTD యొక్క పిన్ RD0, RD1, RD2 మరియు RD కి అనుసంధానించబడి ఉన్నాయి. పోర్ట్ PORTC యొక్క పిన్ RC3 వద్ద LED కూడా అనుసంధానించబడి ఉంది. ఇక్కడ మేము మైక్రోకంట్రోలర్ను క్లాక్ చేయడానికి 18.432000 MHz బాహ్య క్రిస్టల్ ఓసిలేటర్ను ఉపయోగించాము.
పిఐసి మైక్రోకంట్రోలర్తో వేలిముద్ర సెన్సార్ ఆపరేషన్
ఈ ప్రాజెక్ట్ యొక్క ఆపరేషన్ చాలా సులభం, సోర్స్ కోడ్ నుండి ఉత్పత్తి చేయబడిన హెక్స్ ఫైల్ను PIC ప్రోగ్రామర్ లేదా బర్నర్ (PIckit2 లేదా Pickit3 లేదా ఇతరులు) సహాయంతో PIC మైక్రోకంట్రోలర్లోకి అప్లోడ్ చేయండి, ఆపై మీరు LCD ద్వారా కొన్ని పరిచయ సందేశాలను చూస్తారు, ఆపై వినియోగదారు కార్యకలాపాల కోసం ఎంపికను నమోదు చేయమని అడుగుతారు. వేలిముద్రను సరిపోల్చడానికి వినియోగదారు కీ 1 నొక్కాలి, అప్పుడు ఎల్సిడి ఫింగర్ ప్రింట్ సెన్సార్లో ప్లేస్ ఫింగర్ను అడుగుతుంది. ఇప్పుడు వేలిముద్ర మాడ్యూల్పై వేలు పెట్టడం ద్వారా, మన వేలిముద్రలు ఇప్పటికే నిల్వ ఉన్నాయా లేదా అని తనిఖీ చేయవచ్చు. మీ వేలిముద్ర నిల్వ చేయబడితే, ఎల్సిడి వేలిముద్ర లాంటి ' ఐడి: 2' యొక్క నిల్వ ఐడితో సందేశాన్ని చూపుతుంది, లేకపోతే అది 'దొరకలేదు' అని చూపుతుంది .
ఇప్పుడు వేలి ముద్రణను నమోదు చేయడానికి , వినియోగదారు నమోదు బటన్ లేదా కీ 2 ను నొక్కాలి మరియు LCD తెరపై సూచనల సందేశాలను అనుసరించాలి.
వినియోగదారు వేలిముద్రలను తొలగించాలనుకుంటే, వినియోగదారు తొలగించు బటన్ లేదా కీని నొక్కాలి 3. ఆ తరువాత, ఎల్సిడి తొలగించాల్సిన వేలిముద్ర యొక్క ఐడిని అడుగుతుంది. ఇంక్రిమెంట్ మరియు తగ్గుదల కోసం ఇంక్రిమెంట్ పుష్ బటన్ లేదా కీ 1 (మ్యాచ్ పుష్ బటన్ లేదా కీ 1) మరియు తగ్గింపు పుష్ బటన్ లేదా కీ 2 (ఎన్రోల్ పుష్ బటన్ లేదా కీ 2) ను ఉపయోగించడం ద్వారా, వినియోగదారు సేవ్ చేసిన ఫింగర్ ప్రింట్ యొక్క ఐడిని ఎంచుకుని సరే నొక్కండి ఆ వేలిముద్రను తొలగించడానికి బటన్. మరింత అవగాహన కోసం ప్రాజెక్ట్ చివరిలో ఇచ్చిన వీడియోను చూడండి.
ఫింగర్ ప్రింట్ ఇంటర్ఫేసింగ్ గమనిక: ఈ ప్రాజెక్ట్ యొక్క ప్రోగ్రామ్ ఒక అనుభవశూన్యుడు కోసం కొద్దిగా క్లిష్టంగా ఉంటుంది. కానీ దాని సాధారణ ఇంటర్ఫేసింగ్ కోడ్ r305 వేలిముద్ర మాడ్యూల్ డేటాషీట్ను చదవడం ద్వారా తయారు చేయబడింది. ఈ వేలిముద్ర మాడ్యూల్ యొక్క పనితీరు యొక్క అన్ని సూచనలు డేటాషీట్లో ఇవ్వబడ్డాయి.
ఇక్కడ మేము వేలిముద్ర మాడ్యూల్తో మాట్లాడటానికి ఫ్రేమ్ ఆకృతిని ఉపయోగించాము. మేము వేలిముద్ర మాడ్యూల్కు కమాండ్ లేదా డేటా రిక్వెస్ట్ ఫ్రేమ్ను పంపినప్పుడల్లా అదే ఫ్రేమ్ ఫార్మాట్తో డేటా లేదా అప్లైడ్ కమాండ్కు సంబంధించిన సమాచారాన్ని కలిగి ఉంటుంది. డేటా మరియు కమాండ్ ఫ్రేమ్ ఫార్మాట్ అన్నీ యూజర్ మాన్యువల్లో లేదా R305 వేలిముద్ర మాడ్యూల్ యొక్క డేటాషీట్లో ఇవ్వబడ్డాయి.
ప్రోగ్రామింగ్ వివరణ
ప్రోగ్రామింగ్లో, మేము ఈ క్రింది ఫ్రేమ్ ఆకృతిని ఉపయోగించాము.
కాన్ఫిగరేషన్ బిట్లను సెట్ చేయడం ద్వారా మరియు ఎల్సిడి, బటన్లు మరియు ఎల్ఇడి కోసం మాక్రోలు మరియు పిన్లను నిర్వచించడం ద్వారా మేము ప్రోగ్రామ్ను ప్రారంభిస్తాము, ఈ ప్రాజెక్ట్ చివరిలో ఇచ్చిన పూర్తి కోడ్లో మీరు తనిఖీ చేయవచ్చు. మీరు పిఐసి మైక్రోకంట్రోలర్కు కొత్తగా ఉంటే పిఐసి మైక్రోకంట్రోలర్ ప్రాజెక్ట్తో ప్రారంభించండి.
అప్పుడు మేము కొన్ని వేరియబుల్ మరియు శ్రేణిని ప్రకటించాము మరియు ప్రారంభించాము మరియు పిఐసి మైక్రోకంట్రోలర్తో వేలిముద్ర మాడ్యూల్ను ఇంటర్ఫేస్ చేయడానికి ఈ ప్రాజెక్ట్లో ఉపయోగించాల్సిన ఫ్రేమ్ను తయారు చేసాము.
uchar buf; uchar buf1; అస్థిర uint సూచిక = 0; అస్థిర పూర్ణాంక పతాకం = 0; uint msCount = 0; uint g_timerflag = 1; అస్థిర uint count = 0; uchar డేటా; uint id = 1; enum { CMD, DATA, SBIT_CREN = 4, SBIT_TXEN, SBIT_SPEN, }; const char passPack = {0xEF, 0x1, 0xFF, 0xFF, 0xFF, 0xFF, 0x1, 0x0, 0x7, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1B}; const char f_detect = {0xEF, 0x1, 0xFF, 0xFF, 0xFF, 0xFF, 0x1, 0x0, 0x3, 0x1, 0x0, 0x5}; const char f_imz2ch1 = {0xEF, 0x1, 0xFF, 0xFF, 0xFF, 0xFF, 0x1, 0x0, 0x4, 0x2, 0x1, 0x0, 0x8}; const char f_imz2ch2 = {0xEF, 0x1, 0xFF, 0xFF, 0xFF, 0xFF, 0x1, 0x0, 0x4, 0x2, 0x2, 0x0, 0x9}; const char f_createModel = {0xEF, 0x1,0xFF, 0xFF, 0xFF, 0xFF, 0x1,0x0,0x3,0x5,0x0,0x9}; చార్ f_storeModel = x 0xEF, 0x1,0xFF, 0xFF, 0xFF, 0xFF, 0x1,0x0,0x6,0x6,0x1,0x0,0x1,0x0,0xE}; const char f_search = {0xEF, 0x1, 0xFF, 0xFF, 0xFF, 0xFF, 0x1, 0x0, 0x8, 0x1B, 0x1, 0x0, 0x0, 0x0, 0xA3, 0x0, 0xC8}; చార్ f_delete = x 0xEF, 0x1,0xFF, 0xFF, 0xFF, 0xFF, 0x1,0x0,0x7,0xC, 0x0,0x0,0x0,0x1,0x0,0x15};
దాని తరువాత, మేము LCD ను డ్రైవ్ చేయడానికి LCD ఫంక్షన్ చేసాము.
void lcdwrite (uchar ch, uchar rw) { LCDPORT = ch >> 4 & 0x0F; RS = rw; EN = 1; __ ఆలస్యం_ఎంఎస్ (5); EN = 0; LCDPORT = ch & 0x0F; EN = 1; __ ఆలస్యం_ఎంఎస్ (5); EN = 0; } Lcdprint (char * str) { అయితే (* str) { lcdwrite (* str ++, DATA); // __ ఆలస్యం_ఎంఎస్ (20); } } lcdbegin () { uchar lcdcmd = {0x02,0x28,0x0E, 0x06,0x01}; uint i = 0; (i = 0; i <5; i ++) lcdwrite (lcdcmd, CMD); }
ఇచ్చిన ఫంక్షన్ UART ప్రారంభించడానికి ఉపయోగించబడుతుంది
void serialbegin (uint baudrate) { SPBRG = (18432000UL / (long) (64UL * baudrate)) - 1; // బాడ్ రేటు @ 18.432000Mhz క్లాక్ TXSTAbits.SYNC = 0; // అసమకాలిక మోడ్ను అమర్చుట, అనగా UART RCSTAbits.SPEN = 1; // సీరియల్ పోర్ట్ను ప్రారంభిస్తుంది TRISC7 = 1; // డేటాషీట్లో సూచించినట్లు TRISC6 = 0; // డేటాషీట్ RCSTAbits లో సూచించినట్లు. CREN = 1; // నిరంతర రిసెప్షన్ TXSTAbits ని ప్రారంభిస్తుంది. TXEN = 1; // ప్రసార GIE = 1 ని ప్రారంభిస్తుంది ; // ప్రారంభించు INTCONbits.PEIE = 1; // పరిధీయ అంతరాయాలను ప్రారంభించండి. PIE1bits.RCIE = 1; // ఎనేబుల్ USART అంతరాయ PIE1bits ను స్వీకరిస్తుంది. TXIE = 0; // USART TX అంతరాయం PIR1bits ని నిలిపివేయండి. RCIF = 0; }
వేలిముద్ర మాడ్యూల్కు ఆదేశాలను బదిలీ చేయడానికి మరియు వేలిముద్ర మాడ్యూల్ నుండి డేటాను స్వీకరించడానికి ఇచ్చిన విధులు ఉపయోగించబడతాయి.
void serialwrite (char ch) { అయితే (TXIF == 0); // ట్రాన్స్మిటర్ రిజిస్టర్ ఖాళీ అయ్యే వరకు వేచి ఉండండి TXIF = 0; // క్లియర్ ట్రాన్స్మిటర్ ఫ్లాగ్ TXREG = ch; // ట్రాన్స్మిట్ రెగ్ } సీరియల్ ప్రింట్ (చార్ * స్ట్రి) { లోకి ప్రసారం చేయవలసిన చార్ ని లోడ్ చేయండి (* స్ట్రి) { సీరియల్ రైట్ (* స్ట్ ++); } } శూన్య అంతరాయం SerialRxPinInterrupt (void) { if ((PIR1bits.RCIF == 1) && (PIE1bits.RCIE == 1)) { uchar ch = RCREG; buf = ch; if (సూచిక> 0) జెండా = 1; RCIF = 0; // int rx ఫ్లాగ్ } } శూన్యమైన సీరియల్ఫ్లష్ () { (int i = 0; i
దాని తరువాత మనం వేలిముద్రకు ప్రసారం చేయవలసిన డేటాను సిద్ధం చేసే ఫంక్షన్ను తయారు చేయాలి మరియు వేలిముద్ర మాడ్యూల్ నుండి వచ్చే డేటాను డీకోడ్ చేయాలి.
int sendcmd2fp (char * pack, int len) { uint res = ERROR; సీరియల్ఫ్లష్ (); సూచిక = 0; __ ఆలస్యం_ఎంఎస్ (100); (int i = 0; i
ఇప్పుడు, నాలుగు వేర్వేరు పని కోసం కోడ్లో నాలుగు ఫంక్షన్లు అందుబాటులో ఉన్నాయి:
- వేలిముద్ర ID ఇన్పుట్ కోసం ఫంక్షన్ - యూనిట్ getId ()
- సరిపోలే వేలు కోసం ఫంక్షన్ - శూన్య మ్యాచ్ ఫింగర్ ()
- కొత్త వేలిని నమోదు చేయడానికి ఫంక్షన్ - శూన్యమైన ఎన్రోల్ ఫింగర్ ()
- వేలిని తొలగించే పని - శూన్య తొలగింపు ఫింగర్ ()
నాలుగు ఫంక్షన్లతో కూడిన పూర్తి కోడ్ చివరిలో ఇవ్వబడుతుంది.
ఇప్పుడు ప్రధాన ఫంక్షన్లో, మేము GPIO లు, LCD, UART ను ప్రారంభిస్తాము మరియు వేలిముద్ర మాడ్యూల్ మైక్రోకంట్రోలర్తో అనుసంధానించబడిందా లేదా అని తనిఖీ చేస్తాము. అప్పుడు ఇది LCD ద్వారా కొన్ని పరిచయ సందేశాలను చూపుతుంది. చివరగా లూప్ అయితే ప్రాజెక్ట్ను ఆపరేట్ చేయడానికి మేము అన్ని కీలను లేదా పుష్ బటన్లను చదువుతాము.
int main () { void (* FP) (); ADCON1 = 0b00000110; LEDdir = 0; SWPORTdir = 0xF0; SWPORT = 0x0F; సీరియల్బెగిన్ (57600); LCDPORTDIR = 0x00; TRISE = 0; lcdbegin (); lcdprint ("వేలిముద్ర"); lcdwrite (192, CMD); lcdprint ("ఇంటర్ఫేసింగ్"); __ ఆలస్యం_ఎంఎస్ (2000); lcdwrite (1, CMD); lcdprint ("PIC16F877A ని ఉపయోగించడం"); lcdwrite (192, CMD); lcdprint ("సర్క్యూట్ డైజెస్ట్"); __ ఆలస్యం_ఎంఎస్ (2000); సూచిక = 0; అయితే (sendcmd2fp (& passPack, sizeof (passPack))) { lcdwrite (1, CMD); lcdprint ("FP కనుగొనబడలేదు"); __ ఆలస్యం_ఎంఎస్ (2000); సూచిక = 0; } lcdwrite (1, CMD); lcdprint ("FP కనుగొనబడింది"); __ ఆలస్యం_ఎంఎస్ (1000); lcdinst (); (1) { FP = సరిపోలిక
పూర్తి PIC కోడ్ మరియు వర్కింగ్ వీడియో క్రింద ఇవ్వబడ్డాయి. ఫింగర్ ప్రింట్ సెన్సార్ మాడ్యూల్ ఉపయోగించి మా ఇతర ప్రాజెక్టులను కూడా తనిఖీ చేయండి:
- ఆర్డునో ఉపయోగించి వేలిముద్ర ఆధారిత బయోమెట్రిక్ ఓటింగ్ యంత్రం
- ఆర్డునో మరియు ఫింగర్ ప్రింట్ సెన్సార్ ఉపయోగించి బయోమెట్రిక్ సెక్యూరిటీ సిస్టమ్
- ఆర్డునో ఉపయోగించి వేలిముద్ర ఆధారిత బయోమెట్రిక్ అటెండెన్స్ సిస్టమ్
- రాస్ప్బెర్రీ పైతో వేలిముద్ర సెన్సార్ ఇంటర్ఫేసింగ్