![]() |
Подключение к планшету через USB-OTG
Вложений: 1
Доброго всем времени суток.
Делаю свою оболочку. Я хочу убрать полностью блок климат-контроля, а вместо него поставить планшет NEXUS7. Ну как Вы понимаете от блока я оставлю плату управления, а кнопки будет "нажимать" контроллер ATMEGA48, данные о температуре, положении заслонки, скорости вентилятора и т. п. он будет посылать на планшет, а также он будет посылать какая из кнопок на руле нажата и включать и выключать REM усилителя. Опыт работы с МК у меня большой, а вот программирование в среде ANDROID только начинаю с MIT 2. Мне нужна помощь. Во первых как настроить COM порт на андроид устройстве, я собираюсь использовать CH340G для передачи USART->Virtual COM во вторых я правильно предполагаю, что аудио плеер и радио мне придется писать самому, потому как я собираюсь использовать кнопки на руле? И да я не использую ардуино, так как хватает и мозгов и опыта, чтобы реализовать устройства которые работают с большей скоростью и большей стабильностью чем убогие библиотеки этого зверька. Это касается в частности работы ADC. Схему я прилагаю. Расшифровка обозначений. разъём BTN - управление кнопками климат-контроля разъём LCD - подключён к выходам дисплея климат контроля ______________________________________ Remote - включает/выключает усилитель J1 ------------------------ USB J2 ------------------------ Neutral - концевик нейтральной передачи (в будущем для дистанционного запуска) Rear_Gear - Лампа заднего хода (включить камеру заднего хода) Chk_ACC - 1 - если включены аксесуары Chk_IGN - 1 - если включено зажигание Buttons - подключение одного из проводов кнопок на руле (второй на +5в) Voltmetr - соответственно вольтметр))) J3 ------------------------ Подключение к программатору ______________ Sleep - вместо датчика холла(усыплять планшет) _______________________________ Принимать контроллер будет следующую структуру: typedef struct TxD { unsigned char Button; // Нажатая на руле кнопка unsigned char VoltH; // Напряжение бортовой сети целая часть unsigned char VoltL; // Напряжение бортовой сети дробная часть unsigned char TempH; // Температура выставленная целая часть unsigned char TempL; // Температура выставленная дробная часть (если TempL = 1 -> TEMP.5) unsigned char Speed; // Скорость вентилятора печки 1-8 unsigned char Heat; // 0 - откл, 1 - обдув ветрового стекла, 2 - обогрев заднего стекла, 3 - обдув + обогрев unsigned char Way; // 0 - не выбран или АВТО 1 - стекло, 2 - лицо, 3 - ноги, 4 - стекло + лицо, 5 стекло + ноги, 6 ноги + лицо unsigned char Cond; // 0 - OFF, 1 - AUTO, 2 - ECO, 3 - MANUAL unsigned char Rear; // Включение заднего хода 1 - ВКЛ., 0 - ВЫКЛ. unsigned char Neut; // Нейтральная передача 1 - ВКЛ., 0 - ВЫКЛ. } tTX; Принимать 1 байт - номер кнопки климат контроля которую он нажмет. |
Цитата:
|
Для работы с последовательным портом можете использовать библиотеку https://github.com/felHR85/UsbSerial
А начинать разработку приложений для андроида, имея опыт программирования, все-таки правильнее с Android Studio. |
Цитата:
Раз Вы в теме, есть конкретный вопрос, можно ли написать че то типа пиблуды, чтобы скажем управлять плеером и радио согласно глобальной переменной, в которой будет указываться какая кнопка сейчас нажата? Чтобы не писать плеер с нуля самому. А возможно кто то уже заморачивался с этим. |
Затрудняюсь что-либо посоветовать. Думаю, правильнее изучить программирование для андроида с нуля. Это не так сложно, как кажется. https://startandroid.ru/ru/uroki/vse-uroki-spiskom.html
P.S. Если Вы считаете себя старым, то я вообще динозавр какой-то :) |
Цитата:
|
Что касается самой постановки задачи, то это ООП в чистом виде. Имеем физический объект - микроконтроллер. Далее по шагам:
1. описываем его состояние в виде набора числовых и логических переменных, 2. описываем методы изменения состояния (включение/выключение устройств, регулировка уровней громкости и т.п.) с указанием соответствующих числовых или логических параметров, по сути это процедуры для конкретного набора действий, 3. описываем протокол обмена через последовательный порт в формате json-rpc или xml-rpc (первый более компактный), 4. разрабатываем пользовательский интерфейс андроидного приложения, 5. кодируем и отлаживаем на реальных устройствах. Именно так у меня реализовано управление FM-приемником на RDA5807 + Arduino Uno из андроидного приложения. |
По поводу работы с портом я если честно я думал попроще сделать, использую со стороны ATMega48A UART, а со стороны планшета USB -> COM по средству CH340G, дабы не заморачиваться с протоколом. OTG цепляю на ногу меги и дергаю ей в момент просыпания планшета.
Вопрос в другом может есть специальные приложения чтобы не мудрить и не писать плеер вручную? Смысл такой при изменении значения глобальной переменной будет "нажиматься" соответствующая кнопка плеера |
Я думаю, что проще эту задачу реализовать на устройстве с USB-HID профилем. Оно будет работать, как USB-клавиатура, и непосредственно управлять плеером. На платформе Arduino micro это возможно на любой плате с чипом 32u4, а как сделать на ATMega48A - Вам виднее.
|
Цитата:
Нашел, действительно USB клавиатура управляет плеерами. Сейчас ищу протокол, есть скетч на ардуине, но это слишком громоздко получится, да и дороговато нынче ардуина стоит)) Atmega48A вполне сгодится, еще и памяти процентов 20 останется)) А еще я нарыл, как включают камеру заднего вида, через плату видеозахвата, только вот как делать дамку парковки нигде не сказано(( |
Часовой пояс GMT +4, время: 02:18. |
Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot