Главная Проекты Идеи Soft О авторе
 

Book reader на AVR ATMega16

Рис. 1 Внешний вид устройства.

План.

       0) Вступление.
       1) Анализ рынка MP3 и MP4 флеш накопителей.
       2) Создание первой версии Book Reader'a.
       3) Создание второй версии Book Reader'a.
       4) Описание работы с MMC/SD флеш картами.
       5) Теперь поговорим о работе с Book Reader'ом.
       6) Команды клавиатуры железа первой версии.
       7) Команды ПДУ железа второй версии.
       8) Команды RS-232.
       9) Прошивка и Fuse биты.

       A) Страшное слово "Программатор" - тут.
            А как пользоваться USB программатором - тут.
       Б) Список часто задаваемых вопросов FAQ - тут
       B) Подключение флэш SD/MMC карт к SPI - тут.
       Г) Методика выбора пульта ДУ для IgorPlug - тут.
       Д) Виды кодировок ПДУ - тут.
       Е) Универсальный алгоритм распознавания - тут.

       X) Обратная связь - тут.

Так всё начиналось...
       Возможности данного железа не ограничиваются описанными в этом материале. На его основе можно собрать множество интерестных конструкций. Дальнейшее развитие темы с изменением функциональности перенесено в проект GraniCubicle Блок 8 для 'Print Server', который находится - тут.

Вступление.

       В своё время у меня была идея освоить работу с MMC/SD флеш картами применительно к одному сложному проекту для мониторинга и архивации собранных данных на флеш картах MMC/SD.
       На этапе разделения сложной задачи на группу подчинённых более мелких задач было принято решение отработать и обкатать основные функции работы с флеш картами MMC/SD на более простом устройстве. Другими словами было принято решение собрать простое устройство, использующее обмен с флеш картой. Анализируя собранные в интернете данные (поиск аналогов дал отрицательный результат) было принято решение собрать заготовку к данному проекту, прошивка которого позволяла бы обкатать основные функции девайса: функции чтения и записи данных с флеш карт MMC/SD.
       Ну что ещё можно сделать, имея дисплей, клавиатуру и флешку? Естественно - Book Reader. Тут что-либо другое даже придумать трудно...
       Ещё одним стимулом для создания Book Reader'a стало отсутствие у автора элементарно удобной мобильной читалки электронных текстов. В которой была бы нормально реализована система навигации и установлен нормальный чёткий дисплей.
       Вспоминая главный аргумент противников чтения с экрана электронного устройства (не важно: телевизора, компьютера или сотового телефона), о котором нам всем неоднократно говорили ещё со школьных времён (на уроках биологии): "Эти экраны - светятся".
       Если верить школьному учебнику биологии (а оснований не доверять ему пока не было) наши глаза чисто физически "эволюционно адаптированы" под восприятие изображения в отраженном свете.
       Этим объяснялась вредность с точки зрения медицины, продолжительного чтения с экрана монитора, неотрывного просмотра телевизора и других "светящихся" устройств вывода информации. Глаза быстро устают, нужно часто отдыхать, зрение портится - и так далее и тому подобное. (Подробнее смотреть в медицинской энциклопедии)

Анализ рынка MP3 и MP4 флеш накопителей.

       Анализируя рынок MP3 и MP4 флеш накопителей нижнего ценового диапазона с этой позиции (а хотя бы только с позиции удобности и эргономичности), то можно придти к выводу, что рассмотренные девайсы плохо приспособлены к функциям Book Reader'а.
       У просмотренных мной MP3 и MP4 флеш накопителей нижнего ценового диапазона, эта функция была реализована по принципу - "Чтобы была...".
       Ну судите сами, эти девайсы либо обладают мизерным чёрно-белым дисплеем, который комфортно читать можно только под микроскопом, либо навороченным цветным дисплеем, подсветка которого имеет непомерное энергопотребление (по сравнению с чёрно-белыми ЖК-индикаторами), что сильно снижает время автономной работы между двумя подзарядками в режиме чтения книг... То есть, говоря простыми словами, в этом режиме на них аккумуляторов просто не напасёшься...
       При более близком знакомстве с программной частью MP3 и MP4 флеш накопителей нижнего ценового диапазона, я с большим удивлением выяснил, что такие накопители имеют недоработанную прошивку без учёта возможности навигации по тексту (например создание закладок и переход к следующей главе и т.д.).
       Упрощая, можно сказать, что если хочешь читать - читай подряд, если хочешь середину файла - листай, пока не доберешься до середины или нарезай файл книги на много мелких, например, по главам, тогда листать меньше придётся...
       Хотя производитель и описывает обновление прошивки через интернет, но на практике, в большей части случаев оказывается, что это либо NoName, либо "забывают" указать сайт поддержки, либо это подделка и её разработчик указал сайт суппорта чужого бренда...
       А рассматривая проблему электронных читалок в целом, можно быстро придти к выводу, что для комфортного чтения книг оптимально применять специализированное устройство в промышленном исполнении. Например, одну из моделей устройств, созданных по технологии электронных чернил (e-ink) или технологии электронных бумагоподобных экранов, они удобны и имеют сверх малое энергопотребление. Но основным недостатком таких устройств на данный момент является их цена, которая в разы больше цены простых MP3 плееров. А в моём случае применение такому устройству найдётся не чаще, чем раза два в году... Не потому, что я редко читаю, а потому, что "обучил" чтению вслух компьютер и читалка мне нужна только в мобильном исполнении, но это уже другая тема...

