![]() |
Контроллер резистивного сенсорного экрана, совместимый с Андроид.
Вложений: 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 при помощи штатного загрузчика |
Здорово!
Теоретически такими темпами можно и до подключения емкостного тача дойти - вообще сказка будет! З.Ы. На видео котяра зачетно подпевает :) |
Отличная новость. Представляю сколько людей обрадуется с машинами, в которых экраны встроены
|
Добавил в первое сообщение исходники прошивки. Выполнены под Atmel Studio 6.
Большая просьба, если что-то модернизируете, выкладывайте сюда. Если самому модернизировать лень, но есть предложения по модернизации, которые могут улучшить работу контроллера, пишите, буду по возможности выполнять. |
А сколько по деньгами и как приобрести? :)
Заказал тут в Китае всякую всячину что бы в машину андроид встроить, в том числе контроллер для ресистивного тача. Но потом так понял что не прикручу я этот контроллер к андроиду, а там конечно как повезет. А тут набрел на вашу разработку, и она заинтересовала :) |
В первом посте есть ссылка на плату, а так же прошивка. Никакая доработка не требуется. Покупаешь контроллер, прошиваешь и можно использовать.
|
А если использовать этот контролер - Arduino Leonardo прошивка без доработки подойдет?
|
На первый взгляд, да. Нужно только проверить по схеме соответствие выводов, что А0,А1,А2,А3 подключены к PF7, PF6, PF5, PF4 на микроконтроллере.
|
Спасибо за ответ, согласно этой принципиальной схеме вроде А0,А1,А2,А3 подключены к PF7, PF6, PF5, PF4 на микроконтроллере, или может я неправ?
|
Цитата:
|
В общем, кому интересно, Dreamer Nano 4.0 -- это американская версия Arduino Micro, который я без проблем купил за 1100р из наличия в Мск. Он тоже на Atmel 32U4, такого же размера, но немного отличается расположение компонентов на плате. Линии A0-A3 совпадают с указанными в первом посте.
|
Всё получилось? Работает?
|
Как прошить hex файл в эту плату:
Командная строка: avrdude -v -p atmega32u4 -c avr109 -P COM19 -b 57600 -D -Uflash:w:TouchController.hex:i В тек. папке должен лежать файл avrdude.conf Прошивку нужно делать в режиме бутлоадера (когда светодиод "дышит"), для этого жмём сброс и ловим момент когда запустить avrdude! Либо просто передёргиваем USB кабель: в момент подключения он всегда видится как bootloader -- в этот момент и нужно запускать avrdude. COM порт указываем бутлоадера (их там два устанавливается!). В принципе плату можно перевести в бутлоадер открытием COM порта на 1200 baud, но тогда надо писать bat файл. Винда обнаруживает ZD Touch Controller, устанавливаем прилагаемые дрова. |
Вложений: 1
В общем, подключил тач, калибровка прошла успешно, но сразу проверить не смог, т.к. на винде реакции на нажатия вообще никакой. Но светодиодик моргает на плате.
UPD: К Андроиду подключил, работает! :) От растерянности не знал на чём проверить, в итоге не нашёл ничего лучше калькулятора. ))) (тач ещё не смонтирован на дисплей, лежит на столе) Правда через USB хаб не пашет, видимо, питания не хватает, только напрямую. Мой контроллер клавы на PIC работает через хаб нормально. Видимо, это к вопросу очень древней полемики о низком энергопотреблении PIC и высоком Atmel. ))) Разъёмчик для тача обнаружился в старом DVD-RW. |
Скорее проблема не в потреблении, а в софте или в уровнях сигнала.
|
Собрал вместе с дисплеем... Очень доволен. Всё работает отлично. С экранной клавиатуры текст набирается, перелистывание тоже работает, прокрутка итд итп.
Вычитал в инете, что для избежания помех нужно ставить пулапы и кондёры 22 пф (защита от ВЧ помех LCD). Но пулапы как я понял глядя на исходник есть в м/к. Одну проблему нашёл: дребезг. Если немного дольше держать, по несколько раз кнопки нажимаются. Если кратко -- нормально. И ещё присутствует дребезг по X и Y, это заметно, например, когда передвигаешь движки эквалайзера в плеере: держишь на месте, а он ощутимо дрыгается вверх/вниз. Я попробовал подключать параллельно кондёры, не помогает. Реакция становится тупее, а дребезг остаётся. Т.е. дребезжит АЦП м/к. Надо сделать гистерезис: сравнивать значения двух соседних считываний АЦП и если они при условии неотпускания пера отличаются слишком сильно, считать последнюю выборку недействительной. UPD: Пересобрал билд с поддержкой винды, подключил тач к компу. Обнаружил, что при выключенной магнитоле курсор ведёт себя намного спокойнее: дребезг ограничен 1 шагом в обеих координатах. Т.е. дают себя знать помехи от LCD магнитолы (он с высоковольтной подсветкой). Думаю теперь как это дело побороть... А вот кстати аналогичный проектик: http://www.radiolocman.com/shem/sche....html?di=64606 2010 года. ))) |
Вложений: 1
Почитав описание работы хардварных тач-контроллеров, немного доработал программу.
Вкратце смысл: вместо одного считывания берём серию последовательных считываний (по каждой координате отдельно, разумеется), затем из полученного массива вычисляем наиболее часто встречающееся значение (не среднее, а именно наиболее частое!). Это позволяет отсеять случайные пики/помехи. Я сделал 10 считываний, это можно изменить (константа bfs). Но бОльшие значения не улучшают результат, а только замедляют работу программы. В результате этих изменений удалось полностью избавиться от дрыганья движков на эквалайзере плеера. Прокрутка вверх/вниз тоже теперь не дёргается. В граф. редакторе горизонтальное перемещение пера теперь рисует прямую линию. В прошивке оставил нажатие в режиме винды: у меня на Android оно отрабатывается без проблем. Изменения коснулись только файла restouch.c. В аттаче новый .hex файл и изменённый исходник. |
Цитата:
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Обновил прошивку. Смотрите первый пост. Отдельное спасибо AngelOfGrief за проделанную работу.
|
Хочу залить прошивку, но нет программатора.
Есть только два DFRobot Dreamer Nano Что можно сделать? Еще есть старый ноут с LPT - вроде когда-то им atmega8 прошивал. Нашел вот http://avr.ru/ready/tools/prog/5wire Вроде шил им atmega8 - нормуль было |
Так Dreamer Nano же с бутлоадером...
|
Цитата:
|
Сделал.
Вот инструкция по прошивке для чайников Если поднимете в шапку - это облегчит повторение устройства. И было бы неплохо все-таки починить замыкание D2 на землю, потому как замыкание D2 на землю приводит к отваливанию устройства из системы - никакого указателя не появляется Инструкция по прошивке под Windows Код:
Проверено в Win 8 и Win XP |
Цитата:
Ссылку на инструкцию в шапку вынес. s.m., спасибо! |
Цитата:
Плата визуально 100%, как Ваша, покупалась здесь Вот ее схема. Замыкал перемычкой ноги D2 и GND, которая рядом с D2 (хм, возможно я соединял RESET с GND). Попробую вечером еще раз. В любом случае, все уже работает и огромное спасибо за проделанную работу! Вы реально сдвинули с места проблему, с которой я пытался бороться последние 2 года. Сам резистивный тач конечно полное г. после емкостного, но, видимо, лучше уже ничего не сделать с ним. |
Цитата:
|
Цитата:
|
Цитата:
|
Добрый день.
Спасибо большое за вашу разработку, здорово выручила. Вопросик - а нельзя ли собрать утилитку калибровки под андроид? Было бы очень удобно. |
Цитата:
Сейчас совсем нет времени. ИМХО, для разовой настройки вполне подходит виндовая прога. |
Цитата:
|
Цитата:
композитом? |
Цитата:
в принципе можно найти ноутбук с AV-OUT и подключится по нему, для калибровки, но видеоинтерфейс глубоко зарыт в недрах авто, не хочетс разбирать пол торпеды |
и еще: не будет ли наглостью попросить добавить в програмку еще несколько точек калибровки и возможно регулировку чувствительности тач-скрина?
|
Цитата:
|
Цитата:
|
Выражаю огромную благодарность всем участникам проекта.
У меня тоже получилось повторить устройство. Правда заливал HEX - программой uniprof.(через LPT) Я много времени уделил изучению USB Touch Screen адаптеров от лучших производителей. Все устанавливают 8 защитных диодов.( по два диода на провод стекла, к земле и +питания) Наверное защита входов контроллера от статического электричества. |
Часовой пояс GMT +4, время: 13:20. |
Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot