PCCar.ru - Ваш автомобильный компьютер

Вернуться   PCCar.ru - Ваш автомобильный компьютер > MP3Car ТехИнфа > AndroidCar > Беcпроводные коммуникации > Bluetooth

Ответ
 
Опции темы Поиск в этой теме
Старый 27.01.2012, 08:58   #1
Lestat
Новый Пользователь
 
Аватар для Lestat
 
Регистрация: 09.06.2007
Возраст: 37
Город: Москва
Регион: 77, 97, 99, 177
Машина: Nissan Tiida Sedan
Сообщений: 18
Lestat is on a distinguished road
Smile Андройд и BT звонки

Полистал соседние темы, возможно пропустил, но насколько я понимаю нормального решения блютусных звонков через андройд нет...

из того что я нагуглил есть реальизция профиля HFP под линукс тут, обсуждают тут, но как это прикрутить без лишнего гемора к андройду не понятно)

Потом есть готовый модуль... например такой:
Цитата:

Версия стандарта Bluetooth: v.2.1+EDR
Интерфейс: UART, PCM, SPDIF, I2S
Встроенная антенна: 1
Напряжение питания: 2.5…4.4 В
Профиль Bluetooth: SPP, DUN, OBEX OPP, HFP v.1.5, A2DP, AVRCP, DID, HID
Тип корпуса: WT32_A_AI
Размер: 23.0x16.0x3.0 мм
Рабочая температура: -40...85 °C

WT32 - Bluetooth-модуль 2-го класса. Особенностью модуля является встроенное ПО iWrap 4 с простым управлением (AT-команды). Голосовые профили A2DP, AVRCP, HFP (v.1.5) позволяют реализовать передачу стереозвука. Встроенный 16-битный стереокодек с аудио-ЦАП -95 дБ. Прямое подключение микрофона и динамика.
на sparkfun.com 89$... у нас вроде как 30$
в терраэлектронике WT32-A-AI4 стоит 937р

Даташит пока не листал, но насколько я понимаю это очень и очень подходящая штука! Ей сможет рулить arduino, который можно подключить к андройду и например давать сигнал что идет звонок чтобы тупо нарисовать номер входящего звонка и имя из контактов если номер такой там есть простейшей программкой...
Такое решение не зависит от самого андройда, даже если он повиснет или вообще сдохнет звонки в машине работать будут... главное чтобы был сигнал вызова и кнопка ответа на руле была подключена к контроллеру, который управляет этим модулем... а также возможно сможет работать a2dp, через который можно гнать музыку с самой мобилы)
При ответе на звонок контроллер может просто переключить линейный вход усилителя машины с наушников андройда на линейный выход этого модуля... хоть простой релюшкой, но лучше бы конечно приглушить андройд... чтобы навигашку было бы слышно)


В качестве планшета я думаю стоит посмотреть на Nook Color ~230$ (на ebay.com с доставкой... топ селлеры ~260$ тоже с доставкой)
Он дороже китайских планшетов, но для него есть кастомная прошивка, которая скорее всего будет поддерживаться, подходящий по размерам экран (почти вписывается в рамку 2DIN), юсб-хост Wi-Fi и вроде как блютус, хотя если WT32 работает так как я думаю блютус в планшете уже не особо и нужен...

Есть еще Amazon Kindle Fire... который тоже очень и очень классный... качественный экран, по размеру чуть меньше размеров 2DIN... прямо под рамку!) Но к сожалению там нет usb-хоста... возможно умельцы когда-нибудь сделают поддержку если чип может работать в режиме хоста, но на данный момент, насколько я знаю, в кастомных прошивках поддержки нет...

Последний раз редактировалось Lestat; 27.01.2012 в 09:41.
Lestat вне форума   Ответить с цитированием
Старый 27.01.2012, 10:07   #2
Lestat
Новый Пользователь
 
Аватар для Lestat
 
Регистрация: 09.06.2007
Возраст: 37
Город: Москва
Регион: 77, 97, 99, 177
Машина: Nissan Tiida Sedan
Сообщений: 18
Lestat is on a distinguished road
По умолчанию