Создание первой версии Book Reader'a.

       А возвращаясь к Book Reader'aм: по результатам поиска аналогов в интернете я обнаружил, что радиолюбительских конструкций для чтения книг очень мало, к тому же мне не удалось найти ни одной, снабжённой нормальным дисплеем и доступным флеш накопителем со стандартной логической структурой (FAT16 и т.д.)...
       Конструкция на I2C флешках (с файлами, загружаемыми через RS-232) с хорошо читаемым, правда маленьким, дисплеем - была.
       Конструкция на MMC/SD картах (со своей "самодельной" несовмес- тимой ни с одной из стандартных файловых систем, осуществлённая на уровне закладок и очень медленной загрузкой через LPT), выводившая данные на мелкий ч.б. дисплей от сотового телефона-кирпича Nokia - была.
       А конструкцию с поддержкой ФАТ16 (с которой можно использовать стандартный USB ver:2.0 карт ридер для загрузки файлов на флеш накопитель, что на порядок быстрее предлагаемых COM и LPT вариантов загрузки) и снабжённую хорошо читаемым дисплеем - мне найти не удалось...
       В результате приблизительно было сформулировано ТЗ на сборку простейшего устройства, снабжённого полнофункциональной 10х4 клавиатурой, контрастным черно-белым ЖК дисплеем на 16х2 (32 символа в 2х строках, ну какой был), интерфейсом RS-232 (можно использовать как альтернативный загрузчик при отсутствии USB кард ридера) и блоком подключения MMC/SD карт.
       Корпус был вырезан из обрезков фомакса (листового пенопласта) и склеен термоклеем. В результате получилась арочная конструкция монстраидального вида по принципу "как есть". Внешний вид первой версии - Фронтальный, тыловой.
       Но, несмотря на всё это, дизайн устройства получился эргономичным и очень удобным.

Принципиальные схемы первого варианта.
Все схемы одним файлом для печати.
Все схемы одним файлом для просмотра.

       Забегая вперёд скажу, что разработанный комплекс отличался от своей заготовки (букридера) наличием дополнительной обвески на неисполь- зуемом в заготовке порту А и более мощным кристаллом ATMega32. А интерфейс RS232 в нём использовался только во время разработки чисто для отладочных целей (устройство разрабатывалось как испытательный стенд архивирующий данные на флэш картах MMC/SD для последующего анализа результата испытаний).

Создание второй версии Book Reader'a.

       Но прогресс не стоит на месте. И как выяснилось позже (на втором этапе модернизации системы), при необходимости реализации съемного управляющего блока (не входящего в контролируемое устройство, как было в первом варианте), система оказалась недостаточно помехоустойчивой. То есть, при размещении МК на одной плате с компараторами и помещения всего этого в экран - всё работает нормально, но при попытках вынесения МК в отдельный блок, начинали сказываться помехи (от соседних установок, конкретнее от силовых тиристорных выпрямителей). Никакой экран проводов и блоков не спасал, данные измерений немного "плясали", что не соответствовало ТЗ...

       Для устранения данного казуса были приняты следующие решения:
  A) Отказаться от негерметичной кнопочной клавиатуры, заменив её
       на ПДУ от бытовой техники.
  B) Вынести измерительный блок в простенький МК.

       Связь между встроенным МК и моим блоком было решено сделать по шине I2C на аппаратном уровне. В связи с этим дисплей съехал с порта С на освободившийся порт А, а на порту С разместился аппаратный протокол I2C.
       Клавиатура с её многочисленными проводами и обвязкой была заменена IR приёмником, подключённым по стандартной 3х проводной схеме. Прикрутить удалось быстро, так как в рамках моего проекта IgorPlug2 был уже обкатан универсальный алгоритм распознавания кнопок пульта, его оставалось только применить.
       Используемый в первой версии маленький дисплей 2х16 был заменён на более мощный 4х80 (по сути состоящий из двух дисплеев 2х40 в одном корпусе). Но возможна работа только с одним из них.
       С введением простенького экрана и замены вышеописанных используемых блоков удалось повысить точность до требуемого уровня.

