Дисплей от магнитолы к ардуино
Возможно я создал тему не в том разделе (модераторы, поправьте), поскольку проект не реализован.
Суть проекта:
Поставить планшет, как управляющий и отображающий орган автомагнитолы (в идеале - любой). Как контроллер выступает ардуино.
Исходя из того, что магнитолы под андроид стоят порядочно, при том, что обычные автомагнитолы и китайские планшеты стоят понятных денег, хотелось их совмстить. Тем более, что в андроид магнитолах большИе деньги берутся за усилительный тракт, приемники, корпус и т.д.
Львиная доля магнитол (за все не скажу - просто нет информации) построена по следующему принципу - Основной блок магнитолы, содержащий ЦП, усилитель, тюнер, CD и т.д. соединяется с HID (орган отображения и управления) с помощью IC2 подобного интерфейса. Отдельными контактами проходят обычно: кнопка включения, энкодер, подсветка.
Идея:
Перехватить сигналы управления и отображаемой информации от основного блока ардуинкой и передать на планшет по USB. Управление с планшета по USB передавать через ардуинку на центральный блок (ЦБ). Отключать или не отключать дисплей магнитолы, пока не ясно. Хотя между ним и ЦБ идет бешеный обмен информацией, что может помешать корректному управлению.
Что сделано:
1. Раскурочена магнитола от CAMRY v40. Определена микросхема, управляющая дисплеем (NEC mPD16432B). Скачан ее даташит.
2. Ардуинка подключена к дисплею и написан скетч. Дисплей прекрасно управляется и выводит информацию.
3. К ардуинке подключены ЦБ с дисплеем в режиме считывания информации. Написан скетч.
Что не получилось:
А ничего - информация, считываемая ардуинкой, полный бред.
Изначально я считывал информацию стандартными digitalRead(), но скорости считывания не хватало. Перешел на PIND, сократил операции по максимуму, практически чистый си. Все равно бред.
Вопросы:
1. Актуальное время синхроимпульсов (по документации) 400нс. Где - то на границе возможностей ардуинки. Или я ошибаюсь?
2. Если ардуинка не тянет, то что посоветуете. Хотелось бы что-то с компиляторами си и библиотеками. На ассемблере такой проект не потяну.
Не привожу скетчи - они со злостью кучу раз переписывались не комментируясь, стыдно малость.
VGA это сокращение от Video Graphics Array, протокола отображения видео, который часто встречается в мире электроники. В VGA используется одна "частота следования пикселей" и установленная частота вывода видео данных горизонтально, строка за строкой, пока весь кадр не будет отображен, а потом всё начинается снова.
В прошлом я построил много проектов основанных на VGA, но никогда не использовал его с Arduino, поэтому в этом проекте мы будем использовать платформу Arduino UNO для имитации VGA сигнала при помощи непосредственно С кода. Это абсолютно не похоже на то, как это реализовано в видеокартах, но это интересная задача, чтобы увидеть, на сколько хорошо мы знаем и понимаем Arduino и AVR микроконтроллеры, а также VGA протокол. Работа устройства показана на видео.
Цель и обзор этого проекта
Для того, чтобы вывести красный, зеленый и синий цвета на компьютерный VGA монитор, мы должны договориться о разрешении, которое мы будем пытаться имитировать. Например, 800x600 удобно, т.к. используются целые круглые числа, и частота следования пикселей составляет 40МГц. И можно имитировать VGA разрешение 800x600 и выводить 200 линий красного, 200 линий зеленого и 200 линий синего цветов. Поскольку Arduino UNO работает на частоте 16МГц, невозможно получить доступ к каждому пикселю, поэтому мы будем выводить целиком линии.
Элементы:
Arduino UNO
Плата с VGA разъемом
Перемычки (провода)
Компьютерный VGA монитор
Разъем для батареи +9В
Разъем для батарей
Подробный список элементов
Все элементы, используемые в этом проекте перечислены выше, но основные элементы описаны более подробно.
Arduino UNO
Arduino Uno это микроконтроллер, который делает всю работу в этом проекте, выполняет наш код и выдает VGA сигналы, соответствующие тому, что мы хотим вывести на монитор без особых проблем.
Плата с VGA разъемом
Эта плата изначально была сделана для моего проекта Видеокарта для мазохиста, чтобы легко подключать монитор, но я пишу всё больше и больше статьей на тему VGA, поэтому он чрезвычайно полезен.
Перемычки
Обычные перемычки. Мы будем использовать их для подключения Arduino к VGA монитор. Также можно использовать провода со штырьками или крокодильчиками.
Обзор схемы
Это один из тех случаев, когда схема проекта очень мала, потому что большая часть работы происходит в программе. Несколько необходимых соединений показаны на схеме.
Особенности схемы
RGB соединения
В VGA используется смешивание красного зеленого и синего цветов для получения всех цветов радуги. Параметры на каждом из этих контактов показывают монитору, насколько интенсивно должен гореть этот цвет. Мы не регулируем интенсивность цвета, поэтому у нас всегда для каждого из цветов 100% красного, 100% зеленого или 100% синего.
Hsync и Vsync соединения
Для того чтобы знать, какая линия сейчас отображается и завершен ли кадр, используется два сигнала синхронизации: горизонтальная синхронизация H-SYNC и вертикальная синхронизация V-SYNC. Это самые важные сигналы, и если их тайминги будут нарушены, то VGA выход не будет работать как надо.
GND соединения
В VGA разъеме есть много GND выводов для разработчиков, чтобы сделать профессиональный VGA контроллер. Но для того, что мы делаем, нужно всего лишь подключить GND к 5 контакту. Всё!
Основы теории VGA
В спецификации VGA описывается отображение цветовых данных, горизонтальной и вертикальной синхронизации, и об определенном времени на каждое действие, которое нельзя пропускать.
Arduino UNO тактируется кварцевым генератором 16МГц и одна инструкция выполняться за один цикл, что означает, что каждая инструкция в нашей программе будет выполняться точно за (1/16000000) секунды или примерно 62,5 наносекунды.
Так как каждая инструкция выполняется 62,5 наносекунды, и мы должны проводить синхронизацию в определенное время, важно, что каждое время с картинки выше делиться на 62,5 наносекунды, а это значит, что мы можем использовать инструкции с задержкой, чтобы получить идеальное время для синхронизации.
При использовании 800x600VGA, каждая строка заканчивается горизонтальным импульсом синхронизации, который сообщает монитору данные следующей строки. После синхронизации 601 линии, монитор ожидает импульс вертикальной синхронизации продолжительностью 4 линии. В этот момент есть пауза в 23 линии. Благодаря вертикальной синхронизации и задней площадки строчного гасящего импульса, линии отображаются, но информация о цвете не используется.
Аппаратная часть
Это наверно одна из самых простых собранных схем, о которых я писал. Берите Arduino UNO, перемычки и VGA разъем и начинайте сборку!
Сборка схемы
На фотографии вы можете видеть все детали, необходимые для сборки схемы, приведенной ранее. Сначала подключите GND к 5 контакту VGA разъема. Потом подключите контакты красного, зеленого и синего цветов. Наконец, соединения Hsync и Vsync выполнены, и монитор может понять, в каком разрешении и в какой момент вы хотите отобразить что то на нём. Я использую плату от своего предыдущего проекта. О её изготовлении можно узнать здесь.
Аппаратная часть готова. Давайте перейдем к программной части и посмотрим, как всё это реализовано.
Программная часть
Есть две основных части кода, которые вы увидите, объяснить и подробно описаны ниже:
- Цвет для циклов + Hsync
- Вертикальная синхронизация
3 цикла используются для создания трех различных цветов, которые отображаются на экране. Вот выдержка из кода для генерации 200 линий красного цвета. Время указано в комментариях, и вы можете легко увидеть соответствие.
В следующем отрывке кода видно, что вертикальная синхронизация выглядит почти так же, как вывод обычных горизонтальных линий. Разница в том, что вместо того, что бы считаться в пикселях, как Hsync (128 пикселей), вертикальная синхронизация считается в линиях (4 линии).
Это основная часть кода, но его больше, и вы можете ознакомиться с ним, скачав исходник. Мы написали программу, собрали аппаратную часть, и теперь пришло время проверить устройство и посмотреть на его работу!
Результат работы и примечания
На видео показан вывод VGA сигнала с Arduino UNO на компьютерный VGA монитор. Никаких уловок и трюков, просто работа программы, и сигналы синхронизации.
Красный, зеленый и синий цвета появляются на мониторе сразу после включения питания без искажений. Надеюсь, этого достаточно, чтобы убедить вас, что эта система действительно работает, и мы выводим VGA 800x600 @ 60 Гц.
Обзор VGA на основе Arduino
Как вы уже поняли, VGA довольно трудно выводить при помощи Arduino в разрешении 800x600, а получение полноценной картинки используя только Arduino в принципе невозможно, но мы используем гибкость VGA в нашу пользу и выводим упрощенные вещи. На экран выводятся красный, зеленый и синий цвета, доказывая, что мы можем выводить упрощенный VGA.
Что теперь делать?
Я не рекомендовал бы тратить слишком много времени на вывод VGA сигналов при помощи Arduino, так как это получается намного сложнее из-за требований к таймингам. В конечном счете вы, вероятно, разочаруетесь в этом методе. Есть много VGA контроллеров, с которыми Arduino может взаимодействовать, что сильно упрощает вывод вещей на VGA монитор. Я уверен, что есть Arduino shield, дающий такую возможность.
Заключение
Если мы перечитаем цели данной статьи, то мы поймем, что у нас всё получилось. Три цвета на экране, как и ожидалось. Программа была довольно сложной, но реализуемой. Однако, динамический VGA выход намного интереснее.
Совершенно не одного не нашел именно к этому дисплею, а по китайским сайтам контроллеры указаны по идентичным характеристикам разные. Из мануала к телефону только такой нашел. По этому и спрашиваю, засомневался в выходах всинк и хсинк. Жалко распаивать рабочий телефон. Был бы благодарен, если бы скинули ссылку, а не тыкнули пальцем в небо.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Тачскрин MSG2133A кто то подключал ?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Вдруг кому нужно превратить обычный 16 битный параллельный LCD в SPI (16 битный) -
в моем случае использовался LCD "explay n1" TXDT350DH вы можете переделать под свой вариант.
PS> Из резисторов R1,R2,R9,R10 для LCD "explay n1" TXDT350DH устанавливать только R9 и R10
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
просто для начала проверь сопротивление по питалову если ты уверен по ногам. должно быть примерно 600 -900 ом. если мегаомы то усё сдох бобик.
Проверил. и, похоже, фото размещать уже нет смысла. Между контактами 3 и 20 - ожидаемо 0 Ом. Это проверял и ранее, чтобы хоть как-то убедиться в правильность распиновки. А вот 3-4. "сдох бобик", вообще бесконечность (или более 20 МОм).
Всем спасибо. Жаль, но экранчик уходит в утиль.
Так вот, на моем дисплее то же большое сопротивление между 3 и 4, больше 20Мом, но дисплей рабочий. Так что это не показатель.
Может кому пригодится в будущем.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Добрый день. Не подскажете что за контроллер стоит? Дисплей от FLY IQ434. Вроде как должен стоять ILI9486 но на запрос 0xD3 не отвечает, выводит 0х80808080 как и должно быть если нет команды, 0х00 по шиту везде нули, в принципе так и пишет 0x00000000. Единственное отвечает на запрос 0х04 выходит строчка 0x54540066. Ничего не нашёл по этому поводу. Вроде так дисплей инициализируется но не правильно.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
просто для начала проверь сопротивление по питалову если ты уверен по ногам. должно быть примерно 600 -900 ом. если мегаомы то усё сдох бобик.
Проверил. и, похоже, фото размещать уже нет смысла. Между контактами 3 и 20 - ожидаемо 0 Ом. Это проверял и ранее, чтобы хоть как-то убедиться в правильность распиновки. А вот 3-4. "сдох бобик", вообще бесконечность (или более 20 МОм).
Всем спасибо. Жаль, но экранчик уходит в утиль.
Так вот, на моем дисплее то же большое сопротивление между 3 и 4, больше 20Мом, но дисплей рабочий. Так что это не показатель.
Может кому пригодится в будущем.
Имеет значение полярность и напряжение питания прибора - если более 3. 4 вольта, то "бобик" может сдохнуть в процессе измерения.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
полярность крутил, питание мультиметра 9в, после измерений воткнул дисплей обратно, бобик жив, не переживайте)
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Контролер оказался ili9488 вот только есть проблемка тестовую графику показывать начинает и после текста белый экран, в чём может быть проблема?
И вообще есть возможность его переключить в SPI ?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Вобщем разобрался я с проблемкой своей, а дело было в питании, я дисплей запитал от отдельного блока питания вот он и глючил.
Подключил от ардуины через 3 диода включенных последовательно и всё заработало.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Дружище благодарю за ответ. Извини,это же сколько страниц надо перелопатить чтобы подключить один дисплей
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Добрый день tvl2000 , как с вами можно связатся? Хочу розобратся в принципе работы библиотеки, есть вопросы.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Дружище благодарю за ответ. Извини,это же сколько страниц надо перелопатить чтобы подключить один дисплей
На самом верху страницы есть окно поиска.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Теоретически можно подключить. Я сейчас собираю железо, чтобы завести планшетный дисплей с похожим интерфейсом
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Напрямую нет. Ресурсов не хватит. Надо собирать контроллер с буфером, а лучше двумя на МК типа стм32 + SRAM. А этим всем уже управлять по SPI.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Доброго всем. От камеры Premier MDV-2 остался экран. Очень хотелось разобраться как его подключить к arduino. К сожалению данных по контроллеру я не смог найти. Нашлись только характеристики дисплея но без распиновки. Буду очень благодарен если сможете помочь. Заранее благодарен
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Доброго всем. От камеры Premier MDV-2 остался экран. Очень хотелось разобраться как его подключить к arduino. К сожалению данных по контроллеру я не смог найти. Нашлись только характеристики дисплея но без распиновки. Буду очень благодарен если сможете помочь. Заранее благодарен. Прошу прощения за повтор.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Доброго всем. От камеры Premier MDV-2 остался экран. Очень хотелось разобраться как его подключить к arduino. К сожалению данных по контроллеру я не смог найти. Нашлись только характеристики дисплея но без распиновки. Буду очень благодарен если сможете помочь. Заранее благодарен. Прошу прощения за повтор.
У меня тоже есть от видеокамеры, у меня дисплей типа с интерфейсом rgb, и похожая микруха стоит, конвертер с видео выхода, была мысль подключить к какому нито ДВД плееру глянуть ))) ну или к старому ноуту, через s video
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
А у вас случаем, нет фотографии вашего экрана с разводкой?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Напрямую нет. Ресурсов не хватит. Надо собирать контроллер с буфером, а лучше двумя на МК типа стм32 + SRAM. А этим всем уже управлять по SPI.
Изучал вопрос внешней ОЗУ для esp32. У микрочипа есть интересные решения какраз на шину spi. Но на нашем рынке их нет к сожалению
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Спасибо за ответ.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Изучал вопрос внешней ОЗУ для esp32. У микрочипа есть интересные решения какраз на шину spi. Но на нашем рынке их нет к сожалению
У Wroover модуля есть 8МБ PSRAM на борту.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Пытался прогуглить 4-wire serial bus (S8) interface, но попадаются только ссылки на SPI. Может оно это самое и есть? Но тогда как сопоставить распиновку с SPI? Пробовал на примерах из библиотек TFT и UTFT. Начинал с такой комбинации: CS0=CS, RST=RESET, CD=DC, SCK=SCK, SDA=MOSI. Потом из 3-х последних сигналов программно перебирал все возможные, причем в UTFT еще и все модели перебрал - не заводится. Питание от UNO 3.3v, управляющие сигналы с контактов 8,9,10,11,13 через делители, на осциллограмме показывают уровни от 0 до 3V. Пробовал CS0 садить на GND, а RST подключать через делитель к RESET на ардуино. Лучше не стало.
Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.
Последние посетители 0 пользователей онлайн
Объявления
Представленная выше приспособа - чиста идея. Опробованная идея. ЭС-01 (Др. Вест - ), можно сделать и с более тонкими стенками, и из другого материала (металлический профиль). Так что вопрос "подлезть в узкий корпус" - не такая уж и проблема. Мне такие критичные узости пока не попадались. Уже есть ЭС-02 (без "крышки"). Чаще удобней отпаивать провода, когда выключатель уже экстрактирован из своего посадочного гнезда. Посему это было учтено, когда сотрудник захотел "нарисовать" себе аналогичный экстрактор. Походу, Вас разочарую. По Вашей активности в "простых схемах" тоже создаётся впечатление, что Вы без устали перелопачиваете и копипастите старые издания и соответствующие ресурсы. Ну и в заключение по поводу экстрактора : Возникла проблемка - придумал как её решить (ключом на 30) - понравилось - решил поделиться - из идеи с ключом сформировалась более компактная и удобная приспособа. - пообещал показать что в итоге получится - показал. С уважением, Сергей.
Эко вы замахнулись. Сначала бы изучили зарядки для сотовых тлф. Я 2 год второклассник и второгодник в этом вопросе. Сейчас по опытнее люди вам подскажут.
На самом деле, не в каждый удлинитель можно подлезть к выключателю с помощью вашей "приспособы", она просто не влезет в узкий корпус. К тому же, если к контактам припаяны провода, то без их отпаивания, эту конструкцию на выключатель не одеть, а ведь не всегда требуется замена переключателя, бывает достаточно его просто отремонтировать . Судя по вашей активности по этому "специнструменту", создаётся впечатление, что Вы круглые сутки только и делаете, что меняете эти выключатели .
Что ещё за "выдерга"? Назовите инструмент красиво. "ЭС-01". "Экстрактор Суханова, модель 1". Можно было прямо сразу и напечатать.
Итак, результаты (всё на фото): "Нарисованая" на принтере приспособа: Приспособа в работе, пошаговая фотосессия: Всем кто поробовал выдергу в живую в работе - весьма понравилось. Сейчас "рисуется" выдерга на меньший типоразмер выключателей. Маленькие клавишные выключатели хоть и довольно легко демонтируются отвёртками, но с соответствующей приспособой демонтаж - ещё проще и удобней. Можно, сразу "нарисовать" комбинированую приспособу - на два типоразмера выключателей. . Наверно так и сделаю, опробовав приспособу для малых выключателей. С уважением, Сергей
На eBay Serial LCD на сегодняшний день продаются по цене в среднем 10$, найти их достаточно легко, введя в поисковую строку один из запросов: Serial LCD, I2C LCD, Serial LCD Arduino, UART LCD и др. Есть отдельно продающиеся адаптеры.
Как видно из фото выше, модуль имеет всего 4 вывода: GND, VCC, SDA, SCL. Линия SDA (data) подключается к Analog In 4, а SCL (clock) к Analog In 5. Ну и естественно питание 5В.
На плате размещен джампер для включения подсветки, а также потенциометр для регулировки контрастности.
Код я постарался хорошо прокомментировать, поэтому вопросов по его работе возникнуть не должно.
Создание пользовательских символов
На экране можно выводить пользовательские символы, создавать их очень просто. Размер одного символа составляет 5 пикселей по горизонтали и 7 пикселей по вертикали. Для создания символа необходимо начертить табличку 5х7 и закрасить необходимые клетки. В них ставим 1, а в пустых 0. Затем формируем семь строк в двоичном формате. Например русская буква "П":
Первая строка полностью закрашена, т.е. в двоичном формате это 11111. Переводим в шестнадцатеричный формат и получаем 1F. И так для всех 7-ми строк. Вторая и все последующие строки 10001 и 0x11.
В самой программе для создания символа вы инициализируете массив из 7-ми элементов и можете задавать его как в двоичном формате, так и в шестнадцатеричном формате.
Давайте рассмотрим пример вывода на LCD надписи "ПАЯЛЬНИК":
Символы П,Л,Ь,И мы задали массивом из шестандцатеричных значений. А символ Я задан массивом из двоичных значений. Фото вывода на LCD:
Колтыков А.В. Опубликована: 2012 г. 0 0
Вознаградить Я собрал 0 0
Читайте также: