E2PRO2 / Mbed OS e2pro2-rfid-house
Committer:
janusboandersen
Date:
Fri May 03 13:53:27 2019 +0000
Revision:
11:6e862985089f
Parent:
10:0a444736aeb8
Child:
12:d8370e1350db
Add mechanism for handling latches to room power drivers (set, rst).

Who changed what in which revision?

UserRevisionLine numberNew contents of line
janusboandersen 5:df18de5caf9f 1 /*
janusboandersen 5:df18de5caf9f 2 * File : main.cpp
janusboandersen 6:8ac65a5956a1 3 * License :
janusboandersen 6:8ac65a5956a1 4 * Version : 0.92
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 11:6e862985089f 45 RFID RST = pin7 -> PB_1=D6 PTC9
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 7:9da3924dc82d 67 #define COMPILING_FOR_KL25Z 1 //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 10:0a444736aeb8 87 #define MF_RESET2 PTC9
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 9:369b261ddb10 118 #define ROOM1DOOR_SET A3
janusboandersen 9:369b261ddb10 119 #define ROOM1DOOR_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 11:6e862985089f 125 //Define the latches
janusboandersen 11:6e862985089f 126 DigitalOut r0_set(FRONTDOOR_SET);
janusboandersen 11:6e862985089f 127 DigitalOut r0_rst(FRONTDOOR_RST);
janusboandersen 11:6e862985089f 128 DigitalOut r1_set(ROOM1DOOR_SET);
janusboandersen 11:6e862985089f 129 DigitalOut r1_rst(ROOM1DOOR_RST);
janusboandersen 11:6e862985089f 130
janusboandersen 11:6e862985089f 131 bool r0_state;
janusboandersen 11:6e862985089f 132 bool r1_state;
janusboandersen 11:6e862985089f 133
janusboandersen 5:df18de5caf9f 134 //Serial connection to terminal for output
janusboandersen 5:df18de5caf9f 135 Serial pc(SERIAL_TX, SERIAL_RX);
janusboandersen 5:df18de5caf9f 136
janusboandersen 5:df18de5caf9f 137 //MFRC522 readers
janusboandersen 5:df18de5caf9f 138 MFRC522 rfid1(SPI_MOSI, SPI_MISO, SPI_SCK, SPI_CS1, MF_RESET1);
janusboandersen 5:df18de5caf9f 139 MFRC522 rfid2(SPI_MOSI, SPI_MISO, SPI_SCK, SPI_CS2, MF_RESET2);
janusboandersen 5:df18de5caf9f 140
janusboandersen 5:df18de5caf9f 141 int main(void) {
janusboandersen 8:d351d1714db8 142 printf("Starting the Team 2 Pro 2 House...\n\r");
janusboandersen 5:df18de5caf9f 143
janusboandersen 5:df18de5caf9f 144 // Init. RC522 chips
janusboandersen 5:df18de5caf9f 145 rfid1.PCD_Init();
janusboandersen 5:df18de5caf9f 146 rfid2.PCD_Init();
kirchnet 2:a0c7513fb634 147
janusboandersen 11:6e862985089f 148 printf("Resetting latches...\n\r");
janusboandersen 11:6e862985089f 149 r0_set = 0;
janusboandersen 11:6e862985089f 150 r0_rst = 1;
janusboandersen 11:6e862985089f 151 r0_state = false;
janusboandersen 11:6e862985089f 152 r1_set = 0;
janusboandersen 11:6e862985089f 153 r1_rst = 1;
janusboandersen 11:6e862985089f 154 r1_state = false;
janusboandersen 11:6e862985089f 155 wait_ms(500);
janusboandersen 11:6e862985089f 156 r0_rst = 0;
janusboandersen 11:6e862985089f 157 r1_rst = 0;
janusboandersen 11:6e862985089f 158 printf("Done.\n\r");
janusboandersen 11:6e862985089f 159
janusboandersen 11:6e862985089f 160 printf("Starting RFID monitoring...\n\r");
janusboandersen 11:6e862985089f 161
andcor02 3:654723104cc9 162 while (true) {
andcor02 3:654723104cc9 163 LedGreen = 1;
andcor02 3:654723104cc9 164
janusboandersen 5:df18de5caf9f 165 if (rfid1.PICC_IsNewCardPresent()) {
janusboandersen 5:df18de5caf9f 166 if (rfid1.PICC_ReadCardSerial()) {
andcor02 3:654723104cc9 167
andcor02 3:654723104cc9 168 LedGreen = 0;
kirchnet 2:a0c7513fb634 169
janusboandersen 8:d351d1714db8 170 printf("Front door: ");
janusboandersen 5:df18de5caf9f 171 for (uint8_t i = 0; i < rfid1.uid.size; i++) {
janusboandersen 8:d351d1714db8 172 printf(" %02X", rfid1.uid.uidByte[i]);
andcor02 3:654723104cc9 173 }
janusboandersen 8:d351d1714db8 174 printf("\n\r");
janusboandersen 11:6e862985089f 175
janusboandersen 11:6e862985089f 176 //pulse room 0 (front door) latch
janusboandersen 11:6e862985089f 177 r0_state = !r0_state;
janusboandersen 11:6e862985089f 178 r0_set = r0_state;
janusboandersen 11:6e862985089f 179 r0_rst = !r0_state;
janusboandersen 11:6e862985089f 180 wait_ms(100);
janusboandersen 11:6e862985089f 181 r0_set = 0;
janusboandersen 11:6e862985089f 182 r0_rst = 0;
janusboandersen 11:6e862985089f 183
janusboandersen 11:6e862985089f 184 wait_ms(500);
andcor02 3:654723104cc9 185 }
janusboandersen 5:df18de5caf9f 186 } //end rfid1
janusboandersen 5:df18de5caf9f 187
andcor02 3:654723104cc9 188
janusboandersen 5:df18de5caf9f 189 if ( rfid2.PICC_IsNewCardPresent()) {
janusboandersen 5:df18de5caf9f 190 if (rfid2.PICC_ReadCardSerial()) {
janusboandersen 5:df18de5caf9f 191
janusboandersen 5:df18de5caf9f 192 LedGreen = 0;
janusboandersen 5:df18de5caf9f 193
janusboandersen 8:d351d1714db8 194 printf("Room 1: ");
janusboandersen 5:df18de5caf9f 195 for (uint8_t i = 0; i < rfid2.uid.size; i++) {
janusboandersen 8:d351d1714db8 196 printf(" %02X", rfid2.uid.uidByte[i]);
janusboandersen 5:df18de5caf9f 197 }
janusboandersen 8:d351d1714db8 198 printf("\n\r");
janusboandersen 11:6e862985089f 199
janusboandersen 11:6e862985089f 200 //pulse room 1 (front door) latch
janusboandersen 11:6e862985089f 201 r1_state = !r1_state;
janusboandersen 11:6e862985089f 202 r1_set = r1_state;
janusboandersen 11:6e862985089f 203 r1_rst = !r1_state;
janusboandersen 11:6e862985089f 204 wait_ms(100);
janusboandersen 11:6e862985089f 205 r1_set = 0;
janusboandersen 11:6e862985089f 206 r1_rst = 0;
janusboandersen 11:6e862985089f 207
janusboandersen 5:df18de5caf9f 208 wait_ms(200);
janusboandersen 5:df18de5caf9f 209 }
janusboandersen 5:df18de5caf9f 210 } //end rfid2
janusboandersen 5:df18de5caf9f 211 } //end while
janusboandersen 5:df18de5caf9f 212 } //end main