수행기록퀘스트3

독거인을 위한 비상연락 장비 - 퀘스트3
2022. 6. 26 (일) 12:29 최종수정 2022. 6. 26 (일) 13:21 촌가이버 조회 665 좋아요 1 스크랩 0 댓글 0

1. 독거인을 위한 비상연락 장비

1-1. 행정안전부에서 202006월 발표한 자료에 따르면, 1인세대가 인구전체 주민등록세대의 38.5%나 된다고 한다.

1-2. 좀 더 구체적으로 1인 세대를 살펴본다.

 

1-3. 1인세대의 증가와 함께 고독사로 추정되는 무연고사 발생빈도도 증가하고 있다. 

1-4.

1. 이와 같은 상황에서 “ “나홀로족 고독사를 방지하고,  

    보다 빠른 연락을 할 수 있다면 좋을 것이다.” 라는

    취지에서 본 장비를 구상하게 되었다.

 

2. 인터넷, 무선 와이파이보다 저렴하고, 집에 전기가 

    단전이 되어도 전화는 가능한 점을 이용한다.

 

3. 프로젝트의 목표: 사물센서와 인체감지센서를

    이용하여 인체감지를 하여, 일정 시간이 되도록 움

    직임이 감지되지 않으면, 미리 기억시킨 전화번호로

    전화를 걸어 현재 상황을 알려준다.

 

2. 개발 툴

1.아두이노 통합 IDE.
1. 아두이노 IDE 1.8.13사용.
2. 아두이노 메가2560 사용.
1.I2C LCD 사용
2.MPR121 터치 키 사용

3. 소프트웨어 구성 

1.비상연락을 위한 전화번호 입력하기.
2.비상연락을 위한 내 목소리 녹음하기.
3.인체감지 센서 확인.
4.사물인지 센서 확인.
5.일정시간 감지센서에 변동이 없을 때 전화를 걸어 도움을 요청한다.
6.보조적으로 시계용 시각 정보입력.

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);
}

7. 참조사항
1.뉴스:
   1.아시아경제 2020.07.08 인터넷 기사 인용 ( https://www.asiae.co.kr/article/2020070811424899264 )
   2.노컷뉴스 2021.05.14 인터넷기사 인용 ( https://news.nate.com/view/20210514n16723?mid=n1101 )
2.참조한 라이브러리
 
첨부파일
독거인을 위한-촌가이버_퀘스트3.pptx 다운로드

로그인 후
참가 상태를 확인할 수 있습니다.