Plataforma de sensores biométricos

Dependencies:   HCSR04 mbed

Committer:
oscarvzfz
Date:
Sat Apr 16 20:25:08 2016 +0000
Revision:
0:3325cdd7ccda
Hackaton Kplat : Plataforma de sensores

Who changed what in which revision?

UserRevisionLine numberNew contents of line
oscarvzfz 0:3325cdd7ccda 1 #include "mbed.h"
oscarvzfz 0:3325cdd7ccda 2 #include "HCSR04.h"
oscarvzfz 0:3325cdd7ccda 3
oscarvzfz 0:3325cdd7ccda 4
oscarvzfz 0:3325cdd7ccda 5 Serial pc(USBTX,USBRX);
oscarvzfz 0:3325cdd7ccda 6 Serial blue(p9,p10); // TX = P14 RX = P13
oscarvzfz 0:3325cdd7ccda 7 DigitalOut status(LED1);
oscarvzfz 0:3325cdd7ccda 8 DigitalOut statust(LED4);
oscarvzfz 0:3325cdd7ccda 9 AnalogIn lm35(p20);
oscarvzfz 0:3325cdd7ccda 10 HCSR04 rangeFinder(p14,p13);
oscarvzfz 0:3325cdd7ccda 11 AnalogIn ECG (p19);
oscarvzfz 0:3325cdd7ccda 12 Timer t;
oscarvzfz 0:3325cdd7ccda 13
oscarvzfz 0:3325cdd7ccda 14
oscarvzfz 0:3325cdd7ccda 15 float range;
oscarvzfz 0:3325cdd7ccda 16 char mander='1';
oscarvzfz 0:3325cdd7ccda 17 float temp=0;
oscarvzfz 0:3325cdd7ccda 18 float signalC=0;
oscarvzfz 0:3325cdd7ccda 19 float timeC=0;
oscarvzfz 0:3325cdd7ccda 20
oscarvzfz 0:3325cdd7ccda 21 //Variables de HR
oscarvzfz 0:3325cdd7ccda 22 AnalogIn sens(p15);
oscarvzfz 0:3325cdd7ccda 23 float sig=0;
oscarvzfz 0:3325cdd7ccda 24 int flag=0;
oscarvzfz 0:3325cdd7ccda 25 float t1 = 0;
oscarvzfz 0:3325cdd7ccda 26 float t2 = 0;
oscarvzfz 0:3325cdd7ccda 27 int it = 0;
oscarvzfz 0:3325cdd7ccda 28 float dif;
oscarvzfz 0:3325cdd7ccda 29 int BPM;
oscarvzfz 0:3325cdd7ccda 30 float sum = 0;
oscarvzfz 0:3325cdd7ccda 31 int acum = 0;
oscarvzfz 0:3325cdd7ccda 32 float lastBPM=0;
oscarvzfz 0:3325cdd7ccda 33
oscarvzfz 0:3325cdd7ccda 34
oscarvzfz 0:3325cdd7ccda 35 int main()
oscarvzfz 0:3325cdd7ccda 36 {
oscarvzfz 0:3325cdd7ccda 37 pc.baud(115200);
oscarvzfz 0:3325cdd7ccda 38 blue.baud(115200);
oscarvzfz 0:3325cdd7ccda 39 pc.printf("Bluetooth iniciado\n\r");
oscarvzfz 0:3325cdd7ccda 40
oscarvzfz 0:3325cdd7ccda 41 while (1)
oscarvzfz 0:3325cdd7ccda 42 {
oscarvzfz 0:3325cdd7ccda 43 if (blue.readable())
oscarvzfz 0:3325cdd7ccda 44 {mander= blue.getc();}
oscarvzfz 0:3325cdd7ccda 45
oscarvzfz 0:3325cdd7ccda 46 // if(mander=='a')
oscarvzfz 0:3325cdd7ccda 47 // {status=1;mander='1';}
oscarvzfz 0:3325cdd7ccda 48
oscarvzfz 0:3325cdd7ccda 49 if (mander=='s')
oscarvzfz 0:3325cdd7ccda 50 {status=0;mander='1';}
oscarvzfz 0:3325cdd7ccda 51
oscarvzfz 0:3325cdd7ccda 52 if(mander=='d')
oscarvzfz 0:3325cdd7ccda 53 {blue.printf("El estado del bluetooth es %i |\r",status.read());mander='1';}
oscarvzfz 0:3325cdd7ccda 54
oscarvzfz 0:3325cdd7ccda 55 if(mander=='t')
oscarvzfz 0:3325cdd7ccda 56 {
oscarvzfz 0:3325cdd7ccda 57 statust=1;
oscarvzfz 0:3325cdd7ccda 58 wait(20);
oscarvzfz 0:3325cdd7ccda 59 temp=(lm35.read()*3.3)/.01;
oscarvzfz 0:3325cdd7ccda 60 blue.printf("t,%f|\r",temp);
oscarvzfz 0:3325cdd7ccda 61 pc.printf("t,%f\n\r",temp);
oscarvzfz 0:3325cdd7ccda 62 mander=1;
oscarvzfz 0:3325cdd7ccda 63 statust=0;
oscarvzfz 0:3325cdd7ccda 64 }
oscarvzfz 0:3325cdd7ccda 65
oscarvzfz 0:3325cdd7ccda 66 if(mander=='a')
oscarvzfz 0:3325cdd7ccda 67 { wait(1);
oscarvzfz 0:3325cdd7ccda 68 rangeFinder.startMeas();
oscarvzfz 0:3325cdd7ccda 69 wait(0.1);
oscarvzfz 0:3325cdd7ccda 70 rangeFinder.getMeas(range);
oscarvzfz 0:3325cdd7ccda 71 blue.printf("a,%.0f|\r", 77-range*100);
oscarvzfz 0:3325cdd7ccda 72 pc.printf("a,%.0f\n\r", 77-range*100);
oscarvzfz 0:3325cdd7ccda 73 mander=1;
oscarvzfz 0:3325cdd7ccda 74 }
oscarvzfz 0:3325cdd7ccda 75
oscarvzfz 0:3325cdd7ccda 76 if(mander=='e')
oscarvzfz 0:3325cdd7ccda 77 {
oscarvzfz 0:3325cdd7ccda 78 t.reset();
oscarvzfz 0:3325cdd7ccda 79 t.start();
oscarvzfz 0:3325cdd7ccda 80 while (mander=='e')
oscarvzfz 0:3325cdd7ccda 81 {
oscarvzfz 0:3325cdd7ccda 82 signalC=ECG.read()*3.3;
oscarvzfz 0:3325cdd7ccda 83 timeC=t.read();
oscarvzfz 0:3325cdd7ccda 84 blue.printf("e,%f,%f|\r",signalC,timeC);
oscarvzfz 0:3325cdd7ccda 85 pc.printf("e,%f,%f\n\r",signalC,timeC);
oscarvzfz 0:3325cdd7ccda 86 wait(.02);
oscarvzfz 0:3325cdd7ccda 87 if(timeC >=8)
oscarvzfz 0:3325cdd7ccda 88 {mander=1;}
oscarvzfz 0:3325cdd7ccda 89 }
oscarvzfz 0:3325cdd7ccda 90 }
oscarvzfz 0:3325cdd7ccda 91
oscarvzfz 0:3325cdd7ccda 92 if(mander=='p')
oscarvzfz 0:3325cdd7ccda 93 {
oscarvzfz 0:3325cdd7ccda 94 t.start();
oscarvzfz 0:3325cdd7ccda 95 while(mander=='p')
oscarvzfz 0:3325cdd7ccda 96 {
oscarvzfz 0:3325cdd7ccda 97 if(acum == 2)
oscarvzfz 0:3325cdd7ccda 98 {
oscarvzfz 0:3325cdd7ccda 99 sum = sum / 2;
oscarvzfz 0:3325cdd7ccda 100 blue.printf("p,%f|\r",sum);
oscarvzfz 0:3325cdd7ccda 101 pc.printf("p,%f\n\r",sum);
oscarvzfz 0:3325cdd7ccda 102 sum = 0;
oscarvzfz 0:3325cdd7ccda 103 acum = 0;
oscarvzfz 0:3325cdd7ccda 104 mander='1';
oscarvzfz 0:3325cdd7ccda 105 }
oscarvzfz 0:3325cdd7ccda 106 sig=sens.read();
oscarvzfz 0:3325cdd7ccda 107 if(sig>=1 && flag==0)
oscarvzfz 0:3325cdd7ccda 108 {
oscarvzfz 0:3325cdd7ccda 109 if(it == 1)
oscarvzfz 0:3325cdd7ccda 110 {
oscarvzfz 0:3325cdd7ccda 111 t2 = t.read();
oscarvzfz 0:3325cdd7ccda 112 it = 0;
oscarvzfz 0:3325cdd7ccda 113 if(BPM!=0){lastBPM=BPM;
oscarvzfz 0:3325cdd7ccda 114 }
oscarvzfz 0:3325cdd7ccda 115 dif = t2 - t1;
oscarvzfz 0:3325cdd7ccda 116 BPM = 60 / dif;
oscarvzfz 0:3325cdd7ccda 117 flag = 1;
oscarvzfz 0:3325cdd7ccda 118 if(BPM < 250 || BPM-lastBPM < (3/5)*lastBPM)
oscarvzfz 0:3325cdd7ccda 119 {
oscarvzfz 0:3325cdd7ccda 120 sum = sum + BPM;
oscarvzfz 0:3325cdd7ccda 121 acum++;
oscarvzfz 0:3325cdd7ccda 122 }
oscarvzfz 0:3325cdd7ccda 123 }
oscarvzfz 0:3325cdd7ccda 124 else
oscarvzfz 0:3325cdd7ccda 125 {
oscarvzfz 0:3325cdd7ccda 126 t1 = t.read();
oscarvzfz 0:3325cdd7ccda 127 flag = 1;
oscarvzfz 0:3325cdd7ccda 128 it++;
oscarvzfz 0:3325cdd7ccda 129 }
oscarvzfz 0:3325cdd7ccda 130 }
oscarvzfz 0:3325cdd7ccda 131
oscarvzfz 0:3325cdd7ccda 132 if(sig < 0.5 && flag == 1)
oscarvzfz 0:3325cdd7ccda 133 {flag = 0; }
oscarvzfz 0:3325cdd7ccda 134
oscarvzfz 0:3325cdd7ccda 135 }
oscarvzfz 0:3325cdd7ccda 136
oscarvzfz 0:3325cdd7ccda 137 }
oscarvzfz 0:3325cdd7ccda 138 }
oscarvzfz 0:3325cdd7ccda 139 }