Показать сообщение отдельно
Старый 03.03.2015, 01:08   #2
arkserg
Новый Пользователь
 
Регистрация: 28.09.2014
Возраст: 35
Регион: 66, 96
Сообщений: 27
arkserg is on a distinguished road
По умолчанию

Разобрал планшет, выпаял аккумулятор, мини джек на наушники, встроенный микрофон, вместо них припаял провода. Также подпаялся к кнопке включения и кнопке сброса планшета. Все провода напаял на колодку от материнской платы и закрыл планшет.

Когда получил Bluetooth модуль, просто офигел от того, какой он маленький, по изображению это было не понятно. Микросхема безвыводная с контактными площадками с шагом 1 мм. До этого ничего подобного паять не приходилось. С помощью многочисленных статей и видео в интернете с 3ей попытки смог изготовить ЛУТом плату-переходник, на которую дрожжащей рукой был припаян модуль. Как ни странно, всё заработало с первого раза. Модуль подключается к Arduino по UART интерфейсу и управляется простыми AT командами. В ходе тестов было обнаружено, что аудио выход у модуля full differential (+ и - на каждый канал), а не single-ended, что приводит к высокочастотному шуму при попытке подключиться к нему в режиме стерео. Для получения привычного сигнала с общей землей необходимо паять дополнительный преобразователь (схема есть в даташите к модулю). Так как мне модуль нужен только для телефонных разговоров, а там никакого стерео естественно нет, я решил отказаться от увлекательного сбора необходимых компонентов, травления очередной платы и пайки кучи деталей моими кривыми руками, и ограничиться моно.
Далее надо было подружить Arduino и планшет. Для этого, как уже упоминалось выше, был приобретен USB Shield от Circuits@home, точнее его китайская копия. Как я не старался, подключить планшет в Accessory Mode у меня не получилось, видимо планшет его не поддерживает, зато заработал Microbridge. Для создания соединения использовалось приложение из комплекта к adb библиотеки arduino, исходники которого в итоге легли в основу моего сервиса для планшета.
Приложение работает в фоне (висит сервис), общается с Arduino и обеспечивает необходимый функционал.
Сейчас оно умеет:
  • Перехватывать исходящий звонок и отправлять его через Arduino в блютус модуль.
  • Принимать от блютус модуля информацию о входящем звонке и выводить на экран фотографию абонента из адресной книги планшета с кнопками ответить\отбой
  • Запускать по команде от Arduino голосового ассистента Дусю (была выбрана из-за умения пересылать голосовые команды яндекс навигатору)
  • Запускать любое приложение на планшете
  • Управлять музыкальным плеером
  • Оповещать Arduino о событиях включения\выключения экрана
  • Отправлять Intent для Taskera

Из основного нереализованного - эмуляция нажатия кнопок клавиатуры. Оказалось, что эта возможность в Android недоступна для обычных разработчиков. Мне как минимум нужно эмулировать кнопку OK, так как яндекс навигатор после голосового поиска показывает несколько маршрутов и ожидает от пользователя подтверждения, а у меня нет в планах тянуться ради этого к планшету и заляпывать его пальцами. В интернете нашел решения в виде рутования планшета, выдергивания из него цифровой подписи системных приложений, и применения её в своем приложении совместно с установкой в системную директорию. Пока никак не могу заставить себя взяться за это гиблое дело.
Еще был вариант использовать Arduino Leonardo, но мой планшет в упор отказывается создавать ком порт без шилда, видимо производитель поленился реализовать полноценный USB Host, поэтому этот вариант пришлось отбросить.
arkserg вне форума   Ответить с цитированием