Заказал модуль, нашел доки!)
На сайтике производителя есть раздел с документацией, доступен после регистрации...

помимо даташитов есть примеры и прочие материалы...
на данный момент самые важные Application note:
Hands-Free and Headset profiles
A2DP and AVRCP Profiles
управляется модуль достаточно просто в стиле ATкоманд...

Попробую порулить им через STM32VLDISCOVERY... отладочная плата на основе ARM контроллера STM32 с usb на борту (387р в терраэлектронике)
ARM-микроконтроллеры STM32F. Быстрый старт c STM32-Discovery
STM32F1xx — лечимся от ардуинозависимости вместе

Последний раз редактировалось Lestat; 27.01.2012 в 10:41.
Lestat вне форума   Ответить с цитированием
Старый 27.01.2012, 17:01   #3
tsynik
Старший Пользователь
 
Регистрация: 17.03.2011
Город: Moscow
Регион: 77, 97, 99, 177
Машина: Alfa Romeo
Сообщений: 322
tsynik has a spectacular aura abouttsynik has a spectacular aura abouttsynik has a spectacular aura about
По умолчанию

Устройств с поддержкой HFP/HS профилей достаточно, в том числе и в USB исполнении. Проблема как раз в Андроиде, в котором эти профили работают только в одну сторону. Основной сложностью так же остаётся корректный роутинг и управление аудио звонков в Android на уровне драйверов. Если в планшете уже есть телефон, то там так же есть микрофон и динамик, и проблем нет. Есть готовые устройства с дополнительным аналоговым трактом на выход.
tsynik вне форума   Ответить с цитированием
Старый 27.01.2012, 20:03   #4
Lestat
Новый Пользователь
 
Аватар для Lestat
 
Регистрация: 09.06.2007
Возраст: 37
Город: Москва
Регион: 77, 97, 99, 177
Машина: Nissan Tiida Sedan
Сообщений: 18
Lestat is on a distinguished road
По умолчанию

не совсем понимаю как спасет устройство по ссылке... как например номер входящего звонка получить в карпс...
бт модуль даст контроллеру, подключенному по юсб к андройду номер входящего звонка и по команде от андройда контроллер сможет позвонить на заданный номер.
Программную часть я вижу как сервис висящий в памяти, который отобразит заглушку с номером текущего звонка если он идет, и примочкой к контактам в виде кнопки вызова... типа как скайп... вроде бы можно сделать через апи на яве, но не уверен
Если нельзя, то нужно сделать простую прогу, в которой выбираешь контакт и она посылает сигнал контроллеру "вызов номер такой-то", контроллер рулит модулем и он звонит.
В плане вызова неверное трудно сделать так чтобы выглядело как обычный вызов на андройд телефоне, но так как я предложил выше вполне реализуемо.

Да, кстати... микрофон что в планшете, ИМХО, это бесполезная штука... не думаю что он будет качественный звук давать...
нужно его расположить как-то правильно (у меня рядом с лампами под зеркалом встроен) и вообще наверно нужен микрофон именно для такого разговора, а то хрипеть будет...

Последний раз редактировалось Lestat; 27.01.2012 в 21:00.
Lestat вне форума   Ответить с цитированием
Старый 30.01.2012, 01:18   #5
Lestat
Новый Пользователь
 
Аватар для Lestat
 
Регистрация: 09.06.2007
Возраст: 37
Город: Москва
Регион: 77, 97, 99, 177
Машина: Nissan Tiida Sedan
Сообщений: 18
Lestat is on a distinguished road
По умолчанию

Распишу на всякий случай... чтобы самому потом не забыть)

Простеньким скетчем arduino nano подключил WT32 к виртуальному COM-порту компа... открываем Serial Monitor, ставим порт в 115200 и можно экспериментировать...
Цитата:
int resetpin = 6;