Принципиальные схемы второго варианта.
Все схемы одним файлом для печати.
Все схемы одним файлом для просмотра.


Описание работы с MMC/SD флеш картами.

       Описывая подключение флэш карты к SPI можно сказать, что картоприёмник MMC/SD для экономии энергии подключен не через простейший делитель на двух резисторах, а через преобразователь уровня 5v/3.3V. Старт протокола SPI в данной конструкции был реализован программно. В связи с аппаратной "особенностью" некоторых карт MMC/SD, начинать передачу данных на тактовом импульсе, номер которого не кратен 8. На эту фразу многие мне возражают: "Это не соответствует спецификации SPI - это 'неправильная' MMC/SD карта". Я соглашаюсь - неправильная, но это не единичный случай...
       Пример из практики - я тестировал два одинаковых с вида флеш накопителя одного объёма, одного производителя, купленных у одного поставщика с разницей во времени в неделю. У меня работала только первая из них, а вторая отказывалась "отдавать" данные в мою конструкцию по протоколу SPI и я никак не мог понять почему... Как выяснилось позже, эти карты имели разные версии ревизий, одна из них обладала этой "фичей", а вторая нет. Картридер работает в другом режиме (не SPI) и на нём эта "фича" не проявляется.
       Для обхода вышеописанного казуса пришлось разрабатывать сорцы, которые отлавливали бы первый тактовый импульс, полученные данные при котором не равнялись бы 1. Проще говоря, отслеживание первого бита равного 0 для токена 0xFE (где пришел ноль, там и конец токена 0xFE, вне зависимости - это 16 тактовый импульс по стандарту или немного больше). После прихода нужного токена программа автоматом переключается в аппаратный режим для ускорения дальнейшего обмена в режиме аппаратного SPI.
       Эта функция отличает моё устройство от большинства других радиолюбительских конструкций, использующих для работы флэш карты MMC/SD, в которых не переходят на приём в софтовом режиме в начале обмена, а работают в аппаратном режиме постоянно. В результате чего мой вариант неприхотлив к типу флеш памяти, с которой у других будут проблемы со стабильностью.
       Большинство народа, прочтя эти строки, начинают меня убеждать, что это невозможно, т.к. если это SPI, то и передача должна быть кратна 8 тактам... В этом случае я показываю осциллограммы, тыкаю носом в датащит на некоторые типы флешей (повторюсь, такая реализация встречается примерно в 8% случаев и описана в некоторых датащитах на флэш карты MMC/SD). После чего переспрашиваю о совместимости их устройств с флеш памятью. Они начинают ссылаться на кривую реализацию SPI интерфейса у данного контроллера флеш накопителя, типа: "Это неправильный флеш накопитель - не работай с ним".
       Book Reader совместим со всеми флеш накопителями, у которых контакты расположены в 1 ряд (См. прим.1) можно и мини/микро формата, но через комплектный переходник, объёмом от 32Мб до 1Гб включительно (См. прим.2) и файловой системой FAT16.
       Примечание N1. - На карточках с контактами в 2 ряда, я не проверял, если у кого заработает или не заработает - сообщите...
       Примечание N2. - Почему от 32Мб до 1Гб? Всё что меньше отформатировано под FAT12, а всё что больше - под FAT32.
       На данный момент система проверена с флэшкартами: ММС 32Mb, SD 128Mb, SD 256Mb и через комплектный адаптер с картами SD micro 64 Mb, MMC micro 512Mb. Более подробно о подключении флэш SD/MMC карт можно прочитать - тут
       Процедуры работы с флеш накопителем отображаются на светодиодах статуса - при чтении горит зелёный светодиод, а при записи - красный.
       Если обнаружена ошибка при инициализации, то мигают оба, с соответствующим выводом информации на дисплей. При критических ошибках инициализации необходимо перезагрузить флэш карту (выключить устройство и включить снова), а при не критических ситуациях пере инициализировать с пульта.
       Это связано с тем, что в устройстве программатор подключается в то же гнездо, что и карта MMC. Этот режим был разработан во избежание конфликтов с двумя ведущими устройствами SPI при программировании.
       Ну и стандартное предупреждение - все коммутации, подключение модулей, программатора и т.д. можно производить только когда устройство выключено.

