E2PRO2 / Mbed 2 deprecated RFID-demo-team2

Dependencies:   mbed

Committer:
janusboandersen
Date:
Tue Apr 30 14:50:28 2019 +0000
Revision:
4:60f9b48d9eb6
Parent:
3:2507fc42675c
Child:
5:b1ac24b6f25d
Specified pin numbers for Marc

Who changed what in which revision?

UserRevisionLine numberNew contents of line
janusboandersen 3:2507fc42675c 1 /*
janusboandersen 3:2507fc42675c 2 * File : main.cpp
janusboandersen 3:2507fc42675c 3 * License : MIT License
janusboandersen 3:2507fc42675c 4 * Version : 0.9
janusboandersen 3:2507fc42675c 5 * Author : Janus Bo Andersen (JA67494)
janusboandersen 3:2507fc42675c 6 * Last edit : Janus
janusboandersen 3:2507fc42675c 7 * Created on : 27 Apr 2019
janusboandersen 3:2507fc42675c 8 * Last change: 30 Apr 2019
janusboandersen 3:2507fc42675c 9 * Description: Demo program for Mifare RC-522 RFID reader/writer chip.
janusboandersen 3:2507fc42675c 10 * : Communicates with RFID reader, transmits card numbers to terminal
janusboandersen 3:2507fc42675c 11 * : and toggles a digital pin upon reading a card.
janusboandersen 3:2507fc42675c 12 * Structure : Uses SPI protocol to communicate with the RFID
janusboandersen 3:2507fc42675c 13 * : Uses U(S)ART to communicate with connected computer/terminal.
janusboandersen 3:2507fc42675c 14 * Adapted for: STM32 Nucleo L432KC, but can be adapted for NXP KL25Z.
janusboandersen 3:2507fc42675c 15 */
kirchnet 2:a0c7513fb634 16
janusboandersen 3:2507fc42675c 17 /*Connect as follows:
janusboandersen 3:2507fc42675c 18 (should be connected to board standard pins)
janusboandersen 3:2507fc42675c 19 RFID pins -> Nucleo header CN5 (Arduino-compatible header)
janusboandersen 3:2507fc42675c 20 ----------------------------------------
janusboandersen 3:2507fc42675c 21 RFID IRQ = pin5 -> Not used. Leave open
janusboandersen 3:2507fc42675c 22 RFID MISO = pin4 -> Nucleo SPI_MISO = PA_6 = D12
janusboandersen 3:2507fc42675c 23 RFID MOSI = pin3 -> Nucleo SPI_MOSI = PA_7 = D11
janusboandersen 3:2507fc42675c 24 RFID SCK = pin2 -> Nucleo SPI_SCK = PA_5 = D13
janusboandersen 3:2507fc42675c 25 RFID SDA = pin1 -> Nucleo SPI_CS = PB_6 = D10
janusboandersen 3:2507fc42675c 26 RFID RST = pin7 -> Nucleo = PA_9 = D8
janusboandersen 3:2507fc42675c 27
janusboandersen 3:2507fc42675c 28 Power supply MUST BE 3.3V and GND to the respective pins.
janusboandersen 3:2507fc42675c 29 */
kirchnet 2:a0c7513fb634 30 #include "mbed.h"
kirchnet 2:a0c7513fb634 31 #include "MFRC522.h"
kirchnet 2:a0c7513fb634 32
janusboandersen 4:60f9b48d9eb6 33 // FRDM KL25Z Pins for MFRC522
janusboandersen 4:60f9b48d9eb6 34 #define MF_RESET D8 //Or anything else
janusboandersen 4:60f9b48d9eb6 35 #define SERIAL_TX D0 //UART0
janusboandersen 4:60f9b48d9eb6 36 #define SERIAL_RX D1 //UART0
janusboandersen 4:60f9b48d9eb6 37 #define SPI_MOSI D11 //PTC17
janusboandersen 4:60f9b48d9eb6 38 #define SPI_MISO D12 //PTA16
janusboandersen 4:60f9b48d9eb6 39 #define SPI_SCK D13 //PTA17
janusboandersen 4:60f9b48d9eb6 40 #define SPI_CS D10 //Chip select can be any digital pin
kirchnet 2:a0c7513fb634 41
janusboandersen 3:2507fc42675c 42 DigitalOut LedGreen(LED1); //for showing active signal on dev board
janusboandersen 3:2507fc42675c 43 DigitalOut LedPower(A2); //for toggling MOSFET
kirchnet 2:a0c7513fb634 44
kirchnet 2:a0c7513fb634 45 //Serial connection to PC for output
kirchnet 2:a0c7513fb634 46 Serial pc(SERIAL_TX, SERIAL_RX);
kirchnet 2:a0c7513fb634 47
janusboandersen 3:2507fc42675c 48 //RFID object instantiated using board standard pins (find in your library)
janusboandersen 3:2507fc42675c 49 MFRC522 RfChip (SPI_MOSI, SPI_MISO, SPI_SCK, SPI_CS, MF_RESET);
kirchnet 2:a0c7513fb634 50
kirchnet 2:a0c7513fb634 51 int main(void) {
kirchnet 2:a0c7513fb634 52 pc.printf("starting...\n");
janusboandersen 3:2507fc42675c 53 LedPower = 0;
kirchnet 2:a0c7513fb634 54
kirchnet 2:a0c7513fb634 55 // Init. RC522 Chip
kirchnet 2:a0c7513fb634 56 RfChip.PCD_Init();
kirchnet 2:a0c7513fb634 57
kirchnet 2:a0c7513fb634 58 while (true) {
kirchnet 2:a0c7513fb634 59 LedGreen = 1;
kirchnet 2:a0c7513fb634 60
kirchnet 2:a0c7513fb634 61 // Look for new cards
kirchnet 2:a0c7513fb634 62 if ( ! RfChip.PICC_IsNewCardPresent())
kirchnet 2:a0c7513fb634 63 {
kirchnet 2:a0c7513fb634 64 wait_ms(500);
kirchnet 2:a0c7513fb634 65 continue;
kirchnet 2:a0c7513fb634 66 }
kirchnet 2:a0c7513fb634 67
janusboandersen 3:2507fc42675c 68 // Select one of the cards (avoiding collisions of multiple cards)
kirchnet 2:a0c7513fb634 69 if ( ! RfChip.PICC_ReadCardSerial())
kirchnet 2:a0c7513fb634 70 {
kirchnet 2:a0c7513fb634 71 wait_ms(500);
kirchnet 2:a0c7513fb634 72 continue;
kirchnet 2:a0c7513fb634 73 }
kirchnet 2:a0c7513fb634 74
janusboandersen 3:2507fc42675c 75 LedGreen = 0; //blink off
kirchnet 2:a0c7513fb634 76
janusboandersen 3:2507fc42675c 77 //Toggle signal to the MOSFET
janusboandersen 3:2507fc42675c 78
janusboandersen 3:2507fc42675c 79 LedPower = !LedPower;
janusboandersen 3:2507fc42675c 80 // Print Card UID to serial interface
kirchnet 2:a0c7513fb634 81 pc.printf("Card UID: ");
kirchnet 2:a0c7513fb634 82 for (uint8_t i = 0; i < RfChip.uid.size; i++)
kirchnet 2:a0c7513fb634 83 {
kirchnet 2:a0c7513fb634 84 pc.printf(" %X02", RfChip.uid.uidByte[i]);
kirchnet 2:a0c7513fb634 85 }
kirchnet 2:a0c7513fb634 86 pc.printf("\n\r");
kirchnet 2:a0c7513fb634 87
kirchnet 2:a0c7513fb634 88 // Print Card type
kirchnet 2:a0c7513fb634 89 uint8_t piccType = RfChip.PICC_GetType(RfChip.uid.sak);
kirchnet 2:a0c7513fb634 90 pc.printf("PICC Type: %s \n\r", RfChip.PICC_GetTypeName(piccType));
kirchnet 2:a0c7513fb634 91 wait_ms(1000);
kirchnet 2:a0c7513fb634 92 }
kirchnet 2:a0c7513fb634 93 }