void setup()
{
// не мешаем TX и RX
pinMode(0, INPUT);
pinMode(1, INPUT);

// пин, подключенный к RESET wt32
pinMode(resetpin,OUTPUT);

digitalWrite(resetpin, HIGH);
delay(100);
digitalWrite(resetpin, LOW);
}
void loop()
{
}
Отправил команды в порт...
Цитата:
SET PROFILE HFP ON
SET BT CLASS 200408
SET BT NAME TIIDA_HFP
SET BT AUTH * 1237
RESET
После мобила (тоже, кстати, на андройде) подключилась точно также как к моей тачке!)
При подключении и после модуль спамит всякую инфу:
Цитата:
RING 0 f8:db:7f:0d:51:52 3 HFP
HFP 0 BSRF 103
HFP 0 STATUS "service" 1
HFP 0 STATUS "call" 0
HFP 0 STATUS "callsetup" 0
HFP 0 STATUS "callheld" 0
HFP 0 STATUS "signal" 3
HFP 0 STATUS "roam" 0
HFP 0 STATUS "battchg" 4
HFP 0 READY
HFP 0 NETWORK "Beeline"
HFP 0 STATUS "signal" 4
т.е. при изменении каких-то параметров он отправляет в порт сообщение.

При входящем звонке модуль говорит номер входящий!
HFP 0 CALLERID "+79032...." "" 91
Отправляем ему ANSWER и звонок принимается... REJECT отклоняется
Позвонить на последний номер можно отправив AT+BLDN на произвольный ATD+79032....;

Вобщем штуковиной я очень доволен!
Нужно теперь посмотреть как сделать удобную звонилку в "плншетном андройде"...
Lestat вне форума   Ответить с цитированием
Старый 30.01.2012, 16:34   #6
Lestat
Новый Пользователь
 
Аватар для Lestat
 
Регистрация: 09.06.2007
Возраст: 37
Город: Москва
Регион: 77, 97, 99, 177
Машина: Nissan Tiida Sedan
Сообщений: 18
Lestat is on a distinguished road
Exclamation

Накидал программку которой можно "позвонить"...
т.е. из стандартной программы с контактами ее можно вызвать как звонилку, как скайп например.
Выдает такую менюшку:

т.е. тут есть телефон, скайп и моя прога третьей строчкой.
При клике на нее появляется окно-пустышка, но в ней есть код который получает вызываемый номер и дальше может передавать его в BT модуль...

насколько я помню нормальное API для USB устройств только в андройде 3.1 (API level 12) и выше, а CyanogenMod 7, которым прошивается Nook Color, вроде бы основан на 2.3.3... но как-то там реализована поддержка юсб устройств, думаю можно что-нибудь придумать)
Lestat вне форума   Ответить с цитированием
Старый 31.01.2012, 08:50   #7
Lestat
Новый Пользователь
 
Аватар для Lestat
 
Регистрация: 09.06.2007
Возраст: 37
Город: Москва
Регион: 77, 97, 99, 177
Машина: Nissan Tiida Sedan
Сообщений: 18
Lestat is on a distinguished road
По умолчанию

Вот, кстати, код для переключалки треков...
Lestat вне форума   Ответить с цитированием
Старый 08.05.2012, 14:13   #8
Lestat
Новый Пользователь
 
Аватар для Lestat
 
Регистрация: 09.06.2007
Возраст: 37
Город: Москва
Регион: 77, 97, 99, 177
Машина: Nissan Tiida Sedan
Сообщений: 18
Lestat is on a distinguished road
По умолчанию

Купил Kindle fire, у него как раз недельку назад допилили поддержку USB Host!
Подключил модуль WT32-A-AI через arduino к планшету, научился с ним общаться!
При подключении к usb появляется /dev/ttyUSB0, через него и ведется общение как с простым файлом... типа такого:
Код:
// в отдельном потоке можно читать все что спамит arduino
BufferedReader reader = new BufferedReader(new FileReader("/dev/ttyUSB0"));
while ((line=reader.readLine()) != null) 
    myHandler.post(new Runnable() {
        public void run() { getLine(line); }
    });
======================================
// ну и почти также писать
BufferedWriter writer = new BufferedWriter(new FileWriter(FILE_NAME));
writer.write("INFO");
writer.newLine(); // или руками)
writer.flush();
только права на /dev/ttyUSB0 нужно поставить 666 или выше
Настройка порта через stty
stty -F /dev/ttyUSB0 cs8 115200 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts устанавливает скорость, и прочие параметры при которых WT32-A-AI начинает нормально работать...

