Электронный учитель для незрячих на Arduino

В результате общения с преподавателями из челябинской коррекционной школы №127 для незрячих и слабовидящих детей, мы – сообщество forblind.org – узнали, что для ускорения процесса обучения детей азбуке Брайля было бы полезно создать устройство, способное, на сколько это возможно, заменить преподавателя и позволить ребёнку обучаться самостоятельно, в том числе вне школы. Мы поставили перед собой задачу из доступных и недорогих комплектующих реализовать устройство, которое позволит формировать и озвучивать один символ алфавита Брайля, поддерживая несколько языков и групп символов.

Шрифт Брайля – это система тактильного чтения для незрячих, в которой символы представляются в виде рельефных точек (выпуклостей), помещённых в специальную ячейку. В каждой ячейке для размещения точек предусмотрено шесть пронумерованных позиций, расположенных в ячейках матрицы 3х2. Существуют также восьмиточечные символы Брайля, которые в основном используются в дисплеях Брайля при работе с ПК.

image09

Алфавит Брайля символам естественного для человека (или в общем случае любого другого) языка сопоставляет символы Брайля. Освоив алфавит Брайля, слепые и слабовидящие могут достаточно быстро читать не только художественную, но и специальную литературу, содержащую ноты, математические или любые другие общепринятые символы.

На освоение шрифта Брайля незрячим детям в специализированных учебных заведениях выделяется ограниченное количество часов. Преподавателей шрифта Брайля не много, а каждому ребёнку нужны индивидуальные занятия. Таким образом, было бы полезным разработать устройство, предназначенное для ускорения и упрощения процесса изучения азбуки Брайля, позволяющее вводить один символ Брайля и воспроизводить его через динамик или наушники.

В первом приближении задача разбивается на две основные: организацию тактильного ввода символа Брайля и его озвучивание.

За основу мы взяли модульный принцип: все основные узлы берутся в виде готовых функциональных модулей. Объёмный монтаж, минимум пайки, доступность компонентов, открытые схемы и исходные коды – всё это позволяет быстро и недорого воспроизвести устройство любому человеку, имеющему минимальные познания в электронике и навыки пайки.

В качестве платы управления мы традиционно используем Arduino Pro Mini – достаточно компактное решение для подобных несложных устройств.

Электрическая принципиальная схема разработанного устройства представлена ниже.

image03

Механизм ввода символов Брайля

Первое, что мне пришло в голову при реализации механизма ввода символа Брайля – использовать кнопки с фиксацией: нажата – нет точки, отжата – есть точка. Пробный макет такого устройства изображён на рисунке:

image07

Разумеется, такой способ имеет право на существование, только у него есть два недостатка. Во-первых, как было обнаружено в процессе апробации идеи, кнопки даже в нажатом состоянии немного выступают над полем ввода, что затрудняет тактильное восприятие. Во-вторых, такая реализация не имитирует реальное написание брайлевских символов на специальной бумаге, когда точки выдавливаются с обратной стороны листа, как в детском сочинении представленном ниже.

image04

Конечно, можно «утопить» кнопки так, чтобы они не выступали за пределы поля, но в этом случае нажать и зафиксировать их пальцем будет практически невозможно, т.к. для срабатывания защёлки нужно дать кнопке больший ход, чем её положение фиксации. Перспектива использования специального грифеля для работы с утопленными в корпус кнопками нас не устроила.

Недолго думая, мы решили сделать кнопки сквозными, по принципу «туда-сюда»: нажал с одной стороны – вылезло с другой. В качестве переключающих элементов взяли тумблеры, расположили их бочком в два ряда, приделали к каждому шток и собрали в корпус, нарезанный из ПВХ. Получившееся устройство ввода полностью имитирует используемый незрячими способ написания брайлевских символов на специальной бумаге. Так мы получили первый прототип устройства:

image02

Звуковое воспроизведение

Заставить 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), “Стоп”, “Громкость +”, “Громкость-”.

image01

