삼각형을 누르면 목차가 나와요 클릭하면 바로 이동합니다!
우리 팀을 소개합니다
- 팀 이름 : I do it 노 - 팀 이름의 의미 : 나도 아두이노를 할 수 있다는 의미 - 팀 원 : 김승창, 배재현, 김하늘, 이태곤
Gallery view
Search
버스 난폭운전 멈춰!
문제의 발견
직접 버스를 타보면서 난폭운전을 경험 했고, 학교 익명 게시판인 에브리타임에 항상 논란이 되고 있습니다. 심지어 19년도에는 버스가 급정거를 해서 고3 여고생이 요금통에 머리를 부딪쳐 목이 골절 되면서 사지마비 판정을 받는 사고가 발생해 국민 청원을 진행하기도 했습니다. 지금 이 순간에도 이렇게 크고 작은 사고들이 계속 반복이 되고 있습니다. 그리고 버스 정류장에 버스를 기다리고 있어도 버스 기사님들이 정류장에 멈추지 않고 패스를 하는 경우가 많습니다.
그래서 우리가 찾은 해결 방법은!
1. 버스 회사를 대상으로 난폭운전을 해결하기 위해 급감속 횟수를 기록하는 기기를 만들었다.
2. 버스 회사를 대상으로 난폭운전을 해결하기 위해 손님들이 난폭운전인거 같다 싶으면 누를 수 있는 기기를 만들었다.
3. 버스 회사를 대상으로 정류장 패스를 해결하기 위해 손님이 정류장에서 버스 기사님에게 승차 알림을 보낼 수 있는 앱을 만들었다.
이렇게 만들었어요
H.W
1.
급감속 횟수 기록 장치
LCD를 나타내는 이미지가 없어 도트매트릭스를 넣어 두었습니다. 도트매트릭스를 LCD라 생각하고 보세요!!
2.
난폭운전 멈춰! 스위치
3.
앱을 이용한 승차 알림 장치
S.W
1.
급감속 횟수 기록 장치
#include <Wire.h>
#include <hd44780.h>
#include <hd44780ioClass/hd44780_I2Cexp.h>
hd44780_I2Cexp lcd;
int trig = 13;
int echo = 12;
int acceleration;
int count = -1;
float distance_old;
void setup() {
lcd.begin(16, 2);
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
}
void loop() {
float duration, distance, acceleration;
float distance_abs;
digitalWrite(trig, HIGH);
delay(10);
digitalWrite(trig, LOW);
duration = pulseIn(echo, HIGH);
distance = ((float)(340 * duration) / 10000) / 2;
distance_abs = distance - distance_old;
if(distance_abs < 0) distance_abs -= (distance_abs * 2);
acceleration = ((float)(distance_abs / 0.04));
if(acceleration >= 2000) count++;
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("acc:");
lcd.print (acceleration);
lcd.print ("cm/s^2");
lcd.setCursor(1, 1);
lcd.print ("count:");
if(count <= 0) lcd.print(0);
else lcd.print (count);
lcd.print ("times");
distance_old = distance;
delay(200);
}
2.
난폭운전 멈춰! 스위치
// generated by MAKE :) HAPPY HACKING!
void _delay(float seconds) {
long endTime = millis() + seconds * 1000;
while (millis() < endTime);
}
void setup() {
pinMode(8, INPUT_PULLUP);
pinMode(13, OUTPUT);
pinMode(9, INPUT_PULLUP);
pinMode(10, INPUT_PULLUP);
}
void loop() {
if (!digitalRead(8)) {
digitalWrite(13, HIGH);
_delay(2);
} else {
digitalWrite(13, LOW);
}
if (!digitalRead(9)) {
digitalWrite(13, HIGH);
_delay(2);
} else {
digitalWrite(13, LOW);
}
if (!digitalRead(10)) {
digitalWrite(13, HIGH);
_delay(2);
} else {
digitalWrite(13, LOW);
}
}
3.
앱을 이용한 승차 알림 장치
// generated by MAKE :) HAPPY HACKING!
#include <SoftwareSerial.h>
SoftwareSerial bluetoothSerial(2, 3);
String ReadReceivedDataFromBluetooth() {
String inputString = "";
while (bluetoothSerial.available()) {
char tempChar = bluetoothSerial.read();
if (tempChar == '\\n' || tempChar == '\\r') {
break;
}
inputString += tempChar;
delay(10);
Plain Text
복사
}
return inputString;
}
void _delay(float seconds) {
long endTime = millis() + seconds * 1000;
while (millis() < endTime);
}
void setup() {
pinMode(13, OUTPUT);
bluetoothSerial.begin(9600);
}
void loop() {
if (bluetoothSerial.available()) {
String receivedDataFromBluetooth = ReadReceivedDataFromBluetooth();
if (receivedDataFromBluetooth == "f") {
digitalWrite(13, HIGH);
_delay(2);
digitalWrite(13, LOW);
}
if (receivedDataFromBluetooth == "b") {
digitalWrite(13, LOW);
}
}
}
디자인
작동 영상
이러한 효과를 기대하고 있어요!
-진주 시청 등 국가 기관과 협약하여 진주 시민버스에 의무적으로 기기를 설치하도록 합니다. 기기 설치비는 시청이 부담하고 매월 사용료는 버스회사가 부담하여 수익을 창출할 예정입니다.
-승객분들이 사용하게 될 승차 알림 앱에 광고를 넣어 수익을 창출할 수 있으며 배너 광고로 넣어 승객분들이 앱을 사용하는데 불편함이 없도록 합니다.
-버스 난폭운전과 시민의 안전은 진주만의 문제가 아니라 다른 지역에서도 빈번하게 발생하는 일입니다. 그래서 저희는 진주를 시작으로 서비스 제공 지역을 확대해 나가 버스가 있는 모든 지역에 서비스를 제공 할 계획입니다.
-또한 주기적인 진주 시민 대상으로 설문 조사를 통해서 사용성, 성능, 안전성 등에 대해 개선해 나가도록 합니다. 그리고 급감속 횟수에 따라 기사님들 대상으로 재교육을 실시, 시청에 급감속 횟수를 보고해 기준을 초과할 시 버스회사 실태조사 또는 나중에 새로운 노선 승인에 불이익을 가한다면 버스회사가 기사님들 운전 습관 개선에 더욱 힘을 써 시민들이 안심하고 버스를 이용할 수 있고 시민버스는 안전한 주행이 이루어질 수 있습니다!
발표 자료가 궁금하다면?
appendix
12주 간의 기록을 더 자세히 보고 싶다면?
12주간의 여정을 통해 느낀 점
Ellie_김하늘
조원들과 함께 지역 문제에 대해 의논하고 해결 방안을 찾는 과정에서 많은 공부가 되었던 뜻 깊은 시간이었습니다.
Lion_배재현
좋은 조원들 덕분에 지역 문제 및 해커톤 등 많은 부분에서 배움이 되어 정말 좋은 경험이었습니다.
VACA_이태곤
매주 새로운 것을 배우고 팀원들과 문제를 의논하고 하는 부분에서 많이 배웠습니다.
Tim_김승창
12주 동안 아두이노와 관련 센서 사용법에 대해 배우면서 재미있었습니다!!
: