수행기록퀘스트3
1. 독거인을 위한 비상연락 장비
1-1. 행정안전부에서 2020년06월 발표한 자료에 따르면, 1인세대가 인구전체 주민등록세대의 38.5%나 된다고 한다.
1-2. 좀 더 구체적으로 1인 세대를 살펴본다.
1-3. 1인세대의 증가와 함께 고독사로 추정되는 무연고사 발생빈도도 증가하고 있다.
1-4.
1. 이와 같은 상황에서 “ “나홀로족” 고독사를 방지하고,
보다 빠른 연락을 할 수 있다면 좋을 것이다.” 라는
취지에서 본 장비를 구상하게 되었다.
2. 인터넷, 무선 와이파이보다 저렴하고, 집에 전기가
단전이 되어도 전화는 가능한 점을 이용한다.
3. 프로젝트의 목표: 사물센서와 인체감지센서를
이용하여 인체감지를 하여, 일정 시간이 되도록 움
직임이 감지되지 않으면, 미리 기억시킨 전화번호로
전화를 걸어 현재 상황을 알려준다.
2. 개발 툴
3. 소프트웨어 구성
4. 소프트웨어 흐름도
5. 오픈소스 활용
1.참조한 라이브러리
6. 프로그램 소스(미완성)
#include
#include
#include
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int sens1 = A0;
const int hook = 31;
const int snd2 = 32;
const int snd1 = 33;
const int snd_end = 35;
const int ce = 30;
const int C1 = 22;
const int C2 = 23;
const int C3 = 24;
const int C4 = 25;
const int R1 = 29;
const int R2 = 28;
const int R3 = 27;
const int R4 = 26;
int Tel_num[]={0,1,0,1,2,3,4,5,6,7,8};
void setup()
{
lcd.begin();
lcd.backlight();
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Telephone sign");
Serial.begin(38400);
Serial.println("Telephone numbering Test");
pinMode(sens1, INPUT_PULLUP);
pinMode(hook, OUTPUT); digitalWrite(hook, LOW);
pinMode(snd1, OUTPUT); digitalWrite(snd1, HIGH);
pinMode(snd2, OUTPUT); digitalWrite(snd2, HIGH);
pinMode(snd_end, INPUT);
pinMode(ce, OUTPUT); digitalWrite(ce, LOW);
pinMode(C1, OUTPUT); digitalWrite(C1, HIGH);
pinMode(C2, OUTPUT); digitalWrite(C2, HIGH);
pinMode(C3, OUTPUT); digitalWrite(C3, HIGH);
pinMode(C4, OUTPUT); digitalWrite(C4, HIGH);
pinMode(R1, OUTPUT); digitalWrite(R1, HIGH);
pinMode(R2, OUTPUT); digitalWrite(R2, HIGH);
pinMode(R3, OUTPUT); digitalWrite(R3, HIGH);
pinMode(R4, OUTPUT); digitalWrite(R4, HIGH);
}
void loop()
{
int i, j;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Tel No Ready");
Serial.println("Tel No Ready");
while(digitalRead(sens1));
if(!digitalRead(sens1)){ while(!digitalRead(sens1)); }
//lcd.setCursor(0,1);
digitalWrite(hook, HIGH);
lcd.setCursor(0,1);
lcd.print("Tel Hook On ");
Serial.println("Tel Hook On");
delay(1600);
lcd.setCursor(0,1);
lcd.print("Tel:");
Serial.print("Tel:");
for(i=0; i<11; i++){
j = Tel_num[i];
tel_out(j);
lcd.print(j);
delay(150);
digitalWrite(ce, LOW);
delay(1);
digitalWrite(R1, HIGH); digitalWrite(R2, HIGH); digitalWrite(R3, HIGH); digitalWrite(R4, HIGH);
digitalWrite(C1, HIGH); digitalWrite(C2, HIGH); digitalWrite(C3, HIGH); digitalWrite(C4, HIGH);
delay(200);
}
Serial.println("");
lcd.setCursor(0,1);
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print("Tel No Out End");
Serial.println("Tel No Out End");
for(i=0; i<7; i++){ delay(1000); Serial.print("Ring delay:"); Serial.println(i); }
Serial.println("Help Me sound out");
sound_out();
Serial.println("Help Me sound End");
digitalWrite(hook, LOW);
lcd.setCursor(0,1);
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print("Tel Hook Off");
Serial.println("Tel Hook Off");
delay(1000);
}
void tel_out(int i)
{
Serial.print(i);
switch (i) {
case 0:
digitalWrite(C2, LOW); digitalWrite(R4, LOW); digitalWrite(ce, HIGH);
break;
case 1:
digitalWrite(C1, LOW); digitalWrite(R1, LOW); digitalWrite(ce, HIGH);
break;
case 2:
digitalWrite(C2, LOW); digitalWrite(R1, LOW); digitalWrite(ce, HIGH);
break;
case 3:
digitalWrite(C3, LOW); digitalWrite(R1, LOW); digitalWrite(ce, HIGH);
break;
case 4:
digitalWrite(C1, LOW); digitalWrite(R2, LOW); digitalWrite(ce, HIGH);
break;
case 5:
digitalWrite(C2, LOW); digitalWrite(R2, LOW); digitalWrite(ce, HIGH);
break;
case 6:
digitalWrite(C3, LOW); digitalWrite(R2, LOW); digitalWrite(ce, HIGH);
break;
case 7:
digitalWrite(C1, LOW); digitalWrite(R3, LOW); digitalWrite(ce, HIGH);
break;
case 8:
digitalWrite(C2, LOW); digitalWrite(R3, LOW); digitalWrite(ce, HIGH);
break;
case 9:
digitalWrite(C3, LOW); digitalWrite(R3, LOW); digitalWrite(ce, HIGH);
break;
case '#':
digitalWrite(C3, LOW); digitalWrite(R4, LOW); digitalWrite(ce, HIGH);
break;
case '*':
digitalWrite(C1, LOW); digitalWrite(R4, LOW); digitalWrite(ce, HIGH);
break;
default:
delay(50);
digitalWrite(ce, LOW);
break;
}
}
void sound_out()
{
digitalWrite(snd2, LOW);
delay(150);
digitalWrite(snd2, HIGH);
delay(50);
while(!digitalRead(snd_end));
delay(500);
digitalWrite(snd1, LOW);
delay(150);
digitalWrite(snd1, HIGH);
delay(50);
while(!digitalRead(snd_end));
delay(200);
}
- 첨부파일
- 독거인을 위한-촌가이버_퀘스트3.pptx 다운로드
로그인 후
참가 상태를 확인할 수 있습니다.