Для вывода звука в модуле WTV020-SD используется ШИМ-выход с прямым подключением динамика с выходной мощностью 0.25/0.5Вт и ЦАП-выход для подключения внешнего усилителя.

 

Подводные камни при работе с модулем WTV020-SD

  1. Носители информации

Хотя в даташите на WTV020-SD заявлено, что микросхема поддерживает карты памяти емкостью до 1 Гб, на самом же деле, как выяснилось, WTV020-SD может прекрасно работать с картами памяти и на 2 Гб, а может не запуститься с 512-мегабайтной картой памяти. Не подозревая об этом, в придачу к модулям WTV020-SD на AliExpress были заказаны 10 карт памяти на 128 Мб. Не заработала ни одна.

В итоге нам пришлось наудачу покупать карты разных производителей, обивая пороги привокзальных ларьков по продаже б/у телефонов в надежде, что хотя бы одна купленная карта памяти заработает. Из 10-ти карт, полученных вполцены у друзей, из разных ларьков, ремонтных мастерских, получилось запустить только половину. В добавок ко всему, в процессе экспериментирования с режимами работы WTV020-SD несколько карт памяти были испорчены.

Причины такой избирательности установлены не были.

 

  1. Файловая система

Модуль работает только с картами памяти, отформатированными в FAT16, вне зависимости от их ёмкости.

 

  1. Формат файлов

WTV020-SD поддерживает на все wav-файлы. Прежде чем записывать файлы на карту памяти, необходимо убедиться, что они проходят по разрядности (битрейту) и частоте дискретизации (семплрейту). В даташите заявлено, что для wav-файлов частота дискретизации должна быть в пределах от 6 до 16 кГц.

Файлы подходящего формата мы пробовали получить с помощью двух программ AIMP Audio Recorder (при записи непосредственно из аудиопотока) и Audacity (посредством конвертации имеющихся файлов).

Экспериментальным путём было выявлено, что wav-файлы должны иметь следующие атрибуты: 11025 Гц, 16 bit, моно, PCM.

Качество воспроизведения *.wav нас вполне устроило, поэтому мы не стали разбираться с конвертацией в формат *.ad4, хотя использование *.ad4 и могло бы улучшить качество воспроизведения (увеличить частоту дискретизации до 36 кГц).

Адресное пространство модуля позволяет работать с 512-ю файлами, которые должны иметь имена от 0000 до 0511. Присутствие на накопителе сторонних файлов не влияет на работу модуля с целевыми файлами.

  1. Питание модуля.

На верхней стороне платы WTV020-SD есть перемычка-переключатель питания 5 – 3,3 В, замкнутая жирной каплей припоя на 3,3 В.

image11

При переброске перемычки с 3,3 на 5 В модуль не будет работать, хотя и не выйдет из строя. По крайней мере, так было в модулях, которые достались нам. Скорее всего, в модуле предполагалось использование стабилизатора на 3,3 В при питании от 5 В, о чём может свидетельствовать пустое посадочное место на обратной стороне модуля, на котором как раз может располагаться такой стабилизатор.

image08

Таким образом, для обеспечения питания модуля необходимо либо задействовать дополнительный стабилизатор на 3,3 В, как это сделано в нашем проекте, либо воспользоваться выходом 3,3 В при использовании Arduino Nano вместо Arduino Pro Mini.

Поскольку цифровые линии WTV020-SD толерантны к пятивольтовым сигналам, можно не выполнять их согласование по уровням с Arduino.

  1. Управление по последовательному интерфейсу

Для управления модулем по последовательному интерфейсу достаточно использовать две линии связи – DATA (линия данных) и CLK (синхроимпульсы). Синхронизация процесса обмена данными с модулем выполняется по фронту. Также можно задействовать вход RESET (сброс) и выход  BUSY (прижат к земле, пока идёт воспроизведение).

Для работы в среде Arduino IDE существуют готовые библиотеки, но мы их использовать не стали. Сторонняя библиотека – это всегда чёрный ящик. Никогда не знаешь, как её реализовали, какую периферию задействовали. Разбираться в ней мы не стали, а иметь в проекте неуправляемый кусок кода – чревато конфликтами при использовании одной и той же периферии (например, таймеров).

