Pull to refresh

Microtouch

Reading time 7 min
Views 8.3K
Original author: Limor Ladyada
Да, iTouch офигителен. Но кому нужно такое «закрытое» устройство? Может, лучше сделать свой гаджет с сенсорным экраном, написать свои программы — всё с использованием свободных железа и программ? Ну да, пусть этот гаджет не умеет воспроизводить MP3, но в нём есть цветной сенсорный (резистивный) TFT экран 320x240 точек, 8-битный микроконтроллер Atmega32u4, зарядное устройство для литий-полимерных аккумуляторов, управление подсветкой, разъем для microSD и трехосевой акселерометр. Любопытная штучка, особенно для тех, кто любит что-нибудь делать своими руками, как думаете?


image
image
Конечно, одной схемы и пожеланий удачи явно недостаточно. Поэтому создатель microtouch (которого мы знаем по кодовому имени "Rossum") написал операционную систему и несколько демонстрационных приложений, например:
  • Image viewer — можно вставить microSD с изображениями, слайд-шоу или анимациями, и они будут показаны как «мини-программы»
  • Calibrate — калибровка сенсорного экрана
  • Doomed — трехмерный лабиринт
  • Accelerate — нужно сохранять шарик в центре экрана с помощью акселерометра
  • Paint — рисование пальцами без возможности очистки экрана
  • Flip — игра в реверси
  • Minesweeper — Сапер, для которого не нужно устанавливать windows
  • 3D Icosohedron — трехмерный икосаэдр, управляемый акселерометром
  • Pacman — демонстрация спрайтовой анимации
  • Lattice — демонстрация трехмерной сетки


Проект является результатом сотрудничества между Rossum и Ladyada, разработан в Калифорнии и Нью-Йорке.

Аппаратный дизайн


image
Микроконтроллер

image
Мозг платы Microtouch — это Atmega32u4 в корпус TQFP. У чипа есть встроенная поддержка USB и много контактов.

Литий-полимерный аккумулятор и зарядное устройство

image
image
На плате имеется зарядное устройство для литий-полимерных аккумуляторов на 3.7 вольта (MCP73812). Аккумулятор нужно подключать к 2х-пиновому JST-PH, не забыв проверить полярность перед подключением. Микросхема зарядного устройства очень простая, но нормально заряжает аккумулятор.Ток зарядки примерно 250 мА, поэтому не включайте ее к хабу без дополнительного питания. Заряжаться нормально скорее всего будет от любого компьютера. К сожалению, нет никакого (например, светодиодного) уведомления о том, что батарея зарядилась, но можно определить статус батареи через АЦП микроконтроллера. Можно менять ток заряда, меняя сопротивление R17. Читайте даташит к MCP73812, чтобы подобрать резистор для нужного тока заряда.

Питание (3.3 вольта)

image
Выводы аккумулятора (или USB) подключаются к LP2985 3.3v LDO. Этот регулятор очень хорошего качества, дает примерно 1% погрешности и ток до 150 миллиампер. В схеме microtouch больше всего потребляют тока 4 светодиода подсветки (всего до 80 мА). Кроме того, 10-20 мА кушает микроконтроллер, примерно 20 мА забирает TFT, и еще 2 мА — красный светодиодный индикатор. Акселерометр практически не потребляет энергии.

Светодиодный индикатор

image
Этот светодиод подключен к выводу PC7 и используется для индикации активности загрузчика. Можно его использовать как угодно.

Кварц

image
Частота кварцевого генератора — 16 МГц. Это небольшой оверклокинг Atmel (на 3.3В лучше использовать частоту 12 МГц); мы проверяем микросхемы на работоспособность перед отправкой. Причина оверклокинга — чтобы можно было сделать быстрый графический интерфейс. Рядом с кварцем установлены два стабилизирующих конденсатора.

Кнопка питания (или Как эта штуковина включается?)

image
Microtouch использует трюк, который позволяет ему выключаться при питании от батареи. У LDO есть вывод «Включение», который замкнут на общий (то есть LDO отключен по умолчанию). Когда прямоугольная кнопка питания нажата, включается LDO, который включает AVR. Первое, что делает AVR — подает на вывод «Включение» (он соединен с PF0) высокий логический уровень. Когда кнопка питания отпускается, этот вывод будет поддерживать LDO в работающем состоянии. Это означает, что если вы пишете свой код для Microtouch, в первую очередь убедитесь, что PF0 в режиме вывода, и подайте на него высокий логический уровень.

Соответственно, чтобы выключить себя, контроллер может опустить PF0 до низкого уровня. Пользователю придется нажать на кнопку включения снова, чтобы опять включить microtouch. Не стоит так делать, когда устройство питается от USB, потому что загрузчик может зависнуть. Нажатие на «reset» выведет устройство из зависшего состояния.

Кнопка Reset

