Biswajit Padhi
/
Controlling_Device_Using_RFID
Device controller using RFID
man.cpp@0:28a157482b70, 2017-06-09 (annotated)
- Committer:
- sheralikhan
- Date:
- Fri Jun 09 06:03:03 2017 +0000
- Revision:
- 0:28a157482b70
Device controller
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
sheralikhan | 0:28a157482b70 | 1 | //Test of cheap 13.56 Mhz RFID-RC522 module from eBay |
sheralikhan | 0:28a157482b70 | 2 | //This code is based on Martin Olejar's MFRC522 library. Minimal changes |
sheralikhan | 0:28a157482b70 | 3 | //Adapted for Nucleo STM32 F401RE. Should work on other Nucleos too |
sheralikhan | 0:28a157482b70 | 4 | |
sheralikhan | 0:28a157482b70 | 5 | //Connect as follows: |
sheralikhan | 0:28a157482b70 | 6 | //RFID pins -> Nucleo header CN5 (Arduino-compatible header) |
sheralikhan | 0:28a157482b70 | 7 | //---------------------------------------- |
sheralikhan | 0:28a157482b70 | 8 | //RFID IRQ=pin5 -> Not used. Leave open |
sheralikhan | 0:28a157482b70 | 9 | //RFID MISO=pin4 -> Nucleo SPI_MISO=PA_6=D12 |
sheralikhan | 0:28a157482b70 | 10 | //RFID MOSI=pin3 -> Nucleo SPI_MOSI=PA_7=D11 |
sheralikhan | 0:28a157482b70 | 11 | //RFID SCK=pin2 -> Nucleo SPI_SCK =PA_5=D13 |
sheralikhan | 0:28a157482b70 | 12 | //RFID SDA=pin1 -> Nucleo SPI_CS =PB_6=D10 |
sheralikhan | 0:28a157482b70 | 13 | //RFID RST=pin7 -> Nucleo =PA_9=D8 |
sheralikhan | 0:28a157482b70 | 14 | //3.3V and Gnd to the respective pins |
sheralikhan | 0:28a157482b70 | 15 | |
sheralikhan | 0:28a157482b70 | 16 | #include "mbed.h" |
sheralikhan | 0:28a157482b70 | 17 | #include "MFRC522.h" |
sheralikhan | 0:28a157482b70 | 18 | #include <sstream> |
sheralikhan | 0:28a157482b70 | 19 | #include <string> |
sheralikhan | 0:28a157482b70 | 20 | |
sheralikhan | 0:28a157482b70 | 21 | // CARD number |
sheralikhan | 0:28a157482b70 | 22 | uint8_t CARD_1 = 0x10; |
sheralikhan | 0:28a157482b70 | 23 | uint8_t CARD_2 = 0xA0; |
sheralikhan | 0:28a157482b70 | 24 | uint8_t CARD_3 = 0x26; |
sheralikhan | 0:28a157482b70 | 25 | uint8_t CARD_4 = 0x83; |
sheralikhan | 0:28a157482b70 | 26 | |
sheralikhan | 0:28a157482b70 | 27 | uint8_t CARD_5 = 0x50; |
sheralikhan | 0:28a157482b70 | 28 | uint8_t CARD_6 = 0x4C; |
sheralikhan | 0:28a157482b70 | 29 | uint8_t CARD_7 = 0x33; |
sheralikhan | 0:28a157482b70 | 30 | uint8_t CARD_8 = 0x83; |
sheralikhan | 0:28a157482b70 | 31 | |
sheralikhan | 0:28a157482b70 | 32 | uint8_t CARD_9 = 0x10; |
sheralikhan | 0:28a157482b70 | 33 | uint8_t CARD_10 = 0x70; |
sheralikhan | 0:28a157482b70 | 34 | uint8_t CARD_11 = 0xFD; |
sheralikhan | 0:28a157482b70 | 35 | uint8_t CARD_12 = 0x73; |
sheralikhan | 0:28a157482b70 | 36 | |
sheralikhan | 0:28a157482b70 | 37 | #define SPI_MOSI D11 |
sheralikhan | 0:28a157482b70 | 38 | #define SPI_MISO D12 |
sheralikhan | 0:28a157482b70 | 39 | #define SPI_SCLK D13 |
sheralikhan | 0:28a157482b70 | 40 | #define SPI_CS D10 |
sheralikhan | 0:28a157482b70 | 41 | |
sheralikhan | 0:28a157482b70 | 42 | // WIZWiki-W7500 Pin for MFRC522 reset(pick another D pin if you need D8) |
sheralikhan | 0:28a157482b70 | 43 | #define MF_RESET D9 |
sheralikhan | 0:28a157482b70 | 44 | #define VOLUME 0.08 |
sheralikhan | 0:28a157482b70 | 45 | |
sheralikhan | 0:28a157482b70 | 46 | |
sheralikhan | 0:28a157482b70 | 47 | Serial pc(USBTX, USBRX); |
sheralikhan | 0:28a157482b70 | 48 | |
sheralikhan | 0:28a157482b70 | 49 | MFRC522 RfChip (SPI_MOSI, SPI_MISO, SPI_SCLK, SPI_CS, MF_RESET); // Init MFRC522 card |
sheralikhan | 0:28a157482b70 | 50 | |
sheralikhan | 0:28a157482b70 | 51 | DigitalOut LedGreen(D7); |
sheralikhan | 0:28a157482b70 | 52 | DigitalOut LedYellow(D6); |
sheralikhan | 0:28a157482b70 | 53 | PwmOut Buzzer(D5); |
sheralikhan | 0:28a157482b70 | 54 | float beat_duration; |
sheralikhan | 0:28a157482b70 | 55 | |
sheralikhan | 0:28a157482b70 | 56 | // Plays a sound with the defined frequency, duration, and volume |
sheralikhan | 0:28a157482b70 | 57 | void playNote(float frequency, float volume) |
sheralikhan | 0:28a157482b70 | 58 | { |
sheralikhan | 0:28a157482b70 | 59 | Buzzer.period(1.0/(double)frequency); |
sheralikhan | 0:28a157482b70 | 60 | Buzzer = ((double)volume/2.0); |
sheralikhan | 0:28a157482b70 | 61 | } |
sheralikhan | 0:28a157482b70 | 62 | char* store_buf; |
sheralikhan | 0:28a157482b70 | 63 | char data2[8]; |
sheralikhan | 0:28a157482b70 | 64 | |
sheralikhan | 0:28a157482b70 | 65 | int main(void) |
sheralikhan | 0:28a157482b70 | 66 | { |
sheralikhan | 0:28a157482b70 | 67 | printf("Welcome to My Smart Home.... "); |
sheralikhan | 0:28a157482b70 | 68 | wait_ms(50); |
sheralikhan | 0:28a157482b70 | 69 | printf("\n\r"); |
sheralikhan | 0:28a157482b70 | 70 | printf("Please swipe card.. Here "); |
sheralikhan | 0:28a157482b70 | 71 | wait_ms(50); |
sheralikhan | 0:28a157482b70 | 72 | printf("\n\r"); |
sheralikhan | 0:28a157482b70 | 73 | // Init. RC522 Chip |
sheralikhan | 0:28a157482b70 | 74 | RfChip.PCD_Init(); |
sheralikhan | 0:28a157482b70 | 75 | |
sheralikhan | 0:28a157482b70 | 76 | while (true) { |
sheralikhan | 0:28a157482b70 | 77 | LedGreen = 1; |
sheralikhan | 0:28a157482b70 | 78 | // Look for new cards |
sheralikhan | 0:28a157482b70 | 79 | if ( ! RfChip.PICC_IsNewCardPresent()) { |
sheralikhan | 0:28a157482b70 | 80 | wait_ms(50); |
sheralikhan | 0:28a157482b70 | 81 | continue; |
sheralikhan | 0:28a157482b70 | 82 | } |
sheralikhan | 0:28a157482b70 | 83 | LedGreen = 0; |
sheralikhan | 0:28a157482b70 | 84 | wait_ms(50); |
sheralikhan | 0:28a157482b70 | 85 | // Select one of the cards |
sheralikhan | 0:28a157482b70 | 86 | if ( ! RfChip.PICC_ReadCardSerial()) { |
sheralikhan | 0:28a157482b70 | 87 | wait_ms(50); |
sheralikhan | 0:28a157482b70 | 88 | continue; |
sheralikhan | 0:28a157482b70 | 89 | } |
sheralikhan | 0:28a157482b70 | 90 | LedGreen = 1; |
sheralikhan | 0:28a157482b70 | 91 | wait_ms(50); |
sheralikhan | 0:28a157482b70 | 92 | |
sheralikhan | 0:28a157482b70 | 93 | // Print Card UID |
sheralikhan | 0:28a157482b70 | 94 | for (uint8_t i = 0; i < RfChip.uid.size; i++) { |
sheralikhan | 0:28a157482b70 | 95 | store_buf+= sprintf(store_buf,"%X",RfChip.uid.uidByte[i]); |
sheralikhan | 0:28a157482b70 | 96 | } |
sheralikhan | 0:28a157482b70 | 97 | printf("\n\r"); |
sheralikhan | 0:28a157482b70 | 98 | // Print Card type |
sheralikhan | 0:28a157482b70 | 99 | uint8_t piccType = RfChip.PICC_GetType(RfChip.uid.sak); |
sheralikhan | 0:28a157482b70 | 100 | LedGreen = 0; |
sheralikhan | 0:28a157482b70 | 101 | wait_ms(50); |
sheralikhan | 0:28a157482b70 | 102 | |
sheralikhan | 0:28a157482b70 | 103 | // store_buf=data2; |
sheralikhan | 0:28a157482b70 | 104 | if((RfChip.uid.uidByte[0] == CARD_1) && (RfChip.uid.uidByte[1] == CARD_2) && (RfChip.uid.uidByte[2] == CARD_3) && (RfChip.uid.uidByte[3] == CARD_4)) { |
sheralikhan | 0:28a157482b70 | 105 | LedYellow=1; |
sheralikhan | 0:28a157482b70 | 106 | // wait_ms(1000); |
sheralikhan | 0:28a157482b70 | 107 | pc.printf("Yello Led is On....."); |
sheralikhan | 0:28a157482b70 | 108 | printf("\n\r"); |
sheralikhan | 0:28a157482b70 | 109 | |
sheralikhan | 0:28a157482b70 | 110 | } else if((RfChip.uid.uidByte[0] == CARD_5) && (RfChip.uid.uidByte[1] == CARD_6) && (RfChip.uid.uidByte[2] == CARD_7) && (RfChip.uid.uidByte[3] == CARD_8)) { |
sheralikhan | 0:28a157482b70 | 111 | playNote(999.999, VOLUME); |
sheralikhan | 0:28a157482b70 | 112 | pc.printf("Buzzer is On....."); |
sheralikhan | 0:28a157482b70 | 113 | printf("\n\r"); |
sheralikhan | 0:28a157482b70 | 114 | |
sheralikhan | 0:28a157482b70 | 115 | } else if((RfChip.uid.uidByte[0] == CARD_9) && (RfChip.uid.uidByte[1] == CARD_10) && (RfChip.uid.uidByte[2] == CARD_11) && (RfChip.uid.uidByte[3] == CARD_12)) { |
sheralikhan | 0:28a157482b70 | 116 | pc.printf("This is a master Card: "); |
sheralikhan | 0:28a157482b70 | 117 | printf("\n\r"); |
sheralikhan | 0:28a157482b70 | 118 | LedYellow=0; |
sheralikhan | 0:28a157482b70 | 119 | Buzzer=0; |
sheralikhan | 0:28a157482b70 | 120 | pc.printf("ALL Device off....."); |
sheralikhan | 0:28a157482b70 | 121 | printf("\n\r"); |
sheralikhan | 0:28a157482b70 | 122 | pc.printf("Thank you....."); |
sheralikhan | 0:28a157482b70 | 123 | } |
sheralikhan | 0:28a157482b70 | 124 | printf("\n\r"); |
sheralikhan | 0:28a157482b70 | 125 | |
sheralikhan | 0:28a157482b70 | 126 | |
sheralikhan | 0:28a157482b70 | 127 | |
sheralikhan | 0:28a157482b70 | 128 | } |
sheralikhan | 0:28a157482b70 | 129 | } |