Вы находитесь на странице: 1из 64

Appendices

Appendix A

Building Phase

Fig. A.1 Building the hardware of the system

Appendix B

Testing Phase

53
Appendices

Fig. B.1 Hardware being tested as a stand-alone system

Fig. B.2 the system’s data is being compared with a medical


grade equipment in the clinic

Appendix C

54
Appendices

Installation phase

Fig. C.1 Installation of the Prototype

Fig. C.2 the Prototype is being fitted the wrist

Appendix D

Code for the Push Button (SMS and Voice Call)

pbt = digitalRead(3);
pb = (1 - pbt);
if (pb == 1 && okpb == 1) {

55
Appendices

if (pbi == 1) {
tpb = millis();
pbi = 0;
}
if (millis() - tpb < 1000) {
smspb = 1;
pbs = 6;
digitalWrite(chck, HIGH);
}
if (millis() - tpb > 1000 && millis() - tpb < 2000) {
smspb = 2;
pbs = 101;
digitalWrite(chck, LOW);
digitalWrite(wrn, HIGH);
}
if (millis() - tpb > 2000 && millis() - tpb < 3000)
{
smspb = 3;
digitalWrite(chck, HIGH);
pbs = 101;
}
if (millis() - tpb > 3000 && millis() - tpb < 4000)
{
smspb = 4;
digitalWrite(chck, LOW);
digitalWrite(wrn, LOW);
pbs = 2;
}
if (millis() - tpb > 4000)
{ if (cOl == 1) {
timcol = millis();
cOl = 0;
}
if (millis() - timcol < 1000) {
pbs = 4; digitalWrite(chck, HIGH);
digitalWrite(wrn, LOW);
}
if (millis() - timcol > 1000 && millis() - timcol < 2000) {
pbs = 10; digitalWrite(chck, LOW);
digitalWrite(wrn, HIGH);
}
if (millis() - timcol > 2000 && millis() - timcol < 3000) {
pbs = 11;
digitalWrite(chck, HIGH);
digitalWrite(wrn, HIGH);

56
Appendices

}
if (millis() - timcol > 3000) {
cOl = 1;
}
smspb = 5;
}
}
if (pbs == 4 && pb == 0 ) {
if (caLi == 1) {
SIM800L.write("ATD+639107252273; \r\n");
Ai = 0;
Bi = 0;
Ci = 0;
jee = 0;
jbpt = 1;
pbs = 5;
}
okpb = 0;
}
if (pbs == 10 && pb == 0) {
if (caLi == 1) {
Ai = 0;
Bi = 0;
Ci = 0;
SIM800L.write("ATD+639106176387; \r\n");
jee = 0;
jbpt = 1;
pbs = 5;
}
okpb = 0;
}
if (pbs == 11 && pb == 0) {
if (caLi == 1) {
Ai = 0;
Bi = 0;
Ci = 0;
SIM800L.write("ATD+639077254281; \r\n");
jee = 0;
jbpt = 1;
pbs = 5;
}
okpb = 0;
}
if (pbs == 5 && pb == 1) {
SIM800L.write("ATH\r\n");

57
Appendices

pbs = 12;
}
if (pbs == 12 && pb == 0) {
pbs = 13;
jee = 1;
jbpt = 1;
jbp = 0;
Ai = 1;
Bi = 1;
Ci = 1;
digitalWrite(chck, LOW);
digitalWrite(wrn, LOW);
timcol = millis();
}
if (pbs == 13 && millis() - timcol > 3000) {
okpb = 1;
pbs = 0;
cOl = 1;
}
if (pbs == 2 && pb == 0) {
SIM800L.write("ATA\r\n");
pbs = 5;
okpb = 0;
jee = 0;
jbpt = 1;
}
if (pb == 0) {
pbi = 1;
}
if (pbs == 6 && pb == 0) {
tpb = millis();
pbs = 7;
okpb = 0;
}
if (win == 1 && pbs == 7 && pb == 1 && millis() - tpb > 100)
{
bIt = 1;
pbs = 8;
win = 0;
digitalWrite(chck, LOW);
digitalWrite(bhigh, HIGH);
}
if (win == 0 && pbs == 7 && pb == 1 && millis() - tpb > 100)
{
bIt = 0;

58
Appendices

pbs = 8;
win = 1;
digitalWrite(chck, LOW);
digitalWrite(bhigh, LOW);
}
if (pbs == 7 && millis() - tpb > 1000) {
pbs = 1;
}
if (pbs == 8 && pb == 0) {
tpb = millis();
pbs = 9;
}
if (pbs == 9 && millis() - tpb > 3000) {
okpb = 1;
pbs = 0;
}

if (pbs == 0 && okkk == 1 && pb == 0) {


pbs = 1;
okkk = 0;
smspb = 1;
digitalWrite(chck, HIGH);
}

if (pb == 0 && pbs == 1 && jee == 1) {


tppX = millis();
pbss = 1;
pbs = 100;
okpb = 0;
pbi = 1;
bpmok = 0;
}
if (pbs == 100) {
if (jee == 0) {
tppX = millis();
}
if (bpmok == 1) {
okk = 1;
pbs = 102;
} else {
if (millis() - tppX > 12000) {
pbs = 102;
okk = 1;
bpmok = 0;
}

59
Appendices

}
}
if (pb == 0 && pbs == 0 && okkkk == 1) {
pbs = 101;
smspb = 10;
okkkk = 0;
digitalWrite(wrn, HIGH);
}
if (pb == 0 && pbs == 101) {
canceltimer = millis();
pbs = 103;
okpb = 0;
}
if (pbs == 103 && millis() - canceltimer > 100 && pb == 1) {
pbs = 106;
digitalWrite(wrn, LOW);
digitalWrite(chck, LOW);
}
if (pbs == 106 && millis() - canceltimer > 2000) {
pbs = 0;
okpb = 1;
}
if (pbs == 103 && millis() - canceltimer > 1500) {
pb = 0;
pbss = 1;
pbs = 102;
okpb = 0;
pbi = 1;
bpmok = 0;
okk = 1;
}

