• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

MQTT

pvvx

Активный участник сообщества
С датчика врабатывается всего 4 переменных разрядностью не более 16 бит. Большей точности у него просто нет, а реальные данные и менее.

Если датчиков 5 шт, то общий поток, при 50 точках в сек, выходит всего 4*2*50*5 = 2000 байт в сек.

Тут не ясно почему вас беспокоит роутер с WiFi AP и тип WiFi соединения? Там только одно – ограничение кол-ва подключенных устройств, т.к. WiFi AP во всех бытовых роутерах всегда ограничена на кол-во соединений…

В этом месте не понятно, зачем MQTT, если вы пишите на python? Там запросто задается любой socket…

Аналогично не понятно, зачем в автономном датчике стоит ESP? Он же выжрет батарейку в раз. Такие потоки доступны любому чипу BLE и основное потребление составит сам датчик (MPU9250). Да и всяких готовых Bluetooth Inclinometer на али уже куча.

В данном деле интересна только интеграция десятка датчиков и прием с отработкой от всей своры на смарте. В этом прокатит только для BLE, т.к. может иметь множественные соединения, а не ограниченные как у WiFi.
 

kharlashkin

New member
С датчика врабатывается всего 4 переменных разрядностью не более 16 бит. Большей точности у него просто нет, а реальные данные и менее.

Если датчиков 5 шт, то общий поток, при 50 точках в сек, выходит всего 4*2*50*5 = 2000 байт в сек.

Тут не ясно почему вас беспокоит роутер с WiFi AP и тип WiFi соединения? Там только одно – ограничение кол-ва подключенных устройств, т.к. WiFi AP во всех бытовых роутерах всегда ограничена на кол-во соединений…

В этом месте не понятно, зачем MQTT, если вы пишите на python? Там запросто задается любой socket…

Аналогично не понятно, зачем в автономном датчике стоит ESP? Он же выжрет батарейку в раз. Такие потоки доступны любому чипу BLE и основное потребление составит сам датчик (MPU9250). Да и всяких готовых Bluetooth Inclinometer на али уже куча.

В данном деле интересна только интеграция десятка датчиков и прием с отработкой от всей своры на смарте. В этом прокатит только для BLE, т.к. может иметь множественные соединения, а не ограниченные как у WiFi.
С датчика вырабатывается 3 по 16 бит] (акселерометр, магнитометр и гироскоп) + кватернион 4 по 16 бит. На контроллере "на лету" идет обработка этих данных, корректировка кватерниона и передача его на ПК.
Я использую Enterprise точку доступа Motorola (есть еще пара Ubiquity, но их автономно настроить не получится, а контроллер ставить на ноут было лень), там ограничения на кол-во соединений нет ни каких подключений кроме этих датчиков - нет, ноут кабелем к ней подключаю. Я математику уже переделал, чтобы отдавать кватернион только когда есть смещение на какое-то значение - мне просто показалось что когда 3 датчика немного не своевременно сообщения приходят.
MQTT - интересно было пощупать что за зверь, ну и более перспективно - можно будет гнать на любое устройство данные через брокер, который находится где угодно. Если рассматривать задержку, то 100 мс для он-лайн игр более-менее приемлемо.
В первых попытках делал все на Arduino 328p + Bluetooth, так как опыта работы с "голубозубом" не было, так и не понял с какой стороны подступиться чтобы цеплять множество устройств, к тому же ограничение на дальность работы. ESP - пусть жрет - это прототип для проверки решений.
 

pvvx

Активный участник сообщества
С датчика вырабатывается 3 по 16 бит] (акселерометр, магнитометр и гироскоп) + кватернион 4 по 16 бит. На контроллере "на лету" идет обработка этих данных, корректировка кватерниона и передача его на ПК.
Там итоговый все равно остается только кватернион.
так как опыта работы с "голубозубом" не было, так и не понял с какой стороны подступиться чтобы цеплять множество устройств, к тому же ограничение на дальность работы.
Дальность у устройств с RF TX +8Дб и более, начиная с BT4.2 одинаковая с WiFi, но т.к. модуляция и прочие параметры самого способа передачи другие, то стабильность гораздо лучше WiFi. Проявляется как меньше выпадений. Аналогично уменьшается максимальная задержка передачи. У WiFi выпадения в городском варианте использования часто более 1 секунды. На BT4.2+ этого не наблюдается.
 

