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.
main.cpp@5:df18de5caf9f, 2019-05-03 (annotated)
- Committer:
- janusboandersen
- Date:
- Fri May 03 11:14:06 2019 +0000
- Revision:
- 5:df18de5caf9f
- Parent:
- 4:320ce84c8f43
- Child:
- 6:8ac65a5956a1
Team 2 Pro 2 -- demo program with 2 RFID readers.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
janusboandersen | 5:df18de5caf9f | 1 | /* |
janusboandersen | 5:df18de5caf9f | 2 | * File : main.cpp |
janusboandersen | 5:df18de5caf9f | 3 | * License : MIT License |
janusboandersen | 5:df18de5caf9f | 4 | * Version : 0.91 |
janusboandersen | 5:df18de5caf9f | 5 | * Author : Janus Bo Andersen (JA67494) |
janusboandersen | 5:df18de5caf9f | 6 | * Last edit : Janus |
janusboandersen | 5:df18de5caf9f | 7 | * Created on : 27 Apr 2019 |
janusboandersen | 5:df18de5caf9f | 8 | * Last change: 03 May 2019 |
janusboandersen | 5:df18de5caf9f | 9 | * Description: Demo program for Mifare RC-522 RFID reader/writer chip. Will: |
janusboandersen | 5:df18de5caf9f | 10 | * : Communicate with RFID readers, transmit card numbers to terminal |
janusboandersen | 5:df18de5caf9f | 11 | * : and toggle a digital pin(s) upon reading a card. |
janusboandersen | 5:df18de5caf9f | 12 | * Structure : Uses SPI protocol to communicate with the RFIDs. |
janusboandersen | 5:df18de5caf9f | 13 | * : Uses U(S)ART to communicate with connected computer/terminal. |
janusboandersen | 5:df18de5caf9f | 14 | * Adapted for: STM32 Nucleo L432KC and NXP KL25Z (macro settings). |
janusboandersen | 5:df18de5caf9f | 15 | * Changelog : 27 Apr 2019: Created demo program |
janusboandersen | 5:df18de5caf9f | 16 | : 02 May 2019: Update pin mappings for FRDM-KL25Z Board |
janusboandersen | 5:df18de5caf9f | 17 | : 02 May 2019: Added set and reset for a latched circuit |
janusboandersen | 5:df18de5caf9f | 18 | : 03 May 2019: Upgrade to RTOS 5. |
janusboandersen | 5:df18de5caf9f | 19 | : 03 May 2019: Run two RFIDs simultaneosuly (changed library setup |
janusboandersen | 5:df18de5caf9f | 20 | : by decr. SPI freq. and adding reset managers). |
janusboandersen | 5:df18de5caf9f | 21 | |
janusboandersen | 5:df18de5caf9f | 22 | Resources: |
janusboandersen | 5:df18de5caf9f | 23 | https://github.com/armmbed/mbed-os |
janusboandersen | 5:df18de5caf9f | 24 | https://os.mbed.com/docs/mbed-os/v5.9/tutorials/migrating.html |
janusboandersen | 5:df18de5caf9f | 25 | |
janusboandersen | 5:df18de5caf9f | 26 | */ |
andcor02 | 3:654723104cc9 | 27 | |
janusboandersen | 5:df18de5caf9f | 28 | /*Connect as follows: |
janusboandersen | 5:df18de5caf9f | 29 | |
janusboandersen | 5:df18de5caf9f | 30 | Power supply MUST BE 3.3V and GND to the respective pins. |
kirchnet | 2:a0c7513fb634 | 31 | |
janusboandersen | 5:df18de5caf9f | 32 | RFID pins -> Board pinName L432KC FRDM-KL25Z |
janusboandersen | 5:df18de5caf9f | 33 | --------------------------------------------------------------------- |
janusboandersen | 5:df18de5caf9f | 34 | |
janusboandersen | 5:df18de5caf9f | 35 | ======================= BUS ====================================== |
janusboandersen | 5:df18de5caf9f | 36 | RFID MISO = pin4 -> SPI_MISO PA_6=D12 PTD3 |
janusboandersen | 5:df18de5caf9f | 37 | RFID MOSI = pin3 -> SPI_MOSI PA_7=D11 PTD2 |
janusboandersen | 5:df18de5caf9f | 38 | RFID SCK = pin2 -> SPI_SCK PA_5=D13 PTD1 |
janusboandersen | 5:df18de5caf9f | 39 | ======================= RFID 1 ====================================== |
janusboandersen | 5:df18de5caf9f | 40 | RFID SDA = pin1 -> SPI_CS PB_6=D10 PTD0 |
janusboandersen | 5:df18de5caf9f | 41 | RFID RST = pin7 -> PA_9=D8 PTA13 |
janusboandersen | 5:df18de5caf9f | 42 | RFID IRQ = pin5 -> -------- OPEN -------- |
janusboandersen | 5:df18de5caf9f | 43 | ======================= RFID 2 ====================================== |
janusboandersen | 5:df18de5caf9f | 44 | RFID SDA = pin1 -> SPI_CS PA_12=D2 PTD5 |
janusboandersen | 5:df18de5caf9f | 45 | RFID RST = pin7 -> PB_1=D6 [PTA13] <- might not be good |
janusboandersen | 5:df18de5caf9f | 46 | RFID IRQ = pin5 -> -------- OPEN -------- |
janusboandersen | 5:df18de5caf9f | 47 | ===================================================================== |
janusboandersen | 5:df18de5caf9f | 48 | |
janusboandersen | 5:df18de5caf9f | 49 | Connecting the "HOUSE" |
janusboandersen | 5:df18de5caf9f | 50 | Location Circuit latch function L432KC FRDM-KL25Z |
janusboandersen | 5:df18de5caf9f | 51 | --------------------------------------------------------------------- |
janusboandersen | 5:df18de5caf9f | 52 | Front door Set A1 A1 |
janusboandersen | 5:df18de5caf9f | 53 | Front door Reset A2 A2 |
janusboandersen | 5:df18de5caf9f | 54 | Room 1 door Set A3 A3 |
janusboandersen | 5:df18de5caf9f | 55 | Room 1 door Reset A4 A4 |
janusboandersen | 5:df18de5caf9f | 56 | ===================================================================== |
janusboandersen | 5:df18de5caf9f | 57 | |
janusboandersen | 5:df18de5caf9f | 58 | Mapping: |
janusboandersen | 5:df18de5caf9f | 59 | Front door = rfid1 |
janusboandersen | 5:df18de5caf9f | 60 | Room 1 door = rfid2 |
janusboandersen | 5:df18de5caf9f | 61 | |
janusboandersen | 5:df18de5caf9f | 62 | */ |
andcor02 | 3:654723104cc9 | 63 | |
kirchnet | 2:a0c7513fb634 | 64 | #include "mbed.h" |
kirchnet | 2:a0c7513fb634 | 65 | #include "MFRC522.h" |
kirchnet | 2:a0c7513fb634 | 66 | |
janusboandersen | 5:df18de5caf9f | 67 | #define COMPILING_FOR_KL25Z 0 //Set this to 1 to compile with KL25Z pins |
kirchnet | 2:a0c7513fb634 | 68 | |
janusboandersen | 5:df18de5caf9f | 69 | #if COMPILING_FOR_KL25Z |
janusboandersen | 5:df18de5caf9f | 70 | // FRDM KL25Z pins |
janusboandersen | 5:df18de5caf9f | 71 | |
janusboandersen | 5:df18de5caf9f | 72 | //USB communication |
janusboandersen | 5:df18de5caf9f | 73 | #define SERIAL_TX PTE0 //UART0 USB |
janusboandersen | 5:df18de5caf9f | 74 | #define SERIAL_RX PTE1 //UART0 USB |
janusboandersen | 5:df18de5caf9f | 75 | |
janusboandersen | 5:df18de5caf9f | 76 | //BUS |
janusboandersen | 5:df18de5caf9f | 77 | #define SPI_MISO PTD3 |
janusboandersen | 5:df18de5caf9f | 78 | #define SPI_MOSI PTD2 |
janusboandersen | 5:df18de5caf9f | 79 | #define SPI_SCK PTD1 |
janusboandersen | 5:df18de5caf9f | 80 | |
janusboandersen | 5:df18de5caf9f | 81 | //RFID 1 |
janusboandersen | 5:df18de5caf9f | 82 | #define SPI_CS1 PTD0 //Chip select can be any digital pin |
janusboandersen | 5:df18de5caf9f | 83 | #define MF_RESET1 PTA13 |
janusboandersen | 5:df18de5caf9f | 84 | |
janusboandersen | 5:df18de5caf9f | 85 | //RFID 2 |
janusboandersen | 5:df18de5caf9f | 86 | #define SPI_CS2 PTD5 |
janusboandersen | 5:df18de5caf9f | 87 | #define MF_RESET2 PTA13 |
kirchnet | 2:a0c7513fb634 | 88 | |
janusboandersen | 5:df18de5caf9f | 89 | //House circuit connections |
janusboandersen | 5:df18de5caf9f | 90 | #define FRONTDOOR_SET A1 |
janusboandersen | 5:df18de5caf9f | 91 | #define FRONTDOOR_RST A2 |
janusboandersen | 5:df18de5caf9f | 92 | #define ROOM1DOOR_SET A3 |
janusboandersen | 5:df18de5caf9f | 93 | #define ROOM1DOOR_RST A4 |
kirchnet | 2:a0c7513fb634 | 94 | |
janusboandersen | 5:df18de5caf9f | 95 | #else |
janusboandersen | 5:df18de5caf9f | 96 | // STM32 L432KC pins |
janusboandersen | 5:df18de5caf9f | 97 | |
janusboandersen | 5:df18de5caf9f | 98 | //USB communication |
janusboandersen | 5:df18de5caf9f | 99 | #define SERIAL_TX USBTX //UART0 USB |
janusboandersen | 5:df18de5caf9f | 100 | #define SERIAL_RX USBRX //UART0 USB |
janusboandersen | 5:df18de5caf9f | 101 | |
janusboandersen | 5:df18de5caf9f | 102 | //BUS |
janusboandersen | 5:df18de5caf9f | 103 | #define SPI_MISO D12 |
janusboandersen | 5:df18de5caf9f | 104 | #define SPI_MOSI D11 |
janusboandersen | 5:df18de5caf9f | 105 | #define SPI_SCK D13 |
janusboandersen | 5:df18de5caf9f | 106 | |
janusboandersen | 5:df18de5caf9f | 107 | //RFID 1 |
janusboandersen | 5:df18de5caf9f | 108 | #define SPI_CS1 D10 |
janusboandersen | 5:df18de5caf9f | 109 | #define MF_RESET1 D8 |
janusboandersen | 5:df18de5caf9f | 110 | |
janusboandersen | 5:df18de5caf9f | 111 | //RFID 2 |
janusboandersen | 5:df18de5caf9f | 112 | #define SPI_CS2 D2 |
janusboandersen | 5:df18de5caf9f | 113 | #define MF_RESET2 D6 |
kirchnet | 2:a0c7513fb634 | 114 | |
janusboandersen | 5:df18de5caf9f | 115 | //House circuit connections |
janusboandersen | 5:df18de5caf9f | 116 | #define FRONTDOOR_SET A1 |
janusboandersen | 5:df18de5caf9f | 117 | #define FRONTDOOR_RST A2 |
janusboandersen | 5:df18de5caf9f | 118 | #define ROOMDOOR_SET A3 |
janusboandersen | 5:df18de5caf9f | 119 | #define ROOMDOOR_RST A4 |
janusboandersen | 5:df18de5caf9f | 120 | |
janusboandersen | 5:df18de5caf9f | 121 | #endif |
janusboandersen | 5:df18de5caf9f | 122 | |
janusboandersen | 5:df18de5caf9f | 123 | DigitalOut LedGreen(LED1); //Blinks when a card is read |
kirchnet | 2:a0c7513fb634 | 124 | |
janusboandersen | 5:df18de5caf9f | 125 | //Serial connection to terminal for output |
janusboandersen | 5:df18de5caf9f | 126 | Serial pc(SERIAL_TX, SERIAL_RX); |
janusboandersen | 5:df18de5caf9f | 127 | |
janusboandersen | 5:df18de5caf9f | 128 | //MFRC522 readers |
janusboandersen | 5:df18de5caf9f | 129 | MFRC522 rfid1(SPI_MOSI, SPI_MISO, SPI_SCK, SPI_CS1, MF_RESET1); |
janusboandersen | 5:df18de5caf9f | 130 | MFRC522 rfid2(SPI_MOSI, SPI_MISO, SPI_SCK, SPI_CS2, MF_RESET2); |
janusboandersen | 5:df18de5caf9f | 131 | |
janusboandersen | 5:df18de5caf9f | 132 | int main(void) { |
janusboandersen | 5:df18de5caf9f | 133 | pc.printf("Starting the Team 2 Pro 2 House...\n\r"); |
janusboandersen | 5:df18de5caf9f | 134 | |
janusboandersen | 5:df18de5caf9f | 135 | // Init. RC522 chips |
janusboandersen | 5:df18de5caf9f | 136 | rfid1.PCD_Init(); |
janusboandersen | 5:df18de5caf9f | 137 | rfid2.PCD_Init(); |
kirchnet | 2:a0c7513fb634 | 138 | |
andcor02 | 3:654723104cc9 | 139 | while (true) { |
andcor02 | 3:654723104cc9 | 140 | LedGreen = 1; |
andcor02 | 3:654723104cc9 | 141 | |
janusboandersen | 5:df18de5caf9f | 142 | if (rfid1.PICC_IsNewCardPresent()) { |
janusboandersen | 5:df18de5caf9f | 143 | if (rfid1.PICC_ReadCardSerial()) { |
andcor02 | 3:654723104cc9 | 144 | |
andcor02 | 3:654723104cc9 | 145 | LedGreen = 0; |
kirchnet | 2:a0c7513fb634 | 146 | |
janusboandersen | 5:df18de5caf9f | 147 | pc.printf("Front door: "); |
janusboandersen | 5:df18de5caf9f | 148 | for (uint8_t i = 0; i < rfid1.uid.size; i++) { |
janusboandersen | 5:df18de5caf9f | 149 | pc.printf(" %02X", rfid1.uid.uidByte[i]); |
andcor02 | 3:654723104cc9 | 150 | } |
andcor02 | 3:654723104cc9 | 151 | pc.printf("\n\r"); |
andcor02 | 4:320ce84c8f43 | 152 | wait_ms(200); |
andcor02 | 3:654723104cc9 | 153 | } |
janusboandersen | 5:df18de5caf9f | 154 | } //end rfid1 |
janusboandersen | 5:df18de5caf9f | 155 | |
andcor02 | 3:654723104cc9 | 156 | |
janusboandersen | 5:df18de5caf9f | 157 | if ( rfid2.PICC_IsNewCardPresent()) { |
janusboandersen | 5:df18de5caf9f | 158 | if (rfid2.PICC_ReadCardSerial()) { |
janusboandersen | 5:df18de5caf9f | 159 | |
janusboandersen | 5:df18de5caf9f | 160 | LedGreen = 0; |
janusboandersen | 5:df18de5caf9f | 161 | |
janusboandersen | 5:df18de5caf9f | 162 | pc.printf("Room 1: "); |
janusboandersen | 5:df18de5caf9f | 163 | for (uint8_t i = 0; i < rfid2.uid.size; i++) { |
janusboandersen | 5:df18de5caf9f | 164 | pc.printf(" %02X", rfid2.uid.uidByte[i]); |
janusboandersen | 5:df18de5caf9f | 165 | } |
janusboandersen | 5:df18de5caf9f | 166 | pc.printf("\n\r"); |
janusboandersen | 5:df18de5caf9f | 167 | wait_ms(200); |
janusboandersen | 5:df18de5caf9f | 168 | } |
janusboandersen | 5:df18de5caf9f | 169 | } //end rfid2 |
janusboandersen | 5:df18de5caf9f | 170 | } //end while |
janusboandersen | 5:df18de5caf9f | 171 | } //end main |