Пример использования технологии BLE Advertising для передачи данных без установления соединения при минимальном энергопотреблении для ESP-C3. Код примеров из видео: github.com/Moo... Документация на SDK BLE GAP: docs.espressif...
Спасибо, интересно. Как раз присматриваюсь к теме BLE для ESP. Конечно использовать ей с батарейным питанием это нонсенс, но далеко не всегда нужно супернизкое энергопотребление.
У моей подруги в музее в фондах, в которых не может быть розеток 220В, стоит мой датчик на ESP8266 с BME280, который раз в час проводит измерение температуры и влажности и раз в 4 часа сбрасывает все это в облако Гугла. И это используя wifi, причем фонд в подвале и уровень сигнала -70-90 дБ, так еще и гугл-облако тот еще тормоз. И на 18650 на 3 Ач 40+ дней пашет, так что не так все и плохо. Там время передачи можно оценить в 30-60 сек. при энергопотреблении в 100-200 мА, а тут 0.5 сек. при 85 мА...
@@alexmorozov73 В случае wifi я бы сказал ваш результат очень хорош, но BLE гораздо особенно в режиме Advertising обычно используют в совсем другого рода приложениях, когда от одной батарейки устройство должно работать по нескольку лет... Есть модули на Нордиках от FANSTEL, которые на 800 метров типа должны бить по заявлениям производителя. В условиях прямой видимости проверял их 400 метровые - на 250 метров пробивали. Через двойной металлический забор из профнастила метров 15 получалось...
Нет, ESP слишком прожорливы по сравнению с конкурентами. Но если использовать именно ESP, то самая экономичная передача данных может быть обеспечена с помощью BLE. И WiFi как бонус не стоит со счетов сбрасывать.
Спасибо. Было очень интересно. Измерить бы сколько мс плата активна что б понимать энергопотребление. Алекс, вы не сталкивались с аудиокодеком opus? Все что нашел по его компиляции для esp делается под linux. Забавы раде хочеться слелать wi-fi прослушку с передачей в телеграмм.
Конкретно код под видео имеет следующие тайминги: общее время работы скетча около 1600 мс. (первый запуск около 1000 мс., потребление около 20 мА), непосредственно время передачи около 500 мс. (80+ мА). С аудиокодеком не сталкивался, но многое, что делают в linux, под окнами можно сделать в wsl. Поддержка Arduino собрана не с самыми оптимальными параметрами SDK, как минимум неплохо было бы не считать MD5 прошивки при выходе из глубокого сна, на это судя по всему в том числе уходит немало времени. И мощность BT уже не настроить, она тоже при сборке SDK выставляется (вопрос что там выбрано сейчас...).
@@alexmorozov73 Спасибо за ответ. Да, намудрил эспресив. 1,5 сек очень много. Никаких батареек не хватит. Wifi, как я понимаю, вашу дверь не пробивает? Отправка на тот же народный мониторинг с измерениями занимает от 0,27 сек по wifi, в среднем 1сек (зависит от времени ответа сервера, замер времени делаю по millis). На домашний сервер полагаю ещё быстрее будет. Внешнюю антенну не рассматривали? Из опыта, батареек ААА хватает на 1200-2500 отправок в телеграмм (время пробуждения около 4х секунд). Алекс, возможно глупый к вам вопрос, но все же, в esp8266 счётчик милис через какое время после выхода из сна начинает считать?
Как код ядра стартует, так миллис и сбрасывается. Т.е. практически сразу. Это у ESP32 происходит еще калибровка RTC кварца, вряд ли у ESP8266 этим заморачивались.
Пакеты скорее всего отбрасываются по причине несовпадения CRC. Так что никаких "непринятых" быть не может. Статусы "неполный" и "обрезанный" вероятно используются для BLE5 пакетов длиной полезной нагрузки более 39 байт, которые передаются на нескольких каналах и еще не приняты полностью.
CRC добавлять не нужно. Но вот какие-нибудь уникальные признаки (сигнатуру или серийник отправителя) можно и добавить, чтобы отличать нужные пакеты не только по их длине.
Узкое место стабилизатор напряжения, у стандартного ams1117 3.3v большое собственное потребление... есть лучше ht7333, но нет их в готовом решении только самому паять. Посмотрел сейчас у ams ток покоя 5 мА, а у ht7333 ток покоя 4 мкА
Есть пульт люстры, который вроде бы общается с ней через BLE. Можно ли на esp намутить перехват нажатий кнопок, чтоб потом управлять люстрой с есп? Или там просто так пакеты не посмотреть? Спасибо заранее за ответы)
Пульты вроде бы привязаны, т.е. ведут адресную передачу. Но скорее всего кто-нибудь уже сделал перехват команд, так что ищите в Инете. Тогда на ESP32/C3 можно сделать имитатор BLE пульта.
@@alexmorozov73 спасибо, да. Пульт в начале привязывается. Я просто ролик Ваш увидел - решил уточнить, может это где-то на поверхности. Хочу через ЕСП сделать имитатор рассвета, утром по будильнику. Пока идея - просто купить второй пульт и ЕСПшкой тыкать на нём кнопки :)
Можно или подобрать правильную партишн схему, или создать новую. Minimal SPIFFS (1.9MB with OTA/190KB SPIFFS) выглядит подходяще, если не нужно много SPIFFS. А так можно попробовать напрямую с BT контроллером взаимодействовать вообще без BT стека, это самый компактный вариант, точно раза в 3-4 будет меньше, и даже пример этого есть в SDK.
Куда угодно, все равно ничего не изменится, никакого обмена данными не происходит. Надо в рекламный пакет добавлять поле имени. Ищите в Инете формат рекламного пакета.
Передача адвертайзингом чревата потерей данных поскольку не все пакеты могут быть захвачены системой и контроллировать это никак не возможно. При приеме обычного пакета мы хотябы можем задействовать уведомления и дать понять серверу принят пакет или нет.
@@alexmorozov73 в ide 2.0 пример скомпиллился и залился без проблем. в 1.8 не получилось. Скорее всего заморочка в пасах библиотек не вижу смысла заморачиваться.
Ну это некорректное утверждение. Для разных задач годятся разные МК. А учиться лучше именно на простом, никто же вместо букваря "Войну и мир" не предлагает. Так то и любые ESP по сравнению с любым процессором от современного телефона бледно смотрятся...