Michelle Nguyen / Mbed 2 deprecated cf_rfid

Dependencies:   TSI mbed tsi_sensor

Fork of readMifare by Interactive Device Design

Committer:
michellen
Date:
Mon Oct 26 10:06:28 2015 +0000
Revision:
3:3c63af6987d3
Parent:
2:96f420fa4a6e
v1 - read and write from val

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nebgnahz 1:fb72a2f7cab5 1 /**************************************************************************/
nebgnahz 1:fb72a2f7cab5 2 /*!
nebgnahz 0:54bf4b21c7fa 3
nebgnahz 1:fb72a2f7cab5 4 @file main.cpp
nebgnahz 1:fb72a2f7cab5 5 @author Adafruit Industries
nebgnahz 1:fb72a2f7cab5 6 @modified_by Ben Zhang <benzh@eecs.berkeley.edu>
nebgnahz 1:fb72a2f7cab5 7 @license BSD (see license.txt)
nebgnahz 1:fb72a2f7cab5 8
nebgnahz 0:54bf4b21c7fa 9 This example will wait for any ISO14443A card or tag, and
nebgnahz 0:54bf4b21c7fa 10 depending on the size of the UID will attempt to read from it.
nebgnahz 0:54bf4b21c7fa 11
nebgnahz 0:54bf4b21c7fa 12 If the card has a 4-byte UID it is probably a Mifare
nebgnahz 0:54bf4b21c7fa 13 Classic card, and the following steps are taken:
nebgnahz 0:54bf4b21c7fa 14
nebgnahz 0:54bf4b21c7fa 15 - Authenticate block 4 (the first block of Sector 1) using
nebgnahz 0:54bf4b21c7fa 16 the default KEYA of 0XFF 0XFF 0XFF 0XFF 0XFF 0XFF
nebgnahz 0:54bf4b21c7fa 17 - If authentication succeeds, we can then read any of the
nebgnahz 0:54bf4b21c7fa 18 4 blocks in that sector (though only block 4 is read here)
nebgnahz 0:54bf4b21c7fa 19
nebgnahz 0:54bf4b21c7fa 20 If the card has a 7-byte UID it is probably a Mifare
nebgnahz 0:54bf4b21c7fa 21 Ultralight card, and the 4 byte pages can be read directly.
nebgnahz 0:54bf4b21c7fa 22 Page 4 is read by default since this is the first 'general-
nebgnahz 0:54bf4b21c7fa 23 purpose' page on the tags.
nebgnahz 0:54bf4b21c7fa 24
nebgnahz 0:54bf4b21c7fa 25
nebgnahz 0:54bf4b21c7fa 26 This is an example sketch for the Adafruit PN532 NFC/RFID breakout boards
nebgnahz 0:54bf4b21c7fa 27 This library works with the Adafruit NFC breakout
nebgnahz 0:54bf4b21c7fa 28 ----> https://www.adafruit.com/products/364
nebgnahz 0:54bf4b21c7fa 29
nebgnahz 0:54bf4b21c7fa 30 Check out the links above for our tutorials and wiring diagrams
nebgnahz 0:54bf4b21c7fa 31 These chips use SPI to communicate, 4 required to interface
nebgnahz 0:54bf4b21c7fa 32
nebgnahz 0:54bf4b21c7fa 33 Adafruit invests time and resources providing this open source code,
nebgnahz 0:54bf4b21c7fa 34 please support Adafruit and open-source hardware by purchasing
nebgnahz 0:54bf4b21c7fa 35 products from Adafruit!
nebgnahz 0:54bf4b21c7fa 36
nebgnahz 0:54bf4b21c7fa 37 */
nebgnahz 0:54bf4b21c7fa 38 /**************************************************************************/
nebgnahz 0:54bf4b21c7fa 39
nebgnahz 0:54bf4b21c7fa 40 #include "mbed.h"
nebgnahz 0:54bf4b21c7fa 41 #include "Adafruit_PN532.h"
michellen 3:3c63af6987d3 42 #include "TSISensor.h"
michellen 3:3c63af6987d3 43
michellen 3:3c63af6987d3 44
nebgnahz 0:54bf4b21c7fa 45
nebgnahz 0:54bf4b21c7fa 46 #define SS PTD0
nebgnahz 1:fb72a2f7cab5 47 // PTD1 is also LED_BLUE, it will blink during SPI communication.
nebgnahz 0:54bf4b21c7fa 48 #define SCK PTD1
nebgnahz 0:54bf4b21c7fa 49 #define MOSI PTD2
nebgnahz 0:54bf4b21c7fa 50 #define MISO PTD3
nebgnahz 0:54bf4b21c7fa 51
nebgnahz 0:54bf4b21c7fa 52 DigitalOut red(LED_RED);
nebgnahz 0:54bf4b21c7fa 53 DigitalOut green(LED_GREEN);
shong2010 2:96f420fa4a6e 54 DigitalOut blue(LED_BLUE);
nebgnahz 0:54bf4b21c7fa 55
nebgnahz 0:54bf4b21c7fa 56 Serial pc(USBTX, USBRX);
nebgnahz 0:54bf4b21c7fa 57 Adafruit_PN532 nfc(SCK, MISO, MOSI, SS);
michellen 3:3c63af6987d3 58 float readVal = 0;
michellen 3:3c63af6987d3 59 float lastTouch = 0;
nebgnahz 0:54bf4b21c7fa 60 void loop(void);
michellen 3:3c63af6987d3 61 TSISensor tsi;
michellen 3:3c63af6987d3 62 PwmOut led(LED_GREEN);
nebgnahz 0:54bf4b21c7fa 63
nebgnahz 0:54bf4b21c7fa 64 int main() {
nebgnahz 0:54bf4b21c7fa 65 pc.printf("Hello!\n");
shong2010 2:96f420fa4a6e 66 // By default, no color
shong2010 2:96f420fa4a6e 67 green = 1; red = 1, blue = 1;
michellen 3:3c63af6987d3 68
michellen 3:3c63af6987d3 69
michellen 3:3c63af6987d3 70
michellen 3:3c63af6987d3 71
michellen 3:3c63af6987d3 72 // while (true) {
michellen 3:3c63af6987d3 73 // float test= tsi.readPercentage();
michellen 3:3c63af6987d3 74 // pc.printf("%f",test);
michellen 3:3c63af6987d3 75 // wait(0.1);
michellen 3:3c63af6987d3 76 // }
nebgnahz 0:54bf4b21c7fa 77 nfc.begin();
nebgnahz 0:54bf4b21c7fa 78
nebgnahz 0:54bf4b21c7fa 79 uint32_t versiondata = nfc.getFirmwareVersion();
nebgnahz 0:54bf4b21c7fa 80 if (! versiondata) {
nebgnahz 0:54bf4b21c7fa 81 pc.printf("Didn't find PN53x board");
nebgnahz 0:54bf4b21c7fa 82 while (1); // halt
nebgnahz 0:54bf4b21c7fa 83 }
nebgnahz 0:54bf4b21c7fa 84 // Got ok data, print it out!
nebgnahz 0:54bf4b21c7fa 85 pc.printf("Found chip PN5%2X with Firmware ver. %d.%d\n",
nebgnahz 0:54bf4b21c7fa 86 versiondata >> 24,
nebgnahz 0:54bf4b21c7fa 87 (versiondata >> 16) & 0xFF,
nebgnahz 0:54bf4b21c7fa 88 (versiondata >> 8) & 0xFF);
nebgnahz 0:54bf4b21c7fa 89
nebgnahz 0:54bf4b21c7fa 90 // configure board to read RFID tags
nebgnahz 0:54bf4b21c7fa 91 nfc.SAMConfig();
nebgnahz 0:54bf4b21c7fa 92
nebgnahz 0:54bf4b21c7fa 93 pc.printf("Waiting for an ISO14443A Card ...\n");
nebgnahz 0:54bf4b21c7fa 94
nebgnahz 0:54bf4b21c7fa 95 while(1) { loop(); }
nebgnahz 0:54bf4b21c7fa 96 }
nebgnahz 0:54bf4b21c7fa 97
nebgnahz 0:54bf4b21c7fa 98
nebgnahz 0:54bf4b21c7fa 99 void loop(void) {
shong2010 2:96f420fa4a6e 100 // Turn back to no color
shong2010 2:96f420fa4a6e 101 green = 1; red = 1, blue = 1;
michellen 3:3c63af6987d3 102 float tsiVal = tsi.readPercentage();
michellen 3:3c63af6987d3 103 if (tsiVal > 0) {
michellen 3:3c63af6987d3 104 lastTouch = tsiVal;
michellen 3:3c63af6987d3 105 }
nebgnahz 0:54bf4b21c7fa 106 uint8_t success;
nebgnahz 0:54bf4b21c7fa 107 uint8_t uid[] = { 0, 0, 0, 0, 0, 0, 0 }; // Buffer to store the returned UID
nebgnahz 0:54bf4b21c7fa 108 uint8_t uidLength; // Length of the UID (4 or 7 bytes depending on ISO14443A card type)
nebgnahz 0:54bf4b21c7fa 109
nebgnahz 0:54bf4b21c7fa 110 // Wait for an ISO14443A type cards (Mifare, etc.). When one is found
nebgnahz 0:54bf4b21c7fa 111 // 'uid' will be populated with the UID, and uidLength will indicate
nebgnahz 0:54bf4b21c7fa 112 // if the uid is 4 bytes (Mifare Classic) or 7 bytes (Mifare Ultralight)
nebgnahz 0:54bf4b21c7fa 113 success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, uid, &uidLength);
nebgnahz 0:54bf4b21c7fa 114
nebgnahz 0:54bf4b21c7fa 115 if (success) {
nebgnahz 0:54bf4b21c7fa 116 // Turn off to indicate Card swipe
shong2010 2:96f420fa4a6e 117 green = 1; red = 1, blue = 1;
nebgnahz 0:54bf4b21c7fa 118 // Display some basic information about the card
nebgnahz 0:54bf4b21c7fa 119 pc.printf("\n\nFound an ISO14443A card\n");
nebgnahz 0:54bf4b21c7fa 120 pc.printf(" UID Length: %d bytes", uidLength);
nebgnahz 0:54bf4b21c7fa 121 pc.printf(" UID Value: ");
nebgnahz 0:54bf4b21c7fa 122 nfc.PrintHex(uid, uidLength);
nebgnahz 0:54bf4b21c7fa 123 pc.printf("\n");
michellen 3:3c63af6987d3 124 // We are not actually writing to the card. We just want to know the ID.
michellen 3:3c63af6987d3 125 // Read value associated with ID to a database once we have an SD card...
michellen 3:3c63af6987d3 126 led = 1.0 - readVal;
michellen 3:3c63af6987d3 127 // Would write to database with ID card and lastTouch
michellen 3:3c63af6987d3 128 readVal = lastTouch;
nebgnahz 0:54bf4b21c7fa 129
nebgnahz 0:54bf4b21c7fa 130 }
nebgnahz 0:54bf4b21c7fa 131
nebgnahz 0:54bf4b21c7fa 132 }