전동보드 안전을 위한 스마트 헬멧 작품 배경
<전동 킥보드와 함께 나타난 `킥라니`?>
`킥라니`는 `킥보드` + `고라니`의 합성어로 고라니처럼 갑자기 불쑥 튀어나와 운전자를 위협하는 전동 킥보드 운행자를 뜻한다.
<전동 킥보드 사고 현황>
전국적으로 전동 킥보드가 보급되면서 전동 킥보드 사고 발생 수는 해마다 크게 급증하고 있다. 12월 10일 전까지는 전동 킥보드는 도로에서만 주행할 수 있었기 때문에 방향 지시등도 없는 전동 킥보드는 많은 사고를 유발하였다.
김병관 의원은 퍼스널 모빌리티 시장이 확대되고 이용자가 많아짐에 따라 퍼스널 모빌리티 사고의 빈도와 인명피해 규모 역시 더욱 커지고 있는 상황이기 때문에 사고 예방을 위해 속도나 주행규정 등 퍼스널 모빌리티 운행에 대한 구체적인 기준이 하루 빨리 마련되고 신호와 차량흐름 등 제대로 된 안전 교육이 이뤄져야 할 것이라고 전했다.
현재는 전동 킥보드를 자전거 도로에서 탈 수 있게 법이 개정되었는데 이 부분이 사고 발생률을 낮출 수 있을까?
우리 주변에 있는 자전거도로 대부분은 1차선인데 사람을 피해야하는 경우나 오는 자전거를 피해야 하는 경우 급하게 차선을 변경할 때 사고가 많이 발생한다. 또한 전동킥보드가 자전거도로에서 주행이 가능하다면, 시속 30km/h에 육박하는 전동킥보드와 자전거 또는 사람이 충돌하게 되면 차 간 사고 못지 않게 큰 사고로 이어질 가능성이 있다.
작품 제작 방안
이러한 문제를 해결하기 위해 전동 킥보드에 자동차나 오토바이와 같이 방향 지시등을 설치하면 사고 빈도를 줄일 수 있을 것으로 추측하였다. 또한, 수동으로 방향 지시등을 켜는 것이 아니라 자이로센서로 핸들의 움직임을 감지하여 이를 블루투스를 이용해 신호를 보내고 값을 받아 방향 지시등을 켜는 무선 방향 지시등 헬멧을 만들기로 팀원들과 협의 하였다. 자동차처럼 악셀과 브레이크가 발로 하지 않기 때문에 방향 지시등까지 스위치를 만들어버리면 오히려 역효과로 사고가 더 많이 날 것이라고 예측하였으며, 이 시스템은 전동 킥보드 뿐만아니라 손으로 운전하는 자전거, 오토바이 등에도 효과적인 제품으로 생각된다.
아두이노 보드
Arduino Uno는 ATmega328(datasheet)기반의 마이크로 컨트롤러 보드이다. 14개의 디지털 I/O핀(14개 중 6개의 핀은 PWM 출럭으로 사용 가능)과 6개의 아날로그 입력, 16MHz 자기 공진자(ceramic resonator), USB 커넥터, 파워잭, ICSP 헤더, 그리고 리셋버튼이 내장되어 있는 등 마이크로컨트롤러에 필요한 모든 부분을 내장하고 있어 간단하게 컴퓨터와 USB 케이블로 연결할 수 있고, 배터리나 ACDC 아답터를 연결해 기기를 작동할 수 있다. 아두이노 우노는 3번째 버전인 R3 보드가 가장 많이 사용되는 보드로써 거의 표준과 같이 사용되고 있다. 우노는 총 44개의 핀과 단자들로 구성되어 있다. 각 핀과 단자들은 아두이노와 다른 보드 또는 센서들의 제어에 이용될 수 있으며 다양한 응용을 할 수 있다.
블루투스 HM-10 모듈
HM-10은 아두이노에서 블루투스 4.0 통신을 바로 사용할 수 있도록 제작된 모듈이며, 4개의 핀만 배선하면 아두이노에서 사용할 수 있다. 다른 블루투스 모듈에 비해 사용하기도 쉬우며, 가성비도 뛰어난 편이라 특수한 블루투스 통신이 아닌 이상은 대부분 HM-10을 사용하여 프로젝트를 구성한다. HM-10과 스마트폰의 통신은 슬레이브 모듈이 필요하며, 전용 앱을 다운 받은 후 해당 HM-10을 찾아 비밀번호를 입력하면 페어링 할 수 있으며, HM-10간의 통신은 마스터 모듈과 슬레이브 모듈이 각각 필요하며, HM-10의 블루투스 이름과 비밀번호를 같게 설정하면 자동 페어링한다. 블루투스 이름, 비밀번호 설정은 AT 명령어로 변환할 수 있다. 보통 HM-10 제품이 판매될 때는 마스터 모듈로 판매되며, HM-10간의 통신을 하기 위해서는 하나의 HM-10을 슬레이브로 변환시켜 주어야한다.
아두이노에 블루투스 모듈을 추가하면 시리얼통신을 이용하여 데이터 값을 받거나 보낼 수 있다. 블루투스는 10미터 정도에서 무선으로 데이터를 보내거나 받을 수 있으므로 이를 활용하면 릴레이, 모터, 전등 등을 동작시켜 무선으로 기기를 제어하는 것이 가능하게 된다. 예를 들어 블루투스 기능이 있는 스마트폰, 노트북 등으로 아두이노에 연결된 블루투스 모듈로 신호를 보내 침대에 누워서도 집안의 전등을 무선으로 끄고 켤 수 있게 할 수 있다. 단, 통신거리 10M 정도라는 제한이 있으므로 멀리 떨어지면 블루투스 모듈과의 연결이 끊겨 작동이 되지 않을 수도 있다. 아두이노를 위한 블루투스 모듈은 여러 가지가 있지만 가장 싼 값에 사용할 수 있는 것이 HM-10이라고 불리는 모듈이다. 국내에서도 1만원 이하로 다양한 제품을 구할 수 있으며 성능도 좋아서 가장 많이 사용하고 있다.
총 4개의 핀이 있으며 위에서부터 신호를 받기위한 핀인 RX 핀, 신호를 전송하기 위한 TX핀, GND(Ground), VCC 핀이 있다. 모듈의 전원은 3.6V ~ 6V 사이에서 동작하므로 VCC핀은 아두이노의 5V 단자에 연결하면 된다. 모듈에 따라 3.3V에서 동작하는 모듈도 있으므로 규격을 꼭 확인하여 전원을 연결해야 한다.
GY-521 센서
MPU 6050 칩이 내장된 GY-521 모듈은 가속도센서와 자이로 센서가 합쳐진 모듈입니다. 가속도 센서는 가속도를 측정하고 자이로 센서는 x,y,z축을 기준으로 각속도를 측정한다. 가속도 센서는 센서의 기울임 정도를 측정할 수 있다. 하지만 센서가 정지상태가 아니라면 움직임에 대한 가속도 값이 추가되어 정확한 기울임 값을 구할 수 없다. 자이로 센서는 각속도를 측정하는데 각속도는 시간당 회전하는 각도를 의미한다. 즉, 센서가 움직이는 정도를 파악할 수 있으며 정지된 상태에서는 항상 일정한 값을 가진다.
소프트웨어 개발
퀵보드 처리 소스코드
#include <SoftwareSerial.h>
#include<Wire.h>
const int MPU=0x68;
int16_t AcX,AcY,AcZ,Tmp,GyX,GyY,GyZ;
SoftwareSerial HM10(3,4); // RX, TX
void setup() {
Serial.begin(9600);
HM10.begin(9600); //블루투스 통신 (master)
Wire.begin();
Wire.beginTransmission(MPU);
Wire.write(0x6B);
Wire.write(0);
Wire.endTransmission(true);
Serial.begin(9600);
}
void loop() {
if ( Serial.available() ) {
HM10.write( Serial.read() );
}
if ( HM10.available() ) {
Serial.write( HM10.read() );
}
Wire.beginTransmission(MPU);
Wire.write(0x3B);
Wire.endTransmission(false);
Wire.requestFrom(MPU,12,true);
AcX=Wire.read()<<8|Wire.read();
AcY=Wire.read()<<8|Wire.read();
AcZ=Wire.read()<<8|Wire.read();
GyX=Wire.read()<<8|Wire.read();
GyY=Wire.read()<<8|Wire.read();
GyZ=Wire.read()<<8|Wire.read();
Serial.println(" ");
if(GyZ>6000){
Serial.print("right");
HM10.write("1");
delay(200);
} //Z축 기준 자이로센서 값이 6000을 넘으면 오른쪽으로 인식
else if(GyZ<-6000){
Serial.print("left");
HM10.write("2");
delay(200);
} //Z축 기준 자이로센서 값이 -6000을 넘으면 오른쪽으로 인식
else if(-6000<GyZ<6000){
Serial.print("straight");
HM10.write("3");
} //Z축 기준 자이로센서 값이 6000을 넘지 못하고 –6000보다 크면 직진으로 인식
}
헬멧 처리 장치 소스코드
#include <SoftwareSerial.h>
int left_led = 6; //왼쪽 led 핀 6번
int centre_led = 5; //가운데 led 핀 5번
int right_led = 4; //오른쪽 led 핀 4번
int data;
SoftwareSerial HM10(2, 3); // RX, TX
void setup() {
Serial.begin(9600);
HM10.begin(9600); //블루투스 통신 (slave)
pinMode(left_led, OUTPUT);
pinMode(centre_led, OUTPUT);
pinMode(right_led, OUTPUT);
}
void loop() {
if (HM10.available()) {
data = HM10.read();
Serial.println(data);
while (data == 50) { //int 형으로 받아와서 아스키코드로 숫자를 인식하여 50으로 지정}
Serial.println("LEFT");
digitalWrite(left_led, HIGH); //ON
digitalWrite(centre_led, LOW); //OFF
digitalWrite(right_led, LOW); //OFF
if (HM10.available()) {
data = HM10.read();
if(data != 50){
delay(500);
data = HM10.read();}
}
}
while (data == 49) { //int 형으로 받아와서 아스키코드로 숫자를 인식하여 49으로 지정}
Serial.println("RIGHT");
digitalWrite(left_led, LOW); //OFF
digitalWrite(centre_led, LOW); //OFF
digitalWrite(right_led, HIGH); //ON
if (HM10.available()) {
data = HM10.read();
if(data != 49){
delay(500);
data = HM10.read();}
}
}
while (data == 51) { //int 형으로 받아와서 아스키코드로 숫자를 인식하여 51으로 지정}
Serial.println("STRAIGHT");
digitalWrite(left_led, LOW); //OFF
digitalWrite(centre_led, HIGH); //ON
digitalWrite(right_led, LOW); //OFF
if (HM10.available()) {
data = HM10.read();
}
}
if (HM10.available())
Serial.write(HM10.read());
if (Serial.available())
HM10.write(Serial.read());
//Serial.println(test);
}
}
데모 영상과 기대효과
기대효과
전동 킥보드 사용자들이 증가함에 따라 사고 발생률이 높아졌지만 헬멧을 착용함으로써 사고 발생률도 낮춤
불의의 사고 발생시 운전자와 퀵보드 사용자의 피해 최소화
저렴한 가격의 방향 지시등과 헬멧의 상품화 과정이 필요함
전동 킥보드 뿐만아니라 손으로 운전하는 자전거, 스케이트 보드, 인라인 스케이트로 확장이 가능함
'메이커 Maker' 카테고리의 다른 글
e-sculpture 관련 부품 작업 영상 참고 (1) | 2022.06.22 |
---|---|
도서관 구역 소음 관리 장치 (0) | 2022.05.30 |
세계 날씨를 표현하는 구름 조명 (0) | 2022.05.26 |
이동형 공기청정기 (0) | 2022.05.25 |
오옴의 법칙과 줄의 법칙 (0) | 2022.05.22 |
애완동물 배변 훈련 장치 (0) | 2022.05.18 |
차량 음주 운전 방지 시동 제어기 (0) | 2022.05.16 |
감긴 전선 반듯하게 펴기 (0) | 2022.05.12 |
더욱 좋은 정보를 제공하겠습니다.~ ^^