Собственно, сама посылка данных в WTV020-SD представляет собой последовательность из 16 бит, которая в двоичном формате передаёт номер файла воспроизведения (0 – 511 или 0x00 — 0x200) или команду (0xFFF0 – 0xFFF7 — громкость, 0xFFFE — воспроизведение/пауза, 0xFFFF — стоп).

Модуль чувствителен к таймингам, указанным на временной диаграмме.

image12

Допускается незначительное отклонение таймингов от рекомендуемых значений. В случае сильного изменения таймингов как в большую, так и в меньшую сторону модуль перестаёт реагировать на посылки данных.

Сброс перед отправкой посылки данных, как показано на диаграмме, делать не обязательно. Можно слать посылки подряд. Если модуль принял номер файла, а воспроизведение предыдущего файла не закончено, то модуль прервёт текущее воспроизведение и приступит к воспроизведению нового файла. Отслеживать завершение воспроизведения запущенного файла можно по линии BUSY.

Для отправки посылок данных нами была написана небольшая функция, работающая в прерывании таймера, в которую передаётся десятичное число – адрес файла или команда.

 

Получение звуковых файлов и мультиязычность

 

После того, как мы запаслись несколькими работающими картами памяти и разобрались с форматом файлов и управлением модулем, перед нами встала задача  записи библиотеки звуков.

Для качественной записи звуков необходима хорошая дикция и недешёвая звуковая карта. Таких ресурсов у нас не нашлось, поэтому мы решили воспользоваться синтезатором речи, предоставляемым сервисом Google Translate. Для автоматизации процесса записи нами был написан скрипт, преобразующий текстовый файл с набором букв/слов/фраз в набор wav-файлов, озвучивающих требуемые слова и буквы. В итоге нам не только удалось сэкономить время на запись русских букв, но и не привлекая переводчиков и носителей языка, сделать устройство мультиязычным.

Для выбора языка сделали отдельную кнопку, при нажатии на которую языки циклично перебираются, а их названия воспроизводятся.

Несмотря на то, что на сегодняшний день, благодаря Google Translate, нам доступны порядка 40 языков, вместить на одну карту памяти больше, чем 5-8 языков, не получится в связи с ограничением модуля на работу с файлами. Собственно, этого и не нужно.

Азбука Брайля во всех языках состоит из одних и тех же комбинаций точек, однако не всегда одна и та же буква в разных языках имеет одинаковое точечное представление, хотя в большинстве случаев это и справедливо. Кроме того есть буквы свойственные только тому или иному языку. Полное совпадение наблюдается только в цифрах, в математических и в большинстве пунктуационных знаках.

В азбуке Брайля есть ещё одна особенность – один и тот же брайлевский символ может обозначать разные: букву, символ, цифру или знак, в зависимости от предшествующего символа.

Для учёта специальных префиксов в нашей односимвольной клавиатуре изначально мы реализовали сохранение предыдущего символа. Каждый введённый символ озвучивался с учётом предыдущего, что оказалось не очень удобным, и мы решили добавить ещё одну кнопку, в каком-то роде аналог клавиши «Shift» на компьютерной клавиатуре. Работает кнопка смены режимов по тому же принципу, что и кнопка переключения языков, циклично перебирая три режима: алфавит, цифры и мат. символы, знаки пунктуации. Установка нового режима сопровождается озвучиванием его названия на текущем языке.

Для первого прототипа мы заготовили библиотеку из трёх языков: русский, английский, немецкий. Алфавиты, цифры, математические знаки и знаки препинания этих трёх языков заняли около 200 файлов, при том, что были задействованы только самые основные символы математики и пунктуации.

Заключение

В результате у нас получилось устройство, имеющее поле ввода из шести точек, три кнопки управления «Воспроизвести», «Язык», «Режим» и кнопку включения. При изменении состояния точки её номер озвучивается на выбранном языке. При нажатии кнопку «Воспроизвести» производится сопоставление кода шеститочечного брайлевского символа с буквой на выбранном языке. Если буква найдена, устройство воспроизводит её через выход наушников. В случае отсутствия буквы в выбранном алфавите устройство производит звуковое оповещение сигналом «бииип».