image
Кнопка сброса (Reset) подключена к выводу сброса AVR. Ее можно использовать, чтобы запустить загрузчик. Если вы перезаписали загрузчик, она просто перезапустит устройство.

Разъем ISP

image
AVR можно перепрошить любым стандартным AVR-программатором, avrdude или чем-то похожим. Во время прошивки не забывайте держать кнопку питания нажатой, или подключите устройство к miniUSB, или подведите питание (3.3 вольта) от программатора. Убедитесь, что питание на самом деле 3.3 вольта. USBtinyISP, например, дает 5 вольт, а такое напряжение может вывести из строя экран.

Подсветка экрана

image
В качестве подсветки экрана используются 4 белых светодиода, включенных параллельно. Мы используем резисторы 22-68 Ом (на изображении — 68, значение может меняться в зависимости от модели экрана) на каждом катоде. Катоды подключены к выводу PC6. Можно менять подсветку, изменяя напряжение на выводе. Когда подсветка отключена, на экране ничего не видно.

microSD/transflash

image
Поддерживаются флеш-карты microSD и microSDHC.

Трехосевой акселерометр

image
Для получения данных о перемещении на плате microtouch есть акселерометр MMA7455. Акселерометр может определять движение и тряску. Его можно настроить от +-2g (для высокой точности) до +-8g. Не нужно бросать Microtouch для проверки акселерометра! Лучше для этого использовать приложение Accelerate.

USB

image
Можно использовать разъем 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
image
Вскоре загрузчик выдаст тайм-аут (примерно через 5 секунд). Так как мы не используем конвертор USB/Serial, то прошивка происходит очень быстро. Можно прошить контроллер целиком менее чем за 2 секунды!
Загрузчик занимает верхние 4 Кб FLASH-памяти, так что имейте в виду, что у вас остается только 28 Кб вместо 32. Мы считаем, что это не очень уж страшно, и 28 Кб — не так уж и мало. Если вам нужно больше свободного места, всегда можно использовать ISP-разъем и AVR-программатор (который сотрет загрузчик).
Если вы используете Windows, то вам понадобится inf-файл. Яблоководам и линуксоидам беспокоиться ни о чем не нужно, потому что устройство будет определено как /dev/ttyUSB* или /dev/cu* (проверить можно с помощью dmesg).

Программы!


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

Главное меню

image
На главном экране показаны программы, прошитые в microtouch. Программы выбираются касанием пальца к нужному кружочку.

Image viewer (встроенный просмотрщик изображений)

image
Microtouch можно использовать для просмотра изображений, преобразовав картинки в формат im2 (который удобнее рисовать на экране). Конвертер можно найти в репозитории на github'е. Поместите изображения в корневую папку microSD-карты и вставьте карту в microtouch. После включения устройства вы увидите иконки для изображений. Нажмите на кружок, чтобы просмотреть любую. Можно «перетягивать» изображения пальцем.
image<
Иконки для файлов на флешке иногда не показываются после загрузки, если объем карты 2GB и больше. Если иконки изображений не появляются, запустите приложение HWTest и убедитесь, что все в порядке с флешкой. После выхода из HWTest иконки должны появиться.

Off

Приложение Off (ни за что не угадаете) выключает ваше устройство. Устройство не выключится, если подключено к USB.

HW Test

image
С помощью этого приложения можно проверить напряжение аккумулятора, подсветку, тачскрин, акселерометр и SD-карту. Еще можно менять яркость подсветки.

Doomed

image
Doomed — простой трехмерный движок. Можно перемещаться по карте, прикасаясь к той части экрана, в направлении которой вы хотите двигаться.

Calibrate App

image
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

image
Это приложение использует трехосевой акселерометр для перемещения шарика по экрану, а так же выводит «кардиограмму» считываемых данных. Шарик перемещается при встряхивании устройства.

PacMan App

image
Маленькая милая программка, демонстрирующая спрайтовую анимацию пэкмана (пока что играть в пэкмана нельзя).

Icosohedron app

image
Эта программа рисует на экране трехмерный икосаэдр. Фигура реагирует на акселерометр, ее можно вращать, встряхивая устройство.

Lattice App

image
Еще одно трехмерное приложение.

Mines App

image
Нажимайте на квадратики, берегитесь мин! Один-в-один как Сапёр, но не нужно устанавливать Windows.

Paint App

Можно рисовать на экране своим пальцем.

Flip App

Игра для одного игрока, похожая на Го. Игра заканчивается, когда все плитки закрашены одним цветом.

Скачать



Если вы хотите разрабатывать программы для microtouch, то вам потребуется AVR-gcc.

Примечание переводчика: на сегодняшний день имеется официальный сайт проекта на sourceforge и приложение для чтения электронных книг в формате epub. Гаджет можно собрать самому или приобрести в интернет-магазинах.
Tags:
Hubs:
+50
Comments 22
Comments Comments 22

Articles