pvvx

Активный участник сообщества
Представьте мышку и клавиатуру с WiFi :) Или что нажимаете кнопку, а оно тормозит на секунды... Это типа WiFi.
 

kharlashkin

New member
Там итоговый все равно остается только кватернион.
Дальность у устройств с RF TX +8Дб и более, начиная с BT4.2 одинаковая с WiFi, но т.к. модуляция и прочие параметры самого способа передачи другие, то стабильность гораздо лучше WiFi. Проявляется как меньше выпадений. Аналогично уменьшается максимальная задержка передачи. У WiFi выпадения в городском варианте использования часто более 1 секунды. На BT4.2+ этого не наблюдается.
Ну так поделились бы исходниками или документацией с примерами. "Каждая лягушка хвалит свое болото"
 

pvvx

Активный участник сообщества
Ну так поделились бы исходниками или документацией с примерами.
Большинство простейших исходников в открытом доступе.
Документацию с примерами я не могу написать, т.к. это занимает больше времени чем создать и отладить новую систему на каком новом MCU или типа... Тем более к документации всегда будут претензии... А если ещё весь созданный хлам сопровождать, то когда жить-то?
"Каждая лягушка хвалит свое болото"
Из болота WiFi меня BLE и вытянул.

Да, вы бы уточнили конкретику, какой пример нужен (?).
 

pvvx

Активный участник сообщества
Несколько лет назад было такое для ESP8266, как пример оверлея (код может загружаться с внешнего ресурса на исполнение как подпрограмма):
 

pvvx

Активный участник сообщества
На самый дешевый BLE есть UBIA - но это универсальный драйвер BLE/USB/ADC/DAC/I2C/UART
На нем в качестве теста и MPU9250 гонял, программу опроса I2C писать проще на javascript, а чип BLE в этом деле выступает как тупой контроллер I2С.
Там надо всё переписывать, лепить класс устройства... Оно то росло по мере тестов ещё без наличия итогов и конкретизации команд, т.е. писалось тяп-ляп чтобы только проверить. А счас времени нет на него. Позже накалакаю классы в js...
Но типа для вашей поделки нужен не универсальный, а конкретный драйвер заточенный на MPU9250. Но мне MPU9250 с BLE не понравился - при быстром опросе MPU9250 жрет много, больше чем имеющиеся BLE чипы в режиме передачи данных от него-же.
Критерий нормы по потреблению для BLE - это работа более полгода от CR2032. Всё остальное - баловство и прошлый век чипов (датчиков).
 

nikolz

Well-known member
kharlashkin,
По-моему мнению, Вы не оптимально решаете свою задачу.
MQTT - имеет смысл использовать если у Вас множество получателей и источников асинхронной информации
В этом случае делается брокер - т е посредник который накапливает и отдает данные при асинхронном к нему обращении
как я понял из ваших картинок - у вас и близко к этому ничего нет.
-----------------
Ваша задача решается очень просто и эффективно на основе классической схемы сервер-клиент по протоколу UDP
При этом Вы получите желаемую скорость обмена а программа будет до безобразия простой.
---------------
 

kharlashkin

New member
На самый дешевый BLE есть UBIA - но это универсальный драйвер BLE/USB/ADC/DAC/I2C/UART
На нем в качестве теста и MPU9250 гонял, программу опроса I2C писать проще на javascript, а чип BLE в этом деле выступает как тупой контроллер I2С.
В этом случае мне придется переносить всю обработку на ПК, более того и прошивку для MPU9250 тоже как то грузить с ПК на датчик, как-то выглядит сильно сложно.
Ваша задача решается очень просто и эффективно на основе классической схемы сервер-клиент по протоколу UDP
При этом Вы получите желаемую скорость обмена а программа будет до безобразия простой.
Согласен что Socket лучше подойдет, но опять же тогда завязка на ПК (ну или сервис). Тогда вопрос встает в канале между контроллером датчика и конечным софтом а вдруг UDP залочен у провайдера, а вдруг не стандартные порты на маршрутизаторе закрыты. Писал же что интересно пощупать что за зверь MQTT, переписать пару строчек на Socket проблем не вижу вообще - 10-к строчек.
 

pvvx

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

pvvx