image10

В последней реализации мы постарались максимально уменьшить габариты устройства, оснастили его литий-ионным аккумулятором и модулем для зарядки с разъёмом micro-usb, а также устранили все замечания, полученные от преподавателей коррекционной школы для незрячих и слабовидящих:  добавили скошенный угол, сделали обрамление для брайлевской ячейки, заменили большие прямоугольные кнопки в брайлевской ячейке кнопками в виде рельефных точек. Единственной нашей недоработкой является то, что на данный момент мы не подобрали удобного корпуса для устройства.

При изготовлении второго прототипа были использованы следующие компоненты:

  1. Плата управления Adruino Pro Mini.
  2. Звуковой модуль WTV020-SD.
  3. Аккумуляторная батарея 3.7 V 300 mAh.
  4. Модуль повышающего DC/DC преобразователя 0.9V ~ 5V to 5V 600 mA.
  5. Модуль зарядки Li-Ion 5V to 4,2 V 1 A.
  6. Зарядное устройство 220 — 5V LA-520W.
  7. Микросхема линейного стабилизатора LM317.
  8. Кнопка PB-22E60.
  9. Кнопки тактовые (3 шт.).
  10. Переключатели движковые 2х-позиционные или тумблеры (6 шт.)
  11. Универсальная макетная плата S7NF.
  12. Разъём Audio-jack 3,5 для подключения наушников.
  13. Наушники или динамик.
  14. Резисторы 2 шт.

 

В разобранном виде второй прототип устройства выглядит следующим образом:

image00

На текущий момент мы не стали доводить разработку устройства до логического конца, поскольку, по мнению преподавателей коррекционной школы, гораздо более востребованным устройством был бы дисплей Брайля. Надеюсь, в будущем мы представим вашему вниманию подобное устройство.

Напоследок приводим ссылку{ссылка} на исходный код для Arduino и набор звуков для WTV020-SD; фотографию, иллюстрирующую все этапы разработки, и видеозаписи, демонстрирующие работу с созданными нами прототипами.

image05

Аппаратная часть

Определение расстояния

Для измерения расстояния были протестированы два устройства:

  • Arduino-совместимый ультразвуковой модуль HC-SR04
  • Автомобильный парктроник

Оба устройства работают по схожему принципу. Отличия заключаются в диаграмме направленности, максимальной дальности определения препятствий и конструктивном исполнении.

Таблица 1 – Сравнение параметров датчиков

Параметр HC-SR04 Парктроник
Максимальная дальность, м 4 2,5
Напряжение питания, В 5 5
Количество датчиков в одном устройстве 1 4
Вывод информации аналоговый цифровой

В ходе испытаний выяснилось, что модули HC-SR04 обладают несколько худшей способностью обнаруживать препятствия и работать в сложных климатических условиях (холод).

Управление и обработка информации

В качестве платы управления выбрана платформа Arduino. Для данной задачи наиболее применимы  платы миниатюрных версий — Arduino mini, Arduino Nano или Arduino miniPro. В общем случае может быть использован любой другой контроллер, предоставляющий аналогичные возможности.

Питание

Для обеспечения устройства питанием целесообразно использовать литий-ионные (Li-ion) или никель-металл-гидридные (Ni-Mh) аккумуляторные элементы.

При эксплуатации в нормальных климатических условиях имеет смысл применить Li-ion аккумуляторы, имеющие некоторые преимущества по сравнению с Ni-Mh:

  • простота реализации схемы заряда
  • наличие готовых модулей заряда
  • большее выходное напряжение
  • многообразие габаритных размеров и ёмкостей

При низких температурах предпочтительнее использовать Ni-Mh аккумуляторы.

Напряжения на выходе аккумулятора недостаточно для работы прибора, поэтому необходимо его повысить. Для этого будем использовать DC-DC повышающий преобразователь. При входном напряжении преобразователя 0,9-6 вольт,  на выходе будет 5 вольт.

