PCCar.ru - Ваш автомобильный компьютер

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   Разработка устройств (http://pccar.ru/forumdisplay.php?f=18)
-   -   Контроллер резистивного сенсорного экрана, совместимый с Андроид. (http://pccar.ru/showthread.php?t=18943)

zyxel812 29.03.2013 20:40

Контроллер резистивного сенсорного экрана, совместимый с Андроид.
 
Вложений: 1
Представляю вашему вниманию контроллер четырех проводного резистивного сенсорного экрана, выполненный на микроконтроллере ATmega32U4.
Сначала самое интересное, демонстрация:


Почему именно этот микроконтроллер, потому что это один из самых простых с аппаратным USB и аналоговыми входами. А так же, легко смог купить такую вот поделку: Dreamer Nano 4.0 за относительно не большую сумму (ну не очень я люблю травить платы:no:)

Сенсорный экран подключайте к входам А0,А1,А2,А3 (на микроконтроллере это порты PF7, PF6, PF5, PF4 соответственно). А0 - Верхняя часть, А1 - правая часть, А2 - нижняя часть, А3 - левая часть.

Вот как это выглядит:
https://lh6.googleusercontent.com/-y...4/IMG_1066.JPG
И с другой стороны:
https://lh4.googleusercontent.com/-N...4/IMG_1067.JPG

Прошивка и утилита калибровки в приложенном архиве. После того как причешу немножко код, чтоб он стал понятен не только мне, выложу еще и исходники.

Устройство представляется составным: виртуальный последовательный порт и сенсорное перо. Порт нужен только для калибровки. Утилита калибровки существует только под винду. Калибровочные коэффициенты сохраняются в памяти контроллера, поэтому калибруем на винде, затем втыкаем в андроид. В калибровочной утилите, коэффициенты автоматически не сохраняются в контроллер, нажимайте кнопку "Upload to device". При желании, цифры можно подредактировать вручную. Позже напишу что они значат и как вычисляются.
Обращаю внимание, что в винде курсор может и не двигаться, в Андроиде должно быть всё ок. Дело в том, что в отчете (HID report) который устройство передает в компьютер присутствуют два флага - прикосновение пером и прикосновение пальцем. Если передавать прикосновение и пером и пальцем, в винде все работает, в андроиде тоже, но мелкие элементы, такие как пункты меню, не реагируют на прикосновения. Если передавать только прикосновение пером, то в винде, по не выясненным пока причинам, перестает двигаться курсор, а в Андроиде всё прекрасно, в т.ч. и меню. Оставил пока по последнему варианту, так как для винды контроллеров и так хватает. В общем, еще предстоит разобраться, когда желание появится.

Чего имею еще сказать:
АЦП микроконтроллера слабоват, он 10-ти разрядный, но младшие разряды это практически шум, я откидываю два младших разряда и получаю 8-битное число для каждой координаты. Т.е. разрешение по каждой координате получается максимум 256. Да и при этом, младший разряд плавает, однако этого вполне хватает, чтобы попадать по клавишам экранной клавиатуры.
Можно принять меры по повышению точности как программные, так и аппаратные. Готов обсудить, если появятся заинтересованные знающие люди.
Это не совсем законченный проект, на данный момент достигнута та точка, после которой результаты можно использовать на практике. Поэтому всё не так красиво, как хотелось бы, но это работает.

UPD 03.05.2013: Обновил прошивку. Улучшился способ измерения позиции касания. Теперь каждая координата измеряется 10 раз и выбирается наиболее часто встречающееся значение, что значительно уменьшает влияние помех и дребезг (за данный способ спасибо AngelOfGrief).
При замкнутом выводе D2 (на контроллере вывод PD1) на землю, контроллер работает в режиме "винды", т.е. в винде курсор тоже будет двигаться. Для работы с Андроидом вывод лучше оставить свободным.
Откомпилированная прошивка, утилита калибровки и исходники теперь в одном архиве.

UPD 14.06.2013: Появилась инструкция по прошивке через bootloader. За что спасибо s.m.
UPD 26.08.2014: Протокол калибровки
UPD 16.04.2015: Прошивка любого Hex-файла в Arduino при помощи штатного загрузчика

Hamster 29.03.2013 20:49

Здорово!
Теоретически такими темпами можно и до подключения емкостного тача дойти - вообще сказка будет!

З.Ы. На видео котяра зачетно подпевает :)

wave_is 29.03.2013 21:15

Отличная новость. Представляю сколько людей обрадуется с машинами, в которых экраны встроены

zyxel812 01.04.2013 19:34

Добавил в первое сообщение исходники прошивки. Выполнены под Atmel Studio 6.
Большая просьба, если что-то модернизируете, выкладывайте сюда. Если самому модернизировать лень, но есть предложения по модернизации, которые могут улучшить работу контроллера, пишите, буду по возможности выполнять.

KotikBSD 18.04.2013 14:08

А сколько по деньгами и как приобрести? :)

Заказал тут в Китае всякую всячину что бы в машину андроид встроить, в том числе контроллер для ресистивного тача. Но потом так понял что не прикручу я этот контроллер к андроиду, а там конечно как повезет. А тут набрел на вашу разработку, и она заинтересовала :)

zyxel812 23.04.2013 21:46

В первом посте есть ссылка на плату, а так же прошивка. Никакая доработка не требуется. Покупаешь контроллер, прошиваешь и можно использовать.

Andy1306 24.04.2013 13:51

А если использовать этот контролер - Arduino Leonardo прошивка без доработки подойдет?

zyxel812 24.04.2013 20:49

На первый взгляд, да. Нужно только проверить по схеме соответствие выводов, что А0,А1,А2,А3 подключены к PF7, PF6, PF5, PF4 на микроконтроллере.

Andy1306 24.04.2013 21:41

Спасибо за ответ, согласно этой принципиальной схеме вроде А0,А1,А2,А3 подключены к PF7, PF6, PF5, PF4 на микроконтроллере, или может я неправ?

AngelOfGrief 25.04.2013 19:31

Цитата:

Сообщение от Hamster (Сообщение 253142)
Здорово!
Теоретически такими темпами можно и до подключения емкостного тача дойти - вообще сказка будет!

Емкостные тачи, по крайней мере у мобильников, всегда идут сразу с контроллером. Т.е. они как-то по-другому работают.


Часовой пояс GMT +4, время: 07:34.

Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Перевод: zCarot