![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
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.
Revision 0:c7eacabfa681, committed 2019-12-16
- Comitter:
- VPKD1669
- Date:
- Mon Dec 16 17:44:49 2019 +0000
- Commit message:
- This includes for the module RFID as well as ultrasonic sensor
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.gitignore Mon Dec 16 17:44:49 2019 +0000 @@ -0,0 +1,4 @@ +.build +.mbed +projectfiles +*.py*
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/CONTRIBUTING.md Mon Dec 16 17:44:49 2019 +0000 @@ -0,0 +1,5 @@ +# Contributing to Mbed OS + +Mbed OS is an open-source, device software platform for the Internet of Things. Contributions are an important part of the platform, and our goal is to make it as simple as possible to become a contributor. + +To encourage productive collaboration, as well as robust, consistent and maintainable code, we have a set of guidelines for [contributing to Mbed OS](https://os.mbed.com/docs/mbed-os/latest/contributing/index.html).
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MFRC522.lib Mon Dec 16 17:44:49 2019 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/AtomX/code/MFRC522/#63d729186747
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/README.md Mon Dec 16 17:44:49 2019 +0000 @@ -0,0 +1,64 @@ +![](./resources/official_armmbed_example_badge.png) +# Blinky Mbed OS example + +The example project is part of the [Arm Mbed OS Official Examples](https://os.mbed.com/code/) and is the [getting started example for Mbed OS](https://os.mbed.com/docs/mbed-os/v5.14/quick-start/index.html). It contains an application that repeatedly blinks an LED on supported [Mbed boards](https://os.mbed.com/platforms/). + +You can build the project with all supported [Mbed OS build tools](https://os.mbed.com/docs/mbed-os/latest/tools/index.html). However, this example project specifically refers to the command-line interface tool [Arm Mbed CLI](https://github.com/ARMmbed/mbed-cli#installing-mbed-cli). +(Note: To see a rendered example you can import into the Arm Online Compiler, please see our [import quick start](https://os.mbed.com/docs/mbed-os/latest/quick-start/online-with-the-online-compiler.html#importing-the-code).) + +1. [Install Mbed CLI](https://os.mbed.com/docs/mbed-os/latest/quick-start/offline-with-mbed-cli.html). + +1. Clone this repository on your system, and change the current directory to where the project was cloned: + + ```bash + $ git clone git@github.com:armmbed/mbed-os-example-blinky && cd mbed-os-example-blinky + ``` + + Alternatively, you can download the example project with Arm Mbed CLI using the `import` subcommand: + + ```bash + $ mbed import mbed-os-example-blinky && cd mbed-os-example-blinky + ``` + + +## Application functionality + +The `main()` function is the single thread in the application. It toggles the state of a digital output connected to an LED on the board. + +## Building and running + +1. Connect a USB cable between the USB port on the board and the host computer. +2. <a name="build_cmd"></a> Run the following command to build the example project and program the microcontroller flash memory: + ```bash + $ mbed compile -m <TARGET> -t <TOOLCHAIN> --flash + ``` +The binary is located at `./BUILD/<TARGET>/<TOOLCHAIN>/mbed-os-example-blinky.bin`. + +Alternatively, you can manually copy the binary to the board, which you mount on the host computer over USB. + +Depending on the target, you can build the example project with the `GCC_ARM`, `ARM` or `IAR` toolchain. After installing Arm Mbed CLI, run the command below to determine which toolchain supports your target: + +```bash +$ mbed compile -S +``` + +## Expected output +The LED on your target turns on and off every 500 milliseconds. + + +## Troubleshooting +If you have problems, you can review the [documentation](https://os.mbed.com/docs/latest/tutorials/debugging.html) for suggestions on what could be wrong and how to fix it. + +## Related Links + +* [Mbed OS Stats API](https://os.mbed.com/docs/latest/apis/mbed-statistics.html). +* [Mbed OS Configuration](https://os.mbed.com/docs/latest/reference/configuration.html). +* [Mbed OS Serial Communication](https://os.mbed.com/docs/latest/tutorials/serial-communication.html). +* [Mbed OS bare metal](https://os.mbed.com/docs/mbed-os/latest/reference/mbed-os-bare-metal.html). +* [Mbed boards](https://os.mbed.com/platforms/). + +### License and contributions + +The software is provided under Apache-2.0 license. Contributions to this project are accepted under the same license. Please see contributing.md for more info. + +This project contains code from other projects. The original license text is included in those source files. They must comply with our license guide.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hcsr04.cpp Mon Dec 16 17:44:49 2019 +0000 @@ -0,0 +1,98 @@ +/* Copyright (c) 2013 Prabhu Desai + * pdtechworld@gmail.com + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software + * and associated documentation files (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, publish, distribute, + * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or + * substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + + +#include "hcsr04.h" + + +HCSR04::HCSR04(PinName TrigPin,PinName EchoPin): + trigger(TrigPin), echo(EchoPin) +{ + pulsetime.stop(); + pulsetime.reset(); + echo.rise(this,&HCSR04::isr_rise); + echo.fall(this,&HCSR04::isr_fall); + trigger=0; +} + +HCSR04::~HCSR04() +{ +} + +void HCSR04::isr_rise(void) +{ + pulsetime.start(); +} +void HCSR04::start(void) +{ + trigger=1; + wait_us(10); + trigger=0; +} + +void HCSR04::isr_fall(void) +{ + pulsetime.stop(); + pulsedur = pulsetime.read_us(); + distance= (pulsedur*343)/20000; + pulsetime.reset(); +} + +void HCSR04::rise (void (*fptr)(void)) +{ + echo.rise(fptr); +} +void HCSR04::fall (void (*fptr)(void)) +{ + echo.fall(fptr); +} + +unsigned int HCSR04::get_dist_cm() +{ + return distance; +} +unsigned int HCSR04::get_pulse_us() +{ + return pulsedur; +} + + + +/******************************************************* + Here is a sample code usage +********************************************************* +#include "hcsr04.h" +HCSR04 usensor(p25,p6); +int main() +{ + unsigned char count=0; + while(1) { + usensor.start(); + wait_ms(500); + dist=usensor.get_dist_cm(); + lcd.cls(); + lcd.locate(0,0); + lcd.printf("cm:%ld",dist ); + + count++; + lcd.locate(0,1); + lcd.printf("Distance =%d",count); + + } +*/ \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hcsr04.h Mon Dec 16 17:44:49 2019 +0000 @@ -0,0 +1,68 @@ +/* Copyright (c) 2013 Prabhu Desai + * pdtechworld@gmail.com + * + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software + * and associated documentation files (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, publish, distribute, + * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or + * substantial portions of the Software. + * + * For more details on the sensor : + * http://www.elecfreaks.com/store/hcsr04-ultrasonic-sensor-distance-measuring-module-p-91.html?zenid=pgm8pgnvaodbe36dibq5s1soi3 + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#include "mbed.h" +#ifndef MBED_HCSR04_H +#define MBED_HCSR04_H + + +/** HCSR04 Class(es) + */ + +class HCSR04 +{ +public: + /** Create a HCSR04 object connected to the specified pin + * @param pin i/o pin to connect to + */ + HCSR04(PinName TrigPin,PinName EchoPin); + ~HCSR04(); + + /** Return the distance from obstacle in cm + * @param distance in cms and returns -1, in case of failure + */ + unsigned int get_dist_cm(void); + /** Return the pulse duration equal to sonic waves travelling to obstacle and back to receiver. + * @param pulse duration in microseconds. + */ + unsigned int get_pulse_us(void); + /** Generates the trigger pulse of 10us on the trigger PIN. + */ + void start(void ); + void isr_rise(void); + void isr_fall(void); + void fall (void (*fptr)(void)); + void rise (void (*fptr)(void)); + + + +private: + + Timer pulsetime; + DigitalOut trigger; + InterruptIn echo; + unsigned int pulsedur; + unsigned int distance; +}; + +#endif \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Mon Dec 16 17:44:49 2019 +0000 @@ -0,0 +1,163 @@ +/* mbed Microcontroller Library + * Copyright (c) 2019 ARM Limited + * SPDX-License-Identifier: Apache-2.0 + */ + +#include "mbed.h" +//#include "platform/mbed_thread.h" +#include "hcsr04.h" + +DigitalOut myled(LED1); +Serial pc(USBTX,USBRX); +HCSR04 usensor(D8, D9); +unsigned int dist; +DigitalOut GREEN(D7); +DigitalOut BLUE(LED3); +Timer dt; + + +#include "MFRC522.h" +// FRDM-K64F (Freescale) Pin for MFRC522 reset +#define MF_RESET PTD0 +#define SERIAL_1 + +DigitalOut LedGreen(LED2); + +//Serial connection to PC for output +//Serial pc(PTC17, PTC16); // serial comm on the FRDM board + +//wireless bluetooth connection to Android Device for output +Serial blue(PTC15, PTC14); + + +//MFRC522 RfChip (SPI_MOSI, SPI_MISO, SPI_SCK, SPI_CS, MF_RESET); +MFRC522 RfChip (PTD2, PTD3, PTD1, PTE25, PTD0); + +int counter1 = 0; +int counter2 = 0; + + + +// Blinking rate in milliseconds +//#define BLINKING_RATE_MS 500 + + +int main() +{ + // Initialise the digital pin LED1 as an output + DigitalOut led(LED1); + + /*while (true) { + led = !led; + //thread_sleep_for(BLINKING_RATE_MS); + }*/ + BLUE=1; + pc.baud(9600); + dt.start(); + while(1) { + usensor.start(); + wait_ms(500); + dist=usensor.get_dist_cm(); + pc.printf("\n\r cm:%ld",dist); + + printf("Welcome to RFID Tag Reader Using FRDM K64F...\n\r"); + blue.printf("Welcome to RFID Tag Reader Uing FRDM K64F...\n\r"); + printf("Bluetooth Enable\r\n"); + blue.printf("Bluetooth Enable\r\n"); + RfChip.PCD_Init(); + + + LedGreen = 1; + + // Look for new cards + if ( ! RfChip.PICC_IsNewCardPresent()) + { + if (dist>20) + { + GREEN = !GREEN; + } + else + { + BLUE=0; + continue; + } + } + + // Select one of the cards + if ( ! RfChip.PICC_ReadCardSerial()) + { + if (dist>20) + { + GREEN = !GREEN; + } + else + { + BLUE=0; + continue; + } + } + LedGreen = 0; + int a=0; + + // Print Card UID + printf("Card UID:"); + blue.printf("Card UID:"); + for (uint8_t i = 0; i < RfChip.uid.size; i++) + { + printf(" %X02 ", RfChip.uid.uidByte[i]); + blue.printf(" %X02 ", RfChip.uid.uidByte[i]); + a = RfChip.uid.uidByte[0]; + } + printf("%d",a); + + //Print Card Type + if(a==73) + { + if(counter1 == 0){ + printf("\r\nMilk is in the fridge"); + blue.printf("\r\nWhite Card"); + counter1 = 1; + } + else if(counter1 == 1){ + printf("\r\nMilk is out of the fridge"); + counter1 = 0; + } + } + + if(a==207) + { + if (counter2 == 0) + { + printf("\r\nBeer is in the fridge"); + blue.printf("\r\nBlue Keychain"); + counter2 = 1; + } + else if (counter2 == 1){ + printf("\r\nBeer is out of the fridge"); + counter2 = 0; + } + } + //wait(1); + printf("\n\r"); + blue.printf("\n\r"); + + printf("\r\nParcel taken"); + blue.printf("\r\nParcel taken"); + + printf("\n\r"); + blue.printf("\n\r"); + + // Print RFID Card type + uint8_t piccType = RfChip.PICC_GetType(RfChip.uid.sak); + printf("PICC Type: %s \n\n\r\r", RfChip.PICC_GetTypeName(piccType)); + blue.printf("PICC Type: %s \n\n\r\r", RfChip.PICC_GetTypeName(piccType)); + break; + } + + blue.baud(9600); + pc.baud(9600); + } + + + +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed-os.lib Mon Dec 16 17:44:49 2019 +0000 @@ -0,0 +1,1 @@ +https://github.com/ARMmbed/mbed-os/#cf4f12a123c05fcae83fc56d76442015cb8a39e9
Binary file resources/official_armmbed_example_badge.png has changed