This is a RFID based attendance system. The current program is only for two users but can be easily scaled for more users. Apart from FRDM-K64F board, we have MFRC522, Nokia 5110 LCD and SD card as external hardware. Each time a legitimate card is flashed the name of the person will be displayed on the LCD and his information will be stored in SD card if it's already not there. I have used existing libraries for all the harware. Here is the list. MFRC522 - By Martin Olejar SDFileSystem - By Andrew Lindsay NOKIA_5110 - By Chris Yan.

Dependencies:   MFRC522 NOKIA_5110 SDFileSystem mbed

Fork of FTF2014_lab4 by Freescale

Committer:
abhishekgoyanka
Date:
Sat May 02 20:52:44 2015 +0000
Revision:
5:9f7e1200059e
Parent:
4:6ba6c4be9dde
Child:
6:bc2ca526022f
3 Kam already found works fine - SD overwriting

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Kojto 0:a83db87be46c 1 #include "mbed.h"
Kojto 0:a83db87be46c 2 #include "SDFileSystem.h"
abhishekgoyanka 3:ade6c26d1b90 3 #include "MFRC522.h"
abhishekgoyanka 3:ade6c26d1b90 4 #include <stdio.h>
abhishekgoyanka 3:ade6c26d1b90 5 #include "N5110.h"
abhishekgoyanka 3:ade6c26d1b90 6 // FRDM-K64F (Freescale) Pin for MFRC522 reset
abhishekgoyanka 3:ade6c26d1b90 7 #define MF_RESET PTD0
abhishekgoyanka 3:ade6c26d1b90 8 FILE *fp;
abhishekgoyanka 3:ade6c26d1b90 9
abhishekgoyanka 3:ade6c26d1b90 10 DigitalOut LedGreen(LED2);
abhishekgoyanka 3:ade6c26d1b90 11
abhishekgoyanka 3:ade6c26d1b90 12 //Serial connection to PC for output
abhishekgoyanka 3:ade6c26d1b90 13 Serial pc(USBTX, USBRX); // serial comm on the FRDM board
abhishekgoyanka 3:ade6c26d1b90 14 //Serial uart(PTC17, PTC16);
abhishekgoyanka 3:ade6c26d1b90 15
abhishekgoyanka 3:ade6c26d1b90 16 // VCC,SCE,RST,D/C,MOSI,SCLK,LED
abhishekgoyanka 3:ade6c26d1b90 17 //N5110 lcd(PTB2, PTC12, PTD0, PTB3, PTD6, PTD5, PTC12);
abhishekgoyanka 3:ade6c26d1b90 18 N5110 lcd(PTB2, PTC12, PTD0, PTB3, PTD6, PTD5, PTA0);
abhishekgoyanka 3:ade6c26d1b90 19
abhishekgoyanka 3:ade6c26d1b90 20 //MFRC522 RfChip (SPI_MOSI, SPI_MISO, SPI_SCK, SPI_CS, MF_RESET);
abhishekgoyanka 3:ade6c26d1b90 21 MFRC522 RfChip (PTD2, PTD3, PTD1, PTE25, PTD0);
Kojto 0:a83db87be46c 22
Kojto 0:a83db87be46c 23 SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd"); // MOSI, MISO, SCK, CS
abhishekgoyanka 3:ade6c26d1b90 24 char buffer[1024]; //UNKNOWN foe now
abhishekgoyanka 3:ade6c26d1b90 25 //uint8_t line[100];
abhishekgoyanka 3:ade6c26d1b90 26 uint8_t user[10];
abhishekgoyanka 3:ade6c26d1b90 27 uint8_t userlist[2][10];
abhishekgoyanka 3:ade6c26d1b90 28 char sam[16]="BC02CD022B02702";
abhishekgoyanka 3:ade6c26d1b90 29 char tempsam[16];
abhishekgoyanka 3:ade6c26d1b90 30 char abhishek[17]="6902BC029C021A02";
abhishekgoyanka 3:ade6c26d1b90 31 char abhishektemp[17];
Kojto 0:a83db87be46c 32
abhishekgoyanka 3:ade6c26d1b90 33 int usercount=0;
abhishekgoyanka 5:9f7e1200059e 34 //int found=0;
abhishekgoyanka 5:9f7e1200059e 35 int flagSam=0;
abhishekgoyanka 5:9f7e1200059e 36 int flagAbi=0; //checks if the card scanner is run for the first time
abhishekgoyanka 3:ade6c26d1b90 37
abhishekgoyanka 3:ade6c26d1b90 38 int main()
abhishekgoyanka 3:ade6c26d1b90 39
abhishekgoyanka 3:ade6c26d1b90 40 {
Kojto 0:a83db87be46c 41 pc.printf("Initializing \n");
abhishekgoyanka 3:ade6c26d1b90 42 //wait(2);
abhishekgoyanka 3:ade6c26d1b90 43
abhishekgoyanka 3:ade6c26d1b90 44 // initialise display
abhishekgoyanka 3:ade6c26d1b90 45 lcd.init();
abhishekgoyanka 3:ade6c26d1b90 46
abhishekgoyanka 3:ade6c26d1b90 47 // Init. RC522 Chip
abhishekgoyanka 3:ade6c26d1b90 48 RfChip.PCD_Init();
Kojto 0:a83db87be46c 49
abhishekgoyanka 3:ade6c26d1b90 50 fp = fopen("/sd/attendance.txt", "r");
abhishekgoyanka 3:ade6c26d1b90 51 if (fp != NULL)
abhishekgoyanka 3:ade6c26d1b90 52 {
Kojto 0:a83db87be46c 53 fclose(fp);
abhishekgoyanka 3:ade6c26d1b90 54 remove("/sd/attendance.txt");
Kojto 0:a83db87be46c 55 pc.printf("Remove an existing file with the same name \n");
Kojto 0:a83db87be46c 56 }
abhishekgoyanka 3:ade6c26d1b90 57
Kojto 0:a83db87be46c 58
abhishekgoyanka 3:ade6c26d1b90 59 while (true)
abhishekgoyanka 3:ade6c26d1b90 60 {
abhishekgoyanka 3:ade6c26d1b90 61 LedGreen = 1;
abhishekgoyanka 3:ade6c26d1b90 62
abhishekgoyanka 3:ade6c26d1b90 63 // Look for new cards
abhishekgoyanka 3:ade6c26d1b90 64 if ( ! RfChip.PICC_IsNewCardPresent())
abhishekgoyanka 3:ade6c26d1b90 65 {
abhishekgoyanka 5:9f7e1200059e 66 RfChip.PCD_Init();
abhishekgoyanka 5:9f7e1200059e 67 wait_ms(300);
abhishekgoyanka 3:ade6c26d1b90 68 continue;
abhishekgoyanka 3:ade6c26d1b90 69 }
abhishekgoyanka 3:ade6c26d1b90 70
abhishekgoyanka 3:ade6c26d1b90 71 // Select one of the cards
abhishekgoyanka 3:ade6c26d1b90 72 if ( ! RfChip.PICC_ReadCardSerial())
abhishekgoyanka 3:ade6c26d1b90 73 {
abhishekgoyanka 3:ade6c26d1b90 74 wait_ms(200);
abhishekgoyanka 3:ade6c26d1b90 75 continue;
abhishekgoyanka 3:ade6c26d1b90 76 }
abhishekgoyanka 3:ade6c26d1b90 77
abhishekgoyanka 3:ade6c26d1b90 78 LedGreen = 0;
abhishekgoyanka 3:ade6c26d1b90 79
abhishekgoyanka 3:ade6c26d1b90 80
abhishekgoyanka 3:ade6c26d1b90 81
abhishekgoyanka 3:ade6c26d1b90 82 // Print Card UID
abhishekgoyanka 3:ade6c26d1b90 83 printf("Card UID: ");
abhishekgoyanka 3:ade6c26d1b90 84 for (uint8_t i = 0; i < RfChip.uid.size; i++)
abhishekgoyanka 3:ade6c26d1b90 85 {
abhishekgoyanka 4:6ba6c4be9dde 86 printf("%X02", RfChip.uid.uidByte[i]);
abhishekgoyanka 3:ade6c26d1b90 87 user[i]=RfChip.uid.uidByte[i];
abhishekgoyanka 3:ade6c26d1b90 88 }
abhishekgoyanka 4:6ba6c4be9dde 89 printf("\n");
abhishekgoyanka 5:9f7e1200059e 90
abhishekgoyanka 3:ade6c26d1b90 91
abhishekgoyanka 5:9f7e1200059e 92
abhishekgoyanka 4:6ba6c4be9dde 93 sprintf(abhishektemp,"%X02%X02%X02%X02",user[0],user[1],user[2],user[3]);
abhishekgoyanka 4:6ba6c4be9dde 94 printf("Abitemp is %s",abhishektemp);
abhishekgoyanka 4:6ba6c4be9dde 95
abhishekgoyanka 5:9f7e1200059e 96 if(strcmp(abhishektemp, abhishek)==0)
abhishekgoyanka 5:9f7e1200059e 97 {
abhishekgoyanka 5:9f7e1200059e 98 printf("\n found abhishek\n");
abhishekgoyanka 5:9f7e1200059e 99 if (flagAbi==1)
abhishekgoyanka 5:9f7e1200059e 100 {
abhishekgoyanka 5:9f7e1200059e 101 printf("Already logged in!\n");
abhishekgoyanka 5:9f7e1200059e 102 lcd.printString("Abichek",0,0);
abhishekgoyanka 5:9f7e1200059e 103 }
abhishekgoyanka 5:9f7e1200059e 104 else if (flagAbi==0)
abhishekgoyanka 5:9f7e1200059e 105 {
abhishekgoyanka 5:9f7e1200059e 106 printf("\nWriting data to the sd card \n");
abhishekgoyanka 5:9f7e1200059e 107 fp = fopen("/sd/attendance.txt", "rw");
abhishekgoyanka 5:9f7e1200059e 108 if (fp == NULL)
abhishekgoyanka 5:9f7e1200059e 109 {
abhishekgoyanka 5:9f7e1200059e 110 pc.printf("Unable to write the file \n");
abhishekgoyanka 5:9f7e1200059e 111 }
abhishekgoyanka 5:9f7e1200059e 112 else
abhishekgoyanka 5:9f7e1200059e 113 {
abhishekgoyanka 5:9f7e1200059e 114 while(!feof(fp)) {};
abhishekgoyanka 5:9f7e1200059e 115 fprintf(fp, "\nAbhishek PRESENT \n");
abhishekgoyanka 5:9f7e1200059e 116 fclose(fp);
abhishekgoyanka 5:9f7e1200059e 117 }
abhishekgoyanka 5:9f7e1200059e 118 flagAbi=1;
abhishekgoyanka 5:9f7e1200059e 119 lcd.printString("ABHISHEK",0,0);
abhishekgoyanka 5:9f7e1200059e 120 }
abhishekgoyanka 5:9f7e1200059e 121 }
abhishekgoyanka 5:9f7e1200059e 122 else if(strcmp(abhishektemp,sam)==0)
abhishekgoyanka 5:9f7e1200059e 123 {
abhishekgoyanka 5:9f7e1200059e 124 printf("\n found Sam\n");
abhishekgoyanka 5:9f7e1200059e 125 if (flagSam==1)
abhishekgoyanka 5:9f7e1200059e 126 {
abhishekgoyanka 5:9f7e1200059e 127 printf("Already logged in!\n");
abhishekgoyanka 5:9f7e1200059e 128 lcd.printString("Sam",0,0);
abhishekgoyanka 5:9f7e1200059e 129 }
abhishekgoyanka 5:9f7e1200059e 130 else if (flagSam==0)
abhishekgoyanka 5:9f7e1200059e 131 {
abhishekgoyanka 5:9f7e1200059e 132 printf("\nWriting data to the sd card \n");
abhishekgoyanka 5:9f7e1200059e 133 fp = fopen("/sd/attendance.txt", "w");
abhishekgoyanka 5:9f7e1200059e 134 if (fp == NULL)
abhishekgoyanka 5:9f7e1200059e 135 {
abhishekgoyanka 5:9f7e1200059e 136 pc.printf("Unable to write the file \n");
abhishekgoyanka 5:9f7e1200059e 137 }
abhishekgoyanka 5:9f7e1200059e 138 else
abhishekgoyanka 5:9f7e1200059e 139 {
abhishekgoyanka 5:9f7e1200059e 140 while(!feof(fp)) {};
abhishekgoyanka 5:9f7e1200059e 141 fprintf(fp, "\nSAM PRESENT \n");
abhishekgoyanka 5:9f7e1200059e 142 fclose(fp);
abhishekgoyanka 5:9f7e1200059e 143 }
abhishekgoyanka 5:9f7e1200059e 144 flagSam=1;
abhishekgoyanka 5:9f7e1200059e 145 printf("FlagSam=%i\n",flagSam);
abhishekgoyanka 5:9f7e1200059e 146 lcd.printString("Sam",0,0);
abhishekgoyanka 5:9f7e1200059e 147
abhishekgoyanka 5:9f7e1200059e 148 }
abhishekgoyanka 3:ade6c26d1b90 149
abhishekgoyanka 5:9f7e1200059e 150 printf("Just after continue\n");
abhishekgoyanka 5:9f7e1200059e 151 }
abhishekgoyanka 3:ade6c26d1b90 152
abhishekgoyanka 5:9f7e1200059e 153 else
abhishekgoyanka 5:9f7e1200059e 154 {
abhishekgoyanka 5:9f7e1200059e 155 continue;
abhishekgoyanka 5:9f7e1200059e 156 }
abhishekgoyanka 4:6ba6c4be9dde 157
Kojto 0:a83db87be46c 158 printf("\nReading data from the SD card. \n");
abhishekgoyanka 3:ade6c26d1b90 159 fp = fopen("/sd/attendance.txt", "r");
abhishekgoyanka 3:ade6c26d1b90 160 if (fp != NULL)
abhishekgoyanka 3:ade6c26d1b90 161 {
Kojto 0:a83db87be46c 162 int size = fread(buffer, sizeof(char), 1024, fp);
abhishekgoyanka 3:ade6c26d1b90 163 printf("Number of data read: %d, text from attendance.txt file: %s \n", size, buffer);
Kojto 0:a83db87be46c 164 fclose(fp);
Kojto 0:a83db87be46c 165 }
Kojto 0:a83db87be46c 166 }
abhishekgoyanka 5:9f7e1200059e 167 }