Модуль начинает работать от 0,9 вольт и для получения 5 вольт можно воспользоваться одним Ni-Mh элементом напряжением 1,2 вольт. Но чем меньше входное напряжение, тем меньше нагрузочная способность модуля и для стабильной работы желательно подавать на вход хотя бы 2,4 В (2 Ni-Mh элемента) или 3,7 (Li-ion). К тому же, есть DC-DC преобразователи, начинающие работать от 3 В на входе. При выборе на это следует обратить внимание.

Зарядка аккумуляторов

Для Li-ion аккумуляторов есть множество готовых недорогих модулей с индикацией окончания заряда. Также некоторые аккумуляторы имеют встроенный котроллер заряда, на вход которого достаточно подать 4,2 – 5 вольт.

Для Ni-Mh аккумуляторов всё сложнее. Готовых встраиваемых решений на рынке в данный момент не представлено. Для зарядки можно использовать специализированные внешние зарядные устройства или же создать собственную схему зарядки.

Один из способов зарядить Ni-Mh элемент – с помощью двух последовательно включенных линейных стабилизаторов LM317 (или аналогичных). Первый – в режиме ограничения тока, второй – в режиме ограничения напряжения.

Полностью заряженный Ni-Mh элемент имеет напряжение около 1,45 В. Ток зарядки устанавливается порядка 100-200 мА. Если отсутствует радиатор, то не более 100 мА, иначе микросхемы перегреются и выйдут из строя.

Плюс этой схемы в том, что нет необходимости контролировать состояние зарядки: при достижении нужного напряжения на элементе ток автоматически упадёт до безопасного минимума.

Входное напряжение этой схемы должно быть не менее 7,5 В. При отсутствии охлаждения стабилизаторов превышать это напряжение не рекомендуется.

Предупреждение о препятствии

В зависимости от выбора канала предупреждения (слуховой или тактильный) выбирается исполнительное устройство – зуммер или вибро-мотор. Кроме того можно комбинировать оба способа оповещения, предоставив пользователю возможность переключения между ними.

 

Принцип работы устройств

Работа устройства основана на отражении ультразвуковых волн от препятствий.

Рисунок показывающий принцип работы

Рисунок показывающий принцип работы

Ультразвуковой импульс генерируется в определенном направлении. Если на пути следования находится объект, то импульс частично или полностью отразится обратно в качестве эхо-сигнала и может быть обнаружен приемником. Измеряя разницу во времени между моментом генерации импульса и моментом приёма отражённого эхо-сигнала, можно определить расстояние. Информация о расстоянии до препятствия пропорционально преобразовывается в частоту звуковых или вибрационных импульсов.

Описание процесса сборки устройства

В качестве цифрового клавиатурного блока выбрана наиболее доступная в наших магазинах клавиатура Genius i110.

Фото numpad

Фото numpad

Для размещения внутри клавиатуры одноплатного компьютера Raspberry PI и другой начинки на 3D-принтере был напечатан корпус-адаптер, который вставляется между верхней и нижней частями клавиатуры.

Ссылка на файл 3D-модели: https://yadi.sk/d/p17KZhWofAukK

Фото вставки в numpad с raspberry pi

Фото вставки в numpad с raspberry pi

Чтобы разобрать клавиатуру необходимо: извлечь заглушку, прижимающую кабель, снять резиновые ножки и открутить находящиеся под ними винты.

Фото numpad

Фото numpad

Раздвинув защёлки – извлекаем плату управления из корпуса. Из неё необходимо выпаять кабель.

Фото разобранного numpad

Фото разобранного numpad

После удаления кабеля, плату вставляем обратно в корпус.

Фото платы numpad

Фото платы numpad

Фото платы numpad

Фото платы numpad

Фото платы numpad

Фото платы numpad