Теперь поговорим о работе с Book Reader'ом.

       Файлы для записи на MMC/SD флеш карты должны быть предваритель- но сконвертированы с помощью программы конвертора в файлы аппаратно ориентированного формата. Это связано с тем, что дисплей, демонтированный с оргтехники, в качестве дополнительной имел японскую раскладку (вместо кириллицы) и для отображения кириллицы начертание букв приходится подгружать из ПЗУ МК.
       В связи с тем, что данная конструкция является побочной, на "оглавление", "закладки", а также на 100% поддержку FAT16 не хватило времени, может потом, по заявкам читателей, вернусь к этому вопросу. В связи с этим файлы надо записывать ТОЛЬКО последовательно, а после заполнения флеши стирать все файлы с флеши полностью (что гарантирует отсутствие фрагментации файлов). После включения бук ридер перейдёт на начало первого файла. При выключении девайса текущую позицию на дисковом пространстве, временно, придётся записывать на бумажке - "Типа закладка".
       При конвертировании файлов на PC в меню конвертора надо ввести начальную позицию файла на флэш, а после завершения он выдаст размер результата в блоках и позицию конца записи... Записав файл на флэш, а данные о его положении на бумажный носитель можно получить аналог оглавления на бумажке. Если читать книги подряд, или в случае только одной загруженной книги этот шаг можно пропустить.
       Если читатели выразят желание, можно будет доделать оглавление, закладки и т.д. Мне наличие всего этого не критично, просто я заканчивал модуль в режиме цейтнот и последнюю версию прошивки зашил за 5 часов до отъезда в отпуск... Может, перед следующим отпуском доделаю, но если кому интересно, можно и раньше...

Команды клавиатуры железа первой версии.

Команда A        - Показывает текущую позицию на диске.
Команда B        - Установить текущую позицию на диске.
Команда С        - Отобразить следующий дисплей (листать вперёд).
Команда D        - Провести повторную инициализацию.
Команда E        - Перейти на начало первого файла.
Команда F        - Вывести информацию о версии и разработчике.

Команды ПДУ железа второй версии.

Команда p.p        - Показывает текущую позицию на диске.
Команда -/--       - Установить текущую позицию на диске.
Команда CH+      - Отобразить следующий дисплей (листать вперёд).
Команда Mute      - Провести повторную инициализацию.
Команда PW        - Вывести информацию о версии и разработчике.

Команды RS-232.

Эта система команд создана для отладки микрокода МК. По ТЗ требуется выполнение команд других систем. Полное описание команд довольно объёмное, поэтому их описание я разместил отдельно. АТ команды.

Прошивка и Fuse биты.

       В комплекте с прошивкой идёт файл автоматизированной прошивки для PonyProg. Если вы пользуетесь другим программатором - напомню у Atmel "1" это НЕ запрограммировано, а у PonyProg наоборот, так-что будьте внимательны... (в случае использования PonyProg необходимо только запустить файл и ответить "OK" для LPT-SPI программатора).
       Название прошивки состоит из буквы - версии железа и двухзначного номера - порядковый номер прототипа.

Прошивка для первой версии железа Ver: C36.
Прошивка для второй версии железа Ver: D586.
Как работать с программатором под управлением PonyProg. - тут.
А как с USB программатором 'AvrUsb500 by Petka' - тут.

Ограничения.

       Устройство разработано по принципу КАК ЕСТЬ и автор не несёт ответственности за явный (или не явный) ущерб, причинённый в результате повторения.

То есть все эксперименты вы делаете на свой страх и риск.

       Список часто задаваемых вопросов читайте в    FAQ.

       Если у вас возникли вопросы и предложения - пишите мне по адресу внизу страницы

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

       Кошелёк для оплаты накладных расходов на сайт Z158779319858 в системе WebMoney.

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


       Все статьи, опубликованные на этом сайте защищены Частью 4 Гражданского Кодекса Российской Федерации. Запрещено полное или частичное копирование материалов без согласия их авторов. Незаконное использование материалов сайта влечет за собой административную ответственность в виде компенсации в размере от 10.000 рублей до 5.000.000 рублей [Ст. 1301, 1250, 1252, 1253 ГК РФ]. При согласованном использовании материалов сайта обязательна активная ссылка на www.mindrunway.ru и указание авторства.



Copyright© 2007-2012 QuickWitted Почта     grani СОБАКА mindrunway РУ
Ссылки
Гостевая
Форум