산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

1Sheeld와 아두이노로 시각/청각 장애인 간 소통 돕기

부품 및 소모품

부품 수량
1Sheeld 1
아두이노 우노 (Arduino UNO) 1
Adafruit 표준 LCD - 16x2 흰색/파란색 1
로터리 포텐셔미터 (범용) 1 10kΩ면 충분

프로젝트 소개

이 프로젝트는 기본적으로 시각/청각 장애인 간의 소통 문제를 다룹니다.

시각 장애인의 유일한 소통 수단은 말하기와 듣기인 반면, 청각 장애인은 타이핑과 보기만 가능합니다. 이를 활용해보겠습니다!

시각 장애인 → 청각 장애인:

청각 장애인 → 시각 장애인:

이제 이를 하드웨어로 구현해보겠습니다.

1단계: 하드웨어 설정

1Sheeld와 아두이노로 시각/청각 장애인 간 소통 돕기
1Sheeld와 아두이노로 시각/청각 장애인 간 소통 돕기
1Sheeld와 아두이노로 시각/청각 장애인 간 소통 돕기
1Sheeld와 아두이노로 시각/청각 장애인 간 소통 돕기

2단계: 연결

1Sheeld와 아두이노로 시각/청각 장애인 간 소통 돕기
1Sheeld와 아두이노로 시각/청각 장애인 간 소통 돕기
1Sheeld와 아두이노로 시각/청각 장애인 간 소통 돕기
1Sheeld와 아두이노로 시각/청각 장애인 간 소통 돕기
1Sheeld와 아두이노로 시각/청각 장애인 간 소통 돕기
1Sheeld와 아두이노로 시각/청각 장애인 간 소통 돕기

1Sheeld를 사용하려면 먼저 1Sheeld 라이브러리를 다운로드하여 아두이노에 추가해야 합니다. 또한 1Sheeld 앱을 휴대폰에 다운로드하여 설치해야 합니다. 1Sheeld 사이트에서 받을 수 있습니다: https://1sheeld.com/downloads/

1Sheeld를 아두이노에 연결하고 코드 업로드하는 방법은 다음 튜토리얼을 따르세요: https://1sheeld.com/tutorials/getting-started/

회로가 조금 지저분해 보일 수 있지만 단순한 LCD 회로입니다:

이제 통신은 다음과 같이 이루어집니다:

시각 장애인 → 청각 장애인

청각 장애인 → 시각 장애인

기본적으로 음성 인식이 음성을 텍스트로 변환하여 LCD로 보내면 청각 장애인이 볼 수 있습니다. 음성 합성은 키보드에서 텍스트를 받아 음성으로 변환하여 시각 장애인이 들을 수 있게 합니다.

1Sheeld 앱에서 음성 인식, 키보드, 음성 합성, SMS 실드를 선택해야 합니다. SMS 실드를 사용하면 멀리 있는 연락처에게도 메시지를 보낼 수 있습니다. 작동 방식을 보여주는 비디오가 있습니다.

이제 무엇을 하려는지 이해하셨으니, 코드에 대해 이야기해보겠습니다.

3단계: 소프트웨어

#define CUSTOM_SETTINGS
#define INCLUDE_VOICE_RECOGNIZER_SHIELD
#define INCLUDE_TEXT_TO_SPEECH_SHIELD
#define INCLUDE_KEYBOARD_SHIELD
#define INCLUDE_SMS_SHIELD
#define INCLUDE_TERMINAL_SHIELD
#define INCLUDE_VIBRATION_SHIELD
#include 
#include 

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
String msg;
int sent = 0;
int i = 0;
String phoneNum = ""; // 여기에 전화번호 입력
int patternOne[6] = {1000, 2000, 1000, 2000, 1000, 2000};
int patternOneSize = 6;

void setup() {
  OneSheeld.begin();
  VoiceRecognition.start();
  lcd.begin(16, 2);
}

기본적으로 사용할 라이브러리를 추가하고 나중에 사용할 변수들을 초기화합니다. 진동 센서를 사용할 예정이라 patternOne과 patternOneSize 변수는 그와 관련됩니다. 먼 거리 통신을 위해 SMS 실드도 사용할 것이므로, 보낼 SMS의 전화번호를 담을 phoneNum 변수를 추가했습니다.


// 시각 장애인 → 청각 장애인
if (VoiceRecognition.isNewCommandReceived()) {
  String msg1 = VoiceRecognition.getLastCommand();
  // 사용자가 먼저 "sms"라고 말하면 원거리 연락처로
  if (msg1.substring(0, 3) == "sms") {
    String msg1f = msg1.substring(3);
    SMS.send(phoneNum, msg1f);
    TextToSpeech.say("sms sent");
    delay(4000);
  }
  // 가까운 연락처
  else {
    if (msg1.length() > 16) {
      lcd.clear();
      lcd.setCursor(0, 0);
      for (int i = 0; i <= 16; i++) {
        lcd.print(msg1[i]);
      }
      lcd.setCursor(0, 1);
      for (int j = 16; j <= msg1.length() - 1; j++) {
        lcd.print(msg1[j]);
      }
    } else {
      lcd.clear();
      lcd.print(msg1);
    }
  }
}

이 부분에서 원거리 연락처와 가까운 연락처 두 가지 경우를 추가했습니다. 멀리 있는 연락처에게는 시각 장애인이 먼저 "SMS"라고 말해야 합니다. 그렇지 않으면 그냥 LCD에 표시됩니다. 또한 LCD 자체도 두 가지 경우가 있는데, 메시지가 16자보다 길면 두 번째 줄로 넘어가도록 알려줘야 합니다. 한 줄에 16자만 표시할 수 있기 때문입니다.


void MsgBuild(char pC) {
  i++;
  if (sent < 2) {
    if (pC == 'S') {
      sent += 1;
      msg += pC;
    } else {
      sent = 0;
      msg += pC;
    }
  } else if (sent = 3) {
    i = i - 3;
    msg.remove(i);
    msg.toLowerCase();
  }
}

이 부분은 조금 까다로우니 잘 따라오세요. 이 함수는 키보드가 사용될 때 호출됩니다. 이 함수는 기본적으로 두 가지 일을 합니다: 첫째, 키보드로 입력하는 모든 단일 문자를 가져와 나중에 보낼 메시지를 구성합니다. 둘째, 지금 메시지를 보낼지 확인합니다. 실드 키보드의 엔터 버튼을 제대로 사용할 수 없어서 대신 's' 버튼을 연속 3번 누르면 메시지를 보내도록 했습니다. 물론 다른 버튼으로 변경 가능합니다. 이전과 마찬가지로 원거리 연락처에게는 먼저 SMS를 입력해야 합니다.

나머지 코드는 자명합니다. 마음에 드셨기를 바라며 질문 있으시면 댓글 남겨주세요.

파일: BlindToDeaf.ino

회로도

1Sheeld와 아두이노로 시각/청각 장애인 간 소통 돕기

제조공정

  1. 아두이노-라즈베리파이 2 I2C 통합으로 IoT 센서 프로젝트 구현하기
  2. K30 CO2 센서: 실시간 실내 공기질 모니터링
  3. 스마트 저금통 만들기: 아두이노 나노로 동전 인식기 제어하기
  4. 아두이노 블루투스로 LED 제어하기 - HC-05 & MIT App Inventor 입문 가이드
  5. DFRobot 정전식 지문 인식 센서 아두이노/ESP8266 연동 가이드
  6. 아두이노 메가와 센서를 활용한 인터랙티브 넥시온 HMI 프로젝트
  7. 아두이노 메가 기반 닌텐도 눙크 컨트롤 6자유도 로봇 암 키트
  8. 아두이노 우노와 1Sheeld로 만드는 4x4x4 LED 큐브 – 인터랙티브 LED 프로젝트
  9. 파이썬 3로 아두이노 우노 제어하기 – 시리얼 통신 LED 제어 기초
  10. 아두이노 우노와 이더넷 실드로 정확한 태양광 복사량 측정하기