Активный участник сообщества
В этом случае мне придется переносить всю обработку на ПК, более того и прошивку для MPU9250 тоже как то грузить с ПК на датчик, как-то выглядит сильно сложно.
Я про это и написал, что для конечного изделия надо делать специальную версию. Там всё сильно упрощается и особенно уменьшается потребление самого чипа BLE.
PS: Для WiFi так-же нужно иметь специальную дополнительную железяку - роутер.
 

pvvx

Активный участник сообщества
В новых BLE ещё добавили функцию определение расстояния, что в таком деле как определение местной (стартовой) позиции может пригодится.
Вообще проблема не в датчиках, а в функциональности и нужды в таком устройстве. Реализация доступна уже более пятилетки в любом виде, но в бытовом сегменте не нашло спроса и места.
Я вот чё суда к вам залез - думал уже есть простой пример с несколькими датчиками и прикрутить его в WebBluetooth для баловства в простую страницу для эксплорера... А тут питон и всякие MQTT - ненужный наворот и куча overhead.
 

kharlashkin

New member
В новых BLE ещё добавили функцию определение расстояния, что в таком деле как определение местной (стартовой) позиции может пригодится.
Вообще проблема не в датчиках, а в функциональности и нужды в таком устройстве. Реализация доступна уже более пятилетки в любом виде, но в бытовом сегменте не нашло спроса и места.
Я вот чё суда к вам залез - думал уже есть простой пример с несколькими датчиками и прикрутить его в WebBluetooth для баловства в простую страницу для эксплорера... А тут питон и всякие MQTT - ненужный наворот и куча overhead.
Реализация вышла дороговата - тыц и тыц (как пример), поэтому и не нашла спрос в быту. В сравнении с этими ценами Valve Index® Base Station за $149 штука уже не так дорого. Вот копия моего старого кода, без сложной математики на контроллере https://github.com/sslobodyan/MPU-9250DMP можете переделать под себя как угодно.
 

pvvx

Активный участник сообщества
Готовые платки под это дело от Arduino.
Там все примеры есть.
Есть аналогичные платки и от Adafruit.
Реализация вышла дороговата - тыц и тыц (как пример), поэтому и не нашла спрос в быту. В сравнении с этими ценами Valve Index® Base Station за $149 штука уже не так дорого. Вот копия моего старого кода, без сложной математики на контроллере https://github.com/sslobodyan/MPU-9250DMP можете переделать под себя как угодно.
Смарт-часы с нужным датчиком, экраном и акб стоят на али 350 руб.

Как пример
Может и дешевле есть...
 

pvvx

Активный участник сообщества
Мне 15 датчиков с аккумуляторами (Wemos D1 mini + Battery shield + Proto shield + GY 9250) обошлись примерно в $100. Правда паял два дня все до кучи ;)
Ну и как - какой из бытовых роутеров выдерживает 15 ESP ? :)
Эта тема интереснее, чем всё остальное. Т.е. о том как включить более нескольких десятков датчиков в быту в одну сеть...
Для этого есть... Опять BLE, т.е. разновидность - Mesh и Zigbee.
 

kharlashkin

New member
Ну и как - какой из бытовых роутеров выдерживает 15 ESP ?
Вопрос в одновременной передаче, а не одновременном подключении, именно поэтому я добавлял проверку на изменение кватерниона и только лишь когда изменения есть - отправлять данные.
Мой домашний - Xiaomi Mini Wifi Router на нем тоже попробую, есть так же где-то в кладовке TP-LINK TL-WR741ND его очередь тоже будет. Именно поэтому все тесты делаю пока на Motorola, потому как по логике, эта ТД лучше должна быть.
Кстати мое первоначальное желание было пробовать nrf24L01+. Для теста есть Arduino pro mini + nrf24L01+ и аккумуляторы с платами, правда всего в 4-х экземплярах.
 

pvvx

Активный участник сообщества
Надо как-то освоить энти Zigbee и Mesh. Определиться с их граничными режимами стабильности работы в куче... Это как-бы следующий этап - времени на всё не хватает.
Сомневаюсь, так как отдельный MPU9250 стоит около $3 - потому что с магнитометром. Там скорее всего более дешевый чип MPU6500 который будет "плыть" по оси Z.
Там вообще тапотун - датчик шагов. У него совсем другой алго и уже всё адаптировано в самом железе датчика.
А чипы MPU уже безбожно устарели - жрут много, а толку мало.
 
Сверху Снизу