using a temperature, humidity sensor, touch, digit display and a buzzer to create an organ monitoring and alert system which communicates with an app via bluetooth
Dependencies: DHT DigitDisplay mbed
Fork of Seeed_Grove_Temp_Humidity_Example by
main.cpp@2:91d5583ea3c1, 2018-03-07 (annotated)
- Committer:
- imomoh
- Date:
- Wed Mar 07 17:39:13 2018 +0000
- Revision:
- 2:91d5583ea3c1
- Parent:
- 0:c12c28a0f9e7
Organ_Transplant_Monitoring_via_bluetooth
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
imomoh | 2:91d5583ea3c1 | 1 | /******************************************************************************* |
imomoh | 2:91d5583ea3c1 | 2 | ECE 595 2018 Spring |
imomoh | 2:91d5583ea3c1 | 3 | Project 1 |
imomoh | 2:91d5583ea3c1 | 4 | Group 10 |
imomoh | 2:91d5583ea3c1 | 5 | last Update @ |
imomoh | 2:91d5583ea3c1 | 6 | memo: ????????? |
imomoh | 2:91d5583ea3c1 | 7 | ??????//app???? |
imomoh | 2:91d5583ea3c1 | 8 | ????? for timer |
imomoh | 2:91d5583ea3c1 | 9 | *******************************************************************************/ |
sam_grove | 0:c12c28a0f9e7 | 10 | #include "mbed.h" |
sam_grove | 0:c12c28a0f9e7 | 11 | #include "DHT.h" |
imomoh | 2:91d5583ea3c1 | 12 | #include "DigitDisplay.h" |
sam_grove | 0:c12c28a0f9e7 | 13 | |
imomoh | 2:91d5583ea3c1 | 14 | DHT sensor(D4, DHT11); |
imomoh | 2:91d5583ea3c1 | 15 | DigitalOut buzzer(D2); |
imomoh | 2:91d5583ea3c1 | 16 | Timer tOverheat; |
imomoh | 2:91d5583ea3c1 | 17 | DigitalOut ledred(LED_RED);//or LED1 try both |
imomoh | 2:91d5583ea3c1 | 18 | DigitalIn touch(D7); |
imomoh | 2:91d5583ea3c1 | 19 | DigitDisplay display(D5, D6); |
imomoh | 2:91d5583ea3c1 | 20 | |
imomoh | 2:91d5583ea3c1 | 21 | Serial bluetooth(PTC15, PTC14); //wireless bluetooth connection to Android Device for output |
imomoh | 2:91d5583ea3c1 | 22 | Serial pc(USBTX,USBRX); |
imomoh | 2:91d5583ea3c1 | 23 | |
imomoh | 2:91d5583ea3c1 | 24 | int timeflag = 0; |
imomoh | 2:91d5583ea3c1 | 25 | int timeread = 0; |
imomoh | 2:91d5583ea3c1 | 26 | int on = 1, off = 0; |
sam_grove | 0:c12c28a0f9e7 | 27 | |
imomoh | 2:91d5583ea3c1 | 28 | void stemp(float FFF){ |
imomoh | 2:91d5583ea3c1 | 29 | uint8_t FF = FFF; |
imomoh | 2:91d5583ea3c1 | 30 | display.setColon(0); |
imomoh | 2:91d5583ea3c1 | 31 | display.write(2, FF / 10); |
imomoh | 2:91d5583ea3c1 | 32 | display.write(3, FF % 10); |
imomoh | 2:91d5583ea3c1 | 33 | display.write(0, 0); |
imomoh | 2:91d5583ea3c1 | 34 | display.write(1, 0); |
imomoh | 2:91d5583ea3c1 | 35 | } |
imomoh | 2:91d5583ea3c1 | 36 | |
imomoh | 2:91d5583ea3c1 | 37 | void stime(int ootime){ |
imomoh | 2:91d5583ea3c1 | 38 | uint8_t otime = ootime; |
imomoh | 2:91d5583ea3c1 | 39 | display.setColon(0); |
imomoh | 2:91d5583ea3c1 | 40 | display.write(2, otime / 10); |
imomoh | 2:91d5583ea3c1 | 41 | display.write(3, otime % 10); |
imomoh | 2:91d5583ea3c1 | 42 | display.write(0, 0); |
imomoh | 2:91d5583ea3c1 | 43 | display.write(1, 0); |
imomoh | 2:91d5583ea3c1 | 44 | } |
imomoh | 2:91d5583ea3c1 | 45 | |
imomoh | 2:91d5583ea3c1 | 46 | void sdisplay(int sw, int tm, float tp){ |
imomoh | 2:91d5583ea3c1 | 47 | if(sw==1){ |
imomoh | 2:91d5583ea3c1 | 48 | stime(tm); |
sam_grove | 0:c12c28a0f9e7 | 49 | } |
imomoh | 2:91d5583ea3c1 | 50 | else if(sw==0){ |
imomoh | 2:91d5583ea3c1 | 51 | stemp(tp); |
sam_grove | 0:c12c28a0f9e7 | 52 | } |
sam_grove | 0:c12c28a0f9e7 | 53 | } |
imomoh | 2:91d5583ea3c1 | 54 | |
imomoh | 2:91d5583ea3c1 | 55 | void blink(){ |
imomoh | 2:91d5583ea3c1 | 56 | buzzer = on; |
imomoh | 2:91d5583ea3c1 | 57 | ledred = 1; |
imomoh | 2:91d5583ea3c1 | 58 | wait(.3); |
imomoh | 2:91d5583ea3c1 | 59 | buzzer = off; |
imomoh | 2:91d5583ea3c1 | 60 | ledred = 0; |
imomoh | 2:91d5583ea3c1 | 61 | } |
imomoh | 2:91d5583ea3c1 | 62 | |
imomoh | 2:91d5583ea3c1 | 63 | int main() |
imomoh | 2:91d5583ea3c1 | 64 | { |
imomoh | 2:91d5583ea3c1 | 65 | int error = 0; |
imomoh | 2:91d5583ea3c1 | 66 | float h = 0.0f, f = 0.0f; |
imomoh | 2:91d5583ea3c1 | 67 | ledred = 1;//?????0???1?,?????? |
imomoh | 2:91d5583ea3c1 | 68 | |
imomoh | 2:91d5583ea3c1 | 69 | pc.baud(9600); |
imomoh | 2:91d5583ea3c1 | 70 | bluetooth.baud(9600); |
imomoh | 2:91d5583ea3c1 | 71 | wait(2.0f); |
imomoh | 2:91d5583ea3c1 | 72 | |
imomoh | 2:91d5583ea3c1 | 73 | while(1) |
imomoh | 2:91d5583ea3c1 | 74 | { |
imomoh | 2:91d5583ea3c1 | 75 | error = sensor.readData(); |
imomoh | 2:91d5583ea3c1 | 76 | if (0 == error) |
imomoh | 2:91d5583ea3c1 | 77 | { |
imomoh | 2:91d5583ea3c1 | 78 | f = sensor.ReadTemperature(FARENHEIT); |
imomoh | 2:91d5583ea3c1 | 79 | h = sensor.ReadHumidity(); |
imomoh | 2:91d5583ea3c1 | 80 | sdisplay(touch,timeread,f); |
imomoh | 2:91d5583ea3c1 | 81 | pc.printf("Temperature in F: %4.2f\n",f); |
imomoh | 2:91d5583ea3c1 | 82 | pc.printf("Humidity is: %4.2f\n",h); |
imomoh | 2:91d5583ea3c1 | 83 | bluetooth.printf("%4.2f %4.2f",f,h); |
imomoh | 2:91d5583ea3c1 | 84 | if(f>33) |
imomoh | 2:91d5583ea3c1 | 85 | { |
imomoh | 2:91d5583ea3c1 | 86 | if(timeflag==0){ |
imomoh | 2:91d5583ea3c1 | 87 | timeflag = 1; |
imomoh | 2:91d5583ea3c1 | 88 | blink(); |
imomoh | 2:91d5583ea3c1 | 89 | pc.printf("Over Heat!!\n"); |
imomoh | 2:91d5583ea3c1 | 90 | tOverheat.start(); |
imomoh | 2:91d5583ea3c1 | 91 | } |
imomoh | 2:91d5583ea3c1 | 92 | else if(timeflag==1){ |
imomoh | 2:91d5583ea3c1 | 93 | timeread = tOverheat.read(); |
imomoh | 2:91d5583ea3c1 | 94 | if(timeread >= 10){ |
imomoh | 2:91d5583ea3c1 | 95 | buzzer = on; |
imomoh | 2:91d5583ea3c1 | 96 | pc.printf("Game Over\n"); |
imomoh | 2:91d5583ea3c1 | 97 | ledred = 0; |
imomoh | 2:91d5583ea3c1 | 98 | } |
imomoh | 2:91d5583ea3c1 | 99 | else{ |
imomoh | 2:91d5583ea3c1 | 100 | blink(); |
imomoh | 2:91d5583ea3c1 | 101 | pc.printf("Hurry Up, still have chance\n"); |
imomoh | 2:91d5583ea3c1 | 102 | } |
imomoh | 2:91d5583ea3c1 | 103 | } |
imomoh | 2:91d5583ea3c1 | 104 | } |
imomoh | 2:91d5583ea3c1 | 105 | else if(f<=33){ |
imomoh | 2:91d5583ea3c1 | 106 | timeflag = 0; |
imomoh | 2:91d5583ea3c1 | 107 | tOverheat.reset(); |
imomoh | 2:91d5583ea3c1 | 108 | timeread = 0; |
imomoh | 2:91d5583ea3c1 | 109 | buzzer = off; |
imomoh | 2:91d5583ea3c1 | 110 | ledred = 1; |
imomoh | 2:91d5583ea3c1 | 111 | } |
imomoh | 2:91d5583ea3c1 | 112 | } |
imomoh | 2:91d5583ea3c1 | 113 | else{ |
imomoh | 2:91d5583ea3c1 | 114 | // pc.printf("Woops, Sensor Error: %d\n", error); |
imomoh | 2:91d5583ea3c1 | 115 | } |
imomoh | 2:91d5583ea3c1 | 116 | } |
imomoh | 2:91d5583ea3c1 | 117 | } |