Также заказал простенькие модули:
FM-радио 1pcs TEA5767 FM Radio Module
USB <> UART NEW CP2102 USB 2.0 to UART TTL 6PIN Module Serial Converter
IMU с гироскопом, акселерометром 10DOF IMU HMC5883L ITG3205 BMA020 BMP085 sensor module for arduino/MWC
на основе последнего хотелось бы попробовать собрать внешний GPS приемник с dead reckoning (типа того что обсуждали тут на форуме) чтобы получать координаты в тонелях и вообще иметь точные дворовые треки для карт OpenStreetMap

Все девайсы и кнопочки с руля хотелось бы подключить с помощью arduino через USB к планшету, на котором крутится сервис, который управляет ими... на данный момент правда сервис только принимает и отправляет команды WT32-A-AI

Касательно самого андройда и планшета мне кажется там есть все что нужно...
У Kindle Fire всего одна аппаратная кнопка включения/выключения... лучше и не придумать для встраивания! Прошивка с xda андройда 4.0 с USB достаточна стабильна, хотя глюки есть...
Также нашел полезные программки No Lock и Set Orientation
Lestat вне форума   Ответить с цитированием
Старый 16.05.2012, 20:56   #9
Lestat
Новый Пользователь
 
Аватар для Lestat
 
Регистрация: 09.06.2007
Возраст: 37
Город: Москва
Регион: 77, 97, 99, 177
Машина: Nissan Tiida Sedan
Сообщений: 18
Lestat is on a distinguished road
По умолчанию

Пока сам не забыл отмечу один момент...
При исходящем вызове WT32 не спамит в консоль номер вызываемого абонента... узнать его можно отправив на WT32 ат-команду AT+CLCC, в ответ он пишет что-то вроде HFP 0 CLCC 1,0,3,0,0,"8903ххххххх",129
где 8903ххххххх соответственно номер на который мы звоним.
Lestat вне форума   Ответить с цитированием
Старый 17.05.2012, 02:00   #10
Lestat
Новый Пользователь
 
Аватар для Lestat
 
Регистрация: 09.06.2007
Возраст: 37
Город: Москва
Регион: 77, 97, 99, 177
Машина: Nissan Tiida Sedan
Сообщений: 18
Lestat is on a distinguished road
По умолчанию

Когда сажусь в тачку стандартный блютус сразу цепляет мою мобилу...
Мой девайс на андройде не цепляет, а если и цепляет, то только принудительно, когда руками щелкаю на соединение в настройках блютуса... чтобы соединение устанавливалось автоматом нужно отправить девайсу SET CONTROL AUTOCALL 111e 5000 HFP

Все контакты синхронизированы через гугл... т.к. и на телефоне и на планшете что в машине стоит андройд
Но история звонков не синхронизирована, а если и синхронизирована, то может инета и не быть и она разойдется...
Поэтому я долго и старательно листал даташит на этот WT32 чтобы выяснить как загрузить историю звонков через блютус
Для этого есть протокол PBAP, есть даже команда PBAP 04 5 например... получить 5 вызовов из общей истории входящих/исходящих звонков... можно получить отдельно входящие, исходящие, пропущенные и вообще всю книгу...
Но эта команда сделана как-то криво... она при ошибке не выводит сообщение об ошибке, а пишет обычное SYNTAX ERROR
Для того чтобы она заработала нужно сперва выполнить нечто вроде
CALL xx:xx:xx:xx:xx:xx 112f PBAP (где xx:xx:xx:xx:xx:xx BT-адрес вашего телефона, его можно найти в списке подключенных девайсов LIST или в строке "SET BT PAIR ..." в ответе команды SET)
После этого андройд на мобиле запросит подтверждение на доступ к телефонной книге... спрашивает один раз, а не при каждом вызове команды. Ну и если ответ положительный, то команды вида PBAP 04 5 начинают работать и строчат запрошенные контакты в консоль в формате vCard 2.1 по дефолту

Теперь вроде бы все что нужно работает!!!
Lestat вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



Часовой пояс GMT +4, время: 04:00.


Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot