Сканирующий переводчик: что это такое?
Простой 10 мин Блог компании RUVDS.com Реверс-инжиниринг *Процессоры Электроника для начинающих Обзор
Сегодня мы поговорим о такой очень интересной штуке, которая мне досталась в своё время совершенно бесплатно в качестве подарка — электронном сканирующем переводчике Quicktionary TS.
Это весьма любопытный артефакт ушедшей эпохи. Тем не менее, свою работу он делает и делает её хорошо даже сейчас…
Итак, начнём с самого начала — посмотрим, в какой упаковке поставляется устройство:
Упаковка достаточно информативная и даёт понимание, что находится внутри и для чего. По крайней мере, его способность распознавать более 300 тыс. слов и фраз (о чём есть упоминание на упаковке выше) — вполне себе внушает. Но понятное дело, нам недостаточно просто посмотреть на упаковку — узнаем, что же там скрывается… 🙂
Внутри мы видим белую коробку, в которой плотно уложены некие компоненты. Достаём их из коробки и смотрим на них:
Как можно видеть, в коробке скрывался некий футляр, предположительно с самим устройством-переводчиком, мануал к нему, гарантийный талон, наушники с регулировкой громкости, а также своеобразное раздвоенное устройство (позже мы поймём, для чего оно предназначено).
Попробуем открыть корпус футляра… Так и есть, внутри скрывается переводчик:
Он представляет собой достаточно удобное устройство изогнутой формы для удобства держания в руке. Кроме того, та часть аппарата, которая будет удерживаться пальцами, имеет обрезинивание.
Ещё пару слов об общем впечатлении от устройства: когда берёшь в руки этот футляр, а потом открываешь его и достаёшь устройство, во всём ощущается некая солидность аппарата бизнес-уровня (хотя бы даже потому, что устройство в целом достаточно компактное, и со вставленными двумя батарейками форм-фактора ААА воспринимается довольно увесистым).
Впрочем, этот аппарат таковым и является (для бизнеса, в частности), так как я помню те времена, когда он стоил порядка 400 долларов или около того (что явно не для всех). Правда, тут следует сделать поправку, что мне он достался уже в конце этой эпохи, когда появились штуки намного более мощные, и он потерял свою ценность… Что, впрочем, несколько спорное утверждение. Учитывая тот факт, что он может работать без какого-либо интернет-соединения (оно там вообще не предусмотрено — беспроводных интерфейсов вообще нет), исключительно от внутренней базы данных, нельзя сказать, что для него всё кончено. Он может вполне эффективно применяться даже сейчас.
Так как в комплекте с самим переводчиком идёт довольно упрощённая и прикладная инструкция для пользователя, мне пришлось поискать и найти в интернете более подробную инструкцию на английском языке (Reading Pen TS Premium Oxford Manual English), где, в частности, даются и технические характеристики:
Так, можно видеть, что используется дисплей с улучшенными контрастностью и углами обзора (FSTN), процессор ARM7 и оперативная память с постоянной памятью по 16 Мб (если верить инструкции) каждая (позже мы увидим, что их действительно две и они разные, находящиеся физически на разных носителях; и даже если быть точным, вообще-то, даже три, но об этом позже).
Кроме того, мы можем видеть, что пользуется оптический сенсор довольно высокого разрешения на 400 точек/на квадратный дюйм (строка, где написано 400 DPI). Что довольно много, учитывая, что та же самая полиграфическая продукция глянцевого журнального качества имеет в основном разрешение в 300 dpi, а некоторые фотографии в таких журналах могут достигать разрешения в 600 dpi.
Но, насколько я понимаю, фотографии нас не особо интересуют, так как переводчик предназначен для сканирования и перевода текста. Можно предположить, что разработчики умышленно взяли сенсор с неким запасом по разрешению, чтобы надёжно считывать даже мелкий текст на бумагах разного качества (ворсистость, контрастность и т. д.).
Единственное, что здесь не указано, это сколько линий имеет этот 128-пиксельный сенсор. С другой стороны, эта информация для конечного потребителя не особо интересна. Тем не менее, у меня есть подозрение, что сенсор имеет более чем одну линию фотодатчиков, и об этом тоже будет ниже.
Ну и последнее из интересного, что мы здесь видим, так это то, что используется довольно старенький интерфейс USB 1.1 (а таки что мы хотели — устройство было куплено в 2011 году, а разработано гораздо раньше…). И как было отмечено выше, о беспроводных интерфейсах ни слова — их тут просто нет.
И ещё пару слов об экране: он, судя по его поведению, резистивный, так как, видимо, последние на тот момент «модные веяния» на ёмкостные экраны сюда ещё не успели проникнуть.
Как можно было видеть на последней фотографии, рабочий кончик устройства закрыт колпачком, сняв который мы видим сканирующую головку, которая оканчивается парочкой пластиковых обрезиненных роликов с полосатым валом между ними, а также прямоугольным стеклянным световодом:
Выше я упоминал, что позже скажу про своеобразную прозрачную пластиковую штуку, которая лежит в коробке: так вот она для самых начинающих — одевается как насадка и помогает в ведении строки (чтобы строку вести на сенсор); нужно, чтобы строка попадала в трапецеидальный вырез в середине:
Когда устройство включено и ожидает ввода текста, то есть ждёт момента, когда пользователь коснётся бумаги и начнёт проводить по строке, встроенный красный светодиод, находящийся внутри сканирующей головки, постоянно мерцает с частотой приблизительно 2-3 Гц, что можно наблюдать, смотря на срез световода.
Как только пользователь касается бумаги, свет отражается от бумаги и воспринимается сенсором, после чего светодиод горит уже в постоянном режиме (используется тот же самый красный, я так понимаю, для подсветки бумаги) и можно проводить по бумаге для сканирования текста.
Выше я уже говорил, что есть некие сомнения, что оптический сенсор устройства является однорядным. На мой взгляд, было бы проще поставить двухрядный, причём один из рядов использовать непосредственно для ввода текста, а второй — для считывания энкодера. Насколько я понимаю, этот энкодер используется как для понимания самого факта, что перемещение головки по бумаге осуществляется, так и для понимания скорости этого перемещения, так как от этого зависит соответствующая корректировка в реальном времени алгоритмов распознавания (ну, по крайней мере, я бы так сделал, если бы проектировал нечто подобное).
А «полосатость» нужна для того, чтобы мимо линейки сенсоров постоянно перемещались белые и чёрные зоны, по скорости перемещения которых и по наличию самого факта такого перемещения мы бы получали данные как о скорости, так и о наличии движения вообще.
В пользу такого предположения говорит сам факт наличия полосатой раскраски, потому что в противном случае, если не надо было бы перемещать тёмные и светлые зоны мимо линейки сенсоров, и устройство было устроено как-то иначе, полоски могли быть продольными, в виде квадратов и т. д. и т. п.
Как можно было видеть на предыдущей картинке, с задней стороны переводчика находится окошко для вставки батареек. Откроем его. И тут же мы увидим, что здесь система «яйцо — в утке, утка — в зайце… и далее по тексту», то есть перед нами оказывается ещё одна небольшая дверца. Открываем её и видим внутри какую-то плату:
Это внешний подключаемый блок памяти. На таких раньше распространялись словари (кстати, ниже будет разборка устройства, где после того, как я всё перефотографировал и собрал устройство обратно, этот блок я вставил недостаточно плотно, и переводчик у меня выдал «не обнаружен словарь». Пришлось его сунуть/вынуть несколько раз, чтобы прочистились контакты, и всё в итоге заработало снова).
Например, здесь по умолчанию в устройство установлен русско-английский словарь, а в те времена, насколько я помню, можно было докупать и другие словари на вот таких вот платах, после чего вынимать текущую плату и устанавливать вместо неё новую.
Вынем её и рассмотрим подробнее. Как можно видеть, важное место с маркировкой заклеено наклейкой. Но так как времени прошло немало и я не особо рассчитываю на «ремонт по гарантии» 🙂 отклеим её и посмотрим, что там написано:
Посмотрим, что нам скажет интернет на это… А он нам скажет, что это блок Flash-памяти от Macronix, а именно MX29LV640ETTI-70G, объёмом, кстати, в 64 Мбит (что характерно, в спеке производителя объём памяти указан в Мбит, это не моя опечатка), что уже отличается от найденного мной в сети подробного мануала (там было 16 Мб, но, видимо, подразумевалось 16 Мбит) — видимо, эта версия ручки более современная…
Если кому интересно, то память имеет следующие характеристики:
Ну, начало положено! Понятное дело, что, сказав А, нельзя не сказать Б, и мы начинаем разбирать это устройство. Для этого находим все винты, один из которых, как оказалось, спрятался под резиновым покрытием. После чего мы удаляем покрытие, отвинчиваем все винты и раскрываем корпус:
С этой стороны ничего интересного нет, только некие служебные элементы, видимо, касающиеся электрической части. Поэтому продолжаем разбирать дальше, чтобы посмотреть на другую сторону… А перед этим отколупываем с задней части полупрозрачную пластину из тёмной пластмассы, которая закрывает окошко динамика. На фотографиях ниже показана задняя часть со снятой пластиной и вместе с ней. Видно, что в одном из проёмов прячется ручка-стилус:
Не без некоторых трудов разбираем, так как выяснилось, что динамик был приклеен липким слоем по верхней своей части. И видим следующее:
Всё интересное снова скрыто под экраном. Благо, как оказалось, он был просто уложен внутри пластиковой рамки, и мы просто вытряхиваем его оттуда:
Кстати говоря, как можно видеть, на контактах батарей имеется некоторый налёт. Это потому, что я забыл батарейки внутри на долгое время и они протекли. Ладно хоть не испортили само устройство — повезло…
Итак, вот что мы видим под экраном (как всегда, всё самое интересное было заклеено наклейкой, которую пришлось безжалостно отодрать):
Начнём справа налево. Недалеко от разъёма наушников и динамика притаилась микросхема MC34119 от UTC Technologies Co., LTD, которая представляет собой низковольтный усилитель аудио, используемый в телефонных громкоговорителях. Насколько я понимаю, так как особого стерео здесь не нужно (хоть как-то слышно голос перевода и ладно), они применили эту микросхему и для динамика, и для наушников. Просто переключают в зависимости от настроек:
Рядом с USB-разъёмом мы видим микросхему PDIUSBD12 от Philips Semiconductors, которая отвечает за реализацию USB-интерфейса в рамках систем с отдельным микроконтроллером. Общение с микроконтроллером осуществляется через высокоскоростной параллельный интерфейс общего назначения.
Как заявляет производитель, такой модульный подход позволяет гибко подойти к выбору микроконтроллера или процессора, подобрав необходимый под свою задачу.
Кстати говоря, это микросхема также отличается по своим характеристикам от тех, которые были перечислены в мануале, который я находил ранее: в даташите на микросхему заявляется, что она полностью соответствует USB Specification 2.0 (basic speed). А в мануале говорилось о USB 1.1. Из всего этого я делаю вывод, что подобные ручки-переводчики имеют несколько поколений, отличающихся по своим возможностям, и у меня более современная версия…
В целом всё довольно стандартно — микросхема имеет средства DMA для работы с памятью и следующие характеристики:
Следующей микросхемой, которую мы наблюдаем и которая существенно больше по размерам, является cFeon EN29LV320BT-70TIP от Eon Silicon Solution, Inc., представляющая собой также флеш-память на 32 Mбит, которая, как можно судить по даташиту производителя, может выступать, в частности, не просто как флэш-память для хранения данных, но и как средство хранения загрузочной информации (Boot Sector Flash Memory).
Из этого всего я делаю вывод, что данная микросхема в рамках этой архитектуры используется для хранения пользовательских данных (настройки, отсканированная информация), а также загрузочных данных системы (но вот это последнее совсем не факт, так как подобная информация может храниться и внутри процессора как в виде однократно прожигаемых данных (eFuse Memory), так и перезаписываемых).
Микросхема имеет следующие характеристики:
Далее мы видим следующую микросхему — 62S16128BU от Amic Technology, Inc., которая представляет собой энергозависимую флэш-память общего назначения объёмом 128к. Об этом мы можем прочитать в характеристиках этой микросхемы (специально выделил строки), где в одной из выделенных строк написано, что сохранение данных возможно только при наличии питания в 2В (минимум):
Из этого я делаю вывод, что единственный вариант использования этой памяти — в качестве, так сказать, оперативной памяти.
Таким образом, как мы увидели, система имеет три памяти (на самом деле наверняка ещё больше, запрятанных по разным укромным местам, и использующихся для хранения разных рабочих данных, но об этом информации уже нет; но она, скорее всего, никому уже и не нужна, кроме самих разработчиков).
Условно говоря, если попробовать представить в современных терминах, то у нас есть:
- внешняя вставляемая флешка с данными;
- жёсткий диск;
- оперативная память.
Не так уж и далеко от современных систем, не так ли? 😉
Ну и напоследок осталось разобраться с последней, самой большой микросхемой — VeriFone AFQP1008 ICS00223-A. Но тут случился затык: какой-либо подробной информации по этой микросхеме мне найти не удалось, за исключением той, которая ниже:
- QFP (Quad Flat Package)
- Имеет широкий спектр функций и высокую скорость передачи данных, вместе с множеством разных систем обычно используется в платёжных терминалах, ресторанах.
И на этом всё! Вернее, было и ещё кое-что, но я сам не особо верю найденной информации, поэтому и не буду её тут приводить.
Однако мы пойдём с другой стороны: насколько мы поняли по мануалу, который был в начале статьи, в качестве процессора здесь (ну то есть в предыдущей версии этой ручки, но эта, я так понимаю, имеет примерно ту же архитектуру) используется дословно «ARM7 ASIC, 16 Bit, 80 MHz».
Посмотрим, что такое ASIC: «Application-specific Integrated Circuit — интегральная схема для конкретного применения. Схемы ASIC обычно содержат центральный процессор, блоки памяти, иные модули».
Исходя из вышесказанного, я делаю вывод, что в нашем случае было использовано некоторое подобное решение: взят процессор ARM7 (ну или свой, но с поддержкой системы команд ARM7), возможно некоторые IP-блоки для взаимодействия с периферией: экраном, памятями, USB. И всё это упаковано в конкретную микросхему от VeriFone. В любом случае, о конкретном составе микросхемы от VeriFone остаётся только гадать, так как подробной информации я не нашёл.
Кроме того, если мы сходим на developer.arm.com и посмотрим там мануал на базовый процессор ARM7TDMI, то мы увидим, что он обладает поддержкой как 16-битных, так и 32-битных команд. И если в более старом варианте переводчика использовалась 16-битная система, то в более современной вполне могла быть задействованной и 32-битная.
Если же кто-то всё же захочет добиться правды и выяснить, что это за микросхема, возможно, вот это поможет — мне удалось узнать, что подобные микросхемы, в частности, ставили в Verifone PINPAD PP1000SE CTLS:
Картинка: kknews.cc
А вот тут про этот терминал (в том числе) есть статья на Хабре, а ещё здесь и здесь пара мануалов. Большего, к сожалению, найти не удалось.
Что касается сканирующей головки, то, возможно, из-за того, что она содержит некоторые места, залитые эпоксидкой, я не смог её разобрать, потому что это была бы «дорога в один конец — в мусорное ведро» 🙂
По её внешней маркировке тоже сложно сказать что-то определённое, по крайней мере, по ключевым словам, маркировке «Galil Q42» ничего адекватного не выходит. Возможно, кто-то из читателей сможет узнать эту сканирующую головку?
Ну и напоследок самое интересное — тесты:
Примечание к тестам: дефрагментация, конечно же, подразумевается к хранящимся на флешке файлам, а не стёртым.
Подытоживая всё сказанное, отмечу, что субъективно аппарат производит впечатление солидной машинки, «чего-то настоящего, истинного», в отличие от распространённых сейчас «облачных решений и прочего SaaS». Когда сам физически сканируешь и потом видишь результат отсканированного, как бы даже малость приобщаешься к какой-то магии :-).
Но, несмотря на это, его время, наверное, всё-таки уже ушло, хотя в каких-то нишевых вариантах он и сейчас вполне применим. Скажем, летишь в самолёте, интернета нет, а тут ручка под рукой: провёл по тексту и понял, что там…
P. S. А я им так ни разу и не воспользовался. Ну кроме как для статьи или пары тестов. Как-то не довелось…
Скидки, итоги розыгрышей и новости о спутнике RUVDS — в нашем Telegram-канале 🚀
Теги:
- ruvds_статьи
- Quicktionary TS
- сканирующий переводчик
Хабы:
- Блог компании RUVDS.com
- Реверс-инжиниринг
- Процессоры
- Электроника для начинающих
habr.com