[63호]앱 연동이 가능한 점자 프린트기
2020 ICT 융합 프로젝트 공모전 장려상
앱 연동이 가능한 점자 프린트기
글 | 금오공과대학교 김진욱, 김병준, 정수현, 조혜수
1. 심사평
칩센 시각장애인을 위한 여러 종류의 작품 개발은 매년 ICT 공모전에 단골로 등장하는 주제입니다만, 실제 작품이 상용 제품으로 발전이 가능할까 하는 경우는 많지 않습니다. 이 작품의 프린트기 또한 상용화를 위하여 보완할 부분이 분명 있지만, 용지로 사용된 알루미늄과 인쇄를 위한 펀칭 부분에 대한 개선이 있다면 상용화가 가능하지 않을까 하는 생각이 듭니다. 시각 장애인이 직접 입력할 수 있도록 키패드에 점자 요철을 추가하거나, 또는 스마트폰 앱에 음성 인식 기능을 포함하면 더 유용하게 사용할 수 있지 않을까 합니다.
펌테크 작품의 아이디어와 창의성이 돋보이는 작품이라고 생각합니다. 작품구성을 위한 적정한 부품선정과, 꼼꼼한 하우징 구현, 기술 구현방식이 적정했고 완성도 높게 만들어진 우수한 작품이라고 생각합니다.
위드로봇 고생한 것에 비해 보고서의 결말 부분이 아쉽습니다.
2. 작품 소개
ICT에서 어떤 부분을 정할 지에 대해 회의를 하던 중 최근 많은 공모전의 주제로 나오는 유니버설 디자인에 대해 브레인 스토밍을 하였다. 유니버설 디자인의 의미는 다양한 사용자를 포괄하는 보편적인 디자인을 뜻하고 장애의 유무 와도 상관없이 사용할 수 있는 디자인이기 때문에 사회적 약자인 장애인을 초점으로 하여 브레인스토밍을 하던 도중 시각장애인을 위한 디자인으로 생각해 보았다.
시각장애인의 한해서 일상적인 생활에 관해 생각을 해 보았고, 시각 장애인들은 일반적인 사람들처럼 메모를 하지 못하기 때문에 많은 정보를 기억할 수 없는 불편함이 있는 것을 알았다. 이 회의 내용을 바탕으로 시각장애인이 편리하게 점자를 메모할 수 있는 제품을 만들어 보자는 의견이 나오게 되었다.
현재 존재하는 방법 중에는 외주를 맡겨 라벨지에 점자를 표시하는 방법이 있었지만 이 방법은 많은 비용과 필요할 때마다 위주를 맡겨야 한다는 불편함이 있었다. 시각 장애인을 위하여 이와 같은 불편함을 제거하고 실생활에 접목 시켜 편리한 생활을 했으면 좋겠다는 생각에 이 제품을 주제로 기획하게 되었다.
2.1. 기존의 문제점
시각장애인의 메모 기구에 대해 문제점을 알아보았다.
2.1.1. 재료의 문제
개인이 직접 새길 수 있는 제품 중에서는 현재 종이에 점자를 새길 수 있도록 하는 제품들이 많다. 하지만 종이 점자의 경우 마찰이나 외부 충격에 쉽게 손상이 되기 때문에 잠깐 메모하는 용도를 제외하고는 활용이 어렵고 사용할 때마다 발생하는 마모로 인하여 시간이 지날수록 잘못된 정보 전달을 할 우려가 있다는 단점이 있었다. 또한 장기간 사용하기 위해서는 보관을 할 때도 각별한 주의를 기울여야 하는 등의 문제가 있다.
2.1.2. 크기 및 휴대성(접근성)의 문제
점자 프린터기는 존재하지만 주로 책을 만들 때 사용하는 큰 장비일 뿐만 아니라 개인이 사용하기에는 무리가 있고 비용적으로도 매우 부담스럽기 때문에 크기와 비용에서의 문제가 있다.
2.1.3. 자유로운 사용에 대한 문제
휴대용 점자 프린터기로 나온 제품들 중에서는 수동으로 점자를 하나하나 만들어 사용하는 제품이 있다. 또한 시각 장애인들이 사용하기에는 부적합하여 보호자가 도와주어야 할 뿐만 아니라 이는 비장애인조차도 점자 표현에 꽤 주의를 기울여야 하기 때문에 시간이 오래 걸리는 불편함있다.
2.1.4. 가격의 문제
이러한 문제들을 해결한 다른 제품들도 있었으나, 한 사람이 가볍게 구매하기에는 꽤 높은 금액으로 책정되어 있다.
2.2. 아이디어 도출 과정
주제를 기준으로 문제점을 보완할 방법 구상하였다.
2.2.1. 재료의 문제
앞서 말한 문제를 보완하기 위해 장기간 사용이 가능하며 외부 마찰에 잘 견디는 재료를 선정하였다. 그중에서는 일상생활에 있을 마찰에도 다른 재료보다 버티는 힘이 큰 철판을 채택하였다. 점자를 알아볼 수 있도록 겉면은 매끈하지만, 점자를 새길 수 있고 원한다면 생활용품 근처에 위치하게 할 수 있으며 가볍고 부담스럽지 않은 두께이어야 한다. 또한, 팀의 목적은 프린트 된 철판이 원하는 물건에 부착시킬 수 있어야 하는 것이므로 충분한 유연성이 있는 재료이어야 한다.
2.2.2. 크기 및 휴대성의 문제
가정 또는 회사에 구비해두기 좋은 사이즈로 기존의 장비보다 작은 사이즈이어야 한다. 또한 휴대성의 문제를 해결하기 위해 크기와 무게를 줄여야 한다.
2.2.3. 자유로운 사용에 대한 문제
움직임을 최소화하여 사용이 자유롭고 직관적이어야 한다. 또한 시각 장애인들이 직접 사용할 수 있도록 설계해야 한다.
2.2.4. 가격의 문제
고가의 장비로 취급되지 않을 정도로 가격을 낮추어야 한다. 따라서 불필요한 내부 부품의 수를 줄이는 등 간소화해야 한다. 동작을 최소한으로 하되 정밀한 성능을 가질 수 있도록 설계해야 한다.
3. 아이디어 핵심내용
3.1. 개발 목표
3.1.1. 시각장애인의 자유로운 이용(문제점 보완)
타자기+ 프린터기 : 보호자가 도움없이 장애인들이 혼자서도 이용할 수 있도록 설계하였다. 타자기는 침을 구비하여 점 3개를 이용해 아래 표와 같이 총 8가지의 경우의 수를 통해 모든 문장을 출력할 수 있도록 설계하였다.
3.1.2. 비장애인과 융합하여 사용이 가능하다.
블루투스로 앱과 연동할 수 있도록 설계하였다. 기본적으로는 시각장애인을 대상으로 제작한 제품이지만 비장애인이 이 제품을 사용 할 경우 조금 더 편리하게 사용을 할 수 있도록 앱을 제작하고 블루투스를 연동 시켜 기기와 앱 사용에 편리함을 제공받을 수 있다. 물론 시각장애인들은 앱을 통해 출력하는 것이 어렵게 다가 올 수 있으나 현재 많이 배포되어 있는 시각장애인 대상 스크린 리더를 사용할 경우 이 앱을 사용하는데 큰 어려움이 없을 것이다. 이로 인해 비장애인, 시각장애인들이 조금이라도 더 이 기기를 편하게 사용할 수 있도록 블루투스 연동이 가능한 애플리케이션 제작하게 되었다.
3.1.3. 저렴한 가격
일상생활에서의 편리함을 증진시키고자 만든 제품이므로 앞서 말한 바처럼 불필요한 내부 구성을 최소화해 단가를 낮추도록 하였다. 이는 필요한 기어들을 최소화하고 내부 부품들은 3D 프린트를 이용하여 견고하면서도 가볍게 만듦으로써 가격과 무게의 문제도 함께 해결할 수 있었다.
3.1.4. 반영구적 사용
정보를 오래 메모해 놓기 위해 충격에 강하면서 보관이 용이하도록 얇은 재질을 찾아보았다. 얇은 재질의 후보들 중 충격을 주었을 때 변형이 가능하고 반영구적인 사용을 목적으로 연철판 (알루미늄 판)이 가장 적합하였으며 연철판의 두께 0.1T, 0.15T, 0.2T 중에 0.2T를 선택하게 되었다. 너무 얇은 알루미늄 판의 경우 말림현상이 심했으며 반영구적으로 사용하기에는 변형이 쉽게되는 단점 때문에 팀의 취지와 부적합하여 0.2T를 재료로 선정하게 되었다.
4. 제품 설명
4.1. 완성 모습
4.1.1. 전체적인 구조
제품의 앞에서는 바퀴와의 마찰을 이용해 내부로 알루미늄 판을 밀어 넣는다. 알루미늄 판이 이동하는 부분의 양 옆으로 가이드 라인을 설치하여 옆으로 새거나 위로 뜨지 않게 처리한다. (그림 1) 점자를 찍는 위치까지 이동하면, 바퀴의 DC모터를 조정하여 작동(이동)→정지→점자 표시→다시 미세 이동 순으로 반복 작업한다.(그림 2) 점자를 찍어내는 부분에서는 중앙에 위치한 DC모터에 부착된 이가 반쪽만 있는 기어를 돌리고, 이 기어와 연결된 벽면의 중량 부품을 천천히 받쳐 들어올리다 이가 없는 면에서 중량 부품을 놓쳐 떨어트리는 식으로 설계되어 있다. 중력을 받아 떨어진 중량 부품은 서브 모터와 연결된 침 판을 내리찍으면서 침 판 바로 아래에 배치 된 판에 점자를 새기게 된다. 이때, 서브 모터의 침 판은 침 1개짜리(있음, 없음)와 침 2개짜리(1개 앞쪽/1개 뒤쪽/2개/없음)로 구성되어 있어, 이를 알맞게 조정하면 총 8가지의 경우의 수를 만들 수 있다. 침 판은 중량을 받아 판을 찍고, 다시 복원할 수 있어야 하므로 서브 모터의 아래쪽 (커버 안쪽)에 스펀지를 깔아 복원에 도움을 준다. 받침 판의 중심 부분, 즉 침을 찍는 부분에는 나무 판을 끼워 넣어 충격을 잘 흡수하고 알루미늄 판에 표시를 더 잘 할 수 있도록 설치한다.(그림 3) 장치에 입력값을 넣어주는 부분으로는 윗면에 키패드를 부착하고 키패드를 누를 시 값이 입력되고 모터 및 서보 모터가 코딩을 해 놓은 입력값을 통해 지정된 출력값을 나타낼 수 있도록 부착한 모습이다.(그림 4)
사진과 같이 외관 제작은 견고해야 하기 때문에 5T의 아크릴 판을 이용해 조립식으로 외곽 및 각종 지지대를 만들었다. 내부에는 DC 모터 2대, 서브모터 2대, 바퀴 1개, 타자기 판(키패드), 아두이노 보드, 내부 장치들을 제작한 3D 프린트 물(필라멘트 재질) 등으로 이루어져 있다. 판을 넣는 곳과 빼내는 곳은 판의 길을 따라 뚫려 있으며 타자기는 외부로 빼내어 조작이 쉽도록 장치의 윗면에 부착하였다.
4.1.2. 기본적인 기능
이 장치는 구비되어 있는 점자 프린트기를 이용하여 원하는 내용을 타이핑 할 수 있다. 타자기는 아두이노의 4×4 키패드 모듈을 이용하여 구성했다. 기능으로는 키패드의 버튼을 누르게 되면 Motor 1번이 회전하게 되며 점을 찍는 곳까지 이동하게 된다. 이동이 끝난 후 Motor 1번은 정지하게 되며 서보 모터가 입력받은 정보에 대한 개수만큼 침을 배치한다. 배치가 완료되면 Motor 2번이 돌아가게 되며 중량을 실은 필라멘트 재질의 통이 아래로 떨어지게 되어 점자를 표시한다. 점자 표시가 완료되면 Motor 2번은 정지 및 Motor 1번이 다음 표시 장소로 이동할 수 있도록 가동된다. 이를 반복하여 원하는 문장의 입력이 완료되면 정지된다.
4.1.3. 재료 범위
철판(알루미늄 판), 고무판 등의 재료를 판으로 사용한다. 이 외에도 국소부위에 강한 충격을 주었을 때 변형이 가능한 재료라면 판으로 사용할 수 있다. 시연에서는 0.2T의 알루미늄 판을 재단하여 사용하였다.
4.1.4. 블루투스 앱 연동
아두이노의 블루투스 모듈을 이용하여 제작한 스마트폰의 애플리케이션과 연동이 가능하도록 제작하였다. 스마트폰에서 입력한 정보를 수신하여 타자기로 입력했을 때와 같이 작동하도록 프로그래밍 하였다.
4.1.4. 사용방법
사용 방법은 키패드 방식과 블루투스 방식으로 2가지가 있다. 스위치 전원을 킨 후 키패드를 누르게 되면 입력되어있는 코딩으로 인해 점자가 찍히게 되는 방식을 반복하였다. 블루투스 방식은 만들어 놓은 앱을 통해 터치를 하게 되면 키패드와 동일하게 입력한 신호를 받아 출력을 하는 방식이다.
4.2. 제작 과정
4.2.1. 아크릴 및 나무 판
5T의 두꺼운 아크릴 판과 3T의 나무 판을 사용하였다. 견고함을 줄 수 있는 5T 아크릴 판은 전체 외곽 및 받침 판, 부품의 지지대 등 충격에 잘 견뎌야 하며 외관 부분에 사용을 하였다. 나무 판은 아크릴 판보다 유연성을 요하는 부분에 사용하였다.
4.2.2. 카티아
3D 프린터를 이용해 기어, 가이드 라인, 기어와 맞닿는 중량 부품, 서브 모터의 커버, 모터-바퀴 고정대 등의 부품을 설계 및 출력하여 사용하였다. 중량 부품은 3D 프린터로 출력한 후, 안쪽을 쇳가루로 채워 적당한 무게가 실리도록 하였다.
4.3. 제품 설계
4.3.1. Flow chart
4.3.2. 전역 변수
아두이노 전역 변수 설정값이다.
#include <Keypad.h> //키패드 라이브러리
#include <AFMotor.h> // L293D 모터 드라이브 라이브러리
#include <Servo.h> // 서보모터 라이브러리
#include “SoftwareSerial.h” // 블루투스 통신
int Tx=52;
int Rx=50;
SoftwareSerial BT(Tx, Rx);
int incomingByte = 0;
const byte ROWS =4; //행개수
const byte COLS =4; //열 개수
Servo servo1; // 서보모터 1 바깥모터 2개짜리
Servo servo2; // 서보모터 2 안쪽모터 1개짜리
AF_DCMotor motor_3(3); // 모터 3 톱니모터
AF_DCMotor motor_4(4); // 모터 4 레일모터
SoftwareSerial BTSerial(52,50);
char keys[ROWS][COLS]={
{’1′,’2′,’3′,’A'},
{’4′,’5′,’6′,’B'},
{’7′,’8′,’9′,’C'},
{‘*’,’0′,’#',’D'}
};
byte rowPins[ROWS] = {40,38,36,34};
byte colPins[COLS] = {28,26,24,22};
Keypad keypad=Keypad( makeKeymap(keys),rowPins,colPins,ROWS,COLS);
4.3.3. set up 설정값
void setup(){
Serial.begin(9600); // 통신속도설정값
BT.begin(9600); // 블루투스통신설정값
BT.println(“Conneted up to Arduino”);
servo1.attach(9); // 서보모터 1 on 바깥모터 2쪽짜리
servo2.attach(10); // 서보모터 2 on 안쪽모터 1쪽짜리
motor_3.setSpeed(255); // 모터 3 속도 설정 톱니모터
motor_3.run(RELEASE); // 모터 3 돌리지 않는 상태 톱니모터
motor_4.setSpeed(255); // 모터 4 속도 설정 레일 모터
motor_4.run(RELEASE); // 모터 4 돌리지 않는 상태 레일모터
}
char master_input;
4.3.4. loop 설정값
if(key==’1′){
motor_4.run(FORWARD); //레일모터
delay(150);
motor_4.run(RELEASE);; // 레일모터
delay(50);
servo2.write(180); // 서브모터 2 안쪽모터 1쪽짜리 리셋
delay(1000);
servo1.write(180); // 서브모터 1 바깥쪽 2쪽짜리 리셋
delay(1000);
servo1.write(30); // 서브모터 1 바깥쪽 2개짜리 아무것도 안찍히게
delay(1000);
servo1.write(0); // 서브모터 1 바깥쪽 아무것도 안찍히게
delay(1000); motor_3.run(FORWARD); //톱니모터
delay(5000);
motor_3.run(RELEASE);; // 톱니모터
delay(50);
}
}
if(key){
Serial.write(key);// 시리얼모니터에 출력
master_input=(Serial.read());
if(key==’2′){
motor_4.run(FORWARD); //레일모터
delay(150);
motor_4.run(RELEASE);; // 레일모터
delay(50);
servo2.write(180); // 서브모터 2 안쪽모터 1쪽짜리 리셋
4.3.5. 블루투스 설정값
//블루투스 자음 ‘ㄱ’
if (BT.available())
{
master_input=(BT.read());
if (master_input==’1′){
motor_4.run(FORWARD); //레일모터
delay(150);
motor_4.run(RELEASE);; // 레일모터
delay(50);
servo2.write(180); // 서브모터 2 안쪽모터 1쪽짜리 리셋
delay(1000);
servo1.write(180); // 서브모터 1 바깥쪽 2쪽짜리 리셋
delay(1000);
servo1.write(0); // 서브모터 1 바깥쪽 2개짜리 바깥것 하나 찍히게
delay(1000);
servo1.write(0); // 서브모터 1 바깥쪽 아무것도 안찍히게
delay(1000); motor_3.run(FORWARD); //톱니모터
delay(5000);
motor_3.run(RELEASE);; // 톱니모터
delay(50);
motor_4.run(FORWARD); //레일모터
delay(150);
motor_4.run(RELEASE);; // 레일모터
delay(50);
}
master_input=(Serial.read());
}
4.3.6. 앱 설계 내용
위의 첨부된 사진들은 이 장치를 블루투스와 연동하여 사용하기 위해 제작한 애플리케이션 모습이다. 위의 사진은 애플리케이션을 실행하였을 경우 표시되는 화면으로 <블루투스 연결하기>를 누르게 되면 기기와 연동을 할 수 있다. 아래의 시작 버튼을 통하여 알루미늄 판을 넣고 Motor 1번을 가동시켜 원하는 위치로 이동시킬 수 있도록 값을 설정한다.
이어서 블루투스 통신을 위한 설정값은 애플리케이션과 블루투스 통신을 위해 설정을 해주어야하는 설정값이다. 위의 블록박스에서는 블루투스 설정 전, 아래의 블록박스는 설정 후에 값을 송·수신 할 수 있도록 설정해주어야 하는 값이다.
신호를 받기 위한 설정값은 ㄱ을 클릭하였을 경우 아두이노 기기에 1이라는 텍스트가 송신이 되며 기존에 설정해둔 1과 매칭하여 입력에 해당하는 출력값을 출력하게 된다. 여기에서는 ㄱ의 점자인 위의 저 점자표가 알루미늄 판에 찍히게 된다.
5. 회로도