Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
main.cpp@3:2507fc42675c, 2019-04-30 (annotated)
- 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?
| User | Revision | Line number | New 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 | } |