if (okk == 1 && Di == 1) {
if (pbin == 1) {
tpp = millis();
pbin = 0;
Ai = 0;
Bi = 0;
Ci = 0;
Ei = 0;
jee = 0;
jbpt = 1;
checkingsms = 1;
caLi = 0;

60
Appendices

SIM800L.write("AT+CMGF=1\r\n");
}
td = millis() - tpp;
if (td > 300 && a == 1) {
if (smspb == 1||smspb==10) {
SIM800L.write("AT+CMGS=\"09107252273\"\r\n");
}
if (smspb == 2) {
SIM800L.write("AT+CMGS=\"09107252273\"\r\n");
}
if (smspb == 3) {
SIM800L.write("AT+CMGS=\"09107252273\"\r\n");
}
a = 2;
}
if (td > 600 && a == 2) {
if (smspb == 1||smspb==10) {
SIM800L.write("check up");
}
if (smspb == 2) {
SIM800L.write("I need help, please come!");
}
if (smspb == 3) {
SIM800L.write("Police Help, please come!");
}
a = 3;
}
if (td > 900 && a == 3) {
SIM800L.write("\r\n");
a = 4;;
}
if (td > 1200 && a == 4) {

SIM800L.write("TEMP: ");
a = 5;
}
if (td > 1500 && a == 5) {
SIM800L.print(String(temp));
a = 6;
}
if (td > 1800 && a == 6) {
SIM800L.write("C");
a = 7;
}
if (td > 2100 && a == 7) {

61
Appendices

SIM800L.write("\r\n");
a = 8;
}
if (td > 2400 && a == 8) {
SIM800L.write("BPM:");
a = 9;
}
if (td > 2700 && a == 9) {
if (bIt == 0) {
SIM800L.write("Turn OFF");
}
else {
if (bpmok == 1 && smspb == 1) {
SIM800L.print(String(bpm));
} else {
if (smspb == 1) {
SIM800L.write("checking failed");
} else {
SIM800L.print(String(bpm));
}
}
}
a = 10;
}
if (td > 3000 && a == 10) {
SIM800L.write("\r\n");
a = 11;
}
if (td > 3300 && a == 11) {
if (smspb == 1||smspb==10) {
SIM800L.write("Battery:");
}
a = 12;
}
if (td > 3600 && a == 12) {
if (smspb == 1||smspb==10) {
SIM800L.print(String(batterypercent));
}
a = 13;
}
if (td > 3900 && a == 13) {
if (smspb == 1||smspb==10) {
SIM800L.write("%");
}

62
Appendices

a = 14;
}
if (td > 4200 && a == 14) {
SIM800L.write("\r\n");
a = 15;
}
if (td > 4500 && a == 15) {
if (smspb == 1||smspb==10) {
if (batterypercent > 50) {
SIM800L.write("Normal");
}
if (batterypercent < 50) {
SIM800L.write("Recharge");
}
}
a = 16;
}
if (td > 4600 && a == 16) {
SIM800L.write((char)26);
a = 17;
}
if (td > 4900 && a == 17) {
checkingsms = 0;
smspb = 0;
Ai = 1;
Bi = 1;
Ci = 1;
Ei = 1;
a = 1;
pbin = 1;
pbss = 0;
digitalWrite(chck, LOW);
digitalWrite(wrn, LOW);
okpb = 1;
okk = 0;
jee = 1;
jbpt = 1;
pbs = 0;
jbp = 0;
caLi = 1;
}
}
Appendix E

Code for the Accelerometer

63
Appendices

if (acc == 1) {
tac = millis(); acc = 0;
xi = analogRead(A1);
yi = analogRead(A2);
zi = analogRead(A3);
}
if (millis() - tac >= spacet) {
xf = analogRead(A1);
yf = analogRead(A2);
zf = analogRead(A3);
dxa = xf - xi;
dya = yf - yi;
dza = zf - zi;
dxaa = abs(dxa);
dyaa = abs(dya);
dzaa = abs(dza);
acc = 1;
}
if ((dxaa > 300 || dyaa > 300 || dzaa > 300) && fdit == 1) {
tfac = millis();
fdit = 0;
fmc = 1;
countm = 0;
acm = 1;
spacet = 100;
digitalWrite(fallled, HIGH);
}
if (fmc == 1 && millis() - tfac >= 5000) {
sttm = 1;
fmc = 0;
}
if (sttm == 1) {
if (dxaa > 20 || dyaa > 20 || dzaa > 20) {
countm = 1;
}
if (millis() - tfac > 5000 && millis() - tfac < 5500) {
digitalWrite(fallled, LOW);
}
if (millis() - tfac > 5500 && millis() - tfac < 6000) {
digitalWrite(fallled, HIGH);
}
if (millis() - tfac > 6000 && millis() - tfac < 6500) {
digitalWrite(fallled, LOW);
}
if (millis() - tfac > 6500 && millis() - tfac < 7000) {

64
Appendices

digitalWrite(fallled, HIGH);
}
if (millis() - tfac > 7000 && millis() - tfac < 7500) {
digitalWrite(fallled, LOW);
}
if (millis() - tfac > 7500 && millis() - tfac < 8000) {
digitalWrite(fallled, HIGH);
}
if (millis() - tfac > 8000 && millis() - tfac < 8500) {
digitalWrite(fallled, LOW);
}
if (millis() - tfac > 8500 && millis() - tfac < 9000) {
digitalWrite(fallled, HIGH);
}
if (millis() - tfac > 9000 && millis() - tfac < 9500) {
digitalWrite(fallled, LOW);
}
if (millis() - tfac > 9500 && millis() - tfac < 10000) {
digitalWrite(fallled, HIGH);
}
if (millis() - tfac > 10000 && millis() - tfac < 10500) {
digitalWrite(fallled, LOW);
}
if (millis() - tfac > 10500 && millis() - tfac < 11000) {
digitalWrite(fallled, HIGH);
}
if (millis() - tfac > 11000 && millis() - tfac < 11500) {
digitalWrite(fallled, LOW);
}
if (millis() - tfac > 11500 && millis() - tfac < 12000) {
digitalWrite(fallled, HIGH);
}
if (millis() - tfac > 12000 && millis() - tfac < 12500) {
digitalWrite(fallled, LOW);
}
if (millis() - tfac > 12500 && millis() - tfac < 13000) {
digitalWrite(fallled, HIGH);
}
if (millis() - tfac > 13000 && millis() - tfac < 13500) {
digitalWrite(fallled, LOW);
}
if (millis() - tfac > 13500 && millis() - tfac < 14000) {
digitalWrite(fallled, HIGH);
}
if (millis() - tfac > 14000 && millis() - tfac < 14500) {

65
Appendices

digitalWrite(fallled, LOW);
}
if (countm == 1) {
sttm = 0;
fdit = 1;
acm = 0;
sttm = 0;
spacet = 50;
digitalWrite(fallled, LOW);
}

if (millis() - tfac >= 15000) {


if (acm == 1) {
if (countm == 0) {
smsacc = 1;
}
fdit = 1;
acm = 0;
sttm = 0;
spacet = 50;
}
}
}
if (smsacc == 1 && Ci == 1) {
if (hac == 1) {
checkingsms = 1;
ti = millis();
hac = 0;
Ai = 0;
Bi = 0;
Ei = 0;
Di = 0;
jee = 0;
jbpt = 1;
caLi = 0;
SIM800L.write("AT+CMGF=1\r\n");
}
td = millis() - ti;
if (td > 300 && a == 1) {
if (acccount < 1) {
SIM800L.write("AT+CMGS=\"09107252273\"\r\n");
}
else {
SIM800L.write("AT+CMGS=\"09554202224\"\r\n");
}

66
Appendices

a = 2;
}
if (td > 600 && a == 2) {
SIM800L.write("Warning fall detected!");
a = 3;
}
if (td > 900 && a == 3) {
SIM800L.write("\r\n");
a = 4;
}
if (td > 1200 && a == 4) {
SIM800L.write("TEMP: ");
a = 5;
}
if (td > 1500 && a == 5) {
SIM800L.print(String(temp));
a = 6;
}
if (td > 1800 && a == 6) {
SIM800L.write("C");
a = 7;
}
if (td > 2100 && a == 7) {
SIM800L.write("\r\n");
a = 8;
}
if (td > 2400 && a == 8) {
SIM800L.write("BPM: ");
a = 9;
}
if (td > 2700 && a == 9) {
if (bIt == 0) {
SIM800L.write("Turn OFF");
}
else {
SIM800L.print(String(bpm));
}
a = 10;
}
if (td > 3000 && a == 10) {
SIM800L.write((char)26);
a = 11;
}
if (td > 10000 && a == 11) {
a = 1;

67
Appendices

hac = 1;
acccount++;
}
if (acccount > 1) {
countm = 0;
Ai = 1;
Bi = 1;
Di = 1;
jee = 1;
Ei = 1;
jbpt = 1;
acccount = 0;
smsacc = 0;
checkingsms = 0;
jbp = 0;
caLi = 1;
}
}

