E2PRO2 / Mbed 2 deprecated RFID-demo-team2

Dependencies:   mbed

Committer:
janusboandersen
Date:
Tue Apr 30 14:18:34 2019 +0000
Revision:
3:2507fc42675c
Parent:
2:a0c7513fb634
Child:
4:60f9b48d9eb6
demo program for team campus

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 3:2507fc42675c 33 // Nucleo Pin for MFRC522 reset
kirchnet 2:a0c7513fb634 34 #define MF_RESET D8
kirchnet 2:a0c7513fb634 35
janusboandersen 3:2507fc42675c 36 DigitalOut LedGreen(LED1); //for showing active signal on dev board
janusboandersen 3:2507fc42675c 37 DigitalOut LedPower(A2); //for toggling MOSFET
kirchnet 2:a0c7513fb634 38
kirchnet 2:a0c7513fb634 39 //Serial connection to PC for output
kirchnet 2:a0c7513fb634 40 Serial pc(SERIAL_TX, SERIAL_RX);
kirchnet 2:a0c7513fb634 41
janusboandersen 3:2507fc42675c 42 //RFID object instantiated using board standard pins (find in your library)
janusboandersen 3:2507fc42675c 43 MFRC522 RfChip (SPI_MOSI, SPI_MISO, SPI_SCK, SPI_CS, MF_RESET);
kirchnet 2:a0c7513fb634 44
kirchnet 2:a0c7513fb634 45 int main(void) {
kirchnet 2:a0c7513fb634 46 pc.printf("starting...\n");
janusboandersen 3:2507fc42675c 47 LedPower = 0;
kirchnet 2:a0c7513fb634 48
kirchnet 2:a0c7513fb634 49 // Init. RC522 Chip
kirchnet 2:a0c7513fb634 50 RfChip.PCD_Init();
kirchnet 2:a0c7513fb634 51
kirchnet 2:a0c7513fb634 52 while (true) {
kirchnet 2:a0c7513fb634 53 LedGreen = 1;
kirchnet 2:a0c7513fb634 54
kirchnet 2:a0c7513fb634 55 // Look for new cards
kirchnet 2:a0c7513fb634 56 if ( ! RfChip.PICC_IsNewCardPresent())
kirchnet 2:a0c7513fb634 57 {
kirchnet 2:a0c7513fb634 58 wait_ms(500);
kirchnet 2:a0c7513fb634 59 continue;
kirchnet 2:a0c7513fb634 60 }
kirchnet 2:a0c7513fb634 61
janusboandersen 3:2507fc42675c 62 // Select one of the cards (avoiding collisions of multiple cards)
kirchnet 2:a0c7513fb634 63 if ( ! RfChip.PICC_ReadCardSerial())
kirchnet 2:a0c7513fb634 64 {
kirchnet 2:a0c7513fb634 65 wait_ms(500);
kirchnet 2:a0c7513fb634 66 continue;
kirchnet 2:a0c7513fb634 67 }
kirchnet 2:a0c7513fb634 68
janusboandersen 3:2507fc42675c 69 LedGreen = 0; //blink off
kirchnet 2:a0c7513fb634 70
janusboandersen 3:2507fc42675c 71 //Toggle signal to the MOSFET
janusboandersen 3:2507fc42675c 72
janusboandersen 3:2507fc42675c 73 LedPower = !LedPower;
janusboandersen 3:2507fc42675c 74 // Print Card UID to serial interface
kirchnet 2:a0c7513fb634 75 pc.printf("Card UID: ");
kirchnet 2:a0c7513fb634 76 for (uint8_t i = 0; i < RfChip.uid.size; i++)
kirchnet 2:a0c7513fb634 77 {
kirchnet 2:a0c7513fb634 78 pc.printf(" %X02", RfChip.uid.uidByte[i]);
kirchnet 2:a0c7513fb634 79 }
kirchnet 2:a0c7513fb634 80 pc.printf("\n\r");
kirchnet 2:a0c7513fb634 81
kirchnet 2:a0c7513fb634 82 // Print Card type
kirchnet 2:a0c7513fb634 83 uint8_t piccType = RfChip.PICC_GetType(RfChip.uid.sak);
kirchnet 2:a0c7513fb634 84 pc.printf("PICC Type: %s \n\r", RfChip.PICC_GetTypeName(piccType));
kirchnet 2:a0c7513fb634 85 wait_ms(1000);
kirchnet 2:a0c7513fb634 86 }
kirchnet 2:a0c7513fb634 87 }