반응형

일시 및 장소

□ 일시: 2019. 7. 22(월) ~ 26(금) 4박 5일

□ 장소: 경희대학교 국제캠퍼스

매번 제가 했던 활동들이나 일들을 블로그에 기록해야지.. 해야지.. 하면서 미루다가 결국 6개월이 지나서야 올리게 되네요.. ㅠ

작년 여름방학때 건국대학교 공학혁신센터에서 지원하는 스마트 디자인 캠프에 지원을 하였는데요, 처음 모집발표때는 연락이 오지않았었는데

추가모집인원 2명을 더 뽑는다고 하여 다행히도 프로그램에 참여할 수 있게 되었습니다. (건대생은 6명)

그래서!! 7월 22일날 아침에 캐리어에 짐싸고 경희대 국제캠퍼스로 갔습니다.

첫째날과 둘째날은 아두이노와 라즈베리 파이를 통해서 회로설계를 진행하였고 프로그램 참가 대상 대부분 아두이노를 처음 접하는 사람들로만

구성해서 쉽게 진행되었던 걸로 기억합니다.

시간

7월 22일(월)

1일차

7월 23일(화)

2일차

7월 24일(수)

3일차

7월 25일(목)

4일차

7월 26일(금)

5일차

08:00 ~ 09:00

 

기상 및 조식

기상 및 조식

기상 및 조식

기상 및 조식

09:00 ~ 10:00

Hands-on Practice

레드보드와 아두이노 IDE를 이용한 LED 켜기

레드보드와 아두이노 IDE를 이용한 RGB LED

레드보드와 아두이노 IDE를 이용한 광 센서 활용

플렉스 센서와

서보 및 릴레이

MCU를 이용하여 센서 제어하기 (PT)

라즈베리 파이의 PL-App 설정하기

Hands-on Practice

Smart Home 살펴보기

공장 네트워크 솔루션 구축

보안이 강화된 클라우드 서비스 IoT 시스템

Smart City 살펴보기

Smart Grid 살펴보기

Hackathon 2단계

Idea 구체화

개념도 작성

세부적 설계

2차 부품 리스트업

Prototyping

Troubleshooting

Hackathon

조별 발표

10:00 ~ 11:00

11:00 ~ 12:00

2019 IoT SMART Design Camp 수료/폐회식 및 사진 촬영

12:00 ~ 13:00

중식

중식

중식

 

13:00 ~ 14:00

2019 IoT SMART Design Camp

등록 및 개회식

Hands-on Practice

PL-App Notebook 알아보기

리눅스 명령어 알아보기

PL-App를 이용한 LED 실습

라즈베리 파이와 레드보드 통신하기

PL-App를 이용한 LED 회로 및 그래프 그리기

PL-App Notebook를 이용한 LED 제어하기

파이썬을 이용한 SBC 작동하기(PT)

Hackathon Practice

아두이노 무드등

자동 순회 이륜 자동차

Hackathon 2단계

Prototyping

Troubleshooting

 

14:00 ~ 15:00

Hands-on Practice

프로세스 분석하기

개방 회로 제어계

폐회로/개회로 제어계 비교

프로세스 구성도 그리기

실제 프로세스 다이어그램

IoT 구성 장치 연결하기 (PT)

회로 설계하기

IoT 장치 시뮬레이션하기

라즈베리 파이 및 아두이노 소개

전기 및 전자 용어 기초

LED 실습(PT)

브레드보드란?

Tinkercad 가입

Tinkercad를 활용한 아두이노 LED 실습

15:00 ~ 16:00

16:00~17:30

17:30 ~ 18:30

석식

석식

석식

석식

 

18:30 ~ 21:30

전문가 특강

ICT 4차 산업시대의 창의역량인재유형

[박수정 교수님]

 

Hackathon 1단계

Hackathon 안내

Team 배치

Brainstorming

Ideation

Idea 분석하기

1차 부품 리스트업

Hackathon 3단계

Prototyping

Troubleshooting

팀별 발표 PPT 제작

 

셋째날은 아크릴에 기스를 내서 만드는 무드등과 초음파 센서를 이용한 차량만들기도 체험해보았는데

코드나 자료들은 다 만료되어서 남은게 사진과 동영상밖에없더군요...ㅎㅎ

아크릴 무드등

그리고 셋째날 저녁에는 다음날 해커톤 진행을 위한 팀 구성을 하였는데 각자의 역할을 분담하기 위해

