roboforum.ru

Технический форум по робототехнике.

Модуль блютус + Android - пропажа символов.

Модуль блютус + Android - пропажа символов.

NorthStar » 31 янв 2012, 13:56

Добрый день!
Сейчас в устройстве использую модуль блютус от INEX (IE-ZX-BLUETOOTH). Само устройство на Ардуино управляет DC моторчиками - управление идет через смартфон на Андроид.
Алгоритм такой:
С телефона идет команда, например "A100", что значит - мотор А прокрутить на 100 единиц. Далее телефон ждет ответа от ардуины - символ "O" (Serial.print("O")), что говорит о том, что команда выполнена и можно слать следующую команду.
Проблемма как раз в том, что в одном испытании из 20 этот символ "O" до телефона не доходит. Причем связь по bluetooth не рвется.
Приложение для Android написано на основе примера BluetoothChat. Пока сделал кнопку на телефоне, чтоб можно было вручную перейти к следующей команде, но это конечно не совсем то, что хотелось.
Если бы дело было в чем-то еще, а не в символе О, то продолжение работы было бы невозможно. Программа бы зависала или еще что-то, а в данном случае все нормально.
Пока из идей:
1 это особенность платформы Андроид (блютус там конечно очень кривенько реализован) и ничего не поделаешь
2 попробовать поменять модуль блютус на другой, но этого не хотелось бы, так как устройство спроектировано с посадочными отверстиями под этот модуль
Может еще какие идеи будут? Наверняка кто-нибудь пробовал управлять роботом с Андроида - поделитесь результатами.

Re: Модуль блютус + Android - пропажа символов.

galex1981 » 31 янв 2012, 14:16

А что за программа проита в Ардуину? Можете ее привести? Я склоняюсь именно к тому что в ней может быть ошибка.

Re: Модуль блютус + Android - пропажа символов.

Myp » 31 янв 2012, 15:54

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

ардуина с модулем на какой скорости общается? есть возможность переконфигурировать модуль на другую скорость?

Re: Модуль блютус + Android - пропажа символов.

NorthStar » 31 янв 2012, 17:48

Скорость 9600. На счет перепрограммирования не уверен. Скорее всего нет.
В коде тоже не очень-то сомневаюсь, так как приложение из примеров SDK - BluetoothChat называется.

Re: Модуль блютус + Android - пропажа символов.

Myp » 31 янв 2012, 18:22

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

Re: Модуль блютус + Android - пропажа символов.

NorthStar » 01 фев 2012, 00:07

Программа простая - нет ни прерываний, ни больших объемов памяти.
Заменил модуль на BlueSMiRF Silver и пока проблемма не проявляласть. Я мало еще экспериментов провел, чтоб окончательные выводы делать, но похоже что дело в модуле, а мне он так нравился своей простотой и размерами (
Но к сожалению появился новый глюк, так же редко проявляющийся - иногда данные передаются с задержкой 5-10 секунд, но это еще можно объяснить какой-нибудь помехой и в целом допустимо.
А про дуню вы как будто накаркали - один раз вдруг начала подвисать, все выполняется, но с огромными задержками. Помог ресет и вроде больше такого не происходило. ))

Re: Модуль блютус + Android - пропажа символов.

Delirium » 01 фев 2012, 13:24

У меня модуль BTM 112 и Arduino nano, с помощью которых вертолет управляется с андроида. Команды посылаю, кстати, по такому же принципу как и вы, А100В50С20... (казалось наиболее просто реализуемо), проверок нет, в ответ контроллер шлет то, что принял и еще данные с гироскопа. Команды отправляются с частотой один раз в 10мс, по таймеру android'a. Сталкивался с проблемой зависания проги, либо, иногда, с потерей символов, при этом до arduino доходит, например команда "A"... дальше байт потерян, и поступает символ "B", что воспринимается как А66 :) и, собственно, вертолет потряхивает. Ввел задержку в прошивке контроллера 9мс и вроде стало нормально, но что это было так и не разобрался до конца (может буффер переполняется? хотя я его очищаю периодически flush'ем). Скорость 19200бод.
При этом изменение велечины задержки +/- опять приводит к тем же проблемам.
И, кстати,видимо передача по bluetooth не гарантирует полную сохранность данных, сбои бывают. Но если у вас только "О" постоянно теряется, может с этим символом что-то не так? :)

Re: Модуль блютус + Android - пропажа символов.

NorthStar » 02 фев 2012, 00:46

Ну "О" это раньше было "ОК" просто сама программа для Android (это моя первая прога, поэтому я там далеко не все знаю) иногда принимает ОК как целую строку, а иногда как 2 отдельные строки "О" и "К", поэтому сократил до одной буквы.
Сегодня еще огромное чило тестов было - BlueSMiRF ниразу не дал сбой. Разве что иногда задержки бывают, но это фигня по сравнению с потерянным символом. Так что дело в самом модуле было.

Re: Модуль блютус + Android - пропажа символов.

Delirium » 02 фев 2012, 14:01

Круто, что замена модуля решила проблему!
Кстати, можно читать из буфера serial port'a в android, только если там 2 и более символов, например пришло два байта, если это "ОК" - работаем. Так и символы, возможно, не будут теряться. Хотя наверное вы так и делаете. :)
У меня, когда все начало уже работать, тоже внезапно появились сбои, прога висла, символы исчезали... Оказалось на линии RX модуля, где я сваял конвертер уровней, отвалился резистор. Случайно обнаружил, думал в программировании косяк.


Rambler\'s Top100 Mail.ru counter