Appendix F

Code for the Temperature sensor

if(checkT==1){checktempT=millis();checkT=2;}
if(checkT==2&&millis()-checktempT>1000){temperature1 =
mlx.readObjectTempC();checkT=3;}
if(checkT==3&&millis()-checktempT>2000){temperature2 =
mlx.readObjectTempC();checkT=4;}
if(checkT==4&&millis()-checktempT>3000){temperature3 =
mlx.readObjectTempC();checkT=5;}
if(checkT==5&&millis()-checktempT>4000){temperature4 =
mlx.readObjectTempC();
averagetemp=(temperature1+temperature2+temperature3+temperat
ure4)/4;
checkT=1;
temp=averagetemp;
}
if ((temp < 36 || temp >=38) && tmpjj == 1) {
if (tmpjj == 1) {
timechk = millis();
tmpjj = 2;
}
}
if (tmpjj == 2 && millis() - timechk >= 30000) {
if (temp < 36 || temp >= 38) {

68
Appendices

smstmp = 1;
tmpjj == 1;
TemP = temp;
}
}
if (tmpjj == 2) {
if (temp >= 36 && temp < 38) {
tmpjj = 1;
}
}
if (smstmp == 1 && Ai == 1 && At == 1) {
if (tmpms == 1) {
tti = millis();
checkingsms = 1;
tmpms = 0;
Bi = 0;
Ci = 0;
Di = 0;
Ei = 0;
jee = 0;
jbpt = 1;
caLi = 0;
SIM800L.write("AT+CMGF=1\r\n");
}
tdt = millis() - tti;
if (tdt > 300 && a == 1) {
if (tmpcount <= 1) {
SIM800L.write("AT+CMGS=\"09107252273\"\r\n");
}
else {
SIM800L.write("AT+CMGS=\"09554202224\"\r\n");
}
a = 2;
}
if (tdt > 600 && a == 2) {
SIM800L.write("Warning!");
a = 3;
}
if (tdt > 900 && a == 3) {
SIM800L.write("\r\n");
a = 4;
}
if (tdt > 1200 && a == 4) {
SIM800L.write("TEMP: ");
a = 5;

69
Appendices

}
if (tdt > 1500 && a == 5) {
SIM800L.print(String(TemP));
a = 6;
}
if (tdt > 1800 && a == 6) {
SIM800L.write("C");
a = 7;
}
if (tdt > 2100 && a == 7) {
a = 8;
}
if (tdt > 2400 && a == 8) {
a = 9;
}
if (tdt > 2700 && a == 9) {
a = 10;
}
if (tdt > 3000 && a == 10) {

SIM800L.write((char)26);
a = 11;
}
if (tdt > 10000 && a == 11) {
tmpcount++;
tmpms = 1;
a = 1;
}
if (tmpcount > 2) {
smstmp = 0;
At = 0;
Bi = 1;
Ci = 1;
Di = 1;
Ei = 1;
jee = 1;
jbpt = 1;
jbp = 0;
a = 1;
tmpok = 1;
tmpcount = 0;
checkingsms = 0;
caLi = 1;
}
}

70
Appendices

if (tmpok == 1) {
if (tmpp == 1) {
tmpti = millis();
tmpp = 0;
}
if (millis() - tmpti < 0) {
tmpp = 1;
}
if (millis() - tmpti >= 3600000) {
At = 1;
tmpp = 1;
tmpok = 0;
}
}

Appendix G

Code for the Heart Pulse Sensor

if (bIt == 1) {
pulsesensor = analogRead(A0);
if (pulsesensor > 500) {
if (ja == 1) {
jt = millis();
ja = 0;
jb = 1;
jq = 1;
jg = 1;
}
if (jb == 1 && millis() - jt >= 2) {
jb = 0;
jc = 1;
jq = 0;
}
if (jc == 1 && millis() - jt >= 4) {
jc = 0;
ja = 1;
}
}
if (jee == 1) {

71
Appendices

if (jq == 1) {
jbpm = jbpm + jq;
jq = 0;
}
if (jbpm > 30 && je == 1) {
je = 0;
digitalWrite(hled, HIGH);
if (jbp == 1) {
bpm1 = (millis() - jtp);
jbpt = 1;
}
if (jbp == 2) {
bpm2 = (millis() - jtp);
bpm3 = bpm2 - bpm1;
bpm4 = abs(bpm3);
if (bpm4 > 100) {
jbp = 0;
}
jbpt = 1;
}
if (jbp == 3) {
bpm5 = (millis() - jtp);
bpm6 = bpm5 - bpm1;
bpm7 = abs(bpm6);
if (bpm7 > 100) {
jbp = 0;
}
jbpt = 1;
}
if (jbp == 4) {
bpm8 = (millis() - jtp);
bpm9 = bpm8 - bpm1;
bpm10 = abs(bpm9);
if (bpm10 > 100) {} else {
bpm = 240000 / (bpm1 + bpm2 + bpm5 + bpm8);
bpmok = 1;
}
jbpt = 1;
jbp = 0;
}
if (jbpt == 1) {
jtp = millis();
jbpt = 0;
jbp++;
jg = 1;

72
Appendices

}
}
if (jg == 1 && pulsesensor < 500) {
jg = 0;
jd = 1;
digitalWrite(hled, LOW);
}
if (jd == 1 && pulsesensor > 500) {
jd = 0;
je = 1;
jbpm = 0;
}
}
if (Aki == 1) {
tang = millis();
Aki = 0;
Akin = 1;
xbpm = analogRead(A1);
ybpm = analogRead(A2);
zbpm = analogRead(A3);
}
if (Akin == 1 && millis() - tang >= 100) {
xxbpm = analogRead(A1);
yybpm = analogRead(A2);
zzbpm = analogRead(A3);
axxbpm = xxbpm - xbpm;
ayybpm = yybpm - ybpm;
azzbpm = zzbpm - zbpm;
abSx = abs(axxbpm);
abSy = abs(ayybpm);
abSz = abs(azzbpm);
if (abSx > 20 || abSy > 20 || abSz > 20) {
tim = 0;
tima = 0;
timax = 1;
}
if (abSx < 20 || abSy < 20 || abSz < 20) {
if (timax == 1) {
tim = 1;
timax = 0;
}
}
Akin = 0;
Aki = 1;
}

73
Appendices

if (tim == 1) {
if (bpm < 60 || bpm > 100) {
timeR = millis();
tim = 0;
tima = 1;
}
}
if (tima == 1) {
if (bpm >= 60 && bpm <= 100) {
tima = 0;
tim = 1;
}
}
if (checkingsms == 0) {
if (tima == 1 && millis() - timeR > 15000) {
if (bpm < 60 || bpm > 100) {
bpmabnormal=bpm;
warnbpm = 1;
} tima = 0;
tim = 1;
}
} else {
tima = 0;
tim = 1;
}
}
else {
if (kk == 1) {
timeR = millis();
kk = 0;
}
if (millis() - timeR < 100) {
digitalWrite(hled, HIGH);
}
if (millis() - timeR > 100) {
digitalWrite(hled, LOW);
}
if (millis() - timeR > 200) {
kk = 1;
}
jbp = 0;
jbpt = 1;
}
if (warnbpm == 1 && Bi == 1 && Bt == 1) {
if (tmpms == 1) {

74
Appendices

tti = millis();
tmpms = 0;
checkingsms = 1;
Ai = 0;
Ci = 0;
Di = 0;
Ei = 0;
jee = 0;
jbpt = 1;
caLi = 0;
SIM800L.write("AT+CMGF=1\r\n");
}
tdt = millis() - tti;
if (tdt > 300 && a == 1) {
if (tmpcount <= 1) {
SIM800L.write("AT+CMGS=\"09107252273\"\r\n");
}
else {
SIM800L.write("AT+CMGS=\"09554202224\"\r\n");
}
a = 2;
}
if (tdt > 600 && a == 2) {
SIM800L.write("Warning!");
a = 3;
}
if (tdt > 900 && a == 3) {
SIM800L.write("\r\n");
a = 4;
}
if (tdt > 1200 && a == 4) {
SIM800L.write("Heartbeat= ");
a = 5;
}
if (tdt > 1500 && a == 5) {
SIM800L.print(String(bpmabnormal));
a = 6;
}
if (tdt > 1800 && a == 6) {
SIM800L.write("BPM");
a = 7;
}
if (tdt > 2100 && a == 7) {
a = 8;
}

75
Appendices

if (tdt > 2400 && a == 8) {


a = 9;
}
if (tdt > 2700 && a == 9) {
a = 10;
}
if (tdt > 3000 && a == 10) {
SIM800L.write((char)26);
a = 11;
}
if (tdt > 10000 && a == 11) {
tmpcount++;
tmpms = 1;
a = 1;
}
if (tmpcount > 2) {
warnbpm = 0;
Bt = 0;
Ai = 1;
Ci = 1;
Di = 1;
Ei = 1;
jee = 1;
jbpt = 1;
a = 1;
bpr = 1;
tmpcount = 0;
caLi = 1;
checkingsms = 0;
}
}
if (bpr == 1) {
if (bprr == 1) {
tbpr = millis();
bprr = 0;
}
if (millis() - tbpr < 0) {
bprr = 1;
}
if (millis() - tbpr >= 300000) {
Bt = 1;
bprr = 1;
bpr = 0;
}

76
Appendices

Appendix H

Code for the Call indicator LED and SMS command

cAllis = analogRead(A6);
if (cAllis < 50) {
if (cAlll == 1) {
cAllit = millis();
digitalWrite(cAlli, HIGH);
cAlll = 0;
}
if (millis() - cAllit > 100) {
digitalWrite(cAlli, LOW);
}
if (millis() - cAllit > 200) {
cAlll = 1;
}
} else {
cAlll = 1;
digitalWrite(cAlli, LOW);
}
battery = analogRead(A7);
batteryvoltage = (battery * 5.0 / 1023) - 3;
batterypercent = 100 * batteryvoltage;
if (batterypercent <= 5) {
batterypercent = 5;
}
unsigned long tiMer;
char teMp[200];
byte jj;
char* ptr;

//SMS COMMAND
if (!SIM800L.available()) return; // nothing to process
jj = 0;
tiMer = millis();
while (SIM800L.available() ) // acquire data
{
teMp[jj] = SIM800L.read();
if (teMp[jj] == '\r')
{
//i=0;
//continue;
break;
}

77
Appendices

jj++;
if ((millis() - tiMer) >= 1000)
{
return;
}
}
if (strstr(teMp, "data1"))
{
okkk = 1;
SIM800L.print("AT+CMGDA=\"DEL ALL\"\r\n");
}
if (strstr(teMp, "data2"))
{
okkkk = 1;
SIM800L.print("AT+CMGDA=\"DEL ALL\"\r\n");
}
}

Appendix I

Fig I.1 Arduino Mini

Microcontroller Atmega328
Operating Voltage 5V
Digital I/O Pins From pin 2-13
Analog Input Pins From A0-A7
Flash Memory 32KB
EEPROM 32KiB

78
Appendices

Clock Speed 16Mhz


Table I.1 Specifications of Arduino Mini

Appendix J

Fig.J.1 Temperature Sensor

Temperature range -40 to +125°C for sensor


temperature and
-70 to +380°C for object
temperature
Accuracy High accuracy of 0.5°Cover
wide temperature range
(0...+50°C for both Ta and
To) High (medical) accuracy
calibration

Measurement Resolution 0.02°C

Table J.1 Features of Temperature Sensor

Appendix K

Fig.k.1 Image of the Pulse Sensor

79
Appendices

Fig.K.1 Image of the Pulse Sensor

Input Voltage 3.3-6V (5V recommended)


Output Voltage 0-Vin (Analog), 0/Vin
(Digital)
Operating Current <10Ma
Dimensions 28 x 24(mm), 1.102" x
0.945"(in)

Interface Type PH2.0-3P


Table K.1 Features of Pulse Sensor

Appendix L

Fig.L.1 Image of Booster

80
Appendices

Input Voltage 0.9 ~ 5V, output 5V Maximum


Output Current 160-500mA
Table L.1 Features of Booster

Appendix M

Fig. M.1 Image of GSM/GPRS Module

Chip SIM800LS
Voltage 3.7-4.2v
Module Size 2.5cmx2.3cm
Network Speed 2g Gsm 85kbps

Table M.1 Features of GSM/GPRS Module

Appendix N

Fig. N.1 Image of the Lipo Battery

81
Appendices

Weight 3g
Size 11.5mm x 31 x 3.8mm / 0.45"
x 1.2" x 0.15"
JST-PH Connector Length:
105mm / 4.1"
Output 100mAh at 3.7V nominal

Table N.1 Features of Lipo Battery

Appendix O

Figure O.1 Image of Accelerometer

Selective Sensitivity 300mv/g


Operating voltage 3-5V
Dimensions 20mm x 15mm
Table O.1 Feature of Accelerometer

Appendix P

82
Appendices

Fig. P.1 Connection of Heart Pulse Sensor to the


microcontroller

Appendix Q

Fig. Q.2 Connection of the Temperature Sensor to the


microcontroller

Appendix R

83
Appendices

Fig. R.1 Connection of GSM Module to the microcontroller

Appendix S

Fig. S.1 Connection of Push Button to the microcontroller

Appendix T

Fig. T.1 Connection of the LEDS to the microcontroller

Appendix U

84
Appendices

Fig. U.1 Connection of Power Supply to the microcontroller

Appendix V

Fig. V.1 Connection of Accelerometer to the microcontroller

Appendix W

85
Appendices

Fig. W.1 Whole System Connection

Appendix X

Codes for the system

#include <SoftwareSerial.h>
SoftwareSerial SIM800L(10, 11);//RX,tx
#include <Wire.h>
#include <Adafruit_MLX90614.h>
Adafruit_MLX90614 mlx = Adafruit_MLX90614();
unsigned long tppX = 0;
byte bpmabnormal=59;
byte checkingsms = 0;
byte checkT=1;
float temperature1=37;
float temperature2=37;
float temperature3=37;
float temperature4=37;
float averagetemp=37;
unsigned long checktempT=0;
byte okkk = 0;
byte okkkk = 0;
byte laP = 12;
byte wiN = 12;
byte pb = 0;
byte pbh = 4;
byte pbt = 3;

86
Appendices

