Академический Документы
Профессиональный Документы
Культура Документы
Appendix A
Building Phase
Appendix B
Testing Phase
53
Appendices
Appendix C
54
Appendices
Installation phase
Appendix D
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;
}
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
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);
}
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
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
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
76
Appendices
Appendix H
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
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
Appendix J
Appendix K
79
Appendices
Appendix L
80
Appendices
Appendix M
Chip SIM800LS
Voltage 3.7-4.2v
Module Size 2.5cmx2.3cm
Network Speed 2g Gsm 85kbps
Appendix N
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
Appendix O
Appendix P
82
Appendices
Appendix Q
Appendix R
83
Appendices
Appendix S
Appendix T
Appendix U
84
Appendices
Appendix V
Appendix W
85
Appendices
Appendix X
#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
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
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
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
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) {
}
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
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;
}
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
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;
}
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 (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;
}
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 (teMp[jj] == '\r')
{
//i=0;
//continue;
break;
}
jj++;
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