Контроллер резистивного тачскрина для андроид
Представляю вашему вниманию контроллер четырех проводного резистивного сенсорного экрана, выполненный на микроконтроллере ATmega32U4.
Сначала самое интересное, демонстрация:
Почему именно этот микроконтроллер, потому что это один из самых простых с аппаратным USB и аналоговыми входами. А так же, легко смог купить такую вот поделку: Dreamer Nano 4.0 за относительно не большую сумму (ну не очень я люблю травить платы)
Сенсорный экран подключайте к входам А0,А1,А2,А3 (на микроконтроллере это порты PF7, PF6, PF5, PF4 соответственно). А0 — Верхняя часть, А1 — правая часть, А2 — нижняя часть, А3 — левая часть.
Вот как это выглядит:
И с другой стороны:
Прошивка и утилита калибровки в приложенном архиве. После того как причешу немножко код, чтоб он стал понятен не только мне, выложу еще и исходники.
Устройство представляется составным: виртуальный последовательный порт и сенсорное перо. Порт нужен только для калибровки. Утилита калибровки существует только под винду. Калибровочные коэффициенты сохраняются в памяти контроллера, поэтому калибруем на винде, затем втыкаем в андроид. В калибровочной утилите, коэффициенты автоматически не сохраняются в контроллер, нажимайте кнопку «Upload to device». При желании, цифры можно подредактировать вручную. Позже напишу что они значат и как вычисляются.
Обращаю внимание, что в винде курсор может и не двигаться, в Андроиде должно быть всё ок. Дело в том, что в отчете (HID report) который устройство передает в компьютер присутствуют два флага — прикосновение пером и прикосновение пальцем. Если передавать прикосновение и пером и пальцем, в винде все работает, в андроиде тоже, но мелкие элементы, такие как пункты меню, не реагируют на прикосновения. Если передавать только прикосновение пером, то в винде, по не выясненным пока причинам, перестает двигаться курсор, а в Андроиде всё прекрасно, в т.ч. и меню. Оставил пока по последнему варианту, так как для винды контроллеров и так хватает. В общем, еще предстоит разобраться, когда желание появится.
Чего имею еще сказать:
АЦП микроконтроллера слабоват, он 10-ти разрядный, но младшие разряды это практически шум, я откидываю два младших разряда и получаю 8-битное число для каждой координаты. Т.е. разрешение по каждой координате получается максимум 256. Да и при этом, младший разряд плавает, однако этого вполне хватает, чтобы попадать по клавишам экранной клавиатуры.
Можно принять меры по повышению точности как программные, так и аппаратные. Готов обсудить, если появятся заинтересованные знающие люди.
Это не совсем законченный проект, на данный момент достигнута та точка, после которой результаты можно использовать на практике. Поэтому всё не так красиво, как хотелось бы, но это работает.
UPD 03.05.2013: Обновил прошивку. Улучшился способ измерения позиции касания. Теперь каждая координата измеряется 10 раз и выбирается наиболее часто встречающееся значение, что значительно уменьшает влияние помех и дребезг (за данный способ спасибо AngelOfGrief).
При замкнутом выводе D2 (на контроллере вывод PD1) на землю, контроллер работает в режиме «винды», т.е. в винде курсор тоже будет двигаться. Для работы с Андроидом вывод лучше оставить свободным.
Откомпилированная прошивка, утилита калибровки и исходники теперь в одном архиве.
Источник
Резистивное сенсорное стекло (контроллер для Android/Windows)
Almas Amirov
Я автолюбитель, в автомобиле (1998 года выпуска) с завода ставится цветной сенсорный монитор, который показывает карты навигации, расход, климат контроль и в принципе все. Болезнь мониторов этих годов в том, что он вместо картинки начинает показывать тупо белый экран. Многие ставят китайские пионеры и иные аналоги 2дин, но я любитель заводского вида. Но с современными кишками. Поэтому от штатного монитора выкинул почти все кишки, установил TFT матрицу 7″ с алиэкспресс, помимо штатной картинки вывел изображение с Android TV Box, но теперь встал вопрос с сенсором. Сенсор довольно примитивный, сверху и сбоку стоят по 13шт ИК излучателей, напротив них по 13шт фотоприемников. Головное устройство (далее ГУ) с каждого фотоприемника получает сигнал (1), т.е. в ГУ идет 26 импульсов. Когда пальцем нажимаем на экран, мы пальцем препятствуем прохождению ИК лучам и фоторезистора (снизу и сбоку) выдает 0, т.е. в ГУ идет 24 импулсьса, и по отсутсвующему импульсу ГУ определяет координаты. Т.к. от заводского сенсора нам придется избавиться, стоит задача установить сенсорное стекло, чтобы управлял Android-ом и имитировал работу штатного оптического сенсора.
Выбор пал на резистивник по причине доступности кода, нашел на сайте https://wiki.iarduino.ru/page/rabota-s-touchscreen/ . Но здесь описан способ считывания координатов с резистивника. Поэтому я пошел дальше: получив координаты, я преобразовал их в разрешение дисплея, но столкнулся с проблемой, ведь резистивник у меня имитирует мышь, поэтому пришлось преобразовать в разрешение мыши. Я нарисовал калибровочну сетку, на Arduino дал команду mouse.move (100, 100), тем самым определив разрешение мыши на Андроид (разрешение мыши андроид и винды отличаются)
Рис 1. Калибровочная сетка. Слева вверху указан квадрат 100х100
Получив квадрат 100х100 пикселей выясняем разрешение нашей мышки на Андроиде равна 320х180. Но вот беда, библиотека мыши ограничивает нас char, которое имеет значение -127 . 127. Это значит мышку отправить гулять мы можем в этих пределах. Поэтому я составил формулу:
x0 = p.x / 127;
у0 = p.у / 127;
тем самым получаем, сколько раз двигать мышь на максимальные координаты (127, 127). Получив ответ, я добавляю цикл
Источник
Контроллер резистивного тачскрина для андроид
Универсальный тачскрин для ГУ на Android
Автомагнитола и устройство на Android
Обсуждение »
ГУ : Тачскрин для ГУ на Android
— Поиск оригинального или совместимого тачскрина для своего ГУ на Android не увенчалось успехом, поэтому пришлось начать поиски решения даной задачи.
— В результате поиска было обнаружено несколько вариантов универсальных тачскринов, которые могут работать с ГУ по USB.
На этом ресурсе (4pda) не нашлось информации о подобных устройствах, поэтому решил создать тему с описанием универсальных тачскринов для тех пользователей, которые не могут найти для своих ГУ на Android оригинальные тачскрины.
[Полезное в этой теме]
Сообщение отредактировал ES. — 29.08.20, 12:54
Минусы:
— для Андроид драйвера имеются на сайте, но их можно встроить только в ядро (перекомпилировать ядро), что проблематично для большинства пользователей
— если встроить контроллер с тачскрином в ГУ под Андроид, то при сбое калибровки тачскрина будет необходимость разборки ГУ для подключения ноутбука с Windows, для проведения калибровки.
Вариант подключения этого тачскрина под Андроид от ABCh смотреть там: Подключение к Андроид
но у меня на 2-х девайсах такой вариант не запустился.
Сообщение отредактировал PauS — 24.01.18, 12:27
Плюсы:
— малогабаритная плата контроллера тачскрина с разъемом для 4-х проводного резистивного тачскрина
— в Android работа тачскрина в режиме мыши или дигитайзера
— нормальный софт для калибровки тачскрина под Windows по 4-м, 9-ти и 25-ти точкам касания
— плавная отработка касаний контроллером
— документацию и софт можно посмотреть там: http://www.microchip.com/wwwproducts/en/AR1100
Минусы:
— если встроить контроллер с тачскрином в ГУ под Андроид, то при сбое калибровки тачскрина будет необходимость разборки ГУ для подключения ноутбука с Windows, для проведения калибровки.
Сообщение отредактировал PauS — 13.11.17, 20:39
Плюсы:
— На данный контроллер тачскрина имеются исходники для контроллера
— тема по данному контроллеру находится там: http://pccar.ru/showthread.php?t=18943
Минусы для прошивки с сайта pccar.ru:
— происходит подергивание точки касания тачскрина из-за не совсем корректного алгоритма вычисления точки касания
— калибровка тачскрина проходит из под Windows и соединение с контроллером для калибровки происходит не всегда корректно
— при подключении к винде требует драйвер
Моя модификация прошивки для этого контроллера исправляющая некоторые минусы оригинальной прошивки:
Из-за этих минусов решил модифицировать прошивку:
— на светодиод «1» (см.фото) выведена индикация касания тача (есть касание — горит)
— удалил из прошивки весь код связанный с виртуальным портом, который нужен был для
калибровки из под винды, теперь винда драйвер не просит
— дописал код калибровки в прошивку. Вначале сделал калибровку по нажатию кнопки
на плате контроллера, но потом подумал и пришел к выводу, что это будет не очень
удобно, т.к. будет необходимость разбирать ГУ, чтобы нажимать кнопку для калиброки.
поэтому сделал без дополнительной кнопки.
Прошивки на Pro Micro только на 16 МГц :
Прошивка для Android: HID_Resistive_A_TouchController.zip ( 439.06 КБ )
Прошивка для Windows: TouchController_HID_Resistive_Windows.rar ( 400.79 КБ )
вот выкладываю получившуюся прошивку и кое что сопутствующее.
в архиве:
— TouchController_HID_Resistive_A.hex — моя прошивка контроллера для работы под Android
— 800_480.jpg — файл с расположением точек калибровки
— TC_REZ_01.jpg — внешний вид на чем проводилось тестирование
— Boot32u4.zip — архив с программатором для платы контроллера
Калибровка получилась может и не очень, но по мне нормально.
Калибровка тачскрина осуществляется по двум точкам расположенным в левом верхнем
и в правом нижнем углах смотри 800_480.jpg. Точки калибровки располагаются на
расстоянии 10% от длины и высоты (соответственно) дисплея. Сдвинуть точки
калибровки на 10% пришлось из-за конструкции тачскрина. мой в углах не работает.
Для первой калибровки, мне кажется, лучше сделать шаблон в размер вашего дисплея
из прозрачной пленки (кальки) с нарисованными двумя точками для калибровки.
Калибровка:
1. Наложить шаблон калибровки на экран дисплея (вывести на весь экран в Андроиде
картинку калибровки например 800_480.jpg).
2. Нажать и удерживать стилусом или другим предметом в любую точку экрана с
тачскрином. Светодиод 1 на плате контроллера (TC_REZ_01.jpg) будет постоянно светится.
3. Контролировать светодиод 2 на плате контроллера, примерно через 13 сек. светодиод 2
мигнет 1 раз, после этого отпустить стилус.
4. Нажать стилусом в точку 1 (левый верхний угол) и удерживать пару сек. пока не мигнет
светодиод 2, после этого отпустить стилус.
5. Нажать стилусом в точку 2 (правый нижний угол) и удерживать пару сек. пока не мигнет
светодиод 2, после этого отпустить стилус.
6. Нажать стилусом в любую точку экрана на пару сек.
Калибровка закончена, проверяйте работу тачскрина.
Контроль светодиодов в принципе требуется для определения правильности работы калибровки
и определения времени удержания стилуса во время калибровки, чтобы в последствии проводить
калибровку просто по времени.
Сообщение отредактировал PauS — 11.09.18, 09:37
4. Емкостной тачскрин. Коммерческий проект: Контроллер YAM_TOUCH_I2C_SIMPLE
предназначен для подключения по USB емкостных тачей со встроенным I2C контроллером от:
— FocalTech FT5206/FT5302/FT5306/FT5406/FT5606
— GOODIX GT801/GT811/GT911/GT927x/GT928
— Synaptics S7300B
— VTL CT363
— Atmel MXT1386
Источник
Контроллер резистивного тачскрина для андроид
Универсальный тачскрин для ГУ на Android
Автомагнитола и устройство на Android
Обсуждение »
ГУ : Тачскрин для ГУ на Android
— Поиск оригинального или совместимого тачскрина для своего ГУ на Android не увенчалось успехом, поэтому пришлось начать поиски решения даной задачи.
— В результате поиска было обнаружено несколько вариантов универсальных тачскринов, которые могут работать с ГУ по USB.
На этом ресурсе (4pda) не нашлось информации о подобных устройствах, поэтому решил создать тему с описанием универсальных тачскринов для тех пользователей, которые не могут найти для своих ГУ на Android оригинальные тачскрины.
[Полезное в этой теме]
Сообщение отредактировал ES. — 29.08.20, 12:54
Минусы:
— для Андроид драйвера имеются на сайте, но их можно встроить только в ядро (перекомпилировать ядро), что проблематично для большинства пользователей
— если встроить контроллер с тачскрином в ГУ под Андроид, то при сбое калибровки тачскрина будет необходимость разборки ГУ для подключения ноутбука с Windows, для проведения калибровки.
Вариант подключения этого тачскрина под Андроид от ABCh смотреть там: Подключение к Андроид
но у меня на 2-х девайсах такой вариант не запустился.
Сообщение отредактировал PauS — 24.01.18, 12:27
Плюсы:
— малогабаритная плата контроллера тачскрина с разъемом для 4-х проводного резистивного тачскрина
— в Android работа тачскрина в режиме мыши или дигитайзера
— нормальный софт для калибровки тачскрина под Windows по 4-м, 9-ти и 25-ти точкам касания
— плавная отработка касаний контроллером
— документацию и софт можно посмотреть там: http://www.microchip.com/wwwproducts/en/AR1100
Минусы:
— если встроить контроллер с тачскрином в ГУ под Андроид, то при сбое калибровки тачскрина будет необходимость разборки ГУ для подключения ноутбука с Windows, для проведения калибровки.
Сообщение отредактировал PauS — 13.11.17, 20:39
Плюсы:
— На данный контроллер тачскрина имеются исходники для контроллера
— тема по данному контроллеру находится там: http://pccar.ru/showthread.php?t=18943
Минусы для прошивки с сайта pccar.ru:
— происходит подергивание точки касания тачскрина из-за не совсем корректного алгоритма вычисления точки касания
— калибровка тачскрина проходит из под Windows и соединение с контроллером для калибровки происходит не всегда корректно
— при подключении к винде требует драйвер
Моя модификация прошивки для этого контроллера исправляющая некоторые минусы оригинальной прошивки:
Из-за этих минусов решил модифицировать прошивку:
— на светодиод «1» (см.фото) выведена индикация касания тача (есть касание — горит)
— удалил из прошивки весь код связанный с виртуальным портом, который нужен был для
калибровки из под винды, теперь винда драйвер не просит
— дописал код калибровки в прошивку. Вначале сделал калибровку по нажатию кнопки
на плате контроллера, но потом подумал и пришел к выводу, что это будет не очень
удобно, т.к. будет необходимость разбирать ГУ, чтобы нажимать кнопку для калиброки.
поэтому сделал без дополнительной кнопки.
Прошивки на Pro Micro только на 16 МГц :
Прошивка для Android: HID_Resistive_A_TouchController.zip ( 439.06 КБ )
Прошивка для Windows: TouchController_HID_Resistive_Windows.rar ( 400.79 КБ )
вот выкладываю получившуюся прошивку и кое что сопутствующее.
в архиве:
— TouchController_HID_Resistive_A.hex — моя прошивка контроллера для работы под Android
— 800_480.jpg — файл с расположением точек калибровки
— TC_REZ_01.jpg — внешний вид на чем проводилось тестирование
— Boot32u4.zip — архив с программатором для платы контроллера
Калибровка получилась может и не очень, но по мне нормально.
Калибровка тачскрина осуществляется по двум точкам расположенным в левом верхнем
и в правом нижнем углах смотри 800_480.jpg. Точки калибровки располагаются на
расстоянии 10% от длины и высоты (соответственно) дисплея. Сдвинуть точки
калибровки на 10% пришлось из-за конструкции тачскрина. мой в углах не работает.
Для первой калибровки, мне кажется, лучше сделать шаблон в размер вашего дисплея
из прозрачной пленки (кальки) с нарисованными двумя точками для калибровки.
Калибровка:
1. Наложить шаблон калибровки на экран дисплея (вывести на весь экран в Андроиде
картинку калибровки например 800_480.jpg).
2. Нажать и удерживать стилусом или другим предметом в любую точку экрана с
тачскрином. Светодиод 1 на плате контроллера (TC_REZ_01.jpg) будет постоянно светится.
3. Контролировать светодиод 2 на плате контроллера, примерно через 13 сек. светодиод 2
мигнет 1 раз, после этого отпустить стилус.
4. Нажать стилусом в точку 1 (левый верхний угол) и удерживать пару сек. пока не мигнет
светодиод 2, после этого отпустить стилус.
5. Нажать стилусом в точку 2 (правый нижний угол) и удерживать пару сек. пока не мигнет
светодиод 2, после этого отпустить стилус.
6. Нажать стилусом в любую точку экрана на пару сек.
Калибровка закончена, проверяйте работу тачскрина.
Контроль светодиодов в принципе требуется для определения правильности работы калибровки
и определения времени удержания стилуса во время калибровки, чтобы в последствии проводить
калибровку просто по времени.
Сообщение отредактировал PauS — 11.09.18, 09:37
4. Емкостной тачскрин. Коммерческий проект: Контроллер YAM_TOUCH_I2C_SIMPLE
предназначен для подключения по USB емкостных тачей со встроенным I2C контроллером от:
— FocalTech FT5206/FT5302/FT5306/FT5406/FT5606
— GOODIX GT801/GT811/GT911/GT927x/GT928
— Synaptics S7300B
— VTL CT363
— Atmel MXT1386
Источник