byte pbi = 1;
byte pbii = 1;
byte smspb = 0;
byte Ei = 1;
byte tco = 1;
byte cOl = 1;
unsigned long callt;
unsigned long tpp;
unsigned long tpb;
unsigned long tti = 0;
unsigned long tdt = 0;
unsigned long tmpti = 0;
unsigned long timcol;
unsigned long canceltimer = 0;
byte caLi = 1;
byte a = 1;
byte pbin = 1;
byte okk = 0;
byte pbs = 0;
byte pbss = 0;
byte chck = 7;
byte wrn = 8;
byte okpb = 1;
byte smstmp = 0;
const int xpin = A3;
const int ypin = A2;
const int zpin = A1;
int acc = 1;
byte tmpok = 0;
int xi;
int yi;
int zi;
byte hac = 1;
byte countm = 0;
byte fdit = 1;
byte fmc = 0;
int dxa;
int dya;
int dza;
int dxaa;
int dyaa;
int dzaa;
int xf;
int yf;
int zf;

87
Appendices

byte spacet = 50;


byte fxva = 0;
byte fxvb = 0;
byte smsacc = 0;
byte fallled = 6;
byte Ai = 1;
byte Bi = 1;
byte Ci = 1;
byte Di = 1;
byte Ct = 1;
byte bpm = 60;
float temp = 37;
byte tmpcount = 0;
byte acccount = 0;
byte tmpjj = 1;

unsigned long tac = 0;


unsigned long ti = 0;
unsigned long td = 0;
unsigned long tfac = 0;
unsigned long tdp = 0;
byte tmpp = 1;
byte tmpms = 1;
byte acm = 1;
byte sttm = 0;
byte At = 1;
int pulsesensor = A0;
unsigned long jt;
unsigned long jtp;
unsigned long tbpr;
unsigned long timeR;
unsigned long tang;
unsigned long timechk;
unsigned long cAllit;
byte cAlli = 13;
byte cAllis = A6;
byte cAlll = 1;
byte ja = 1;
byte jb = 0;
byte jc = 0;
byte jd = 0;
byte je = 1;
byte jf = 1;
byte jg = 0;
byte jbpm = 0;

88
Appendices

byte jq = 0;
byte jbp = 0;
byte jbpt = 1;
byte jbpmm = 0;
byte hled = 5;
byte tim = 1;
byte tima = 0;
byte timax = 1;
byte Bt = 1;
byte bpr = 0;
byte bprr = 1;
byte warnbpm = 0;
int bpm1;
int bpm2;
int bpm3;
int bpm4;
int bpm5;
int bpm6;
int bpm7;
int bpm8;
int bpm9;
int bpm10;
int xbpm = 0;
int ybpm = 0;
int zbpm = 0;
int xxbpm = 0;
int yybpm = 0;
int zzbpm = 0;
int axxbpm = 0;
int ayybpm = 0;
int azzbpm = 0;
int Aki = 1;
int Akin = 0;
int abSx = 0;
int abSy = 0;
int abSz = 0;
byte bpmch = 60;
byte bpmjt = 0;
byte bpmok = 0;
byte jee = 1;
byte bIt = 0;
byte win = 1;
byte kk = 1;
byte bhigh = 9;
int battery = A7;

89
Appendices

float batteryvoltage = 3.7;


