Подключение панели магнитолы к ардуино
Решил познакомиться с Arduino, в качестве первого задания выбрал работу с панелькой от магнитолы PANASONIC CQ-DFX683N. Саму магнитолу у меня украли много лет назад, а панелька дождалась своего звёздного часа.
Вложение 44417
Нагуглилась сервисная инструкция на магнитолу, разборка подтвердила, что дисплеем управляет чип 75854. Для связи чипа c процессором головы используется протокол CCB Вложение 44418, формат пакетов описан в документации на 75854 Вложение 44419. На панель подаётся два напряжения питания +5В и +9..10В. По линии +5В измеренное потребление составляет 6мА при передаче данных и 0,2мА при отображении (режимы энергосбережения не изучал); по линии +9В - 60..65мА в зависимости от отображаемой информации
Первым делом подпаялся к контактам разъёма панели - для этого идеально подошёл 14-жильный шлейф с IDC-разъёмом [шлейф с IDC-разъёмом.
Вложение 44421
Собрал в кучу панель, ардуино и два преобразователя напряжения, обмотав всё клубком проводов.
Нашёл проект, из которого взял схему подключения к пинам ардуины и основу программы, хотя в итоге от программы осталось мало чего, ибо формат пакетов совершенно другой.
Сам дисплей состоит из 8 знакомест по 13 сегментов, т.е. на него можно вывести не только цифры, но и страшненькие буквы, и множества служебных знаков. Первый вариант скетча просто зажигал все сегменты, следующий зажигал их последовательно, группами и т.д. В результате через пару часов я получил таблицу в Excel, в которой были прописаны 8*13 сегментов. Никакой системы в нумерации сегментов нет - почти случайный порядок. В дальнейшей по этой таблице составлял маски для отображения символов.
Вложение 44422
Итого, скетч на ардуино считывает из последовательного порта 32 байта и отправляет их в панель. Программ на PC формирует эти самые 32 байта и отправляет в порт. Вся логика реализована на PC (знакогенератор, формирование битовых масок, прокрутка текста и проч).
Следующие задачи:
- попробовать использовать не аналоговые пины ардуины, а цифровые;
- перенести знакогенератор в ардуино и научить её самостоятельно прокручивать текст (нужен простейший управляющий протокол);
- считать состояние кнопок;
- научить ардуину прикидываться HID-клавиатурой;
- …
- купить нормальную магнитолу, научиться не только писать на дисплей, но и считывать с него, написать “всеобъемлющую универсальную программу с неограниченными возможностями” (с) и вывести информацию с дисплея магнитолы на экран андроид-устройства.
Никакой практической пользы от этого не ожидаю, за исключением научиться и разобраться.
В процессе имел тяжёлый опыт с Visual Studio Community: примеры работы с последовательным портом не работали никак от слова вообще. Ни в C++, ни в VB. Потом наткнулся на блог одного инженера, который подтвердил, что MS-реализация работы с COM-портом - одна из худших. При этом processing и putty работали совершенно нормально. В итоге остановился на Lazarus.
Несколько лет назад мне приспичило соорудить контроллер управления для дизельного двигателя. Я до сих пор так и не приступил к этой затее вплотную, но подбираюсь к ней всё ближе и ближе.
Как я уже писал в предыдущей статье — мне нужно свести в единую кучу информацию с довольно большого количества различных датчиков и механизмов. Пока такой информации было немного — я собирался примостить несколько показометров где придётся. Как-то это было не принципиально. Но вал количества необходимой информации нарастал стремительно и в определённый момент я понял, что отображение всего этого безобразия переросло в отдельную проблему. Увешивать весь салон автомобиля циферблатами я не имел ни малейшего желания. Такого счастия мне не надо:
Именно тогда я начал эксперименты с дисплеями.
Идея была простая — модифицировать штатную приборную панель автомобиля, врезать в неё два трёх дюймовых жк-дисплея и выводить всю информацию туда… На своей предыдущей машине я даже воплотил это в жизнь, но ту машинёшку я поменял на другую и процесс опять начался фактически с нуля.
По опыту эксплуатации предыдущей машины я уже понял, что вся эта цифирь в повседневной жизни мне перед носом нафиг не нужна и потому концепция строительства развернулась на 180 градусов. Настолько, что сейчас я собираюсь переделать штатный показометр температуры двигателя на отображение количества газового топлива в баллонах. Всю техническую и сервисную информацию я буду отображать на экране китайской андроидной магнитолы с RCA-видеовходом — причём только тогда, когда это будет действительно необходимо:
1). В случае манипуляций с климат-контролем, управление которого тоже переселяется в самодельный блок управления. Нажал любую из клавиш климат-контроля — на экране СРАЗУ отображается раздел с информацией по этой теме.
2). В случае возникновения нештатных ситуаций. Температура двигателя повысилась выше нормы — получай голосовое сообщение и экран с полной раскладкой по двигателю и АКПП.
3). В случае ручного переключения на соответствующий режим для наблюдения за происходящим или для просмотра накопленной информации.
4). Естественно, в случае включения заднего хода переключаемся на камеру заднего вида.
Все остальное время магнитола выполняет свои штатные функции.
Для более тесной интеграции в автомобиль формирование картинки будет осуществляться непосредственно разрабатываемым компьютером — никаких программ под Андроид я писать не собираюсь…
Только такой подход обеспечивает мгновенную реакцию и надёжную работу экрана.
Именно потому так много времени у меня заняла тема формирования качественного низкочастотного композитного видеосигнала для подачи на RCA-вход камеры заднего вида 2DIN-магнитолы.
На пике коронобесия я снял с автомобиля магнитолу, снял со стены телевизор, поскрёб по сусекам в поисках кой-какого электронного барахла и устроил себе недельную самоизоляцию на своём домашнем рабочем месте…
Самое забавное — я так и не сумел вывести монохромное изображение на экран магнитолы. Чего я только не пробовал… На экране жк-телевизора картинка отображалась без особых танцев с бубнами, а на экране магнитолы в лучшем случае мелькали куски изображения. Вероятно чип магнитолы слишком требователен к качеству формируемого видеосигнала…
Даже тяжёлая артиллерия в виде Arduino DUE с библиотекой от stimmer`а ничего не изменила в итоге — изображение всё также еле угадывалось по отрывочным всполохам.
На экране телевизора картинка была устойчивая и даже цветная, но гадкая до неприличия именно из-за своей цветности. Кто видел расфокусированный кинескопный цветной телевизор — тот поймёт.
Когда руки у меня опустились, я в полном расстройстве чуфств перелопатил свое творение под формирование VGA-сигнала буквально тремя резисторами.
Вот так выглядит полная схема устройства:
По всем прикидкам изображение должно быть намного лучше — так оно и вышло. Картинка на компьютерном мониторе получилась просто зашибись:
На экране жк-телевизора она смотрелась несколько хуже, но не принципиально.
Такое качество изображения меня вполне устраивало, но всё портило одно обстоятельство — на моей автомагнитоле нет ни VGA-входа, ни HDMI.
Деваться было не куда — я решил не терять более своего драгоценного времени и в вопросе формирования композитного видеосигнала отдался на откуп профессионалов.
Нормальные герои всегда идут в обход?
Благо поиск фабричного конвертера из VGA в RCA много времени не занял:
Не знаю, сколько такое устройство стОит на самом деле — мне оно обошлось в пределах 20уе.
Поиск в интернэте дал только один вариант в Алма-Ате и я поскакал быстрее покупать агрегат, пока он не исчез из наличия.
Сама коробочка небольшая, греется при работе прилично… Я её не вскрывал, но судя по всему слепить подобное из говна и палок будет несколько проблематично даже при сильном желании.
Функционал устройства приятно впечатлил, картинка с компьютера на экране телевизора отображалась очень даже прилично — для кыно вариант в самый раз. Молодцы китайцы. А вот надписи на экране были практически нечитаемы — реальное разрешение у композитного сигнала некудышнее. Увы…
На экране магнитолы картинка меня качеством не впечатлила — изображение было слегка замыленное и мерзко дрожащее. Ситуацию заметно улучшило переключение видеокодека на формат NTSC-J. Даже NTSC-M слегка хуже, а PAL в своём многообразии так весь отстой полный. Понятно, что это уже определяется уровнем качества видеовхода магнитолы(на телевизоре такой заметной разницы нет), но настроение мне это слегка попортило.
После всех ковыряний итог получился такой:
Фотографии неудачные — смартфон очень плохо берёт прямые источники света.
В реальности изображение довольно качественное. Так выглядят чистые цвета:
Что мне и требовалось.
Картинка низкого(320*240) разрешения, сформированная всё той же связкой Arduino DUE с библиотекой stimmer`а в версии VGA, пропущенная через конвертор с расстояния вытянутой руки смотрится чуть хуже, но тоже вполне достойно:
Проект можно посмотреть здесь — stimmer.github.io/DueVGA/
Проблема только одна — библиотека stimmer`а написана 7 лет назад и фактически брошена автором на призвол судьбы — не фиксится и не развивается более.
Для формирования ПРИМИТИВНОГО цветного VGA-сигнала могу ещё порекомендовать библиотеку — github Она написана для дешёвого и распространённого клона Ардуины на чипе STM32F103C8T6, про которого я писал в прошлой статье, который тоже позволяет выводить неплохую цветную VGA-картинку разрешением 28 на 30 символов(224*240 пикселей) и 8 цветов — этого вполне достаточно для многих проектов, не требующих реальной графики:
Мне же нужна приличная графика, чтобы формировать подобные вещи:
Потому мне необходим инструмент помощней.
А раз уж я переключился с формирования композитного сигнала на формирование VGA — то и выбор мой расширился на порядки.
Формирование VGA намного проще — потому готовых проектов для повторения просто море.
Потому я в ближайшее время собираюсь таки заказать себе ESP32 и поиграться с ним — он должен формировать в разы лучшее изображение(от 640*480 и выше при 64 цветах) при меньшей вероятности затыков от выполнения параллельных задач, которых у меня будет много.
Определюсь с окончательной платформой и начну уже наконец реальное строительство своего газодизеля.
P.S.
Вообще-то существует вполне себе подходящая под мои задачи Ардуина.
Она содержит на борту некое подобие видеокарты и формирует видеосигнал в формате HDMI.
По той информации, что я накопал — изображение получается до 800*600 точек. Картинка формируется стандартными ардуиновыми графическими библиотеками для LCD-дисплеев.
Звать эту Ардуину — Arduino MKR Vidor 4000:
Чем она мне НЕ понравилась?
Во-первых — цена. Цена стремительно падает, но на момент моего знакомства с этой платой за неё просили в нерезиновой 100уе, а у нас — ещё полтос сверху и ждать месяц…
Во-вторых — возможности. Кроме видеокарты на ней нет ничего выдающегося.
Поправлю сам себя. На самом деле — плата уникальная. Периферия — мощнейшая. Например WiFi на ней организован с помощью новейшего двуядерного чипа ESP32 с тактовой частотой до 240 МГц. У него на борту 4Мб флэш и 512Кб оперативки…
ПЛИС — Intel Cyclone 10CL016. Это ваще монстр какой-то, если придумаешь — к чему его приспособить. Тактовая частота до 150МГц, 504Кб оперативки…
И всё это великолепие объединено убогим Cortex M0+ с тактовой частотой 48МГц, флэшем 256Кб, и оперативкой 32Кб… Колосс на глиняных ногах… :(
В-третьих — унификация. Плата слишком специализированная и для неё нет и вряд ли когда будет много готового программного обеспечения.
В-четвёртых — в моих реалиях и для неё таки придётся покупать конвертор… ну нету на моей магнитоле HDMI видеовхода…
Когда я решил поменять магнитолу в своей машине, я встал перед выбором — потерять штатное управление звуком кнопками на руле, или же покупать специальный (достаточно дорогой) адаптер.
Потом я подумал, почему бы не сделать такой адаптер самому?
Обзор для тех, кто дружит с паяльником.
Сначала суть проблемы.
Во многих машинах есть штатно установленное управление магнитолой на руле. Кнопки эти работают по принципу резистивной клавиатуры, что позволяет передавать сигнал всего по двум проводам.
Например, нажимаем кнопку увеличения громкости — в цепи появляется сопротивление 130 Ом.
Нажимаем уменьшение громкости — появляется сопротивление 240 Ом и т.п.
На многих современных магнитолах также есть возможность подключения проводного пульта дистанционного управления. Но проблема в том, что стандарты у всех производителей автомобилей и автомагнитол разные. Например, у магнитол Pioneer для увеличения громкости надо «подать» сопротивление 16 кОм.
Поэтому, между рулем и магнитолой нужен специальный адаптер, который будет конвертировать значения сопротивлений в понятные магнитоле.
Когда я поискал такой адаптер для своей машины, оказалось, что он стоит больше 50$. Учитывая, что сама магнитола мне досталась за какие-то смешные 30-35$, я решил попробовать сколхозить адаптер самостоятельно на ардуине. Готовой схемы на тот момент в интернетете не было, пришлось изобретать самому.
Заранее хочу извиниться за возможные неточности и ошибки — я плохо разбираюсь в электронике. Всю информацию по крупицам собирал из гугля. :)
В своем проекте использовал следующие компоненты:
1. Автомобиль Suzuki Swift
2. Автомагнитола Pioneer MVH-X165UI (купил в оффлайне)
3. Arduino Nano, можно и Mini (купил на ebay за 2.5$)
4. MCP4131, цифровой потенциометр на 100k (купил в оффлайне за 1$, почему-то на ebay они достаточно дорогие)
5. Резистор 10k
6. Макетная плата
7. Понижающий конвертер (step down buck converter за 1.5$), чтобы из 12V сделать 5V
Принцип простой — на входе измеряем сопротивление с кнопок на руле. Если сопротивление соответствует нажатию какой-то кнопки, то на выходе на потенциометре выставляем соответствующее сопротивление, требуемое магнитоле.
Первым делом я раздобыл сервисное руководство на свою машину, где указаны значения сопротивлений для всех кнопок. Впрочем, их можно просто измерить мультиметром.
Также в сети обнаружилась следующая схема проводного пульта для магнитолы Pioneer (используется 3.5mm штеккер):
Кнопок Preset Up/Down у меня на руле нет, поэтому я использовал только два контакта на штеккере — Tip и Sleeve.
Т.к. диапазон требуемых магнитоле сопротивлений от 1К до 62К, то я купил микросхему MCP4131 — это цифровой потенциометр на 100К с 129 шагами регулировки. 129 шагов достаточно, т.к. нам не нужна супер точность, магнитола понимает сопротивления с разбросом где-то в 10-20%.
Ну и не обязательно покупать именно MCP4131, думаю, подойдет любой другой digipot с подобными характеристиками.
В интернете есть инструкции по использованию цифрового потенциометра с ардуиной, мне понравилось вот это видео, очень подробно и доступно.
Я не буду объяснять азы работы с ардуиной, есть куча других специализированных ресурсов, где гораздо лучше все описано.
Схема подключения получилась такая:
Сопротивление измеряется на пине A5 с помощью делителя напряжения с резистором 10К.
Потенциометр подключен по следующей схеме:
4, 7 — GND
8 — +5V
1 — arduino pin 4 (можно выбрать другой)
2 — arduino pin 13
3 — arduino pin 11
6 — к магнитоле, контакт «Tip» на штеккере
Фото готовой платы.
С обратной стороны фотографий не сохранилось, т.к. это было год назад и я не планировал писать обзор. Ну и там ничего интересного — куча перемычек и плохая пайка :)
Ардуина может работать от 12V, но я решил поставить понижающий до 5V конвертор. Во-первых, я от него же запитал видеорегистратор, тем самым освободил гнездо прикуривателя. Во-вторых, я читал, что напряжение в автомобильной сети грязное и нестабильное, может плавать на несколько вольт, как вниз, так и вверх. Конвертер такие скачки выдержит, а ардуина может и погореть. Чтобы еще «почистить» питание я добавил несколько защитных элементов — диод, стабилитрон, конденсатор. Схему подсмотрел вот тут. Насчет её необходимости у меня некоторые сомнения, но решил — пусть будет.
На этом все.
Устройство нормально работает в машине уже около года.
А я сэкономил некоторую сумму денег и получил ценный опыт.
Мдя. Я помню времена, чтобы запустить MP3 на PC 386DX33 под Win3.11 требовались бубны и магия, похлеще чем сегодняшние проблемки детворы с освоением навыков работы в очередном модном фреймворке.
А теперь это делает обычный ПЛИС за 1$ с кучей готовых паттернов и даже готовго софта.
Нынешние конструкторы позволяют в разы больше чем просто мр3.
все это можно сделать на базе Orange PI + сенсорный экран 7" + камера и автоматическое переключение на камеру на багажнике - для парковки задним ходом. По итогу люди делают за 60-90$ реальные вещи, плюс навигация, интернет (если модуль модема с симкой подключить). И все это есть пошагово в ютубе. Некоторые туда пихают еще сборку аккумуляторов)
А можно пример с ютуба?
Ну нга ютубе все иностранные, наши только хватаются.
Если делать, то лучше сюда глянуть
рандом хороший у тебя. у меня магнитола за 25 косарей и в ней рандом вообще говно какое-то.
Это настолько же круто как и удаление эффекта красных глаз в фотошопе. Достаточно следовать инструкции. Всё уже давным давно известно и никаких открытий тут нет
Следование инструкции довольно редкостное явление в наше время. Ценить надо
скетчи, девайсы, где ?
мир блатной совсем забыла и перо за это получай
Ты чо, эстраду попутал?
тогда хотябы джог заместо кнопок поставь
Я его слепила из того что было) А так то совет хороший)
Без исходников - это так, похвастаться
Автор, не слушай недоброжелателей - ты это сделал!
Оно еще и работает!
Мне знакомо это ощущение и я знаю, что в такие моменты
очень хочется с кем-то поделиться, показать.
магнитола? или всё же цифровой плеер
А вот можно туда еще фильтры добавить? Ну вот на крутых магнитолах есть встроенный звуковой процессор, который отрезает необходимые частоты выше или ниже указанной. с ардуино такое повторить можно?
Чего-то подумалось. Ведь термин "магнитола" подразумевает наличие в составе изделия магнитофона. Надо продумать терминологию.
А так, используемые компоненты умеют читать тэги id3v2?
Чтение тегов программируется вручную, я не делал, но можно добавить
Собрать плеер на базе WTV020-SD-16P и арудино очень просто, проблема только в том, что он будет далеко не всеяден.
Запустить на нем пример действительно очень просто, но та библиотека что есть в интернетах к нему глючная и не содержит половины нужного функционала
у меня описание чипа не соответствует его функционалу - возможно в вашем случае такая же проблема.
Проблемы я порешал т.к. все работает как видите) Проблема действительно в библиотеке которую я наполовину переписал
Один вопрос. Стоит того?
это очень растяжимое понятие, аудиофилы уже на слове "mp3" нос воротят. как по мне для машины без колонок "у меня кажется из ушей кровь пошла" вполне сгодится.
За воспроизведение отвечает VS1053B, он умеет и во FLAC, как по мне вполне.
вопрос не в тему, но все же, я купил Digispark Attiny85, но когда вставил в комп, он не определился, а выдал такую ошибку "сбой запроса дескриптора устройства", ошибка 43. Вставлял в ноутбук USB 2.0, Win 10. Но все остальное оборудование через этот порт работает как надо, только эта плата. на других компах проверить не могу. Когда включаю должен же на 5 сек загораться один фонарик, в ожидании загрузки, ну а у меня он как включается, так и не выключается, не выходит наверное из этого режима. Что это может быть?
Только увидел комментарий, но если ещё актуально то дигиспарк нормально работает не во всех портах - нужно подбирать на котором заработает, и нужен спецдрайвер для вин 10 - не все подходят, если надо могу скинуть тот что у меня железно подошёл
Нет, купил другой. Слушай, а ты код пишешь?
Дигиспарк просто очень капризный, прям беда, но если запустить и подобрать порт то работает, я например использую его для задач когда импульс 30 мсек нужно преобразовать в 3 сек а возиться с транзисторами лениво. Да пишу и код любой практически.
Дешевле китая не сделаешь в любом случае, цель была поиграться + реализовать свои хотелки типа быстрого доступа к избранным мелодиям и отзывчивой работы. Себестоимость примерно: экран 6$, кнопки 3, mp3 shield 8.5, mega 6, 4x4 keypap 0.7 =
Ну к этому и вопрос был ) А так, конечно, ощущения от оживающей железки в руках деньгами не измерить!
Забыл еще замечательный дц-дц преобразователь без которого при заведенной машине появляются шумы а то и вообще все виснет, который стоит 10$ что делает себестоимость еще веселей
Сделал маску, которая изменяет голос
Решил попробовать выжать из Arduino максимум и сделать на ней звуковой процессор, а именно - понижать тон голоса в реальном времени.
Звук будем оцифровывать бортовым АЦП, а воспроизводить при помощи широтной модуляции: например зададимся частотой 16 кГц, текущая ширина импульса будет пропорциональна значению с АЦП
На выходе получится жутко свистящий цифровой сигнал, что ожидаемо
Добавим простейший RC фильтр
И звук, и форма сигнала станут гораздо лучше!
Далее нужно понизить тон. Здесь всё просто: задаёмся окном выборки и начинаем "пропускать" каждый N-ный сэмпл на выход, таким образом растягивая звук по времени
Для сглаживания между выборками будем миксовать громкость при помощи средневзвешенной суммы
Я сделал плату и разместил всё это безобразие внутри респиратора-полумаски
Собсно получилось отлично, результат можно наблюдать на видео в начале поста.
Продолжение про самолет из потолочной плитки
Схема подключения приемника:
Здесь к blue pill подключается радиомодуль, контроллер двигателя и две сервомашинки. Аккумулятор подключается к контроллеру управления двигателя, на нем стоит стабилизатор на 5 вольт, с которого берется питание для управляющей электроники. Сервомашинки также запитываются с этих 5 вольт. Радиомодуль питается от +3,3 вольт со стабилизатора blue pill. Здесь имеется делитель напряжения, который подключен к аккумулятору, для контроля его напряжения. Информация шлется на пульт управления.
Программа для приемника: тут
Схема подключения пульта управления:
Здесь чуть побольше компонентов. Аккумулятор подключается на порт +5 вольт blue pill. Для зарядки аккумулятора к нему подключен модуль зарядки. С blue pill при помощи 3,3 вольт запитывется экран, радиомодуль, джойстики. Потенциометры джойстиков подключены к каналам АЦП blue pill, их тактовые кнопки и остальные две подключены на остальные порты в режиме вход.
Пульт управления внутри:
Программа для пульта управления: тут
Пульт в собранном виде:
В меню пульта 4 строки: 1 строка - это режим полета, во 2 строке просто отображаются данные АЦП и т.д. в 3 строке настраиваются чувствительность рулей и субтример (начальное положение элевонов), в 4 строке ничего нет (можно добавить).
Нажатие правого джойстика - переход на одну строку вниз, левый - на одну строку вверх, нажатие одновременно двух джойстиков заходит в подменю выбранной строки, аналогично производится выход. Две другие кнопки используется для настройки чувствительности в меню строки Sensors, их одновременное длительное нажатие, в любом нахождении меню, включает подсветку. В режиме полета нажатие любого из джойстиков активирует работу двигателя или дективирует, чтобы при заходе в режим полета двигатель не работал сразу и случайно не отпилить себе пальцы винтом не поранил крутящим винтом.
При отключении пульта во время работы приемника, через 2 секунды отключается двигатель.
Расскомментировав эти строчки в main.c (до надпсиси END OF DEBUG_RC OUT):
пульт можно подключить по USB к ПК при помощи любой Terminal программы (я пользовался CoolTerm), в которой нужно выбрать COM порт и присоединится к blue pill:
и в окне получить информацию о подключении радиомодуля:
Считывая установочные данные, записанные в регистры радиомодуля, можно убедиться, что модуль работает и данные совпадают с установленными. В данном случае я получил статус работы радиомодуля, его мощность передачи (максимальная), номер канала (11), скорость передачи (1 Мбит в секунду), размер передаваемого пакета (32 байта - максимальный) и количество бит контрольной суммы (в моем случае 16 бит). Если модуль не подключен или неисправен в терминал выводит такое сообщение:
Зайдя сюда в подменю Settings:
в терминал посыпятся такие строчки:
Здесь данные в таком порядке: X1: значение c АЦП правого джойстика по вертикали, Y1: значение c АЦП правого джойстика по горизонтали, значение с АЦП левого джойстика, которым управляется двигатель, значения только по вертикали, далее напряжения аккумулятора пульта, напряжения аккумулятора на приемнике, значение кнопки правого джойстика, значение кнопки левого джойстика, значения кнопок что находятся справа на пульте, субтример, чувствительность 1 и 2 (2 не используется), а также статус связи с приемником.
Как видно сигнала нет, так как примник был отключен. Также я зажал кнопку правого джойстика и просто левую кнопку, они выдают "1".
Включаю приемник и перевожу правый джойстик в правый верхний угол:
получаю сообщение что сигнал есть, а данные джойстика показывают максимальные значения.
АЦП на Blue Pill имеет разрешение 12 бит, максимальное значение котрого 4095, но в терминале видно, что оно 255, все потому что я 12 бит перевел в 8 бит (1 байт), так как один элемент массива передоваемого пакета равен 1 байту, чтобы одним байтом можно было слать значения одной из осей джойстика.
Аналогичным образом можно подключить приемник к ПК, узнать статус радиомодуля и получаемые данные с пульта, в main.c расскомментировав эти строчки:
Использовать джойстики для управления в таких проектах, вместо нормальных стиков не очень хорошо. Во-первых, для управления газа стик должен сохранять свое положение, а не быть подпружиненным и возвращаться на середину, убрать эту пружинку в джойстика очень проблемно, но я думаю можно. Во-вторых, это должны быть стики, так сказать длинные палочки, для более плавного и точного управления за счёт отдаления пальца от центра потенциометра или увеличения радиуса, это можно решить, наколхозив что-то длинное на джойстики. Специальные стики заточены именно под это, что нельзя сказать про джойстики, но на них цена уже совсем другая, например: стик FlySky.
Крыло сложно в управлении (по-моему мнению) по сравнению с моделями, имеющими хвост со стабилизатором и килем.
И наконец, то, чего мы так долго ждали. Видео полетов. К сожалению, видео очень короткое, так как полет был недолгий.
В ВИДЕО ПРИСУТСТВУЕТ ПАРУ ПЛОХИХ СЛОВ!
В заключении хочу написать, что это был мой первый опыт постройки подобной игрушки.
Самолёт полетел вполне уверенно, но что-то пошло не так, если честно, я не понял в чем причина, может это из-за джойстиков или все-таки конструкция крыла. Я думаю, что на этом я не остановлюсь и попробую как-нибудь еще, пересмотрев ошибки.
Совсем недавно недорогие микроконтроллеры, такие как Arduino, открыли новые двери для тех, кто хочет сделать интересные приспособления для своих автомобилей. В этой статье мы рассмотрим популярный проект, связанный с Аrduino в автомобиле, который использует эту популярную открытую аппаратную плату.
Возможность применения Arduino в автомобиле для его улучшения
Самый распространенный проект на Ардуино для автомобиля – установка в машине ЖК-дисплея с особыми функциями и показателями.
Когда Ардуино-дисплей в авто находится в движении, отображаются: процент нагрузки двигателя, напряжение батареи, температура в салоне и температура охлаждающей жидкости двигателя (есть несколько других статистических данных о транспортном средстве, которые могут отображаться, если нужны). Помимо дисплея и микроконтроллера, понадобятся различные датчики для создания этого Аrduino проекта для автомобиля.
Если Аrduino для автомобиля совместим с IDE Teensy 3.6, то читается анимированный растровый образ машины и резервные датчики. Каждый из четырех датчиков на своем месте, так же, как и анимационная картинка автомобиляоторая меняет цвет, исходя из того, насколько близко объект находится к машине (только зеленый означает <5 футов, зеленый и желтый означает <2,6 фута и зеленый, желтый, а красный означает <1 фут).
Этот Ардуино проект для авто очень сложный, потому что резервные датчики взаимодействуют с приемопередатчиком, а затем отображают информацию на маленький ЖК-дисплей.
Проприетарный протокол связи не является типичным, как например, I2C, UART, CAN, USB и так далее. Свойства протокола могут различаться в каждом случае, в зависимости от поставщика.
Прежде чем отключить ЖК-дисплей, нужно проверить три провода, соединяющие трансивер и ЖК-дисплей. В инструкции указывается, что необходим красный провод + 5В, провод черного цвета и синий провод. После подключения осциллографа к синему проводу и заземлению пользователь увидит характерное изображение.
Биты под номерами 0-5 не несут никакой существенной информации и не кодируются.иты 6-8 соответствуют датчикам с названиями A, B, C или D. Необходимо загрузить эскиз в IDE Arduino, который считывает датчики и выводит данные через последовательную консоль.
Для следующего Ардуино проекта в автомобиле можно использовать бесплатное программное обеспечение для редактирования фотографий под названием GIMP для обрезки и изменения размера изображения машины с верхнего вида. Затем необходимо экспортировать изображение в виде 24-битного растрового изображения с именем «car.bmp», которое составляет 110 пикселей на 250 пикселей. После загружаем все на карту microSD и помещаем эту карту в микроконтроллер Teensy 3.6.
Основными причинами, по которым нужно использовать Teensy 3.6 вместо UNO, остается скорость, с которой Teensy может читать SD-карту и отображать изображение с помощью драйвера дисплея RA8875. При использовании UNO процесс займет около 8 секунд, в то время как с Teensy 3.6 займет 1,8 секунды.
Для дальнейшего конструирования проекта с Аrduino для автомобиля потребуется сделать трехмерную печать верхней и нижней крышки ЖК-дисплея для его защиты. В машине необходимо предварительно просверлить отверстия для датчиков.
Какие датчики можно подключить к Ардуино
В конечном итоге, пользователь получит отличное приспособление, контролирующие все возможные параметры автомобиля. Список деталей, которые понадобятся для создания этого ЖК-дисплея Ардуино для автомобиля, приведен ниже:
- Адаптер Freematics OBD-II.
- Резервные датчики.
- 7-дюймовый ЖК-дисплей TFT.
- Драйвер для дисплея LCD на базе SPI.
- Микропроцессор Teensy 3.6.
- Специальный уровень Shifter.
- 74HC125 Tri State Buffer IC.
- Карта памяти MicroSD Card.
- Провод, конденсаторы и резисторы.
- Датчик температуры DS18B20.
- Разделитель OBD-II.
- Микроконтроллер Ардуино.
Подключение, запуск и настройка автоустройств на Ардуино
Для загрузки эскиза проекта Ардуино для авто в виде ЖК-дисплея в Teensy 3.6 вам необходимо установить Teensyduino. Затем вам нужно будет заменить библиотеки Adafruit_RA8875 и Adafruit_GFX в расположении библиотеки Teensy (а не на вашем типичном месте в документах). На Mac операционной системе нужно щелкнуть правой кнопкой мыши по значку приложения Arduino в приложениях, а затем перейти в:
/Содержание/Java/hardware/teensy/avr/libraries
В Windows данная папка находится под основным диском C, в файлах программ x86, Arduino, а затем в папке с аппаратным обеспечением. Как только вы это сделаете, вам нужно будет изменить расположение эскиза в приложении Arduino, отредактировав его в настройках – обычно библиотеки “Тинси” размещаются по следующему адресу:
/Applications/Arduino.app/Contents/Java/hardware/teensy/avr
Из-за проблемы с внутренним температурным датчиком пользователь устанавливает температурный датчик модуля DS18B20.
В zip-файле, который находится по ссылке выше, вы увидите 4 эскиза Аrduino.
- Загрузите эскиз display_code, если вы хотите использовать внутренний температурный датчик модуля OB2 I2C OBD-II.
- Загрузите эскиз display_code_with_new_temperature_sensor, если вы хотите использовать модуль DS18B20.
Обратите внимание, что разгон teensy до 240 МГц не позволяет адаптеру I2C OBD-II взаимодействовать с teensy. Наконец, просто нажмите кнопку «Загрузить». В представленном скетче находятся обширные комментарии, которые помогут пользователю адаптироваться при конструировании ЖК-дисплея для авто.
Вскоре после установки дисплея пользователь поймет, что дисплей работает даже тогда, даже когда автомобиль выключен.
Заглянув в разводку OBD-II, электронщик обнаружит, что линия питания 12 В к разъему OBD-II всегда подключается непосредственно к батарее. Чтобы обойти это, необходимо купить разветвитель OBD-II и отрезать провод, идущий на контакт 16 на одном из двух разъемов на сплиттере, а затем подключить этот разрезаемый провод к добавлению проводки.
Затем, используя мультиметр, необходимо заглянуть в коробку предохранителей на стороне водителя и протестировать существующие предохранители, чтобы узнать, какой предохранитель получил питание после того, как ключ был включен в зажигание.
В конце пользователь подключает добавочный провод к предохранителю, который нужен для того, чтобы дисплей теперь включался только тогда, когда автомобиль работает и находится на ходу. Проведите некоторое исследование того, как правильно добавить схему к вашему автомобилю. Многие подобные проекты описаны на нашем сайте с подробными разъяснениями.
Кроме того, пользователь может добавить кнопку “стоп-старт” на Ардуино для своего дисплея с параметрами для автомобиля.
Читайте также: