1SheeldとArduinoで盲ろう者のコミュニケーションを支援する
必要な部品と材料
- 1Sheeld × 1
- Arduino UNO × 1
- Adafruit 標準LCD 16×2(白文字/青背景) × 1
- 可変抵抗器 10kΩ × 1
プロジェクト概要
盲ろう者同士、または盲者とろう者の間のコミュニケーション問題を解決するプロジェクトです。盲者は「話す・聞く」、ろう者は「打つ・見る」が主な手段。これを技術で橋渡しします。
- 盲者 → ろう者:音声認識 → テキスト → LCD表示
- ろう者 → 盲者:キーボード入力 → テキスト → 音声合成
ステップ1:ハードウェアセットアップ




必要なもの:
- Arduino Uno(または互換機)
- LCD(今回は16×2)
- スマートフォン
- 可変抵抗器(10kΩ)
ステップ2:配線






1Sheeldを使うには、まず1SheeldサイトからライブラリをダウンロードしてArduino IDEに追加し、スマホに1Sheeldアプリをインストールします。Arduinoへのシールド取り付けとスケッチ書き込み手順は公式チュートリアルを参照。
LCD接続(標準的な4ビットモード):
- LCD RS → D12
- LCD Enable → D11
- LCD D4 → D5
- LCD D5 → D4
- LCD D6 → D3
- LCD D7 → D2
- LCD R/W → GND
- LCD VSS → GND
- LCD VCC → 5V
- 可変抵抗器両端 → 5VとGND、中間端子 → LCD VO (Pin 3)
通信フロー:
- 盲者 → ろう者:音声認識 → テキスト → 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 <OneSheeld.h>
#include <LiquidCrystal.h>
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);
}
// 盲者 → ろう者(近距離/遠距離)
if (VoiceRecognition.isNewCommandReceived()) {
String msg1 = VoiceRecognition.getLastCommand();
// 遠隔連絡先へSMS送信(「sms」で始まる発話)
if (msg1.substring(0, 3) == "sms") {
String msg1f = msg1.substring(3);
SMS.send(phoneNum, msg1f);
TextToSpeech.say("sms sent");
delay(4000);
}
// 近距離:LCD表示
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);
}
}
}
// キーボード入力処理(ろう者 → 盲者)
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();
}
}
MsgBuild関数はキーボード入力のたびに呼ばれ、メッセージを構築しながら「S」キー3回押しで送信トリガーとして検出します(Enterキーがうまく使えなかったため)。遠隔送信時は先頭に「sms」を付けます。LCDは16文字×2行なので、長文は自動で2行目へ折り返します。
残りのコードは自明です。ご質問はコメント欄へ。
BlindToDeaf.ino(完全版スケッチファイル)
回路図

製造プロセス
- ArduinoとRaspberry Pi 2のI2C連携でIoTセンサープロジェクトを実現
- K30 CO2センサで室内空気質をリアルタイム監視する
- スマート貯金箱を作ろう:Arduino Nanoでコインアクセプターを制御
- ArduinoでBluetooth経由でLEDを制御 – シンプルDIYガイド
- DFRobot静電容量式指紋センサーをArduino/ESP8266で使う – 登録・認証・削除の完全ガイド
- Arduino MegaとNextion HMIで作る高機能ウェザーステーション
- Arduinoベースのヌンチャク操作6自由度ロボットアームキット
- Arduino Unoと1Sheeldで作る4x4x4 LEDキューブ – インタラクティブLEDプロジェクト
- Python 3からArduino UNOを制御 – シリアル通信でLED点滅デモ
- Arduino UNOとEthernetシールドで太陽放射を測定する自作ピラノメーター
- コンパクトなArduinoレーダーシステム – HC-SR04超音波センサー & 1.8インチST7735ディスプレイ搭載