This specific code runs for ultrasonic sensor and gives high alert if there is motion beyond 20cm. Additionally if we use RFID tag ultrasonic sensor stops functioning and gives authorized access to make motion.

Dependencies:   MFRC522

Committer:
VPKD1669
Date:
Mon Dec 16 17:44:49 2019 +0000
Revision:
0:c7eacabfa681
This includes for the module RFID as well as ultrasonic sensor

Who changed what in which revision?

UserRevisionLine numberNew contents of line
VPKD1669 0:c7eacabfa681 1 /* mbed Microcontroller Library
VPKD1669 0:c7eacabfa681 2 * Copyright (c) 2019 ARM Limited
VPKD1669 0:c7eacabfa681 3 * SPDX-License-Identifier: Apache-2.0
VPKD1669 0:c7eacabfa681 4 */
VPKD1669 0:c7eacabfa681 5
VPKD1669 0:c7eacabfa681 6 #include "mbed.h"
VPKD1669 0:c7eacabfa681 7 //#include "platform/mbed_thread.h"
VPKD1669 0:c7eacabfa681 8 #include "hcsr04.h"
VPKD1669 0:c7eacabfa681 9
VPKD1669 0:c7eacabfa681 10 DigitalOut myled(LED1);
VPKD1669 0:c7eacabfa681 11 Serial pc(USBTX,USBRX);
VPKD1669 0:c7eacabfa681 12 HCSR04 usensor(D8, D9);
VPKD1669 0:c7eacabfa681 13 unsigned int dist;
VPKD1669 0:c7eacabfa681 14 DigitalOut GREEN(D7);
VPKD1669 0:c7eacabfa681 15 DigitalOut BLUE(LED3);
VPKD1669 0:c7eacabfa681 16 Timer dt;
VPKD1669 0:c7eacabfa681 17
VPKD1669 0:c7eacabfa681 18
VPKD1669 0:c7eacabfa681 19 #include "MFRC522.h"
VPKD1669 0:c7eacabfa681 20 // FRDM-K64F (Freescale) Pin for MFRC522 reset
VPKD1669 0:c7eacabfa681 21 #define MF_RESET PTD0
VPKD1669 0:c7eacabfa681 22 #define SERIAL_1
VPKD1669 0:c7eacabfa681 23
VPKD1669 0:c7eacabfa681 24 DigitalOut LedGreen(LED2);
VPKD1669 0:c7eacabfa681 25
VPKD1669 0:c7eacabfa681 26 //Serial connection to PC for output
VPKD1669 0:c7eacabfa681 27 //Serial pc(PTC17, PTC16); // serial comm on the FRDM board
VPKD1669 0:c7eacabfa681 28
VPKD1669 0:c7eacabfa681 29 //wireless bluetooth connection to Android Device for output
VPKD1669 0:c7eacabfa681 30 Serial blue(PTC15, PTC14);
VPKD1669 0:c7eacabfa681 31
VPKD1669 0:c7eacabfa681 32
VPKD1669 0:c7eacabfa681 33 //MFRC522 RfChip (SPI_MOSI, SPI_MISO, SPI_SCK, SPI_CS, MF_RESET);
VPKD1669 0:c7eacabfa681 34 MFRC522 RfChip (PTD2, PTD3, PTD1, PTE25, PTD0);
VPKD1669 0:c7eacabfa681 35
VPKD1669 0:c7eacabfa681 36 int counter1 = 0;
VPKD1669 0:c7eacabfa681 37 int counter2 = 0;
VPKD1669 0:c7eacabfa681 38
VPKD1669 0:c7eacabfa681 39
VPKD1669 0:c7eacabfa681 40
VPKD1669 0:c7eacabfa681 41 // Blinking rate in milliseconds
VPKD1669 0:c7eacabfa681 42 //#define BLINKING_RATE_MS 500
VPKD1669 0:c7eacabfa681 43
VPKD1669 0:c7eacabfa681 44
VPKD1669 0:c7eacabfa681 45 int main()
VPKD1669 0:c7eacabfa681 46 {
VPKD1669 0:c7eacabfa681 47 // Initialise the digital pin LED1 as an output
VPKD1669 0:c7eacabfa681 48 DigitalOut led(LED1);
VPKD1669 0:c7eacabfa681 49
VPKD1669 0:c7eacabfa681 50 /*while (true) {
VPKD1669 0:c7eacabfa681 51 led = !led;
VPKD1669 0:c7eacabfa681 52 //thread_sleep_for(BLINKING_RATE_MS);
VPKD1669 0:c7eacabfa681 53 }*/
VPKD1669 0:c7eacabfa681 54 BLUE=1;
VPKD1669 0:c7eacabfa681 55 pc.baud(9600);
VPKD1669 0:c7eacabfa681 56 dt.start();
VPKD1669 0:c7eacabfa681 57 while(1) {
VPKD1669 0:c7eacabfa681 58 usensor.start();
VPKD1669 0:c7eacabfa681 59 wait_ms(500);
VPKD1669 0:c7eacabfa681 60 dist=usensor.get_dist_cm();
VPKD1669 0:c7eacabfa681 61 pc.printf("\n\r cm:%ld",dist);
VPKD1669 0:c7eacabfa681 62
VPKD1669 0:c7eacabfa681 63 printf("Welcome to RFID Tag Reader Using FRDM K64F...\n\r");
VPKD1669 0:c7eacabfa681 64 blue.printf("Welcome to RFID Tag Reader Uing FRDM K64F...\n\r");
VPKD1669 0:c7eacabfa681 65 printf("Bluetooth Enable\r\n");
VPKD1669 0:c7eacabfa681 66 blue.printf("Bluetooth Enable\r\n");
VPKD1669 0:c7eacabfa681 67 RfChip.PCD_Init();
VPKD1669 0:c7eacabfa681 68
VPKD1669 0:c7eacabfa681 69
VPKD1669 0:c7eacabfa681 70 LedGreen = 1;
VPKD1669 0:c7eacabfa681 71
VPKD1669 0:c7eacabfa681 72 // Look for new cards
VPKD1669 0:c7eacabfa681 73 if ( ! RfChip.PICC_IsNewCardPresent())
VPKD1669 0:c7eacabfa681 74 {
VPKD1669 0:c7eacabfa681 75 if (dist>20)
VPKD1669 0:c7eacabfa681 76 {
VPKD1669 0:c7eacabfa681 77 GREEN = !GREEN;
VPKD1669 0:c7eacabfa681 78 }
VPKD1669 0:c7eacabfa681 79 else
VPKD1669 0:c7eacabfa681 80 {
VPKD1669 0:c7eacabfa681 81 BLUE=0;
VPKD1669 0:c7eacabfa681 82 continue;
VPKD1669 0:c7eacabfa681 83 }
VPKD1669 0:c7eacabfa681 84 }
VPKD1669 0:c7eacabfa681 85
VPKD1669 0:c7eacabfa681 86 // Select one of the cards
VPKD1669 0:c7eacabfa681 87 if ( ! RfChip.PICC_ReadCardSerial())
VPKD1669 0:c7eacabfa681 88 {
VPKD1669 0:c7eacabfa681 89 if (dist>20)
VPKD1669 0:c7eacabfa681 90 {
VPKD1669 0:c7eacabfa681 91 GREEN = !GREEN;
VPKD1669 0:c7eacabfa681 92 }
VPKD1669 0:c7eacabfa681 93 else
VPKD1669 0:c7eacabfa681 94 {
VPKD1669 0:c7eacabfa681 95 BLUE=0;
VPKD1669 0:c7eacabfa681 96 continue;
VPKD1669 0:c7eacabfa681 97 }
VPKD1669 0:c7eacabfa681 98 }
VPKD1669 0:c7eacabfa681 99 LedGreen = 0;
VPKD1669 0:c7eacabfa681 100 int a=0;
VPKD1669 0:c7eacabfa681 101
VPKD1669 0:c7eacabfa681 102 // Print Card UID
VPKD1669 0:c7eacabfa681 103 printf("Card UID:");
VPKD1669 0:c7eacabfa681 104 blue.printf("Card UID:");
VPKD1669 0:c7eacabfa681 105 for (uint8_t i = 0; i < RfChip.uid.size; i++)
VPKD1669 0:c7eacabfa681 106 {
VPKD1669 0:c7eacabfa681 107 printf(" %X02 ", RfChip.uid.uidByte[i]);
VPKD1669 0:c7eacabfa681 108 blue.printf(" %X02 ", RfChip.uid.uidByte[i]);
VPKD1669 0:c7eacabfa681 109 a = RfChip.uid.uidByte[0];
VPKD1669 0:c7eacabfa681 110 }
VPKD1669 0:c7eacabfa681 111 printf("%d",a);
VPKD1669 0:c7eacabfa681 112
VPKD1669 0:c7eacabfa681 113 //Print Card Type
VPKD1669 0:c7eacabfa681 114 if(a==73)
VPKD1669 0:c7eacabfa681 115 {
VPKD1669 0:c7eacabfa681 116 if(counter1 == 0){
VPKD1669 0:c7eacabfa681 117 printf("\r\nMilk is in the fridge");
VPKD1669 0:c7eacabfa681 118 blue.printf("\r\nWhite Card");
VPKD1669 0:c7eacabfa681 119 counter1 = 1;
VPKD1669 0:c7eacabfa681 120 }
VPKD1669 0:c7eacabfa681 121 else if(counter1 == 1){
VPKD1669 0:c7eacabfa681 122 printf("\r\nMilk is out of the fridge");
VPKD1669 0:c7eacabfa681 123 counter1 = 0;
VPKD1669 0:c7eacabfa681 124 }
VPKD1669 0:c7eacabfa681 125 }
VPKD1669 0:c7eacabfa681 126
VPKD1669 0:c7eacabfa681 127 if(a==207)
VPKD1669 0:c7eacabfa681 128 {
VPKD1669 0:c7eacabfa681 129 if (counter2 == 0)
VPKD1669 0:c7eacabfa681 130 {
VPKD1669 0:c7eacabfa681 131 printf("\r\nBeer is in the fridge");
VPKD1669 0:c7eacabfa681 132 blue.printf("\r\nBlue Keychain");
VPKD1669 0:c7eacabfa681 133 counter2 = 1;
VPKD1669 0:c7eacabfa681 134 }
VPKD1669 0:c7eacabfa681 135 else if (counter2 == 1){
VPKD1669 0:c7eacabfa681 136 printf("\r\nBeer is out of the fridge");
VPKD1669 0:c7eacabfa681 137 counter2 = 0;
VPKD1669 0:c7eacabfa681 138 }
VPKD1669 0:c7eacabfa681 139 }
VPKD1669 0:c7eacabfa681 140 //wait(1);
VPKD1669 0:c7eacabfa681 141 printf("\n\r");
VPKD1669 0:c7eacabfa681 142 blue.printf("\n\r");
VPKD1669 0:c7eacabfa681 143
VPKD1669 0:c7eacabfa681 144 printf("\r\nParcel taken");
VPKD1669 0:c7eacabfa681 145 blue.printf("\r\nParcel taken");
VPKD1669 0:c7eacabfa681 146
VPKD1669 0:c7eacabfa681 147 printf("\n\r");
VPKD1669 0:c7eacabfa681 148 blue.printf("\n\r");
VPKD1669 0:c7eacabfa681 149
VPKD1669 0:c7eacabfa681 150 // Print RFID Card type
VPKD1669 0:c7eacabfa681 151 uint8_t piccType = RfChip.PICC_GetType(RfChip.uid.sak);
VPKD1669 0:c7eacabfa681 152 printf("PICC Type: %s \n\n\r\r", RfChip.PICC_GetTypeName(piccType));
VPKD1669 0:c7eacabfa681 153 blue.printf("PICC Type: %s \n\n\r\r", RfChip.PICC_GetTypeName(piccType));
VPKD1669 0:c7eacabfa681 154 break;
VPKD1669 0:c7eacabfa681 155 }
VPKD1669 0:c7eacabfa681 156
VPKD1669 0:c7eacabfa681 157 blue.baud(9600);
VPKD1669 0:c7eacabfa681 158 pc.baud(9600);
VPKD1669 0:c7eacabfa681 159 }
VPKD1669 0:c7eacabfa681 160
VPKD1669 0:c7eacabfa681 161
VPKD1669 0:c7eacabfa681 162
VPKD1669 0:c7eacabfa681 163