После удаления нижней крышки кнопки остались без опоры и не способны нормально функционировать. Опору необходимо восстановить.  Один из способов – придавить их металлической пластиной. Для этого аккуратно отделяем плёночную матрицу и резиновую прослойку от кнопок, перекусываем все 4 центровочных пенька (они будут мешать придавить кнопки пластиной). Затем укладываем резину и плёнку на место.

Фото разобранного numpad

Фото разобранного numpad

Фото разобранного numpad

Фото разобранного numpad

Для упрощения и ускорения процесса будем клеить пластину на термоклей. Клавиатуру при этом нужно установить так, чтобы клавиши были в подвешенном состоянии, не касались поверхности стола (можно положить её на печатный корпус клавишами вниз).

Фото доработанного numpad

Фото доработанного numpad

Сначала выравниваем слои клавиатуры между собой, потом выравниваем слои шлейфа с графитовыми площадками на плате управления, фиксируем район шлейфа клеем.

Приклеивать начинаем с нижней стороны клавиатуры – сильно придавливаем пластину к клавиатуре и выдавливаем клей так, чтобы он обхватил край пластины и растёкся по корпусу. Удерживаем пластину в придавленном состоянии до полного отвердевания клея. Аналогичную операцию выполняем со стороны платы, захватив немного корпус с краёв (т.к. сама плата недостаточно жёстко закреплена).

Осталось зафиксировать место соединения шлейфа и платы, что можно сделать штатным кусочком силикона и парой пластиковых пластинок.

Фото крепления шлейфа numpad

Фото крепления шлейфа numpad

Фото крепления шлейфа numpad

Фото крепления шлейфа numpad

Так получилось, что в процессе разработки корпуса мы забыли предусмотреть место для установки кнопки включения и теперь нам необходимо доработать его.

Фото вставки в numpad

Фото вставки в numpad

Сверлится печатанный пластик, как оказалось, довольно хорошо. Для сверления было использовано сверло по дереву диаметром 10 мм с максимальными оборотами шуруповёрта.

Фото вставки в numpad

Фото вставки в numpad

Отверстия 10 мм недостаточно для установки кнопки, поэтому его следует увеличить надфилем или круглым жалом разогретого паяльника. Использованы кнопки типа PSW-3 с фиксацией.

Фото вставки в numpad

Фото вставки в numpad

Плата Raspberry PI устанавливается в корпус и заливается по краям термоклеем.

Фото вставки в numpad с raspberry pi

Фото вставки в numpad с raspberry pi

Фото вставки в numpad с raspberry pi

Фото вставки в numpad с raspberry pi

Фото вставки в numpad с raspberry pi

Фото вставки в numpad с raspberry pi

Сочленение всех частей этого «бутерброда» было решено сделать на металлических стойках М3х10. Оптимальная высота конструкции получается при соединении между собой двух стоек. Стойки вкручиваются в верхнюю часть клавиатуры на место крепёжных винтов по трём углам (4ю стойку мешает установить плата Raspberry PI). Необходимо приложить некоторое усилие, чтобы вкрутить их, т.к. отверстия несколько меньшего диаметра, чем хотелось бы.

Фото доработанной клавиатуры

Фото доработанной клавиатуры

Питаться устройство будет от литий-ионного аккумулятора, извлечённого из внешнего аккумулятора для зарядки мобильных телефонов. В нём уже реализована цепь преобразования напряжения в 5В и цепь заряда.

Фото аккумулятора

Фото аккумулятора

Из-за использования стоек не получится установить плату зарядки вплотную к окну под разъём. Поэтому воспользуемся отдельным разъёмом micro-USB.

Фото платы заряда

Фото платы заряда

Фото платы заряда

Фото платы заряда

Питание на плату Raspberry PI пробрасываем от выходного разъёма платы преобразования, подпаявшись к его контактам и контактным площадкам Raspberry PI.

Фото подключения питания

Фото подключения питания

Фото подключения питания

Фото подключения питания

В разрыв подпаивается кнопка включения питания.

Фото подключения питания

Фото подключения питания

Кнопку включения и разъём для зарядки фиксируем на корпусе термоклеем.

Фото подключения питания

Фото подключения питания

