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@13:af3d7d8d77fc, 2019-05-03 (annotated)
- Committer:
- janusboandersen
- Date:
- Fri May 03 15:56:34 2019 +0000
- Revision:
- 13:af3d7d8d77fc
- Parent:
- 12:d8370e1350db
- Child:
- 14:0480ed7efd7f
include test for Daniel's Room class
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 | 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" |
janusboandersen | 13:af3d7d8d77fc | 66 | #include "room.hpp" |
kirchnet | 2:a0c7513fb634 | 67 | |
janusboandersen | 12:d8370e1350db | 68 | #define COMPILING_FOR_KL25Z 0 //Set this to 1 to compile with KL25Z pins |
kirchnet | 2:a0c7513fb634 | 69 | |
janusboandersen | 5:df18de5caf9f | 70 | #if COMPILING_FOR_KL25Z |
janusboandersen | 5:df18de5caf9f | 71 | // FRDM KL25Z pins |
janusboandersen | 5:df18de5caf9f | 72 | |
janusboandersen | 5:df18de5caf9f | 73 | //USB communication |
janusboandersen | 5:df18de5caf9f | 74 | #define SERIAL_TX PTE0 //UART0 USB |
janusboandersen | 5:df18de5caf9f | 75 | #define SERIAL_RX PTE1 //UART0 USB |
janusboandersen | 5:df18de5caf9f | 76 | |
janusboandersen | 5:df18de5caf9f | 77 | //BUS |
janusboandersen | 5:df18de5caf9f | 78 | #define SPI_MISO PTD3 |
janusboandersen | 5:df18de5caf9f | 79 | #define SPI_MOSI PTD2 |
janusboandersen | 5:df18de5caf9f | 80 | #define SPI_SCK PTD1 |
janusboandersen | 5:df18de5caf9f | 81 | |
janusboandersen | 5:df18de5caf9f | 82 | //RFID 1 |
janusboandersen | 5:df18de5caf9f | 83 | #define SPI_CS1 PTD0 //Chip select can be any digital pin |
janusboandersen | 5:df18de5caf9f | 84 | #define MF_RESET1 PTA13 |
janusboandersen | 5:df18de5caf9f | 85 | |
janusboandersen | 5:df18de5caf9f | 86 | //RFID 2 |
janusboandersen | 5:df18de5caf9f | 87 | #define SPI_CS2 PTD5 |
janusboandersen | 10:0a444736aeb8 | 88 | #define MF_RESET2 PTC9 |
kirchnet | 2:a0c7513fb634 | 89 | |
janusboandersen | 5:df18de5caf9f | 90 | //House circuit connections |
janusboandersen | 5:df18de5caf9f | 91 | #define FRONTDOOR_SET A1 |
janusboandersen | 5:df18de5caf9f | 92 | #define FRONTDOOR_RST A2 |
janusboandersen | 5:df18de5caf9f | 93 | #define ROOM1DOOR_SET A3 |
janusboandersen | 5:df18de5caf9f | 94 | #define ROOM1DOOR_RST A4 |
kirchnet | 2:a0c7513fb634 | 95 | |
janusboandersen | 5:df18de5caf9f | 96 | #else |
janusboandersen | 5:df18de5caf9f | 97 | // STM32 L432KC pins |
janusboandersen | 5:df18de5caf9f | 98 | |
janusboandersen | 5:df18de5caf9f | 99 | //USB communication |
janusboandersen | 5:df18de5caf9f | 100 | #define SERIAL_TX USBTX //UART0 USB |
janusboandersen | 5:df18de5caf9f | 101 | #define SERIAL_RX USBRX //UART0 USB |
janusboandersen | 5:df18de5caf9f | 102 | |
janusboandersen | 5:df18de5caf9f | 103 | //BUS |
janusboandersen | 5:df18de5caf9f | 104 | #define SPI_MISO D12 |
janusboandersen | 5:df18de5caf9f | 105 | #define SPI_MOSI D11 |
janusboandersen | 5:df18de5caf9f | 106 | #define SPI_SCK D13 |
janusboandersen | 5:df18de5caf9f | 107 | |
janusboandersen | 5:df18de5caf9f | 108 | //RFID 1 |
janusboandersen | 5:df18de5caf9f | 109 | #define SPI_CS1 D10 |
janusboandersen | 5:df18de5caf9f | 110 | #define MF_RESET1 D8 |
janusboandersen | 5:df18de5caf9f | 111 | |
janusboandersen | 5:df18de5caf9f | 112 | //RFID 2 |
janusboandersen | 5:df18de5caf9f | 113 | #define SPI_CS2 D2 |
janusboandersen | 5:df18de5caf9f | 114 | #define MF_RESET2 D6 |
kirchnet | 2:a0c7513fb634 | 115 | |
janusboandersen | 5:df18de5caf9f | 116 | //House circuit connections |
janusboandersen | 5:df18de5caf9f | 117 | #define FRONTDOOR_SET A1 |
janusboandersen | 5:df18de5caf9f | 118 | #define FRONTDOOR_RST A2 |
janusboandersen | 9:369b261ddb10 | 119 | #define ROOM1DOOR_SET A3 |
janusboandersen | 9:369b261ddb10 | 120 | #define ROOM1DOOR_RST A4 |
janusboandersen | 5:df18de5caf9f | 121 | |
janusboandersen | 5:df18de5caf9f | 122 | #endif |
janusboandersen | 5:df18de5caf9f | 123 | |
janusboandersen | 5:df18de5caf9f | 124 | DigitalOut LedGreen(LED1); //Blinks when a card is read |
kirchnet | 2:a0c7513fb634 | 125 | |
janusboandersen | 11:6e862985089f | 126 | //Define the latches |
janusboandersen | 11:6e862985089f | 127 | DigitalOut r0_set(FRONTDOOR_SET); |
janusboandersen | 11:6e862985089f | 128 | DigitalOut r0_rst(FRONTDOOR_RST); |
janusboandersen | 11:6e862985089f | 129 | DigitalOut r1_set(ROOM1DOOR_SET); |
janusboandersen | 11:6e862985089f | 130 | DigitalOut r1_rst(ROOM1DOOR_RST); |
janusboandersen | 11:6e862985089f | 131 | |
janusboandersen | 11:6e862985089f | 132 | bool r0_state; |
janusboandersen | 11:6e862985089f | 133 | bool r1_state; |
janusboandersen | 11:6e862985089f | 134 | |
janusboandersen | 13:af3d7d8d77fc | 135 | Room r0; |
janusboandersen | 13:af3d7d8d77fc | 136 | Room r1; |
janusboandersen | 13:af3d7d8d77fc | 137 | |
janusboandersen | 5:df18de5caf9f | 138 | //Serial connection to terminal for output |
janusboandersen | 5:df18de5caf9f | 139 | Serial pc(SERIAL_TX, SERIAL_RX); |
janusboandersen | 5:df18de5caf9f | 140 | |
janusboandersen | 5:df18de5caf9f | 141 | //MFRC522 readers |
janusboandersen | 5:df18de5caf9f | 142 | MFRC522 rfid1(SPI_MOSI, SPI_MISO, SPI_SCK, SPI_CS1, MF_RESET1); |
janusboandersen | 5:df18de5caf9f | 143 | MFRC522 rfid2(SPI_MOSI, SPI_MISO, SPI_SCK, SPI_CS2, MF_RESET2); |
janusboandersen | 5:df18de5caf9f | 144 | |
janusboandersen | 5:df18de5caf9f | 145 | int main(void) { |
janusboandersen | 13:af3d7d8d77fc | 146 | printf("Starting the Team 2 Pro 2 House...\r\n"); |
janusboandersen | 13:af3d7d8d77fc | 147 | |
janusboandersen | 13:af3d7d8d77fc | 148 | //Test Daniel's Room class |
janusboandersen | 13:af3d7d8d77fc | 149 | r0.RoomCall(12345); |
janusboandersen | 13:af3d7d8d77fc | 150 | r0.RoomCall(54321); |
janusboandersen | 13:af3d7d8d77fc | 151 | r0.RoomCall(12345); |
janusboandersen | 13:af3d7d8d77fc | 152 | |
janusboandersen | 13:af3d7d8d77fc | 153 | wait_ms(1000); |
janusboandersen | 5:df18de5caf9f | 154 | |
janusboandersen | 5:df18de5caf9f | 155 | // Init. RC522 chips |
janusboandersen | 5:df18de5caf9f | 156 | rfid1.PCD_Init(); |
janusboandersen | 5:df18de5caf9f | 157 | rfid2.PCD_Init(); |
kirchnet | 2:a0c7513fb634 | 158 | |
janusboandersen | 13:af3d7d8d77fc | 159 | printf("Resetting latches...\r\n"); |
janusboandersen | 11:6e862985089f | 160 | r0_set = 0; |
janusboandersen | 11:6e862985089f | 161 | r0_rst = 1; |
janusboandersen | 11:6e862985089f | 162 | r0_state = false; |
janusboandersen | 11:6e862985089f | 163 | r1_set = 0; |
janusboandersen | 11:6e862985089f | 164 | r1_rst = 1; |
janusboandersen | 11:6e862985089f | 165 | r1_state = false; |
janusboandersen | 11:6e862985089f | 166 | wait_ms(500); |
janusboandersen | 11:6e862985089f | 167 | r0_rst = 0; |
janusboandersen | 11:6e862985089f | 168 | r1_rst = 0; |
janusboandersen | 13:af3d7d8d77fc | 169 | printf("Done.\r\n"); |
janusboandersen | 11:6e862985089f | 170 | |
janusboandersen | 13:af3d7d8d77fc | 171 | printf("Starting RFID monitoring...\r\n"); |
janusboandersen | 11:6e862985089f | 172 | |
andcor02 | 3:654723104cc9 | 173 | while (true) { |
andcor02 | 3:654723104cc9 | 174 | LedGreen = 1; |
andcor02 | 3:654723104cc9 | 175 | |
janusboandersen | 5:df18de5caf9f | 176 | if (rfid1.PICC_IsNewCardPresent()) { |
janusboandersen | 5:df18de5caf9f | 177 | if (rfid1.PICC_ReadCardSerial()) { |
andcor02 | 3:654723104cc9 | 178 | |
andcor02 | 3:654723104cc9 | 179 | LedGreen = 0; |
kirchnet | 2:a0c7513fb634 | 180 | |
janusboandersen | 8:d351d1714db8 | 181 | printf("Front door: "); |
janusboandersen | 5:df18de5caf9f | 182 | for (uint8_t i = 0; i < rfid1.uid.size; i++) { |
janusboandersen | 8:d351d1714db8 | 183 | printf(" %02X", rfid1.uid.uidByte[i]); |
andcor02 | 3:654723104cc9 | 184 | } |
janusboandersen | 13:af3d7d8d77fc | 185 | printf("\r\n"); |
janusboandersen | 11:6e862985089f | 186 | |
janusboandersen | 11:6e862985089f | 187 | //pulse room 0 (front door) latch |
janusboandersen | 11:6e862985089f | 188 | r0_state = !r0_state; |
janusboandersen | 11:6e862985089f | 189 | r0_set = r0_state; |
janusboandersen | 11:6e862985089f | 190 | r0_rst = !r0_state; |
janusboandersen | 11:6e862985089f | 191 | wait_ms(100); |
janusboandersen | 11:6e862985089f | 192 | r0_set = 0; |
janusboandersen | 11:6e862985089f | 193 | r0_rst = 0; |
janusboandersen | 11:6e862985089f | 194 | |
janusboandersen | 11:6e862985089f | 195 | wait_ms(500); |
andcor02 | 3:654723104cc9 | 196 | } |
janusboandersen | 5:df18de5caf9f | 197 | } //end rfid1 |
janusboandersen | 5:df18de5caf9f | 198 | |
andcor02 | 3:654723104cc9 | 199 | |
janusboandersen | 5:df18de5caf9f | 200 | if ( rfid2.PICC_IsNewCardPresent()) { |
janusboandersen | 5:df18de5caf9f | 201 | if (rfid2.PICC_ReadCardSerial()) { |
janusboandersen | 5:df18de5caf9f | 202 | |
janusboandersen | 5:df18de5caf9f | 203 | LedGreen = 0; |
janusboandersen | 5:df18de5caf9f | 204 | |
janusboandersen | 8:d351d1714db8 | 205 | printf("Room 1: "); |
janusboandersen | 5:df18de5caf9f | 206 | for (uint8_t i = 0; i < rfid2.uid.size; i++) { |
janusboandersen | 8:d351d1714db8 | 207 | printf(" %02X", rfid2.uid.uidByte[i]); |
janusboandersen | 5:df18de5caf9f | 208 | } |
janusboandersen | 13:af3d7d8d77fc | 209 | printf("\r\n"); |
janusboandersen | 11:6e862985089f | 210 | |
janusboandersen | 11:6e862985089f | 211 | //pulse room 1 (front door) latch |
janusboandersen | 11:6e862985089f | 212 | r1_state = !r1_state; |
janusboandersen | 11:6e862985089f | 213 | r1_set = r1_state; |
janusboandersen | 11:6e862985089f | 214 | r1_rst = !r1_state; |
janusboandersen | 11:6e862985089f | 215 | wait_ms(100); |
janusboandersen | 11:6e862985089f | 216 | r1_set = 0; |
janusboandersen | 11:6e862985089f | 217 | r1_rst = 0; |
janusboandersen | 11:6e862985089f | 218 | |
janusboandersen | 5:df18de5caf9f | 219 | wait_ms(200); |
janusboandersen | 5:df18de5caf9f | 220 | } |
janusboandersen | 5:df18de5caf9f | 221 | } //end rfid2 |
janusboandersen | 5:df18de5caf9f | 222 | } //end while |
janusboandersen | 5:df18de5caf9f | 223 | } //end main |