Комментарии 15
Так-с сразу вопросы:
Первый Вопрос —
Забегу немножко вперёд и скажу, что я так и не научился гарантированно получать на смартфоне отправленное с контроллера сообщение. Если с проводным 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, все равно проверить мне было бы не на чем.

Сожалею, что не могу ответить на вопросы подробней, надеюсь кто-нибудь более опытный придет в эту ветку комментариев и подскажет. Ну или может я когда-нибудь еще повторю опыты и появится новая информация.
3. Я так понимаю, что Serial over Bluetooth и приложения под него можно делать только под Андроид. С яблоками так не получится и требуется изобретать другой путь, если хочется сделать универсальный вариант?

HC-05/06 старые модули которые работают на SPP поэтому с яблоками сложно. Уберите эти модули возьмите NRF52 и уже там спокойно можно что к яблокам что к андроидам, полноценный ble 4-5.
возьмите NRF52 и уже там спокойно можно что к яблокам что к андроидам, полноценный ble 4-5.

Как вы думаете, это решило бы проблемы автора статьи тоже?
Не факт, там разница в цене больше чем в 10 раз. Если учесть, что HC-06 я покупал за копейки просто побаловаться, то NRF52 стоит уже как недорогой смартфон.
я так понимаю там и принцип передачи другой, и библиотеки для работы другие, так-то наверняка поможет если кто-то серьезную систему будет собирать, а для задачки из двух датчиков, наверное проще еще помучить HC-06 (учитывая разницу в цене), наверняка там можно и более стабильно данные получать, если будет когда-то скучно, попробую еще раз все собрать и поковыряться.
Для Вас как для разработчика софта логика по сути не меняется, отличия уже на аппаратной части, и протоколе передачи данных, пользователю отдается тот же самый уарт в самом простом случае.
P.S. и насчет цены 52810 самый дешевый стоит даже дешевле чем HC-6 смотрю по ценам али
тут вообще на самом деле все очень странно. Я не очень хорошо понимаю откуда вообще вылезла такая проблема, а может просто давно не игрался с этими модулями.
нрф52 стоит от 250р я не думаю что настолько критично, ну и не забывайте что нрф52 не требует никакой ардуины и чего то еще, он сам по себе
Это я так понимаю голый чип стоит сотни рублей, это как вместо Ардуино предложить просто купить голый AVR контроллер или я не прав?
сам по себе модуль НС-06 имеет на борту микроконтроллер с 8ю портами наружу, теоретически можно было бы подключать к нему датчики напрямую. я даже поставил блюлаб и проект на этот модуль, но особого прогресса не достиг.
модуль сильно старый и ковырятся с ним смысла нет, лучше в сторону более новых смотрите
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.