Клавиатура посредством проводов подпаивается к контактным площадкам  одного из USB-разъёмов платы Raspberry PI (в данном случае к нижнему, в дальнейшем его наружную часть следует заблокировать заглушкой, чтобы избежать подключения флеш накопителя к этому разъёму).

Фото плеера в разобранном виде

Фото плеера в разобранном виде

Начинка укладывается внутрь корпуса и фиксируется термоклеем.

Фото плеера в разобранном виде

Фото плеера в разобранном виде

Верхняя и нижняя части клавиатуры стягиваются между собой с помощью стоек и винтов, фиксируя при этом центральную прослойку.

Фото сборки плеера

Фото сборки плеера

Готово!

Фото собранного плеера

Фото собранного плеера

Стоимость комплектующих для создания тифлоплеера:

1) numpad — 600 рублей.

2) 3D-печать вставки — 600 рублей.

3) Raspberry PI — 2500 рублей.

4) Аккумулятор — 700 рублей.

Итого: 4400 рублей.

Описание схемы

Сердцем устройства является одноплатный компьютер Raspberry PI Model B – M2.

Фото схемы тифлоплеера

Фото схемы тифлоплеера

Управление осуществляется посредством блока цифровой клавиатуры Genius i110 с интерфейсом USB – M1. Клавиатура подключается к одному из штатных USB-портов платы Raspberry PI.

Для подключения носителя информации используется второй USB-порт – XS1.

Для вывода звука на колонки или наушники также используется штатный 3,5 аудио-разъём платы – XS2.

Питается устройство от литий-ионной аккумуляторной батареи 3,6 В форм-фактора 18650 ёмкостью 2600 мАч – GB1, которая работает в связке со схемой заряда/разряда – M3, извлечённой из портативного дорожного аккумулятора. На выходе модуля М3 получаем напряжение 5 В и ток до 1000 мА. Для зарядки может быть использовано любое зарядное устройство с выходным напряжением 5В и током не менее 1000 мА.

Включение устройства осуществляется кнопкой с фиксацией типа PSW-3 – SB1. Также может быть использован любой другой коммутационный элемент – тумблер или ползунковый переключатель.

Описание работы с тифлоплеером

Основные изменения:
— Исправлен баг, из-за которого не играло стерео mp3
— Добавлена возможность указывать папку с mp3 файлами (все треки в папке будут проигрываться по очереди)
— Добавлена поддержка большого количества языков

Все изменения сделаны в виде двух патчей для git:
sources/meta-kolibre/recipes-kolibre/libkolibre-clientcore/files/add_mp3_and_russian.patch
sources/meta-kolibre/recipes-kolibre/libkolibre-narrator/files/add_russian.patch

Чтобы на ПК (с установленной Ubuntu 14.04) собрать новый образ с произвольным набором языков необходимо:
— sudo apt-get install gawk wget git-core diffstat unzip texinfo build-essential chrpath libsdl1.2-dev xterm uuid cvs bc vorbis-tools sox espeak uuid-dev
— call «sudo dpkg-reconfigure dash» and select No when it asks you to install dash as /bin/sh.
— Открыть файл sources/meta-kolibre/recipes-kolibre/kolibre-sample-client-data/kolibre-sample-client-data.bb на редактирование в текстовом редакторе
— В нижней секции файла после строки # build database with narrator-utils закоментировать не нужные языки. Раскоментированными должны остаться не более 15 языков.
— Перейти в директорию ~/test
— Выполнить в терминале doWithoutWrite.sh name, где в качестве name указать желаемое имя образа
— Все образы будут создаваться в папке ~/test/outImgs

Для того чтобы записать образ на карту памяти для использования:
— вставить карту памяти
— набрать в терминале команду «sudo fdisk -l» и найти имя вставленной карты (например /dev/sdc)
— размонтировать все разделы карты памяти командой «umount /dev/sdc[1,2]»
— перейти в каталог ~/test
— выполнить команду в терминале «doWrite.sh path_to_img.img /dev/sdc», где первый параметр — это путь к файлу образу, второй параметр — это имя карты памяти