과가 다양하게 구성되었고 저희팀은 컴퓨터공학2, 전기전자공학1, 기계공학1 총 4명으로 배정받았습니다.

그리고 캡스톤처럼 장기적으로 준비하는 것이 아닌 거의 무박2일 혹은 무박3일로 진행되는 해커톤의 경험은 처음이여서 제한시간내에 최선의

결과물을 만들기위해 아이디어 회의를 해보았는데요

브레인스토밍 아이디어 회의(화질구지 죄송해요..)

드론, 스마트변기, 엘레베이터, 미세먼지, LED차선, 무단횡단, 햇빛감지스마트홈 등등 여러가지 의견이 나왔는데요 그중에서 우천 시 커브길에서 차선이 잘 보이지 않는 상황을 대비해서 차선을 우천 시, 야간, 전방 사고 감지 시 LED로 알려주는 스마트차선을 만들어 보기로 했습니다.

우천 시 도로 상황

처음 그림판으로 팀원들에게 아이디어를 제공하고 넷째날에는 기본적으로 제공되는 하드보드지로 도로를 표현하였습니다.

 

 

 

 

회로설계 및 센서 배치, 디자인 실현 // 아두이노 센서 테스팅

<역할 분담>

문준호(컴퓨터공학) - 외형 설계 배치 및 PPT

오지원(컴퓨터공학) - 코딩, 센서 테스팅

김대훈(전기전자) - 회로 설계, PPT

김준영(기계공학) - 알고리즘설계, 코딩, 발표

#define ledR 2
#define ledG 3
#define ledB 4
#define rain_sensor_pin A0//빗물센서에 대한 데이터 값을 받는 핀
#define light_sensor_pin A1//조도 센서에 대한 데이터 값을 받는 핀
#define danger_sensor_pin 7//적외선 센서에 대한 데이터 값을 받는 핀
#define pressure_sensor_pin A2
#define BLYNK_PRINT Serial //시리얼 모니터 활성화
#define swRecieve 5
#define swTransfer 6

#include <BlynkSimpleStream.h>//blynk를 위한 라이브러리 추가
#include <SoftwareSerial.h>

//1.조도센서가 반응하면 흰색불이 들어오게 한다
//2.조도센서면서 빗물센서 초록색이 들어오게 한다.
//3.적외선센서에 데이터가 들어오면 빨간색이 들어오게 한다.

char auth[] = "6LxSt_Bhc-nAMzhjmU4c1Ym1UbS_NOMs";//블링크 토큰 입력
SoftwareSerial SwSerial(swRecieve, swTransfer); // RX, TX, 블루투스 통신 객체 생성
WidgetLCD lcd(V1);

BLYNK_READ(V0)
{
//우천시 노면 상황에 대한 값을 보낸다.
  Blynk.virtualWrite(V0, 1023-analogRead(A0));  
}
 
void pinMode_Initialize()
{
  pinMode(ledR, OUTPUT);
  pinMode(ledG, OUTPUT);
  pinMode(ledB, OUTPUT);  
}

void rain_sensor_Initialize()
{
//빗물 센서에 대한 초기화
  pinMode(rain_sensor_pin, INPUT);
}

boolean rain_sensor(){//빗물 센서에 대한 함수 실행
  int rain_value=analogRead(rain_sensor_pin);
  if(rain_value<700){
    return true;//비가 온다.
  }
  else return false;//비가 오지 않는다.
}

void light_sensor_Initialize()
{
//조도 센서에 대한 초기화
  pinMode(light_sensor_pin, INPUT);
  
}
boolean light_sensor(){//조도 센서 데이터를 받는 코드.
  int light_value=analogRead(light_sensor_pin);
  if(light_value>700){//밤이라면
   return true;    
  }
  else return false;//밤이 아니라면
  
}

void danger_sensor_Initialize(){//적외선 센서에 대한 초기화
  pinMode(danger_sensor_pin,INPUT);
}

int danger_sensor()
{
//사람 있을때 코드
  int danger_value=LOW;
  danger_value=digitalRead(danger_sensor_pin);
  Serial.println(danger_value);
  if((danger_value==HIGH)&&(analogRead(pressure_sensor_pin)>30)){
    if((analogRead(pressure_sensor_pin)>15)&&(analogRead(pressure_sensor_pin)<60)){//사람일때
      return 2;
    }
    else if((analogRead(pressure_sensor_pin)>60)){//차일때
      return 1;
    }
  } 
  else return 0;  
}

