В результате общения с преподавателями из челябинской коррекционной школы №127 для незрячих и слабовидящих детей, мы – сообщество forblind.org – узнали, что для ускорения процесса обучения детей азбуке Брайля было бы полезно создать устройство, способное, на сколько это возможно, заменить преподавателя и позволить ребёнку обучаться самостоятельно, в том числе вне школы. Мы поставили перед собой задачу из доступных и недорогих комплектующих реализовать устройство, которое позволит формировать и озвучивать один символ алфавита Брайля, поддерживая несколько языков и групп символов.
Шрифт Брайля – это система тактильного чтения для незрячих, в которой символы представляются в виде рельефных точек (выпуклостей), помещённых в специальную ячейку. В каждой ячейке для размещения точек предусмотрено шесть пронумерованных позиций, расположенных в ячейках матрицы 3х2. Существуют также восьмиточечные символы Брайля, которые в основном используются в дисплеях Брайля при работе с ПК.
Алфавит Брайля символам естественного для человека (или в общем случае любого другого) языка сопоставляет символы Брайля. Освоив алфавит Брайля, слепые и слабовидящие могут достаточно быстро читать не только художественную, но и специальную литературу, содержащую ноты, математические или любые другие общепринятые символы.
На освоение шрифта Брайля незрячим детям в специализированных учебных заведениях выделяется ограниченное количество часов. Преподавателей шрифта Брайля не много, а каждому ребёнку нужны индивидуальные занятия. Таким образом, было бы полезным разработать устройство, предназначенное для ускорения и упрощения процесса изучения азбуки Брайля, позволяющее вводить один символ Брайля и воспроизводить его через динамик или наушники.
В первом приближении задача разбивается на две основные: организацию тактильного ввода символа Брайля и его озвучивание.
За основу мы взяли модульный принцип: все основные узлы берутся в виде готовых функциональных модулей. Объёмный монтаж, минимум пайки, доступность компонентов, открытые схемы и исходные коды – всё это позволяет быстро и недорого воспроизвести устройство любому человеку, имеющему минимальные познания в электронике и навыки пайки.
В качестве платы управления мы традиционно используем Arduino Pro Mini – достаточно компактное решение для подобных несложных устройств.
Электрическая принципиальная схема разработанного устройства представлена ниже.
Механизм ввода символов Брайля
Первое, что мне пришло в голову при реализации механизма ввода символа Брайля – использовать кнопки с фиксацией: нажата – нет точки, отжата – есть точка. Пробный макет такого устройства изображён на рисунке:
Разумеется, такой способ имеет право на существование, только у него есть два недостатка. Во-первых, как было обнаружено в процессе апробации идеи, кнопки даже в нажатом состоянии немного выступают над полем ввода, что затрудняет тактильное восприятие. Во-вторых, такая реализация не имитирует реальное написание брайлевских символов на специальной бумаге, когда точки выдавливаются с обратной стороны листа, как в детском сочинении представленном ниже.
Конечно, можно «утопить» кнопки так, чтобы они не выступали за пределы поля, но в этом случае нажать и зафиксировать их пальцем будет практически невозможно, т.к. для срабатывания защёлки нужно дать кнопке больший ход, чем её положение фиксации. Перспектива использования специального грифеля для работы с утопленными в корпус кнопками нас не устроила.
Недолго думая, мы решили сделать кнопки сквозными, по принципу «туда-сюда»: нажал с одной стороны – вылезло с другой. В качестве переключающих элементов взяли тумблеры, расположили их бочком в два ряда, приделали к каждому шток и собрали в корпус, нарезанный из ПВХ. Получившееся устройство ввода полностью имитирует используемый незрячими способ написания брайлевских символов на специальной бумаге. Так мы получили первый прототип устройства:
Звуковое воспроизведение
Заставить Arduino воспроизводить аудио-файлы можно, например, посредством ШИМ. Даже есть ардуино-подобная плата «Carduino», имеющая транзистор с открытым коллектором на пине D11 для непосредственного подключения динамика. Основной проблемой при использовании «Carduino» является то, что воспроизводимые фрагменты звуков в формате *.wav необходимо сначала специальным конвертером преобразовывать в заголовочные файлы *.h, подключаемые к проекту, а затем при прошивке записывать непосредственно в память микроконтроллера, объём которой и без того не велик. Как вариант, можно было бы попробовать читать и воспроизводить файлы с SD-карты. Мы же решили не изобретать велосипед, а поискать готовое решение, которым и стал модуль WTV020-SD, позволяющий воспроизводить wav-файлы.
WTV020-SD является полностью готовом к использованию решением с низкой стоимостью и компактными размерами (22 х 19 мм). К преимуществам WTV020-SD можно также отнести простую схему включения, возможность управления воспроизведением по последовательному интерфейсу и удобную смену набора звуковых файлов заменой или перезаписью карты памяти.
Для работы WTV020-SD необходимо обеспечить напряжение питания 2,5-3,6 В. Модуль воспроизводит файлы форматов *.wav и *.ad4 с microSD или SPI-flash карт памяти, поддерживая до 512 различных файлов на карте памяти. Управление воспроизведением треков осуществляется с помощью кнопок “Воспроизведение/Пауза”, “Стоп”, “Следующий”, “Предыдущий”, “Громкость +”, “Громкость-” и по последовательному интерфейсу командами “Воспроизведение/Пауза” (с указанием адреса файла в интервале 0..511), “Стоп”, “Громкость +”, “Громкость-”.
Для вывода звука в модуле WTV020-SD используется ШИМ-выход с прямым подключением динамика с выходной мощностью 0.25/0.5Вт и ЦАП-выход для подключения внешнего усилителя.
Подводные камни при работе с модулем WTV020-SD
1. Носители информации
Хотя в даташите на WTV020-SD заявлено, что микросхема поддерживает карты памяти емкостью до 1 Гб, на самом же деле, как выяснилось, WTV020-SD может прекрасно работать с картами памяти и на 2 Гб, а может не запуститься с 512-мегабайтной картой памяти. Не подозревая об этом, в придачу к модулям WTV020-SD на AliExpress были заказаны 10 карт памяти на 128 Мб. Не заработала ни одна.
В итоге нам пришлось наудачу покупать карты разных производителей, обивая пороги привокзальных ларьков по продаже б/у телефонов в надежде, что хотя бы одна купленная карта памяти заработает. Из 10-ти карт, полученных вполцены у друзей, из разных ларьков, ремонтных мастерских, получилось запустить только половину. В добавок ко всему, в процессе экспериментирования с режимами работы WTV020-SD несколько карт памяти были испорчены.
Причины такой избирательности установлены не были.
2. Файловая система
Модуль работает только с картами памяти, отформатированными в FAT16, вне зависимости от их ёмкости.
3. Формат файлов
WTV020-SD поддерживает на все wav-файлы. Прежде чем записывать файлы на карту памяти, необходимо убедиться, что они проходят по разрядности (битрейту) и частоте дискретизации (семплрейту). В даташите заявлено, что для wav-файлов частота дискретизации должна быть в пределах от 6 до 16 кГц.
Файлы подходящего формата мы пробовали получить с помощью двух программ AIMP Audio Recorder (при записи непосредственно из аудиопотока) и Audacity (посредством конвертации имеющихся файлов).
Экспериментальным путём было выявлено, что wav-файлы должны иметь следующие атрибуты: 11025 Гц, 16 bit, моно, PCM.
Качество воспроизведения *.wav нас вполне устроило, поэтому мы не стали разбираться с конвертацией в формат *.ad4, хотя использование *.ad4 и могло бы улучшить качество воспроизведения (увеличить частоту дискретизации до 36 кГц).
Адресное пространство модуля позволяет работать с 512-ю файлами, которые должны иметь имена от 0000 до 0511. Присутствие на накопителе сторонних файлов не влияет на работу модуля с целевыми файлами.
4. Питание модуля.
На верхней стороне платы WTV020-SD есть перемычка-переключатель питания 5 – 3,3 В, замкнутая жирной каплей припоя на 3,3 В.
При переброске перемычки с 3,3 на 5 В модуль не будет работать, хотя и не выйдет из строя. По крайней мере, так было в модулях, которые достались нам. Скорее всего, в модуле предполагалось использование стабилизатора на 3,3 В при питании от 5 В, о чём может свидетельствовать пустое посадочное место на обратной стороне модуля, на котором как раз может располагаться такой стабилизатор.
Таким образом, для обеспечения питания модуля необходимо либо задействовать дополнительный стабилизатор на 3,3 В, как это сделано в нашем проекте, либо воспользоваться выходом 3,3 В при использовании Arduino Nano вместо Arduino Pro Mini.
Поскольку цифровые линии WTV020-SD толерантны к пятивольтовым сигналам, можно не выполнять их согласование по уровням с Arduino.
5. Управление по последовательному интерфейсу
Для управления модулем по последовательному интерфейсу достаточно использовать две линии связи – DATA (линия данных) и CLK (синхроимпульсы). Синхронизация процесса обмена данными с модулем выполняется по фронту. Также можно задействовать вход RESET (сброс) и выход BUSY (прижат к земле, пока идёт воспроизведение).
Для работы в среде Arduino IDE существуют готовые библиотеки, но мы их использовать не стали. Сторонняя библиотека – это всегда чёрный ящик. Никогда не знаешь, как её реализовали, какую периферию задействовали. Разбираться в ней мы не стали, а иметь в проекте неуправляемый кусок кода – чревато конфликтами при использовании одной и той же периферии (например, таймеров).
Собственно, сама посылка данных в WTV020-SD представляет собой последовательность из 16 бит, которая в двоичном формате передаёт номер файла воспроизведения (0 – 511 или 0x00 — 0x200) или команду (0xFFF0 – 0xFFF7 — громкость, 0xFFFE — воспроизведение/пауза, 0xFFFF — стоп).
Модуль чувствителен к таймингам, указанным на временной диаграмме.
Допускается незначительное отклонение таймингов от рекомендуемых значений. В случае сильного изменения таймингов как в большую, так и в меньшую сторону модуль перестаёт реагировать на посылки данных.
Сброс перед отправкой посылки данных, как показано на диаграмме, делать не обязательно. Можно слать посылки подряд. Если модуль принял номер файла, а воспроизведение предыдущего файла не закончено, то модуль прервёт текущее воспроизведение и приступит к воспроизведению нового файла. Отслеживать завершение воспроизведения запущенного файла можно по линии BUSY.
Для отправки посылок данных нами была написана небольшая функция, работающая в прерывании таймера, в которую передаётся десятичное число – адрес файла или команда.
Получение звуковых файлов и мультиязычность
После того, как мы запаслись несколькими работающими картами памяти и разобрались с форматом файлов и управлением модулем, перед нами встала задача записи библиотеки звуков.
Для качественной записи звуков необходима хорошая дикция и недешёвая звуковая карта. Таких ресурсов у нас не нашлось, поэтому мы решили воспользоваться синтезатором речи, предоставляемым сервисом Google Translate. Для автоматизации процесса записи нами был написан скрипт, преобразующий текстовый файл с набором букв/слов/фраз в набор wav-файлов, озвучивающих требуемые слова и буквы. В итоге нам не только удалось сэкономить время на запись русских букв, но и не привлекая переводчиков и носителей языка, сделать устройство мультиязычным.
Для выбора языка сделали отдельную кнопку, при нажатии на которую языки циклично перебираются, а их названия воспроизводятся.
Несмотря на то, что на сегодняшний день, благодаря Google Translate, нам доступны порядка 40 языков, вместить на одну карту памяти больше, чем 5-8 языков, не получится в связи с ограничением модуля на работу с файлами. Собственно, этого и не нужно.
Азбука Брайля во всех языках состоит из одних и тех же комбинаций точек, однако не всегда одна и та же буква в разных языках имеет одинаковое точечное представление, хотя в большинстве случаев это и справедливо. Кроме того есть буквы свойственные только тому или иному языку. Полное совпадение наблюдается только в цифрах, в математических и в большинстве пунктуационных знаках.
В азбуке Брайля есть ещё одна особенность – один и тот же брайлевский символ может обозначать разные: букву, символ, цифру или знак, в зависимости от предшествующего символа.
Для учёта специальных префиксов в нашей односимвольной клавиатуре изначально мы реализовали сохранение предыдущего символа. Каждый введённый символ озвучивался с учётом предыдущего, что оказалось не очень удобным, и мы решили добавить ещё одну кнопку, в каком-то роде аналог клавиши «Shift» на компьютерной клавиатуре. Работает кнопка смены режимов по тому же принципу, что и кнопка переключения языков, циклично перебирая три режима: алфавит, цифры и мат. символы, знаки пунктуации. Установка нового режима сопровождается озвучиванием его названия на текущем языке.
Для первого прототипа мы заготовили библиотеку из трёх языков: русский, английский, немецкий. Алфавиты, цифры, математические знаки и знаки препинания этих трёх языков заняли около 200 файлов, при том, что были задействованы только самые основные символы математики и пунктуации.
Заключение
В результате у нас получилось устройство, имеющее поле ввода из шести точек, три кнопки управления «Воспроизвести», «Язык», «Режим» и кнопку включения. При изменении состояния точки её номер озвучивается на выбранном языке. При нажатии кнопку «Воспроизвести» производится сопоставление кода шеститочечного брайлевского символа с буквой на выбранном языке. Если буква найдена, устройство воспроизводит её через выход наушников. В случае отсутствия буквы в выбранном алфавите устройство производит звуковое оповещение сигналом «бииип».
В последней реализации мы постарались максимально уменьшить габариты устройства, оснастили его литий-ионным аккумулятором и модулем для зарядки с разъёмом micro-usb, а также устранили все замечания, полученные от преподавателей коррекционной школы для незрячих и слабовидящих: добавили скошенный угол, сделали обрамление для брайлевской ячейки, заменили большие прямоугольные кнопки в брайлевской ячейке кнопками в виде рельефных точек. Единственной нашей недоработкой является то, что на данный момент мы не подобрали удобного корпуса для устройства.
При изготовлении второго прототипа были использованы следующие компоненты:
- Плата управления Adruino Pro Mini.
- Звуковой модуль WTV020-SD.
- Аккумуляторная батарея 3.7 V 300 mAh.
- Модуль повышающего DC/DC преобразователя 0.9V ~ 5V to 5V 600 mA.
- Модуль зарядки Li-Ion 5V to V 1 A.
- Зарядное устройство 220 — 5V LA-520W.
- Микросхема линейного стабилизатора LM317.
- Кнопка PB-22E60.
- Кнопки тактовые (3 шт.).
- Переключатели движковые 2х-позиционные или тумблеры (6 шт.).
- Универсальная макетная плата S7NF.
- Разъём Audio-jack 3,5 для подключения наушников.
- Наушники или динамик.
- Резисторы (5 шт.).
В разобранном виде второй прототип устройства выглядит следующим образом:
На текущий момент мы не стали доводить разработку устройства до логического конца, поскольку, по мнению преподавателей коррекционной школы, гораздо более востребованным устройством был бы дисплей Брайля. Надеюсь, в будущем мы представим вашему вниманию подобное устройство.
Напоследок приводим ссылку на исходный код для Arduino и набор звуков для WTV020-SD; фотографию, иллюстрирующую все этапы разработки, и видеозаписи, демонстрирующие работу с созданными нами прототипами.
Смотрите также: Бюджетное устройство на базе Arduino для незрячих (open hardware) .
Комментарии (20)
urock
25.06.2015 13:02Очень правильная деятельность, реальное и очень нужное применение электроники. Я сейчас столкнулся с похожей проблемой. Мой будущий студент по программированию хочет реализовать на ПЛИС устройство преобразования двумерной картинки в звуковой сигнал. Из картинки выделяется контур, далее идет обход контура, координата y которого преобразуется в высоту (частоту) звука, а координата х — в соотношение амплитуд правого и левого каналов выходного звука.
Нет у коллег готовых источников информации по этой теме, может примеры уже реализованных устройств? В гугле я еще не смотрел по этой теме, но плиз туда не отправлять)munirov Автор
25.06.2015 13:16+1Думал о подобном устройстве, до реализации пока не дошло. По-моему где-то встречал подобное, но сейчас уже не вспомню. Может вместо ПЛИС сделать всё программно на ПК? Так быстрее сможете проверить свою идею.
Интересное видео на эту тему: www.youtube.com/watch?v=lmYyhuN0S2curock
26.06.2015 09:28Да, ясно, что сначала надо реализовать алгоритм программно. ПЛИС тут может использоваться для повышения быстродействия, например, чтобы быстро обрабатывать входную картинку (выделять контуры и тд).
Видео воодушевляет!
Tseikovets
27.06.2015 02:22Сама идея представления графика сигналом, изменяющим баланс по левому и правому каналу для x и высоту для y много где используется. Одним из наиболее впечатляющих является набор учебно-научной аппаратуры вот от этих ребят.
Но в какой-нибудь NVDA так вообще просто озвучивают курсор мыши.
Ну а вашему студенту я бы рекомендовал пилить не устройство, а библиотеку. Тогда бы её можно было бы встраивать туда, куда нужно, например, в программы чтения экрана, мобильные приложения, использующие обычную камеру смартфона и пр.
Вообще же что-то подобное уже много лет сделано в рамках вот этого проекта, правда конечная цель у них немного другая.
munirov Автор
07.07.2015 12:20Вот подобный проект: boomstarter.ru/projects/trapeznikovip/zvukovoe_zrenie_voice
progchip666
25.06.2015 15:39Решение интересное, но меня вот какой вопрос мучает, не устарела ли сама идея шрифтов Бройля. В наш век гораздо проще реализовать аудиокнигу и голосовое управление. Сам я пока зрячий, поэтому вопрос чисто теоретический, возможно слепым и тем кто с ними работает известны аспекты которые делают необходимыми книги на их основе.
Ну и ещё замечу что ардуино не лучшая платформа на мой взгляд для подобной задачи — пришлось сильно извращаться с проблемами озвучки да и качество воспроизведения в результате судя по всему получилось явно невысоким. Хотя с учётом того что это только прототип ничего страшного нет, если дело дойдёт до реального устройства можно перейти на более подходящую элементную базу.ProRunner
25.06.2015 23:27По поводу устаревания Брайля можно спросить у lavkasnov
lavkasnov
26.06.2015 00:26Про брайль — это лучше не ко мне: не умею и не пользуюсь. Почти лет 20 назад как то выучил брайль, вобщем то несложная штука, но вот лично для меня нащупывание этих точек, складывание их в букву, а потом в слово, после чего не забыть общий смысл оказалось выше моих сил… Знаю, что слепые дети легко пользуются и очень быстро читают по брайлю.
munirov Автор
26.06.2015 06:59Брайль входит в обязательную школьную программу для незрячих детей. Реально пользуются им в жизни около 10% незрячих.
Tseikovets
27.06.2015 02:29Ну только надо уточнить, что 10% — это из всех незрячих, среди которых большинство поздно ослепших. Из тех, кто учил Брайлй с детства, например, вследствие обучения в коррекционной школе, распространённость его намного выше.
Grox
26.06.2015 23:06Не устарел. Недавно читал статью ослепшей женщины. Ситуация в США. Она писала, что учат по 6 месяцев 1й этап. Что ей сказали, что после 30 очень сложно выучить. Ей только это было и нужно, за пару месяцев с личным репетитором она подготовилась ко второму этапу, который почти никто не изучает. А затем потребовалось очень много практики. Теперь она бегло читает и у неё всегда с собой мини брайлевский дисплей на 16-20 символов. Эти дисплеи имеют память и служат в том числе, как электронные книги, а также, позволяют делать заметки и работать в паре со смартфонами и компьютерами.
Одно из предназначений этого шрифта в том, чтобы дать возможность слепым переписываться, как это делают зрячие. Далеко не всегда можно использовать голос. В её примерах, она пользуется своим дисплеем, в опере и других местах, где шумно, не место, или совсем не приватно, чтобы использовать голос.
Tseikovets
27.06.2015 02:27Есть ситуации, а также типы контента, когда Брайль до сих пор остаётся преимущественной технологией. Например, при обучении незрячих детей математики или при работе незрячего звукорежиссёра. Про людей с одновременными нарушениями зрения и слуха, думаю, всё итак понятно.
Tseikovets
27.06.2015 02:34На текущий момент мы не стали доводить разработку устройства до логического конца, поскольку, по мнению преподавателей коррекционной школы, гораздо более востребованным устройством был бы дисплей Брайля. Надеюсь, в будущем мы представим вашему вниманию подобное устройство.
Вряд ли получится на коленке собрать качественную ячейку брайлевского дисплея, так что придётся заказывать готовый компонент. Несколько лет назад одна 8-точечная ячейка стоила у поставщика 20 долларов. Так что сразу готовьтесь к существенному росту бюджета проекта.munirov Автор
28.06.2015 16:32Подскажите, пожалуйста, где можно купить готовый компонент ячейки?
Tseikovets
28.06.2015 18:58+1Например, у германского производителя Metec AG. 20 долларов было именно него, хотя сейчас что-то могло и измениться, но вряд ли, так как рынок крайне консервативен и монополизирован.
Большинство производителей готовых брайлевских дисплеев закупают ячейки на стороне, а от себя добавляют только корпуса, управляющие элементы и электронную начинку. Ячейки производит буквально несколько компаний, от которых они уже расходятся по существенно большему числу производителей непосредственно готовых дисплеев.
Но это ещё не конец, потому что если речь идёт о полноценном брайлевском дисплее, который предполагается использовать совместно с программами экранного доступа, то дальше производитель дисплея должен разработать драйвера для своих дисплеев, реализующих взаимодействие с основными программами экранного доступа. Программ экранного доступа в мире не одна и не две, и с каждым разработчиком есть своя специфика.
Например, с теми же Apple, чтобы включить драйвера для своих дисплеев в поставку OS X и iOS, вряд ли нужны будут деньги, но будет много согласований, а мелкого производителя возможно вообще пошлют. Ну а вот у Freedom Scientific, американского разработчика самой распространённой программы экранного доступа для Windows, есть коммерческая система сертифицирования брайлевских дисплеев. То есть надо заплатить некоторое количество тысяч баксов, чтобы вас сертифицировали как производителя дисплея и добавили ваш драйвер в поставку JAWS.
Впрочем, если стоит задача разработать брайлевский дисплей для каких-то очень локальных задач, типа того же тренажёра, то сертифицироваться не обязательно. Но подобная вещь в себе, без возможности её использования как подключаемого к программам экранного доступа дисплея, будет нишей внутри ниши.
Правда если дисплей получится более-менее конкурентоспособным, но при этом относительно дешёвым, то для начала можно позиционировать его как бюджетное решение для развивающихся рынков и задружить только с open source программой экранного доступа NVDA, которая является второй по распространённости. Тогда можно будет откусить свой кусочек рынка, а уже потом возможно реинвестировать прибыль в более широкую сертификацию, но всё это если настрой серьёзный и на года.
Сейчас всё чаще заводятся разговоры касательно новых технологий производства брайлевских дисплеев, то на микроприводах, то на жидком металле, то ещё на чём-нибудь, но пьезокристаллы пока что остаются единственной промышленной технологией, а всё остальное на уровне каких-то туманных прототипов, о которых в основном просто выпускаются пресс-релизы.
serafims
Отличное решение! Получается, шрифт Брайля — некоторое подобие UTF-8, когда есть управляющие символы…
munirov Автор
Спасибо! Можно и так сказать.