Таже можно перейти в папку ~/test и выполнить в терминале «do.sh /dev/sdc». Эта команда соберет образ и сразу запишет его на карту памяти (карта памяти должна быть вставлена).

Файл настроек.
Чтобы добавить свой нампад нужно в файле настроек settings.ini на карте памяти в переменную INPUT_DEVICE= вписать VID этого нампада.
Для добавления нового пути для mp3 файлов нужно создать новую секцию с именем [MP3Path_name], где вместо name нужно вписать любое имя.
Далее в этой секции нужно создать переменную NAME=name, а так же переменную PATH=/media/0113-F0CF/music, где 0113-F0CF — имя флеш накопителя, которое можно посмотреть на настольном ПК, а music — папка на флеш накопителе с файлами mp3.

Ссылка на прошивку и исходники: https://yadi.sk/d/RXZ6qGNMexS9U

Прототип тифлоплеера

Корпус для тифлоплеера решили сделать из numpad, увеличив его размеры для установки внутрь raspberry pi и аккумуляторов.

3D-модель вставки в numpad

Фото 3D-модели вставки в numpad

Фото 3D-модели вставки в numpad

Фото 3D-модели вставки в numpad

Фото 3D-модели вставки в numpad

В ходе работы над проектом сделали:

  1. Поддержку 43 языков, чтобы максимальное количество людей на земле могло воспользоваться этой разработкой. Разбили на 3 разные прошивки по 15 языков, в каждой из которых есть английский
  2. Исправили ошибку, из-за которой не играло стерео mp3.
  3. Добавили возможность указать папку с mp3. Все треки в папке будут проигрываться по очереди.
  4. Собрали в виде законченного устройства.

Список поддерживаемых языков:

  1. sq; Albanian
  2. en; English
  3. ar; Arabic
  4. hy; Armenian
  5. af; Afrikaans
  6. bs; Bosnian
  7. cy; Welsh
  8. hu; Hungarian
  9. vi; Vietnamese
  10. el; Greek
  11. da; Danish
  12. id; Indonesian
  13. is; Icelandic
  14. es; Spanish
  15. it; Italian
  16. ca; Catalan
  17. zh-CN; Chinese (Simplified)
  18. ko; Korean
  19. ht; Haitian Creole
  20. la; Latin
  21. lv; Latvian
  22. mk; Macedonian
  23. de; German
  24. nl; Dutch
  25. no; Norwegian
  26. pl; Polish
  27. pt; Portuguese
  28. ro; Romanian
  29. ru; Russian
  30. sr; Serbian
  31. sk; Slovak
  32. sw; Swahili
  33. th; Thai
  34. ta; Tamil
  35. tr; Turkish
  36. fi; Finnish
  37. fr; French
  38. hi; Hindi
  39. hr; Croatian
  40. cs; Czech
  41. sv; Swedish
  42. eo; Esperanto
  43. ja; Japanese

Тифлоплеер

На данный момент мы ведём разработку нескольких устройств. Одно из них — тифлоплеер. Тифлоплеер — это устройство предназначенное для воспроизведения звуковой информации. В основном используется для прослушивания аудиокниг в формате mp3 или специальном формате аудиокниг для незрячих DAISY (в России используется формат LKF).

Фото с плеером

Фото с плеером

 

За основу мы взяли проект Kolibre Vadelma.

Для себя мы поставили задачу улучшить этот проект и перевести его на максимальное количество языков, а также сделать полностью законченное устройство.

Устройство для обучения шрифту Брайля

После общения с Бортниковым Павлом Владимировичем, преподавателем из коррекционной школы №127 (единственная в Челябинске школа для слепых и слабовидящих детей), решили сделать говорящий алфавит Брайля для обучения незрячих и слабовидящих детей шрифту Брайля. Устройство предназначено для обучения детей начальных классов письму и чтению шрифта Брайля. Введённый символ будет озвучиваться и его можно будет прощупать пальцами. Таким образом, ребёнок сможет самостоятельно изучать шрифт Брайля.

На видео показана работа образца.