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
main.cpp@0:89a29cf8b779, 2019-03-04 (annotated)
- 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?
User | Revision | Line number | New 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 | } |