void pressure_sensor_Initialize()
{
  pinMode(pressure_sensor_pin, INPUT);
}

void pressure_sensor(){
  int pressure_value=analogRead(pressure_sensor_pin);
  
}


void Led_on(boolean rain_sensor(),boolean light_sensor(),int danger_sensor()){
 
  if(danger_sensor()==2){//사람이 있다면
    digitalWrite(ledR,HIGH);//빨간색
    digitalWrite(ledG,LOW);
    digitalWrite(ledB,LOW);
    lcd.print(0,0,"                     ");
    lcd.print(0,0,"Its dangerous");
    return 0;
  }

  else if(danger_sensor()==1){//차가 있다면
    digitalWrite(ledR,LOW);//빨간색
    digitalWrite(ledG,LOW);
    digitalWrite(ledB,HIGH);
    lcd.print(0,0,"                     ");
    lcd.print(0,0,"It's car");
    return 0;
  }

  else{//사람이 없다면
    if(rain_sensor()==true){//비가 온다면
      lcd.print(0,0,"                     ");
      lcd.print(0,0,"It's raining");
      digitalWrite(ledR,LOW);
      digitalWrite(ledG,HIGH);//초록색
      digitalWrite(ledB,LOW);
      return 0;
    }
    else if(light_sensor()==true){//밤이라면
      lcd.print(0,0,"                     ");
      lcd.print(0,0,"It's night");
      digitalWrite(ledR,HIGH);
      digitalWrite(ledG,HIGH);
      digitalWrite(ledB,HIGH);
      return 0;
    }
    else{
      lcd.print(0,0,"                     ");
      lcd.print(0,0,"It's okay");
      digitalWrite(ledR,LOW);
      digitalWrite(ledG,LOW);
      digitalWrite(ledB,LOW);
      return 0;
      }
  }
}

void setup() 
{
  Serial.begin(9600);
  SwSerial.begin(9600);
  Blynk.begin(SwSerial, auth);
  pinMode_Initialize();
  light_sensor_Initialize();
  rain_sensor_Initialize();
  danger_sensor_Initialize();
  pressure_sensor_Initialize(); 
}

void loop() 
{
  Blynk.run();
  Led_on(rain_sensor,light_sensor,danger_sensor); 
}

<스마트LED차선>

1. 우천 시 차선에 초록색 LED 점등 (빗물감지 센서 사용)

2. 야간에 흰색 LED 점등 (조도센서 사용)

3. 전방 사고(적색) 혹은 보행자(청색) 감지 시 해당 구역에서부터 100M전까지 적색 or 청색 LED 점등 (동작감지센서 & 압력센서 사용)

4. 차량과 도로 블루투스 연결을 통한 정보 교환 기능 구현

우천 시 초록색 LED가 점등되더라도 알고리즘 우선순위를 적용하여 사고 혹은 보행자 감지가 최우선 순위로 적용되게 코딩하였습니다.

+ 추후에 시간이 된다면 라즈베리파이를 이용해 각각의 도로 교통 정보와 모든 차량간의 정보를 웹으로 받아 데이터를 분석하고 정보 공유를

구현해보고싶습니다.

 

엄청 긴장했던 발표.

<최종 완성품>

 

 

최종 완성품 영상

아쉽게도 대학별로 진행하는 해커톤이 아닌 체험형 프로그램이였기 때문에 시상식은 진행하였지만 대상, 금상, 은상, 동상, 장려상 등등이 아닌

'정들어서 보내주기싫어 상', '아이디어는 최고야 상', '열정 상' 등등으로 팀별로 상장을 주었고 상금이 없어서 좀 아쉬웠지만..!! ㅎㅎ

아두이노로 LED 제어하는법도 몰랐던 제가 4박5일간의 프로그램 진행으로 인해

다른 대학교 팀원들과의 팀플레이, 역할분담, 기술적 문제 해결방안, 아두이노 코딩 등등

정말 많은것들을 배우고 얻어가게되었습니다.

 

우리팀 로고와 사은품(?)으로 받았었던 라즈베리파이 정품

 

반응형

'🎓Campus Life' 카테고리의 다른 글

메이커스페이스 체험 프로그램(2020.01.07~01.09)  (0) 2020.02.17

+ Recent posts