byte batterypercent = 90;
float TemP = 37;
void setup() {
SIM800L.begin(9600);
Serial.begin(9600);
mlx.begin();
pinMode(cAlli, OUTPUT);
pinMode(cAllis, INPUT);
pinMode(bhigh, OUTPUT);
pinMode(laP, OUTPUT);
pinMode(wiN, OUTPUT);
digitalWrite(laP, LOW);
digitalWrite(wiN, LOW);
pinMode(xpin, INPUT);
pinMode(ypin, INPUT);
pinMode(zpin, INPUT);
pinMode(chck, OUTPUT);
pinMode(wrn, OUTPUT);
pinMode(hled, OUTPUT);
pinMode(pbt, INPUT);
pinMode(fallled, OUTPUT);
digitalWrite(chck, LOW);
digitalWrite(wrn, LOW);
pinMode(pbh, OUTPUT);
pinMode(pulsesensor, INPUT);
digitalWrite(pbh, HIGH);
digitalWrite(bhigh, LOW);
delay(1000);
SIM800L.write("AT\r\n");//sample test(saying hi to sim800l);
delay(1000);
SIM800L.print("AT+CMGF=1\r\n"); //automatic mode,"Smart
gold";
delay(1000);
SIM800L.print("AT+CMGDA=\"DEL ALL\"\r\n"); //automatic
mode,"Smart gold";
delay(1000);
SIM800L.print("AT+CNMI=2,2,0,0\r\n");
delay(1000);
SIM800L.write("AT+COPS=0,0\r\n");//automatic mode,"Smart
gold";
delay(1000);
SIM800L.write("AT+CLVL=99\r\n"); //speaker volume(max);
delay(1000);
SIM800L.write("AT+CEXTERNTONE=0\r\n");//open microphone

90
Appendices

delay(1000);
SIM800L.write("AT+CMIC=0,15\r\n");//mic sensitivity(max);
delay(3000);
}
void loop() {
pbt = digitalRead(3);
pb = (1 - pbt);
if (pb == 1 && okpb == 1) {
if (pbi == 1) {
tpb = millis();
pbi = 0;
}
if (millis() - tpb < 1000) {
smspb = 1;
pbs = 6;
digitalWrite(chck, HIGH);
}
if (millis() - tpb > 1000 && millis() - tpb < 2000) {
smspb = 2;
pbs = 101;
digitalWrite(chck, LOW);
digitalWrite(wrn, HIGH);
}
if (millis() - tpb > 2000 && millis() - tpb < 3000)
{
smspb = 3;
digitalWrite(chck, HIGH);
pbs = 101;
}
if (millis() - tpb > 3000 && millis() - tpb < 4000)
{
smspb = 4;
digitalWrite(chck, LOW);
digitalWrite(wrn, LOW);
pbs = 2;
}
if (millis() - tpb > 4000)
{ if (cOl == 1) {
timcol = millis();
cOl = 0;
}
if (millis() - timcol < 1000) {
pbs = 4; digitalWrite(chck, HIGH);
digitalWrite(wrn, LOW);
}

91
Appendices

if (millis() - timcol > 1000 && millis() - timcol < 2000) {


pbs = 10; digitalWrite(chck, LOW);
digitalWrite(wrn, HIGH);
}
if (millis() - timcol > 2000 && millis() - timcol < 3000) {
pbs = 11;
digitalWrite(chck, HIGH);
digitalWrite(wrn, HIGH);
}
if (millis() - timcol > 3000) {
cOl = 1;
}

smspb = 5;
}
}
if (pbs == 4 && pb == 0 ) {
if (caLi == 1) {
SIM800L.write("ATD+639107252273;\r\n");
Ai = 0;
Bi = 0;
Ci = 0;
jee = 0;
jbpt = 1;
pbs = 5;
}
okpb = 0;
}
if (pbs == 10 && pb == 0) {
if (caLi == 1) {
Ai = 0;
Bi = 0;
Ci = 0;
SIM800L.write("ATD+639106176387;\r\n");
jee = 0;
jbpt = 1;
pbs = 5;
}
okpb = 0;
}
if (pbs == 11 && pb == 0) {
if (caLi == 1) {
Ai = 0;

92
Appendices

Bi = 0;
Ci = 0;
SIM800L.write("ATD+639077254281;\r\n");
jee = 0;
jbpt = 1;
pbs = 5;
}
okpb = 0;
}
if (pbs == 5 && pb == 1) {
SIM800L.write("ATH\r\n");
pbs = 12;
}
if (pbs == 12 && pb == 0) {
pbs = 13;
jee = 1;
jbpt = 1;
jbp = 0;
Ai = 1;
Bi = 1;
Ci = 1;
digitalWrite(chck, LOW);
digitalWrite(wrn, LOW);
timcol = millis();
}
if (pbs == 13 && millis() - timcol > 3000) {
okpb = 1;
pbs = 0;
cOl = 1;
}
if (pbs == 2 && pb == 0) {
SIM800L.write("ATA\r\n");
pbs = 5;
okpb = 0;
jee = 0;
jbpt = 1;
}
if (pb == 0) {
pbi = 1;
}
if (pbs == 6 && pb == 0) {
tpb = millis();
pbs = 7;
okpb = 0;
}

93
Appendices

if (win == 1 && pbs == 7 && pb == 1 && millis() - tpb > 100)


{
bIt = 1;
pbs = 8;
win = 0;
digitalWrite(chck, LOW);
digitalWrite(bhigh, HIGH);
}
if (win == 0 && pbs == 7 && pb == 1 && millis() - tpb > 100)
{
bIt = 0;
pbs = 8;
win = 1;
digitalWrite(chck, LOW);
digitalWrite(bhigh, LOW);
}
if (pbs == 7 && millis() - tpb > 1000) {
pbs = 1;
}
if (pbs == 8 && pb == 0) {
tpb = millis();
pbs = 9;
}
if (pbs == 9 && millis() - tpb > 3000) {
okpb = 1;
pbs = 0;
}
if (pbs == 0 && okkk == 1 && pb == 0) {
pbs = 1;
okkk = 0;
smspb = 1;
digitalWrite(chck, HIGH);
}
if (pb == 0 && pbs == 1 && jee == 1) {
tppX = millis();
pbss = 1;
pbs = 100;
okpb = 0;
pbi = 1;
bpmok = 0;
}
if (pbs == 100) {
if (jee == 0) {
tppX = millis();
}

94
Appendices

if (bpmok == 1) {
okk = 1;
pbs = 102;
} else {
if (millis() - tppX > 12000) {
pbs = 102;
okk = 1;
bpmok = 0;
}
}
}
if (pb == 0 && pbs == 0 && okkkk == 1) {
pbs = 101;
smspb = 10;
okkkk = 0;
digitalWrite(wrn, HIGH);
}
if (pb == 0 && pbs == 101) {
canceltimer = millis();
pbs = 103;
okpb = 0;
}
if (pbs == 103 && millis() - canceltimer > 100 && pb == 1) {
pbs = 106;
digitalWrite(wrn, LOW);
digitalWrite(chck, LOW);
}
if (pbs == 106 && millis() - canceltimer > 2000) {
pbs = 0;
okpb = 1;
}
if (pbs == 103 && millis() - canceltimer > 1500) {
pb = 0;
pbss = 1;
pbs = 102;
okpb = 0;
pbi = 1;
bpmok = 0;
okk = 1;
}
if (okk == 1 && Di == 1) {
if (pbin == 1) {
tpp = millis();
pbin = 0;
Ai = 0;

95
Appendices

Bi = 0;
Ci = 0;
Ei = 0;
jee = 0;
jbpt = 1;
checkingsms = 1;
caLi = 0;
SIM800L.write("AT+CMGF=1\r\n");
}
td = millis() - tpp;
if (td > 300 && a == 1) {
if (smspb == 1||smspb==10) {
SIM800L.write("AT+CMGS=\"09107252273\"\r\n");
}
if (smspb == 2) {
SIM800L.write("AT+CMGS=\"09107252273\"\r\n");
}
if (smspb == 3) {
SIM800L.write("AT+CMGS=\"09107252273\"\r\n");
}
a = 2;
}
if (td > 600 && a == 2) {
if (smspb == 1||smspb==10) {
SIM800L.write("check up");
}
if (smspb == 2) {
SIM800L.write("I need help, please come!");
}
if (smspb == 3) {
SIM800L.write("Police Help, please come!");
}
a = 3;
}
if (td > 900 && a == 3) {
SIM800L.write("\r\n");
a = 4;;
}
if (td > 1200 && a == 4) {
SIM800L.write("TEMP: ");
a = 5;
}
if (td > 1500 && a == 5) {
SIM800L.print(String(temp));
a = 6;

96
Appendices

}
if (td > 1800 && a == 6) {
SIM800L.write("C");
a = 7;
}
if (td > 2100 && a == 7) {
SIM800L.write("\r\n");
a = 8;
}
if (td > 2400 && a == 8) {
SIM800L.write("BPM:");
a = 9;
}
if (td > 2700 && a == 9) {
if (bIt == 0) {
SIM800L.write("Turn OFF");
}
else {
if (bpmok == 1 && smspb == 1) {
SIM800L.print(String(bpm));
} else {
if (smspb == 1) {
SIM800L.write("checking failed");
} else {
SIM800L.print(String(bpm));
}
}
}
a = 10;
}
if (td > 3000 && a == 10) {
SIM800L.write("\r\n");
a = 11;
}
if (td > 3300 && a == 11) {
if (smspb == 1||smspb==10) {
SIM800L.write("Battery:");
}
a = 12;
}
if (td > 3600 && a == 12) {
if (smspb == 1||smspb==10) {
SIM800L.print(String(batterypercent));
}
a = 13;

97
Appendices

}
if (td > 3900 && a == 13) {
if (smspb == 1||smspb==10) {
SIM800L.write("%");
}
a = 14;
}
if (td > 4200 && a == 14) {
SIM800L.write("\r\n");
a = 15;
}
if (td > 4500 && a == 15) {
if (smspb == 1||smspb==10) {
if (batterypercent > 50) {
SIM800L.write("Normal");
}
if (batterypercent < 50) {
SIM800L.write("Recharge");
}
}
a = 16;
}
if (td > 4600 && a == 16) {
SIM800L.write((char)26);
a = 17;
}
if (td > 4900 && a == 17) {
checkingsms = 0;
smspb = 0;
Ai = 1;
Bi = 1;
Ci = 1;
Ei = 1;
a = 1;
pbin = 1;
pbss = 0;
digitalWrite(chck, LOW);
digitalWrite(wrn, LOW);
okpb = 1;
okk = 0;
jee = 1;
jbpt = 1;
pbs = 0;
jbp = 0;
caLi = 1;

98
Appendices

}
}
if (acc == 1) {
tac = millis(); acc = 0;
xi = analogRead(A1);
yi = analogRead(A2);
zi = analogRead(A3);
}
if (millis() - tac >= spacet) {
xf = analogRead(A1);
yf = analogRead(A2);
zf = analogRead(A3);
dxa = xf - xi;
dya = yf - yi;
dza = zf - zi;
dxaa = abs(dxa);
dyaa = abs(dya);
dzaa = abs(dza);
acc = 1;
}
if ((dxaa > 300 || dyaa > 300 || dzaa > 300) && fdit == 1) {
tfac = millis();
fdit = 0;
fmc = 1;
countm = 0;
acm = 1;
spacet = 100;
digitalWrite(fallled, HIGH);
}
if (fmc == 1 && millis() - tfac >= 5000) {
sttm = 1;
fmc = 0;
}
if (sttm == 1) {
if (dxaa > 20 || dyaa > 20 || dzaa > 20) {
countm = 1;
}
if (millis() - tfac > 5000 && millis() - tfac < 5500) {
digitalWrite(fallled, LOW);
}
if (millis() - tfac > 5500 && millis() - tfac < 6000) {
digitalWrite(fallled, HIGH);
}
if (millis() - tfac > 6000 && millis() - tfac < 6500) {
digitalWrite(fallled, LOW);

99
Appendices

}
if (millis() - tfac > 6500 && millis() - tfac < 7000) {
digitalWrite(fallled, HIGH);
}
if (millis() - tfac > 7000 && millis() - tfac < 7500) {
digitalWrite(fallled, LOW);
}
if (millis() - tfac > 7500 && millis() - tfac < 8000) {
digitalWrite(fallled, HIGH);
}
if (millis() - tfac > 8000 && millis() - tfac < 8500) {
digitalWrite(fallled, LOW);
}
if (millis() - tfac > 8500 && millis() - tfac < 9000) {
digitalWrite(fallled, HIGH);
}
if (millis() - tfac > 9000 && millis() - tfac < 9500) {
digitalWrite(fallled, LOW);
}
if (millis() - tfac > 9500 && millis() - tfac < 10000) {
digitalWrite(fallled, HIGH);
}
if (millis() - tfac > 10000 && millis() - tfac < 10500) {
digitalWrite(fallled, LOW);
}
if (millis() - tfac > 10500 && millis() - tfac < 11000) {
digitalWrite(fallled, HIGH);
}
if (millis() - tfac > 11000 && millis() - tfac < 11500) {
digitalWrite(fallled, LOW);
}
if (millis() - tfac > 11500 && millis() - tfac < 12000) {
digitalWrite(fallled, HIGH);
}
if (millis() - tfac > 12000 && millis() - tfac < 12500) {
digitalWrite(fallled, LOW);
}
if (millis() - tfac > 12500 && millis() - tfac < 13000) {
digitalWrite(fallled, HIGH);
}
if (millis() - tfac > 13000 && millis() - tfac < 13500) {
digitalWrite(fallled, LOW);
}
if (millis() - tfac > 13500 && millis() - tfac < 14000) {
digitalWrite(fallled, HIGH);

100
Appendices

}
if (millis() - tfac > 14000 && millis() - tfac < 14500) {
digitalWrite(fallled, LOW);
}
if (countm == 1) {
sttm = 0;
fdit = 1;
acm = 0;
sttm = 0;
spacet = 50;
digitalWrite(fallled, LOW);
}
if (millis() - tfac >= 15000) {
if (acm == 1) {
if (countm == 0) {
smsacc = 1;
}
fdit = 1;
acm = 0;
sttm = 0;
spacet = 50;
}

}
if (smsacc == 1 && Ci == 1) {
if (hac == 1) {
checkingsms = 1;
ti = millis();
hac = 0;
Ai = 0;
Bi = 0;
Ei = 0;
Di = 0;
jee = 0;
jbpt = 1;
caLi = 0;
SIM800L.write("AT+CMGF=1\r\n");
}
td = millis() - ti;
if (td > 300 && a == 1) {

if (acccount < 1) {

101
Appendices

SIM800L.write("AT+CMGS=\"09107252273\"\r\n");
}
else {
SIM800L.write("AT+CMGS=\"09554202224\"\r\n");
}

a = 2;

}
if (td > 600 && a == 2) {

SIM800L.write("Warning fall detected!");


a = 3;

}
if (td > 900 && a == 3) {

SIM800L.write("\r\n");
a = 4;

}
if (td > 1200 && a == 4) {

SIM800L.write("TEMP: ");
a = 5;

}
if (td > 1500 && a == 5) {

SIM800L.print(String(temp));
a = 6;

}
if (td > 1800 && a == 6) {

SIM800L.write("C");
a = 7;

}
if (td > 2100 && a == 7) {

SIM800L.write("\r\n");
a = 8;

102
Appendices

if (td > 2400 && a == 8) {

SIM800L.write("BPM: ");
a = 9;

}
if (td > 2700 && a == 9) {
if (bIt == 0) {
SIM800L.write("Turn OFF");
}
else {
SIM800L.print(String(bpm));
}
a = 10;
}
if (td > 3000 && a == 10) {

SIM800L.write((char)26);
a = 11;

}
if (td > 10000 && a == 11) {

a = 1;

hac = 1;
acccount++;

}
if (acccount > 1) {
countm = 0;
Ai = 1;
Bi = 1;
Di = 1;
jee = 1;
Ei = 1;
jbpt = 1;
acccount = 0;
smsacc = 0;
checkingsms = 0;
jbp = 0;
caLi = 1;
}
}
if(checkT==1){checktempT=millis();checkT=2;}

103
Appendices

if(checkT==2&&millis()-checktempT>1000){temperature1 =
mlx.readObjectTempC();checkT=3;}
if(checkT==3&&millis()-checktempT>2000){temperature2 =
mlx.readObjectTempC();checkT=4;}
if(checkT==4&&millis()-checktempT>3000){temperature3 =
mlx.readObjectTempC();checkT=5;}
if(checkT==5&&millis()-checktempT>4000){temperature4 =
mlx.readObjectTempC();
averagetemp=(temperature1+temperature2+temperature3+temperat
ure4)/4;
checkT=1;
temp=averagetemp;
}
if ((temp < 36 || temp >=38) && tmpjj == 1) {
if (tmpjj == 1) {
timechk = millis();
tmpjj = 2;
}

if (tmpjj == 2 && millis() - timechk >= 30000) {


if (temp < 36 || temp >= 38) {
smstmp = 1;
tmpjj == 1;
TemP = temp;
}
}
if (tmpjj == 2) {
if (temp >= 36 && temp < 38) {
tmpjj = 1;
}
}
if (smstmp == 1 && Ai == 1 && At == 1) {
if (tmpms == 1) {
tti = millis();
checkingsms = 1;
tmpms = 0;
Bi = 0;
Ci = 0;
Di = 0;
Ei = 0;
jee = 0;
jbpt = 1;
caLi = 0;

104
Appendices

SIM800L.write("AT+CMGF=1\r\n");
}
tdt = millis() - tti;
if (tdt > 300 && a == 1) {

if (tmpcount <= 1) {
SIM800L.write("AT+CMGS=\"09107252273\"\r\n");
}
else {
SIM800L.write("AT+CMGS=\"09554202224\"\r\n");
}
a = 2;
}
if (tdt > 600 && a == 2) {

SIM800L.write("Warning!");
a = 3;

}
if (tdt > 900 && a == 3) {

SIM800L.write("\r\n");
a = 4;

}
if (tdt > 1200 && a == 4) {

SIM800L.write("TEMP: ");
a = 5;

}
if (tdt > 1500 && a == 5) {

SIM800L.print(String(TemP));
a = 6;

}
if (tdt > 1800 && a == 6) {

SIM800L.write("C");
a = 7;

105
Appendices

if (tdt > 2100 && a == 7) {

a = 8;

}
if (tdt > 2400 && a == 8) {

a = 9;

}
if (tdt > 2700 && a == 9) {

a = 10;

}
if (tdt > 3000 && a == 10) {

SIM800L.write((char)26);
a = 11;

}
if (tdt > 10000 && a == 11) {

tmpcount++;
tmpms = 1;
a = 1;

}
if (tmpcount > 2) {
smstmp = 0;
At = 0;
Bi = 1;
Ci = 1;
Di = 1;
Ei = 1;
jee = 1;
jbpt = 1;
jbp = 0;
a = 1;
tmpok = 1;
tmpcount = 0;
checkingsms = 0;

caLi = 1;
}

106
Appendices

}
if (tmpok == 1) {
if (tmpp == 1) {
tmpti = millis();
tmpp = 0;
}
if (millis() - tmpti < 0) {
tmpp = 1;
}
if (millis() - tmpti >= 3600000) {
At = 1;
tmpp = 1;
tmpok = 0;
}
}
if (bIt == 1) {
pulsesensor = analogRead(A0);
if (pulsesensor > 500) {
if (ja == 1) {
jt = millis();
ja = 0;
jb = 1;
jq = 1;
jg = 1;
}
if (jb == 1 && millis() - jt >= 2) {
jb = 0;
jc = 1;
jq = 0;
}
if (jc == 1 && millis() - jt >= 4) {
jc = 0;
ja = 1;
}
}

if (jee == 1) {
if (jq == 1) {
jbpm = jbpm + jq;
jq = 0;
}

if (jbpm > 30 && je == 1) {


je = 0;

107
Appendices

digitalWrite(hled, HIGH);
if (jbp == 1) {
bpm1 = (millis() - jtp);
jbpt = 1;
}
if (jbp == 2) {
bpm2 = (millis() - jtp);
bpm3 = bpm2 - bpm1;
bpm4 = abs(bpm3);
if (bpm4 > 100) {
jbp = 0;
}
jbpt = 1;
}
if (jbp == 3) {
bpm5 = (millis() - jtp);
bpm6 = bpm5 - bpm1;
bpm7 = abs(bpm6);
if (bpm7 > 100) {
jbp = 0;
}
jbpt = 1;
}
if (jbp == 4) {
bpm8 = (millis() - jtp);
bpm9 = bpm8 - bpm1;
bpm10 = abs(bpm9);
if (bpm10 > 100) {} else {
bpm = 240000 / (bpm1 + bpm2 + bpm5 + bpm8);
bpmok = 1;
}
jbpt = 1;
jbp = 0;

if (jbpt == 1) {
jtp = millis();
jbpt = 0;
jbp++;
jg = 1;
}
}

108
Appendices

if (jg == 1 && pulsesensor < 500) {


jg = 0;
jd = 1;
digitalWrite(hled, LOW);
}
if (jd == 1 && pulsesensor > 500) {
jd = 0;
je = 1;
jbpm = 0;

if (Aki == 1) {
tang = millis();
Aki = 0;
Akin = 1;
xbpm = analogRead(A1);
ybpm = analogRead(A2);
zbpm = analogRead(A3);
}
if (Akin == 1 && millis() - tang >= 100) {
xxbpm = analogRead(A1);
yybpm = analogRead(A2);
zzbpm = analogRead(A3);
axxbpm = xxbpm - xbpm;
ayybpm = yybpm - ybpm;
azzbpm = zzbpm - zbpm;
abSx = abs(axxbpm);
abSy = abs(ayybpm);
abSz = abs(azzbpm);
if (abSx > 20 || abSy > 20 || abSz > 20) {
tim = 0;
tima = 0;
timax = 1;
}
if (abSx < 20 || abSy < 20 || abSz < 20) {
if (timax == 1) {
tim = 1;
timax = 0;
}

109
Appendices

}
Akin = 0;
Aki = 1;
}

if (tim == 1) {
if (bpm < 60 || bpm > 100) {
timeR = millis();
tim = 0;
tima = 1;
}
}
if (tima == 1) {
if (bpm >= 60 && bpm <= 100) {
tima = 0;
tim = 1;
}
}
if (checkingsms == 0) {
if (tima == 1 && millis() - timeR > 15000) {
if (bpm < 60 || bpm > 100) {
bpmabnormal=bpm;
warnbpm = 1;

} tima = 0;
tim = 1;
}
} else {
tima = 0;
tim = 1;
}
}
else {
if (kk == 1) {
timeR = millis();
kk = 0;
}
if (millis() - timeR < 100) {
digitalWrite(hled, HIGH);
}
if (millis() - timeR > 100) {
digitalWrite(hled, LOW);
}
if (millis() - timeR > 200) {
kk = 1;

110
Appendices

}
jbp = 0;

jbpt = 1;
}

if (warnbpm == 1 && Bi == 1 && Bt == 1) {


if (tmpms == 1) {
tti = millis();
tmpms = 0;
checkingsms = 1;
Ai = 0;
Ci = 0;
Di = 0;
Ei = 0;
jee = 0;
jbpt = 1;
caLi = 0;

SIM800L.write("AT+CMGF=1\r\n");
}
tdt = millis() - tti;
if (tdt > 300 && a == 1) {

if (tmpcount <= 1) {
SIM800L.write("AT+CMGS=\"09107252273\"\r\n");
}
else {
SIM800L.write("AT+CMGS=\"09554202224\"\r\n");
}
a = 2;

}
if (tdt > 600 && a == 2) {

SIM800L.write("Warning!");
a = 3;

}
if (tdt > 900 && a == 3) {

SIM800L.write("\r\n");
a = 4;

111
Appendices

}
if (tdt > 1200 && a == 4) {

SIM800L.write("Heartbeat= ");
a = 5;

}
if (tdt > 1500 && a == 5) {

SIM800L.print(String(bpmabnormal));
a = 6;

}
if (tdt > 1800 && a == 6) {

SIM800L.write("BPM");
a = 7;

}
if (tdt > 2100 && a == 7) {

a = 8;

}
if (tdt > 2400 && a == 8) {

a = 9;

}
if (tdt > 2700 && a == 9) {

a = 10;

}
if (tdt > 3000 && a == 10) {

SIM800L.write((char)26);
a = 11;

}
if (tdt > 10000 && a == 11) {

tmpcount++;

112
Appendices

tmpms = 1;
a = 1;

}
if (tmpcount > 2) {
warnbpm = 0;
Bt = 0;
Ai = 1;
Ci = 1;
Di = 1;
Ei = 1;
jee = 1;
jbpt = 1;

a = 1;
bpr = 1;
tmpcount = 0;
caLi = 1;
checkingsms = 0;
}
}

if (bpr == 1) {
if (bprr == 1) {
tbpr = millis();
bprr = 0;
}
if (millis() - tbpr < 0) {
bprr = 1;
}
if (millis() - tbpr >= 300000) {
Bt = 1;
bprr = 1;
bpr = 0;
}
}
cAllis = analogRead(A6);
if (cAllis < 50) {
if (cAlll == 1) {
cAllit = millis();
digitalWrite(cAlli, HIGH);
cAlll = 0;
}
if (millis() - cAllit > 100) {
digitalWrite(cAlli, LOW);

113
Appendices

}
if (millis() - cAllit > 200) {
cAlll = 1;
}
} else {
cAlll = 1;
digitalWrite(cAlli, LOW);
}

battery = analogRead(A7);
batteryvoltage = (battery * 5.0 / 1023) - 3;
batterypercent = 100 * batteryvoltage;
if (batterypercent <= 5) {
batterypercent = 5;
}
unsigned long tiMer;
char teMp[200];
byte jj;
char* ptr;

if (!SIM800L.available()) return; // nothing to process


jj = 0;
tiMer = millis();

while (SIM800L.available() ) // acquire data


{
teMp[jj] = SIM800L.read();

if (teMp[jj] == '\r')
{
//i=0;
//continue;
break;
}
jj++;

if ((millis() - tiMer) >= 1000)


{
return;
}
}

if (strstr(teMp, "data1"))

114
Appendices

{
okkk = 1;

SIM800L.print("AT+CMGDA=\"DEL ALL\"\r\n");
}
if (strstr(teMp, "data2"))
{
okkkk = 1;

SIM800L.print("AT+CMGDA=\"DEL ALL\"\r\n");
}

115

Вам также может понравиться