Home Security Device is designed based on FRDM K64f with DHT11, Ultrasonic Ranger, LCD RGB Light, Buzzer, button and Base Shield V2.

Dependencies:   mbed Grove_LCD_RGB_Backlight RangeFinder DHT11

Committer:
qxy
Date:
Mon Mar 04 21:22:01 2019 +0000
Revision:
0:89a29cf8b779
Home Security Device is designed based on FRDM K64f with DHT11, Ultrasonic Ranger, button,buzzer LCD RGB Backlight and Base Shield V2.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
qxy 0:89a29cf8b779 1
qxy 0:89a29cf8b779 2 #include "mbed.h"
qxy 0:89a29cf8b779 3 #include "Dht11.h"
qxy 0:89a29cf8b779 4 #include "RangeFinder.h"
qxy 0:89a29cf8b779 5 #include "Grove_LCD_RGB_Backlight.h"
qxy 0:89a29cf8b779 6
qxy 0:89a29cf8b779 7 RangeFinder rf(D3, 10, 5800.0, 100000);
qxy 0:89a29cf8b779 8 DigitalOut led(LED1);
qxy 0:89a29cf8b779 9 DigitalOut buzzer(D2);
qxy 0:89a29cf8b779 10 InterruptIn button(D6);
qxy 0:89a29cf8b779 11 Serial pc(USBTX, USBRX);
qxy 0:89a29cf8b779 12 Dht11 dhtSensor(D7);
qxy 0:89a29cf8b779 13
qxy 0:89a29cf8b779 14 Grove_LCD_RGB_Backlight rgbLCD(I2C_SDA, I2C_SCL);
qxy 0:89a29cf8b779 15
qxy 0:89a29cf8b779 16
qxy 0:89a29cf8b779 17 float temperature = 0.0f;
qxy 0:89a29cf8b779 18 float humidity = 0.0f;
qxy 0:89a29cf8b779 19
qxy 0:89a29cf8b779 20 int on = 1, off = 0;
qxy 0:89a29cf8b779 21
qxy 0:89a29cf8b779 22 void flip()
qxy 0:89a29cf8b779 23 {
qxy 0:89a29cf8b779 24 buzzer = off;
qxy 0:89a29cf8b779 25 }
qxy 0:89a29cf8b779 26
qxy 0:89a29cf8b779 27 int main()
qxy 0:89a29cf8b779 28 {
qxy 0:89a29cf8b779 29 led = 1;
qxy 0:89a29cf8b779 30 float d;
qxy 0:89a29cf8b779 31
qxy 0:89a29cf8b779 32 rgbLCD.setRGB(0xff, 0xff, 0xff);
qxy 0:89a29cf8b779 33 char szBuff[10];
qxy 0:89a29cf8b779 34
qxy 0:89a29cf8b779 35 button.rise(&flip); // attach the address of the flip function to the rising edge
qxy 0:89a29cf8b779 36
qxy 0:89a29cf8b779 37
qxy 0:89a29cf8b779 38 while(1) {
qxy 0:89a29cf8b779 39 dhtSensor.read();
qxy 0:89a29cf8b779 40 temperature = dhtSensor.getCelsius();
qxy 0:89a29cf8b779 41 humidity = dhtSensor.getHumidity();
qxy 0:89a29cf8b779 42
qxy 0:89a29cf8b779 43 printf("Temp: %f, Hum: %f\n", temperature, humidity);
qxy 0:89a29cf8b779 44
qxy 0:89a29cf8b779 45 rgbLCD.locate(0,0);
qxy 0:89a29cf8b779 46 rgbLCD.print("T:");
qxy 0:89a29cf8b779 47 rgbLCD.locate(2,0);
qxy 0:89a29cf8b779 48 sprintf(szBuff, "%2.1f", temperature);
qxy 0:89a29cf8b779 49 rgbLCD.print(szBuff);
qxy 0:89a29cf8b779 50
qxy 0:89a29cf8b779 51 rgbLCD.locate(8,0);
qxy 0:89a29cf8b779 52 rgbLCD.print("H:");
qxy 0:89a29cf8b779 53 rgbLCD.locate(10,0);
qxy 0:89a29cf8b779 54 sprintf(szBuff, "%2.1f", humidity);
qxy 0:89a29cf8b779 55 rgbLCD.print(szBuff);
qxy 0:89a29cf8b779 56
qxy 0:89a29cf8b779 57 if (temperature >= 25)
qxy 0:89a29cf8b779 58 {
qxy 0:89a29cf8b779 59 buzzer = on;
qxy 0:89a29cf8b779 60 wait(5);
qxy 0:89a29cf8b779 61 buzzer = off;
qxy 0:89a29cf8b779 62 rgbLCD.locate(0,0);
qxy 0:89a29cf8b779 63 rgbLCD.print("T:");
qxy 0:89a29cf8b779 64 rgbLCD.locate(2,0);
qxy 0:89a29cf8b779 65 rgbLCD.print(is over 25);
qxy 0:89a29cf8b779 66 }
qxy 0:89a29cf8b779 67
qxy 0:89a29cf8b779 68 wait(1);
qxy 0:89a29cf8b779 69
qxy 0:89a29cf8b779 70
qxy 0:89a29cf8b779 71 d = rf.read_m();
qxy 0:89a29cf8b779 72 if (d == -1.0) {
qxy 0:89a29cf8b779 73 printf("Timeout Error.\n");
qxy 0:89a29cf8b779 74 } else if (d > 5.0) {
qxy 0:89a29cf8b779 75 // Seeed's sensor has a maximum range of 4m, it returns
qxy 0:89a29cf8b779 76 // something like 7m if the ultrasound pulse isn't reflected.
qxy 0:89a29cf8b779 77 printf("No object within detection range.\n");
qxy 0:89a29cf8b779 78 rgbLCD.locate(0,1);
qxy 0:89a29cf8b779 79 rgbLCD.print("No object");
qxy 0:89a29cf8b779 80
qxy 0:89a29cf8b779 81 } else {
qxy 0:89a29cf8b779 82 printf("Detecting object within detection range.\n");
qxy 0:89a29cf8b779 83 rgbLCD.locate(0,1);
qxy 0:89a29cf8b779 84 rgbLCD.print("Detected");
qxy 0:89a29cf8b779 85 printf("Distance = %f m.\n", d);
qxy 0:89a29cf8b779 86 buzzer = on;
qxy 0:89a29cf8b779 87 wait(5);
qxy 0:89a29cf8b779 88 buzzer = off;
qxy 0:89a29cf8b779 89 }
qxy 0:89a29cf8b779 90 wait(0.5);
qxy 0:89a29cf8b779 91 led = !led;
qxy 0:89a29cf8b779 92
qxy 0:89a29cf8b779 93 }
qxy 0:89a29cf8b779 94 }