Да, iTouch офигителен. Но кому нужно такое «закрытое» устройство? Может, лучше сделать свой гаджет с сенсорным экраном, написать свои программы — всё с использованием свободных железа и программ? Ну да, пусть этот гаджет не умеет воспроизводить MP3, но в нём есть цветной сенсорный (резистивный) TFT экран 320x240 точек, 8-битный микроконтроллер Atmega32u4, зарядное устройство для литий-полимерных аккумуляторов, управление подсветкой, разъем для microSD и трехосевой акселерометр. Любопытная штучка, особенно для тех, кто любит что-нибудь делать своими руками, как думаете?
Конечно, одной схемы и пожеланий удачи явно недостаточно. Поэтому создатель microtouch (которого мы знаем по кодовому имени "Rossum") написал операционную систему и несколько демонстрационных приложений, например:
Проект является результатом сотрудничества между Rossum и Ladyada, разработан в Калифорнии и Нью-Йорке.
Мозг платы Microtouch — это Atmega32u4 в корпус TQFP. У чипа есть встроенная поддержка USB и много контактов.
На плате имеется зарядное устройство для литий-полимерных аккумуляторов на 3.7 вольта (MCP73812). Аккумулятор нужно подключать к 2х-пиновому JST-PH, не забыв проверить полярность перед подключением. Микросхема зарядного устройства очень простая, но нормально заряжает аккумулятор.Ток зарядки примерно 250 мА, поэтому не включайте ее к хабу без дополнительного питания. Заряжаться нормально скорее всего будет от любого компьютера. К сожалению, нет никакого (например, светодиодного) уведомления о том, что батарея зарядилась, но можно определить статус батареи через АЦП микроконтроллера. Можно менять ток заряда, меняя сопротивление R17. Читайте даташит к MCP73812, чтобы подобрать резистор для нужного тока заряда.
Выводы аккумулятора (или USB) подключаются к LP2985 3.3v LDO. Этот регулятор очень хорошего качества, дает примерно 1% погрешности и ток до 150 миллиампер. В схеме microtouch больше всего потребляют тока 4 светодиода подсветки (всего до 80 мА). Кроме того, 10-20 мА кушает микроконтроллер, примерно 20 мА забирает TFT, и еще 2 мА — красный светодиодный индикатор. Акселерометр практически не потребляет энергии.
Этот светодиод подключен к выводу PC7 и используется для индикации активности загрузчика. Можно его использовать как угодно.
Частота кварцевого генератора — 16 МГц. Это небольшой оверклокинг Atmel (на 3.3В лучше использовать частоту 12 МГц); мы проверяем микросхемы на работоспособность перед отправкой. Причина оверклокинга — чтобы можно было сделать быстрый графический интерфейс. Рядом с кварцем установлены два стабилизирующих конденсатора.
Microtouch использует трюк, который позволяет ему выключаться при питании от батареи. У LDO есть вывод «Включение», который замкнут на общий (то есть LDO отключен по умолчанию). Когда прямоугольная кнопка питания нажата, включается LDO, который включает AVR. Первое, что делает AVR — подает на вывод «Включение» (он соединен с PF0) высокий логический уровень. Когда кнопка питания отпускается, этот вывод будет поддерживать LDO в работающем состоянии. Это означает, что если вы пишете свой код для Microtouch, в первую очередь убедитесь, что PF0 в режиме вывода, и подайте на него высокий логический уровень.
Соответственно, чтобы выключить себя, контроллер может опустить PF0 до низкого уровня. Пользователю придется нажать на кнопку включения снова, чтобы опять включить microtouch. Не стоит так делать, когда устройство питается от USB, потому что загрузчик может зависнуть. Нажатие на «reset» выведет устройство из зависшего состояния.
Кнопка сброса (Reset) подключена к выводу сброса AVR. Ее можно использовать, чтобы запустить загрузчик. Если вы перезаписали загрузчик, она просто перезапустит устройство.
AVR можно перепрошить любым стандартным AVR-программатором, avrdude или чем-то похожим. Во время прошивки не забывайте держать кнопку питания нажатой, или подключите устройство к miniUSB, или подведите питание (3.3 вольта) от программатора. Убедитесь, что питание на самом деле 3.3 вольта. USBtinyISP, например, дает 5 вольт, а такое напряжение может вывести из строя экран.
В качестве подсветки экрана используются 4 белых светодиода, включенных параллельно. Мы используем резисторы 22-68 Ом (на изображении — 68, значение может меняться в зависимости от модели экрана) на каждом катоде. Катоды подключены к выводу PC6. Можно менять подсветку, изменяя напряжение на выводе. Когда подсветка отключена, на экране ничего не видно.
Поддерживаются флеш-карты microSD и microSDHC.
Для получения данных о перемещении на плате microtouch есть акселерометр MMA7455. Акселерометр может определять движение и тряску. Его можно настроить от +-2g (для высокой точности) до +-8g. Не нужно бросать Microtouch для проверки акселерометра! Лучше для этого использовать приложение Accelerate.
Можно использовать разъем USB для загрузки новой прошивки в microtouch. Загрузчик занимает 4 Кб памяти. Сам загрузчик можно перезаписать с помощью программатора AVR ISP.
Еще USB-порт можно использовать для зарядки батареи. Можно запускать Microtouch от USB, но, так как зарядное устройство подключено напрямую к LDO, USB-порт не сможет обеспечить необходимые 100-150 мА. В результате ядро обнаружит, что напряжение слишком низкое, и уменьшит яркость подсветки. Именно поэтому экран не такой яркий, как при питании от аккумулятора.
Чтобы пользоваться microtouch, не нужен AVR-программатор, потому что в microtouch уже прошит загрузчик! Загрузчик активируется нажатием на кнопку «Reset/Boot», когда подключен USB. Определить активность загрузчика можно по мерцанию зеленого светодиода «Boot». После этого плата будет определена как COM-порт, и можно будет использовать avrdude для прошивки. Название программатора — avr109, то есть, например, для проверки загрузчика нужно запустить avrdude -p m32u4 -P COM3 -c avr109
Вскоре загрузчик выдаст тайм-аут (примерно через 5 секунд). Так как мы не используем конвертор USB/Serial, то прошивка происходит очень быстро. Можно прошить контроллер целиком менее чем за 2 секунды!
Загрузчик занимает верхние 4 Кб FLASH-памяти, так что имейте в виду, что у вас остается только 28 Кб вместо 32. Мы считаем, что это не очень уж страшно, и 28 Кб — не так уж и мало. Если вам нужно больше свободного места, всегда можно использовать ISP-разъем и AVR-программатор (который сотрет загрузчик).
Если вы используете Windows, то вам понадобится inf-файл. Яблоководам и линуксоидам беспокоиться ни о чем не нужно, потому что устройство будет определено как /dev/ttyUSB* или /dev/cu* (проверить можно с помощью dmesg).
Чтобы выйти из программы, нужно нажать на темную часть экрана, ниже изображения на экране.
На главном экране показаны программы, прошитые в microtouch. Программы выбираются касанием пальца к нужному кружочку.
Microtouch можно использовать для просмотра изображений, преобразовав картинки в формат im2 (который удобнее рисовать на экране). Конвертер можно найти в репозитории на github'е. Поместите изображения в корневую папку microSD-карты и вставьте карту в microtouch. После включения устройства вы увидите иконки для изображений. Нажмите на кружок, чтобы просмотреть любую. Можно «перетягивать» изображения пальцем.
<
Иконки для файлов на флешке иногда не показываются после загрузки, если объем карты 2GB и больше. Если иконки изображений не появляются, запустите приложение HWTest и убедитесь, что все в порядке с флешкой. После выхода из HWTest иконки должны появиться.
Приложение Off (ни за что не угадаете) выключает ваше устройство. Устройство не выключится, если подключено к USB.
С помощью этого приложения можно проверить напряжение аккумулятора, подсветку, тачскрин, акселерометр и SD-карту. Еще можно менять яркость подсветки.
Doomed — простой трехмерный движок. Можно перемещаться по карте, прикасаясь к той части экрана, в направлении которой вы хотите двигаться.
This app is used to calibrate the touch screen. You only need to do this once for the life of the device: the calibration is stored permanently in EEPROM. Touch the centers of the circles with finger or stylus to set the calibration points.
Это приложение используется для калибровки тачскрина: нужно касаться центров кружков пальцем или стилусом. Калибровку можно выполнить всего один раз за все время жизни устройства: данные калибровки сохраяются непосредственно в EEPROM.
Это приложение использует трехосевой акселерометр для перемещения шарика по экрану, а так же выводит «кардиограмму» считываемых данных. Шарик перемещается при встряхивании устройства.
Маленькая милая программка, демонстрирующая спрайтовую анимацию пэкмана (пока что играть в пэкмана нельзя).
Эта программа рисует на экране трехмерный икосаэдр. Фигура реагирует на акселерометр, ее можно вращать, встряхивая устройство.
Еще одно трехмерное приложение.
Нажимайте на квадратики, берегитесь мин! Один-в-один как Сапёр, но не нужно устанавливать Windows.
Можно рисовать на экране своим пальцем.
Игра для одного игрока, похожая на Го. Игра заканчивается, когда все плитки закрашены одним цветом.
Если вы хотите разрабатывать программы для microtouch, то вам потребуется AVR-gcc.
Примечание переводчика: на сегодняшний день имеется официальный сайт проекта на sourceforge и приложение для чтения электронных книг в формате epub. Гаджет можно собрать самому или приобрести в интернет-магазинах.
Конечно, одной схемы и пожеланий удачи явно недостаточно. Поэтому создатель microtouch (которого мы знаем по кодовому имени "Rossum") написал операционную систему и несколько демонстрационных приложений, например:
- Image viewer — можно вставить microSD с изображениями, слайд-шоу или анимациями, и они будут показаны как «мини-программы»
- Calibrate — калибровка сенсорного экрана
- Doomed — трехмерный лабиринт
- Accelerate — нужно сохранять шарик в центре экрана с помощью акселерометра
- Paint — рисование пальцами без возможности очистки экрана
- Flip — игра в реверси
- Minesweeper — Сапер, для которого не нужно устанавливать windows
- 3D Icosohedron — трехмерный икосаэдр, управляемый акселерометром
- Pacman — демонстрация спрайтовой анимации
- Lattice — демонстрация трехмерной сетки
Проект является результатом сотрудничества между Rossum и Ladyada, разработан в Калифорнии и Нью-Йорке.
Аппаратный дизайн
Микроконтроллер
Мозг платы Microtouch — это Atmega32u4 в корпус TQFP. У чипа есть встроенная поддержка USB и много контактов.
Литий-полимерный аккумулятор и зарядное устройство
На плате имеется зарядное устройство для литий-полимерных аккумуляторов на 3.7 вольта (MCP73812). Аккумулятор нужно подключать к 2х-пиновому JST-PH, не забыв проверить полярность перед подключением. Микросхема зарядного устройства очень простая, но нормально заряжает аккумулятор.Ток зарядки примерно 250 мА, поэтому не включайте ее к хабу без дополнительного питания. Заряжаться нормально скорее всего будет от любого компьютера. К сожалению, нет никакого (например, светодиодного) уведомления о том, что батарея зарядилась, но можно определить статус батареи через АЦП микроконтроллера. Можно менять ток заряда, меняя сопротивление R17. Читайте даташит к MCP73812, чтобы подобрать резистор для нужного тока заряда.
Питание (3.3 вольта)
Выводы аккумулятора (или USB) подключаются к LP2985 3.3v LDO. Этот регулятор очень хорошего качества, дает примерно 1% погрешности и ток до 150 миллиампер. В схеме microtouch больше всего потребляют тока 4 светодиода подсветки (всего до 80 мА). Кроме того, 10-20 мА кушает микроконтроллер, примерно 20 мА забирает TFT, и еще 2 мА — красный светодиодный индикатор. Акселерометр практически не потребляет энергии.
Светодиодный индикатор
Этот светодиод подключен к выводу PC7 и используется для индикации активности загрузчика. Можно его использовать как угодно.
Кварц
Частота кварцевого генератора — 16 МГц. Это небольшой оверклокинг Atmel (на 3.3В лучше использовать частоту 12 МГц); мы проверяем микросхемы на работоспособность перед отправкой. Причина оверклокинга — чтобы можно было сделать быстрый графический интерфейс. Рядом с кварцем установлены два стабилизирующих конденсатора.
Кнопка питания (или Как эта штуковина включается?)
Microtouch использует трюк, который позволяет ему выключаться при питании от батареи. У LDO есть вывод «Включение», который замкнут на общий (то есть LDO отключен по умолчанию). Когда прямоугольная кнопка питания нажата, включается LDO, который включает AVR. Первое, что делает AVR — подает на вывод «Включение» (он соединен с PF0) высокий логический уровень. Когда кнопка питания отпускается, этот вывод будет поддерживать LDO в работающем состоянии. Это означает, что если вы пишете свой код для Microtouch, в первую очередь убедитесь, что PF0 в режиме вывода, и подайте на него высокий логический уровень.
Соответственно, чтобы выключить себя, контроллер может опустить PF0 до низкого уровня. Пользователю придется нажать на кнопку включения снова, чтобы опять включить microtouch. Не стоит так делать, когда устройство питается от USB, потому что загрузчик может зависнуть. Нажатие на «reset» выведет устройство из зависшего состояния.
Кнопка Reset
Кнопка сброса (Reset) подключена к выводу сброса AVR. Ее можно использовать, чтобы запустить загрузчик. Если вы перезаписали загрузчик, она просто перезапустит устройство.
Разъем ISP
AVR можно перепрошить любым стандартным AVR-программатором, avrdude или чем-то похожим. Во время прошивки не забывайте держать кнопку питания нажатой, или подключите устройство к miniUSB, или подведите питание (3.3 вольта) от программатора. Убедитесь, что питание на самом деле 3.3 вольта. USBtinyISP, например, дает 5 вольт, а такое напряжение может вывести из строя экран.
Подсветка экрана
В качестве подсветки экрана используются 4 белых светодиода, включенных параллельно. Мы используем резисторы 22-68 Ом (на изображении — 68, значение может меняться в зависимости от модели экрана) на каждом катоде. Катоды подключены к выводу PC6. Можно менять подсветку, изменяя напряжение на выводе. Когда подсветка отключена, на экране ничего не видно.
microSD/transflash
Поддерживаются флеш-карты microSD и microSDHC.
Трехосевой акселерометр
Для получения данных о перемещении на плате microtouch есть акселерометр MMA7455. Акселерометр может определять движение и тряску. Его можно настроить от +-2g (для высокой точности) до +-8g. Не нужно бросать Microtouch для проверки акселерометра! Лучше для этого использовать приложение Accelerate.
USB
Можно использовать разъем USB для загрузки новой прошивки в microtouch. Загрузчик занимает 4 Кб памяти. Сам загрузчик можно перезаписать с помощью программатора AVR ISP.
Еще USB-порт можно использовать для зарядки батареи. Можно запускать Microtouch от USB, но, так как зарядное устройство подключено напрямую к LDO, USB-порт не сможет обеспечить необходимые 100-150 мА. В результате ядро обнаружит, что напряжение слишком низкое, и уменьшит яркость подсветки. Именно поэтому экран не такой яркий, как при питании от аккумулятора.
Загрузчик
Чтобы пользоваться microtouch, не нужен AVR-программатор, потому что в microtouch уже прошит загрузчик! Загрузчик активируется нажатием на кнопку «Reset/Boot», когда подключен USB. Определить активность загрузчика можно по мерцанию зеленого светодиода «Boot». После этого плата будет определена как COM-порт, и можно будет использовать avrdude для прошивки. Название программатора — avr109, то есть, например, для проверки загрузчика нужно запустить avrdude -p m32u4 -P COM3 -c avr109
Вскоре загрузчик выдаст тайм-аут (примерно через 5 секунд). Так как мы не используем конвертор USB/Serial, то прошивка происходит очень быстро. Можно прошить контроллер целиком менее чем за 2 секунды!
Загрузчик занимает верхние 4 Кб FLASH-памяти, так что имейте в виду, что у вас остается только 28 Кб вместо 32. Мы считаем, что это не очень уж страшно, и 28 Кб — не так уж и мало. Если вам нужно больше свободного места, всегда можно использовать ISP-разъем и AVR-программатор (который сотрет загрузчик).
Если вы используете Windows, то вам понадобится inf-файл. Яблоководам и линуксоидам беспокоиться ни о чем не нужно, потому что устройство будет определено как /dev/ttyUSB* или /dev/cu* (проверить можно с помощью dmesg).
Программы!
Чтобы выйти из программы, нужно нажать на темную часть экрана, ниже изображения на экране.
Главное меню
На главном экране показаны программы, прошитые в microtouch. Программы выбираются касанием пальца к нужному кружочку.
Image viewer (встроенный просмотрщик изображений)
Microtouch можно использовать для просмотра изображений, преобразовав картинки в формат im2 (который удобнее рисовать на экране). Конвертер можно найти в репозитории на github'е. Поместите изображения в корневую папку microSD-карты и вставьте карту в microtouch. После включения устройства вы увидите иконки для изображений. Нажмите на кружок, чтобы просмотреть любую. Можно «перетягивать» изображения пальцем.
<
Иконки для файлов на флешке иногда не показываются после загрузки, если объем карты 2GB и больше. Если иконки изображений не появляются, запустите приложение HWTest и убедитесь, что все в порядке с флешкой. После выхода из HWTest иконки должны появиться.
Off
Приложение Off (ни за что не угадаете) выключает ваше устройство. Устройство не выключится, если подключено к USB.
HW Test
С помощью этого приложения можно проверить напряжение аккумулятора, подсветку, тачскрин, акселерометр и SD-карту. Еще можно менять яркость подсветки.
Doomed
Doomed — простой трехмерный движок. Можно перемещаться по карте, прикасаясь к той части экрана, в направлении которой вы хотите двигаться.
Calibrate App
This app is used to calibrate the touch screen. You only need to do this once for the life of the device: the calibration is stored permanently in EEPROM. Touch the centers of the circles with finger or stylus to set the calibration points.
Это приложение используется для калибровки тачскрина: нужно касаться центров кружков пальцем или стилусом. Калибровку можно выполнить всего один раз за все время жизни устройства: данные калибровки сохраяются непосредственно в EEPROM.
Accelerate App
Это приложение использует трехосевой акселерометр для перемещения шарика по экрану, а так же выводит «кардиограмму» считываемых данных. Шарик перемещается при встряхивании устройства.
PacMan App
Маленькая милая программка, демонстрирующая спрайтовую анимацию пэкмана (пока что играть в пэкмана нельзя).
Icosohedron app
Эта программа рисует на экране трехмерный икосаэдр. Фигура реагирует на акселерометр, ее можно вращать, встряхивая устройство.
Lattice App
Еще одно трехмерное приложение.
Mines App
Нажимайте на квадратики, берегитесь мин! Один-в-один как Сапёр, но не нужно устанавливать Windows.
Paint App
Можно рисовать на экране своим пальцем.
Flip App
Игра для одного игрока, похожая на Го. Игра заканчивается, когда все плитки закрашены одним цветом.
Скачать
- PCB в формате EagleCAD расположены в репозитории github разработчика Adafruit (распространяется на условиях, сходных с Creative Commons Attrib/Share)
- Код прошивки и конвертор изображений находится в репозитории github разработчика Rossum (лиценизия MIT)
- INF-файл для поддержки загрузчика в ОС Windows
Если вы хотите разрабатывать программы для microtouch, то вам потребуется AVR-gcc.
Примечание переводчика: на сегодняшний день имеется официальный сайт проекта на sourceforge и приложение для чтения электронных книг в формате epub. Гаджет можно собрать самому или приобрести в интернет-магазинах.