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

Revision:
0:89a29cf8b779
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Mon Mar 04 21:22:01 2019 +0000
@@ -0,0 +1,94 @@
+
+#include "mbed.h"
+#include "Dht11.h"
+#include "RangeFinder.h"
+#include "Grove_LCD_RGB_Backlight.h"
+
+RangeFinder rf(D3, 10, 5800.0, 100000);
+DigitalOut led(LED1);
+DigitalOut buzzer(D2);
+InterruptIn button(D6);
+Serial pc(USBTX, USBRX);
+Dht11 dhtSensor(D7);
+
+Grove_LCD_RGB_Backlight rgbLCD(I2C_SDA, I2C_SCL);
+
+
+float temperature = 0.0f;
+float humidity = 0.0f;
+
+int on = 1, off = 0;
+
+void flip() 
+    {
+    buzzer = off;
+    }
+    
+int main()
+{
+    led = 1;
+    float d;
+    
+    rgbLCD.setRGB(0xff, 0xff, 0xff); 
+    char szBuff[10];
+    
+    button.rise(&flip);  // attach the address of the flip function to the rising edge
+    
+    
+    while(1) {
+        dhtSensor.read();
+        temperature = dhtSensor.getCelsius();
+        humidity = dhtSensor.getHumidity();
+        
+        printf("Temp: %f, Hum: %f\n", temperature, humidity);
+        
+        rgbLCD.locate(0,0);
+        rgbLCD.print("T:");
+        rgbLCD.locate(2,0);
+        sprintf(szBuff, "%2.1f", temperature);
+        rgbLCD.print(szBuff);
+        
+        rgbLCD.locate(8,0);
+        rgbLCD.print("H:");
+        rgbLCD.locate(10,0);
+        sprintf(szBuff, "%2.1f", humidity);
+        rgbLCD.print(szBuff);
+        
+        if (temperature >= 25)
+            {
+                   buzzer = on;
+                   wait(5);
+                   buzzer = off;  
+                   rgbLCD.locate(0,0);
+                   rgbLCD.print("T:");
+                   rgbLCD.locate(2,0);
+                   rgbLCD.print(is over 25);
+            }
+
+        wait(1);
+        
+        
+        d = rf.read_m();
+        if (d == -1.0)  {
+            printf("Timeout Error.\n");   
+        } else if (d > 5.0) {  
+            // Seeed's sensor has a maximum range of 4m, it returns
+            // something like 7m if the ultrasound pulse isn't reflected. 
+            printf("No object within detection range.\n");
+            rgbLCD.locate(0,1);
+            rgbLCD.print("No object");
+                    
+        } else  {   
+                    printf("Detecting object within detection range.\n");
+                    rgbLCD.locate(0,1);
+                    rgbLCD.print("Detected");
+                    printf("Distance = %f m.\n", d);
+                    buzzer = on;
+                    wait(5);
+                    buzzer = off;   
+        }
+        wait(0.5);
+        led = !led;
+        
+    }
+}
\ No newline at end of file