Comments 15
Так-с сразу вопросы:
Первый Вопрос —
Почему так? Где проблема? Без надежной работы в таком режиме будет очень сложно сделать хоть какое-то рабочее приложение. Что в обратном направлении? Команда проходит гарантированно или не всегда? Какие задержки между срабатыванием датчиков и отображением на экране телефона?
2. Насколько хорошо работает подключение — то есть, если сделали сопряжение, потом выключили вашу штуку или BT на телефоне, затем включили, зашли в приложение, нажали на Connect — соединение всегда устанавливается? Быстро? Что происходит, если вы выходите из зоны видимости, а затем возвращаетесь.
3. Я так понимаю, что Serial over Bluetooth и приложения под него можно делать только под Андроид. С яблоками так не получится и требуется изобретать другой путь, если хочется сделать универсальный вариант?
Первый Вопрос —
Забегу немножко вперёд и скажу, что я так и не научился гарантированно получать на смартфоне отправленное с контроллера сообщение. Если с проводным UART в прошлой статье все было очевидно, то с Bluetooth на практике вместо отправленного сообщения может прочитаться только его часть и смысл передаваемой команды нарушиться.
Почему так? Где проблема? Без надежной работы в таком режиме будет очень сложно сделать хоть какое-то рабочее приложение. Что в обратном направлении? Команда проходит гарантированно или не всегда? Какие задержки между срабатыванием датчиков и отображением на экране телефона?
2. Насколько хорошо работает подключение — то есть, если сделали сопряжение, потом выключили вашу штуку или BT на телефоне, затем включили, зашли в приложение, нажали на Connect — соединение всегда устанавливается? Быстро? Что происходит, если вы выходите из зоны видимости, а затем возвращаетесь.
3. Я так понимаю, что Serial over Bluetooth и приложения под него можно делать только под Андроид. С яблоками так не получится и требуется изобретать другой путь, если хочется сделать универсальный вариант?
Добрый день, я прям всю статью пишу, про то, что это мой первый опыт и с тем и с тем, и что я не программист а вы сразу такие сложные вопросы.
Жалко конечно, что Вы поздно написали, я уже все барахло разобрал и запихал обратно по коробкам, на час раньше я бы хоть часть вопросов перепроверил, а все заново собирать пока не хочу и так большую часть праздников на это «потерял».
В принципе я глубоко приложение не тестировал. Только слегка его успел поковырять:
но думаю, в части Android можно наладить прием больше чем одного символа, просто у меня сейчас не было цели сделать, полезное приложение. Тот пример, что я брал за «базу» обрабатывал символы как-то нестабильно, то один символ за раз, то два, то три (я посылал команду в 4 символа с учетом перевода строки).
Причем я так понимаю, что если бы я сделал все на Arduino получил такой же эффект. Вот тут поднимался похожий вопрос, я так понимаю можно изловчиться, но надо лучше знать .NET чем я знаю сейчас. Я так стараюсь вспомнить, вроде бы при этом сами по себе данные не терялись (а может и терялись, я уже не помню), просто приходили в разное время, так что думаю можно было бы сделать буфер и проверять его наполнение, я даже что-то пытался такое вчера ночью сделать, но у меня не особо получилось и я принял более «топорное решение» устранив проблему на уровне сигнала отправляемого контроллером.
Я в принципе не до конца понимаю, как работает bluetooth serial. Но проверил 3-4 приложения на андройд из магазина приложений и они все читали по одному — два символа, bluetooth serial terminal читал 4 символа… а вот если отправлять более длинное сообщение уже начинались проблемы.
Честно с телефоном по квартире я не ходил, потому что при отладке в него был воткнут провод и мне как-то в голову не пришло, проверить зону покрытия. Но даже если есть проблемы с подключением и покрытием, то думаю это, точно решаемо за счет усложнения логики, проверки других событий системы и восстановления подключения если отвалиться. Просто как я уже писал в самой статье я не хотел усложнять, я даже адрес HC-06 забил в код, вместо реализации выбора из списка доступных устройств.
Реакция на изменение датчиков примерно около секунды (а может и меньше когда всё в порядке), но иногда бывает, что в цикле вместо команды считывается текст: "\n 5", тогда реакции надо ждать до следующей итерации цикла, чтобы прочитать значимую цифру команды.
Отправка звукового сигнала в первый раз всегда срабатывала идеально, включалась быстро, но вот два раза подряд не удавалось запустить, (нужно было выждать паузу) но это я подозреваю из-за того, как я написал диаграмму для canny. Возможно я не очень корректно использовал блок 5 секундной задержки, вместо него можно было вставить блок ШИМ с полным заполнением на 5 секунд или еще что-нибудь придумать.
Про IOS ответить ничего не могу у меня никогда «Айфона» не было, я как-то даже изначально не ставил вопрос на проверку работоспособности для IOS, все равно проверить мне было бы не на чем.
Сожалею, что не могу ответить на вопросы подробней, надеюсь кто-нибудь более опытный придет в эту ветку комментариев и подскажет. Ну или может я когда-нибудь еще повторю опыты и появится новая информация.
Жалко конечно, что Вы поздно написали, я уже все барахло разобрал и запихал обратно по коробкам, на час раньше я бы хоть часть вопросов перепроверил, а все заново собирать пока не хочу и так большую часть праздников на это «потерял».
В принципе я глубоко приложение не тестировал. Только слегка его успел поковырять:
но думаю, в части Android можно наладить прием больше чем одного символа, просто у меня сейчас не было цели сделать, полезное приложение. Тот пример, что я брал за «базу» обрабатывал символы как-то нестабильно, то один символ за раз, то два, то три (я посылал команду в 4 символа с учетом перевода строки).
Причем я так понимаю, что если бы я сделал все на Arduino получил такой же эффект. Вот тут поднимался похожий вопрос, я так понимаю можно изловчиться, но надо лучше знать .NET чем я знаю сейчас. Я так стараюсь вспомнить, вроде бы при этом сами по себе данные не терялись (а может и терялись, я уже не помню), просто приходили в разное время, так что думаю можно было бы сделать буфер и проверять его наполнение, я даже что-то пытался такое вчера ночью сделать, но у меня не особо получилось и я принял более «топорное решение» устранив проблему на уровне сигнала отправляемого контроллером.
Я в принципе не до конца понимаю, как работает bluetooth serial. Но проверил 3-4 приложения на андройд из магазина приложений и они все читали по одному — два символа, bluetooth serial terminal читал 4 символа… а вот если отправлять более длинное сообщение уже начинались проблемы.
Честно с телефоном по квартире я не ходил, потому что при отладке в него был воткнут провод и мне как-то в голову не пришло, проверить зону покрытия. Но даже если есть проблемы с подключением и покрытием, то думаю это, точно решаемо за счет усложнения логики, проверки других событий системы и восстановления подключения если отвалиться. Просто как я уже писал в самой статье я не хотел усложнять, я даже адрес HC-06 забил в код, вместо реализации выбора из списка доступных устройств.
Реакция на изменение датчиков примерно около секунды (а может и меньше когда всё в порядке), но иногда бывает, что в цикле вместо команды считывается текст: "\n 5", тогда реакции надо ждать до следующей итерации цикла, чтобы прочитать значимую цифру команды.
Отправка звукового сигнала в первый раз всегда срабатывала идеально, включалась быстро, но вот два раза подряд не удавалось запустить, (нужно было выждать паузу) но это я подозреваю из-за того, как я написал диаграмму для canny. Возможно я не очень корректно использовал блок 5 секундной задержки, вместо него можно было вставить блок ШИМ с полным заполнением на 5 секунд или еще что-нибудь придумать.
Про IOS ответить ничего не могу у меня никогда «Айфона» не было, я как-то даже изначально не ставил вопрос на проверку работоспособности для IOS, все равно проверить мне было бы не на чем.
Сожалею, что не могу ответить на вопросы подробней, надеюсь кто-нибудь более опытный придет в эту ветку комментариев и подскажет. Ну или может я когда-нибудь еще повторю опыты и появится новая информация.
3. Я так понимаю, что Serial over Bluetooth и приложения под него можно делать только под Андроид. С яблоками так не получится и требуется изобретать другой путь, если хочется сделать универсальный вариант?
HC-05/06 старые модули которые работают на SPP поэтому с яблоками сложно. Уберите эти модули возьмите NRF52 и уже там спокойно можно что к яблокам что к андроидам, полноценный ble 4-5.
возьмите NRF52 и уже там спокойно можно что к яблокам что к андроидам, полноценный ble 4-5.
Как вы думаете, это решило бы проблемы автора статьи тоже?
Не факт, там разница в цене больше чем в 10 раз. Если учесть, что HC-06 я покупал за копейки просто побаловаться, то NRF52 стоит уже как недорогой смартфон.
Я имел ввиду вопросы с приемом и посылкой сообщений
я так понимаю там и принцип передачи другой, и библиотеки для работы другие, так-то наверняка поможет если кто-то серьезную систему будет собирать, а для задачки из двух датчиков, наверное проще еще помучить HC-06 (учитывая разницу в цене), наверняка там можно и более стабильно данные получать, если будет когда-то скучно, попробую еще раз все собрать и поковыряться.
тут вообще на самом деле все очень странно. Я не очень хорошо понимаю откуда вообще вылезла такая проблема, а может просто давно не игрался с этими модулями.
нрф52 стоит от 250р я не думаю что настолько критично, ну и не забывайте что нрф52 не требует никакой ардуины и чего то еще, он сам по себе
сам по себе модуль НС-06 имеет на борту микроконтроллер с 8ю портами наружу, теоретически можно было бы подключать к нему датчики напрямую. я даже поставил блюлаб и проект на этот модуль, но особого прогресса не достиг.
Sign up to leave a comment.
«Каких Марин?» или управляем контроллером через bluetooth с помощью мобильного приложения на Xamarin (Android)