Под внешним умным домом понимается, что это может быть какой-то сервер, где крутится умный дом и в нем также стоит MQTT брокер. Для того, чтобы внешний умный дом видел девайсы со шлюза, нужно либо настроить MQTT мост, либо на шлюзе указываем MQTT брокер умного дома.
- Прямое подключение к MQTT брокеру на шлюзе — на шлюзе стоит локальный MQTT брокер, подключаемся к шлюзу из внешнего сервера или, если на шлюзе стоит платформа умного дома, то подключаемся к локальному MQTT брокеру
- Прямое подключение к внешнему MQTT брокеру — когда на шлюзе не стоит MQTT брокер и в конфигурационных настройках служб, такие как: zigbee2mqtt, ble2mqtt, lumimqtt указывается IP адрес, порт, логин и пароль от внешнего MQTT брокера
- MQTT мост — когда на шлюзе стоит MQTT брокер и установленные службы на шлюзе, такие как: zigbee2mqtt, ble2mqtt, lumimqtt, смотрят на локальный MQTT брокер, а сам локальный MQTT брокер подключается к внешнему MQTT брокера
Прямое подключение к MQTT брокеру на шлюзе
Если будем использовать этот вариант, то править конфиги внутренних служб требуется только в том случае, если включили авторизацию на локальном MQTT брокере. По умолчанию доступ к локальному MQTT брокеру для внешних источников закрыт. Чтобы разрешить доступ извне, необходимо добавить строчки
Home Assistant 2022.8. Интеграция Bluetooth. Подключение BLE устройств Xiaomi LYWSD03MMC LYWSD02
Если доступ без авторизации
listener 1883 allow_anonymous true
Если доступ с авторизацией
Важно! В файле passwordfile должен быть указан логин и пароль. В противном случае доступ будет закрыт.
listener 1883 password_file /etc/mosquitto/passwordfile
- Если подключаемся к MQTT брокеру с внешнего источника, то указываем IP адрес шлюза, порт и логинпароль(если включена авторизация)
- Если подключаемся к MQTT брокеру локально, например на шлюзе стоит Home Assistant и установив клиент MQTT, то указываем localhost и указываем логинпароль(если включена авторизация)
Прямое подключение к внешнему MQTT брокеру
Для прямого подключения к внешнему MQTT брокеру, необходимо в конфигурации служб, таких, как zigbee2mqtt, lumimqtt, ble2mqtt указать IP и порт от внешнего MQTT брокера, а также, если у вас на внешнем MQTT брокере включена авторизация, то надо указать логин и пароль
Zigbee2mqtt
Для примера рассмотрим настройки в zigbee2mqtt. Настроить можно либо через веб интерфейс, либо в самом configuration.yaml , который находится по пути /etc/zigbee2mqtt/configuration.yaml .
1) Вариант настройки авторизации в веб интерфейсе zigbee2mqtt.
2) Вариант настройки в configuration.yaml , который находится по пути /etc/zigbee2mqtt/configuration.yaml .
Для редактирования файла configuration.yaml можете использовать nano в консоли:
nano /etc/zigbee2mqtt/configuration.yaml
Нужно настроить только эти строки, чтобы ваш zigbee2mqtt подключился к внешнему MQTT брокеру. Про настройки и их описание, читаем здесь.
server: mqtt://192.168.1.50:1883 user: укажите логин password: укажите пароль
Полный конфиг configuration.yaml
homeassistant: true permit_join: false mqtt: base_topic: zigbee2mqtt server: mqtt://localhost client_id: GateLivinRoom keepalive: 60 reject_unauthorized: false version: 4 user: укажите логин password: укажите пароль serial: port: /dev/ttymxc1 adapter: zigate advanced: baudrate: 115200 log_level: info log_directory: /tmp/log/zigbee2mqtt/%TIMESTAMP% log_file: log.txt log_rotation: true log_output: — file homeassistant_legacy_entity_attributes: false legacy_api: false ikea_ota_use_test_url: false log_syslog: app_name: Zigbee2MQTT eol: /n host: localhost localhost: localhost path: /dev/log pid: process.pid port: 123 protocol: tcp4 type: ‘5424’ channel: 11 devices: devices.yaml groups: groups.yaml frontend: port: 8090 experimental: new_api: true device_options: legacy: false availability: true ota: disable_automatic_update_check: true
Lumimqtt
Важно! При первом включении подсветки шлюза, подсветка может не включиться. Выключите и снова включите подсветку и если не загорится, то выберите другой цвет, тогда подсветка включится
В файлике lumimqtt также указываем IP адрес и порт от внешнего MQTT брокера, и если у вас на внешнем MQTT брокере включена авторизация, то надо указать логин и пароль
Стандартная конфигурация lumimqtt
< «mqtt_host»: «localhost», «mqtt_port»: 1883, «mqtt_user»: «», «mqtt_password»: «», «topic_root»: «lumi/», «auto_discovery»: true, «sensor_retain»: false, «sensor_threshold»: 50, «sensor_debounce_period»: 60, «light_transition_period»: 1.0 >
Правим только эти строки. Для редактирования файла lumimqtt.json можете использовать nano в консоли:
nano /etc/lumimqtt.json
«mqtt_host»: «указываем IP адрес внешнего MQTT брокера, например 192.168.1.50», «mqtt_port»: 1883, «mqtt_user»: «указываем логин, если включена авторизация», «mqtt_password»: «указываем пароль, если включена авторизация»,
Настройка MQTT моста
Для работы моста необходимо установить пакет mosquitto-nossl . Данный пакет mosquitto-nossl позволяет настроить mqtt мост и авторизацию. У пакета mosquitto-ssl не работает mqtt мост, только авторизация и только как mqtt брокер.
Важно! Если у вас на шлюзе стоят службы zigbee2mqtt, lumimqtt, ble2mqtt и другие, которые работают через MQTT брокер, и вы включили авторизацию, то необходимо в настройках этих службах указать логин и пароль для подключения к локальному MQTT брокеру. По умолчанию у них не указан логин и пароль. Если этого не сделать при включенной авторизации на MQTT брокере, то службы zigbee2mqtt, lumimqtt, ble2mqtt и другие не смогут подключиться к MQTT брокеру и не смогут работать.
Как установить пакет mosquitto-nossl , читаем: Как установить и настроить mosquitto?
Ниже пример рабочего конфига для работы MQTT моста + включена авторизация. Это не эталонная конфигурация и вы можете настроить по своему, ибо в mosquitto.conf есть подробное описание про настройку. Добавлять в mosquitto.conf . Для удобства добавьте в самый вверх. Файлик mosquitto.conf находится по адресу /etc/mosquitto/mosquitto.conf
Важно! Если в конфиге не указать топики, например topic homeassistant/# out , то топиков не будет, кроме служебных топиков $SYS . Поэтому указываете какие топики должны быть добавлены. Сами топики можете посмотреть через MQTT Explorer до того, как включите авторизацию. После включения авторизации впишите эти топики в конфигурационный файлик > mosquitto.conf
Примеры топиков c опцией in/out/both/ . Все опции для одного топика указывать нельзя, что то одно: вход/выход/обе стороны/все топики
topic lumi/# #Все топики topic lumi/# in #Топики на вход topic lumi/# out #Топики только на выход topic lumi/# both #Топики в обе стороны
Важно! Копируйте только строки параметров, комментарии не копируйте. Если вы скопируете все с комментариями, то у вас MQTT брокер не запустится. Также проверяйте, чтобы не было пробелов после конца строк параметра.
Ниже. для удобства я выложил конфиг без комментов.
connection Home Assistant # Куда подключаемся. Указываем вместо Home Assistant любое имя address 192.168.1.108:1883 # Куда подключаемся. Указываем IP и порт своего внешнего сервера listener 1883 # Вкл. просл порта 1883 для шлюза, чтобы мы могли подкл к шлюзу через MQTT Exploer password_file /etc/mosquitto/passwordfile # Включаем авторизацию. В файлике passwordfile указываем логин и пароль allow_anonymous false # Запрещаем доступ для анонимного подключения remote_clientid Gateway # Имя подключаемого клиента к MQTT брокеру. В логах MQTT брокеру будет имя подключаемого клиента remote_username mqtt # Указываем логин от MQTT брокеру к которому мы подключаемся remote_password mqtt # Указываем пароль от MQTT брокеру к которому мы подключаемся bridge_attempt_unsubscribe true # Отказ от подписки после удаления темы cleansession true # Подписки и сообщения удаляются start_type automatic # MQTT мост запускается автоматически try_private true # MQTT брокеру будет видеть, что это не просто клиент, а MQTT мост topic homeassistant/# out # Указываем топик homeassistant на выход, чтобы не перегружать шлюз. topic zigbee2mqtt/# both # Указываем топик zigbee2mqtt на обе стороны, тогда HomeAssistant увидит устройства со шлюза topic lumi/# both # Указываем топик topic lumi на обе стороны, тогда HomeAssistant увидит устройства со шлюза
Для удобства я вывел отдельные строки без комментариев, можете копировать и вставлять сразу в mosquitto.conf находящийся по пути /etc/mosquitto/mosquitto.conf
Вариант 1. Настройка моста с включенной авторизацией для подключения к MQTT на шлюзе
connection Home Assistant address 192.168.1.108:1883 listener 1883 password_file /etc/mosquitto/passwordfile allow_anonymous false remote_clientid Gateway remote_username mqtt remote_password mqtt bridge_attempt_unsubscribe true cleansession true start_type automatic try_private true topic homeassistant/# out topic zigbee2mqtt/# both topic lumi/# both
Вариант 2. Настройка моста с выключенной авторизацией для подключения к MQTT на шлюзе
connection Home Assistant address 192.168.1.108:1883 listener 1883 allow_anonymous true remote_clientid Gateway remote_username mqtt remote_password mqtt bridge_attempt_unsubscribe true cleansession true start_type automatic try_private true topic homeassistant/# out topic zigbee2mqtt/# both topic lumi/# both
Как включить авторизацию?
Чтобы включить авторизацию в mosquitto, необходимо добавить следующие строки в конфигурационный файлик mosquitto.conf
Важно! Если у вас, при включенной авторизации и включенным MQTT мостом возникли проблемы при подключении к внешнему MQTT брокеру, например в логах аддона MQTT Home Assistant фиксируются цикличные логи connect и disconnect, то выключите авторизацию и предоставьте доступ для всех allow_anonymous true и закомментируйте #password_file /etc/mosquitto/passwordfile .
Закрываем доступ для всех, доступ только с пароля
allow_anonymous false
Включаем авторизацию. Указываем путь к файлику passwordfile , в котором хранятся логин и пароль
password_file /etc/mosquitto/passwordfile
Создаем файлик passwordfile
touch /etc/mosquitto/passwordfile
В файлик passwordfile добавить логин и пароль в таком виде логин:пароль
mqtt:123456
Команды для управления службой mosquitto
/etc/init.d/mosquitto start
/etc/init.d/mosquitto stop
/etc/init.d/mosquitto restart
Посмотреть статус работы mosquitto
/etc/init.d/mosquitto status
Просмотреть весь список команд mosquitto
/etc/init.d/mosquitto
Источники
- mosquitto configuration
- mosquitto authentication methods
Источник: openlumi.github.io
Wi-Fi-розетка Xiaomi Mijia 2 с Bluetooth-шлюзом: обзор, интеграция в Home Assistant через Xiaomi MIot
В этом видео поговорим о накладной розетке Xiaomi Mijia 2 из экосистемы умного дома mihome. Розетка работает по wi-fi, а значит не требует никаких дополнительных устройств — она подключается сразу к роутеру. Кроме включения и выключения, розетка ведет учет расхода энергопотребления, а также выполняет функцию Bluetooth шлюза — то есть управлять другими датчикам экосистемы, использующими этот интерфейс.
Купить на Aliexpress — цена на момент публикации $ 10.57
Параметры
- Модель: ZNCZ07CM
- Максимальная мощность: 2500 Ватт, ток не более 10 А
- Интерфейсы: Wi-Fi lEEE 802,11 b/g/n 2,4 ГГц, Bluetooth 4,2
- Приложение: Mihome
- Операционная система: Android 4,4 или iOS 9,0 и выше
- Вес: 73 г
- Размер: 64,8 × 44,2 × 52,0 мм
Поставка
Упаковка традиционная для устройств экосистемы Mijia, предназначенных для китайского рынка — о чем говорят надписи иероглифами на коробке. Параметры, о которых я уже сказал — находятся на задней стороне коробки. В самой коробке кроме розетки найдется только небольшой буклет инструкции на китайском.
Внешний вид
Кто хоть раз видел одну из китайских моделей розеток Xiaomi — уже никогда их не перепутает. Хоть размер в зависимости от модели может быть разным, в целом — это один и тот же параллелепипед с закругленными краями и универсальной розеткой которая позволяет без переходников подключать европейские круглые, американские плоские и тройные вилки.
Но вот вилка у таких устройств — как раз тройная, называется Type I, распространена в Китае, Австралии и Новой Зеландии. Тут узкие контакты, до 10 А, существует более широкая, 16 А версия.
На условно нижнем торце находится единственная многофункциональная кнопка — она может включать и выключать, запускать таймер обратного отсчета и сбрасывать в заводские. Возле нее, на фронтальной части находится светодиод активности.
Подключение
Для подключения таких вилок удобно использовать удлинители с универсальными розетками, например Xiaomi — с тремя или пятью разъемами.
В таком случае устройство присоединяется напрямую без использования каких-либо переходников.
Что касается переходников — то из всех что я пробовал, а их было немало, самые качественные — это универсальные адаптеры Auction
Сделаны качественно, держатся очень очень хорошо и практически не увеличивают габариты устройства — всего на пару миллиметров толще, чем если бы эта вилка была с завода.
Вот так выглядит в глубокой евророзетке формата Schuko, от Legrand. Переходники рассчитаны на ток в 16 А, так что с запасом.
Mihome
После включения в сеть, розетка переходит в режим подключения, в нем она создает свою точку доступа, которую и обнаруживает приложение mihome. По ее названию она определяет и показывает что это за устройство, остается лишь тапнуть по нему и указать к какой сети нужно подключаться.
После передачи данных о сети к устройству, остается выбрать локацию и имя, а на последнем шаге — при необходимости дать доступ к устройству или всему дому на другой mi аккаунт.
Первый запуск плагина попросит согласится с условиями пользовательского соглашения. Основную часть окна занимает изображение розетки, если питание на нее включено — фон плагина синий, выключена — темный.
В нижней части окна, которое кстати полностью не помещается на один экран, размещены данные о энергомониторинге, кнопка управления розеткой, планировщик и таймер обратного отсчета. Причем на главном окне — данные о расходе за день и месяц, мгновенное значение можно увидеть, только зайдя в детали. Там же можно выбрать временной интервал для просмотра графика.
Планировщик позволит автоматизировать включение и выключение розетки в заданное время или интервал, причем эта программа будет работать автономно на уровне самой розетки. Задания могут быть как разовыми так и повторяющимися.
Например — можно включать розетку в 7 утра по будням, в 10 утра по выходным и выключать в 10 вечера во все дни. Подойдет для нагрузки, которую нужно выключать на ночь.
Функция обратного отсчета переключит состояние розетки на противоположное по истечении заданного промежутка времени.
![]() |
![]() |
![]() |
![]() |
В меню настроек — попасть в него можно тапнув по кнопке с тремя точками справа сверху, дает доступ к настройкам и нескольким интересным опциям. Например тут есть режим циклического включения и выключения реле розетки в течении заданного интервала времени. Еще можно настроить фиксированый таймер обратного отсчета который можно запускать по двойному нажатию на кнопку розетки.
Здесь можно изменить внешний вид розетки на главном экране плагина, в зависимости от того какая нагрузка в него подключена. Есть опция проверки и обновления прошивки, последняя на дату обзора — 2.1.0_0025
В меню дополнительных настроек есть меню BLE шлюза. В нем отобразятся все Bluetooth устройства вашего умного дома mihome, которые попадут в зону покрытия розетки. Специально их подключать не надо — это происходит автоматически, причем одни и те-же датчики могут быть одновременно подключены даже к десятку BLE шлюзов.
Автоматизации
В автоматизациях розетка не может быть условием или триггером, только действием. К примеру в экосистеме Tuya — все побывавшие у меня на обзорах розетки, могли выполнять эту функцию. В mihome — это встречается значительно реже. Как действие — розетка может включаться, выключаться и переключать состояние. По энергомониторингу тут ничего сделать не получится.
Зато наличие BLE шлюза, позволит задействовать датчики с этим интерфейсом, даже если у вас больше нет никаких других устройств. Например в сценариях по управлению климатом — включая или выключая увлажнители и обогреватели, или, получая данные о освещенности от сенсора растений — включать фитолампу.
Home Assistant
Для тех кто хочет знать больше о системе управления умным домом Home Assistant — цикл уроков, от установки и настройки до практических кейсов на моем youtube канале
В штатной интеграции Home Assistant для wi-fi розеток и удлинителей Xiaomi, на дату обзора — эта модель не поддерживается.
Но у нас есть замечательный программный хаб — HACS, о его установке я рассказывал в уроке 9.2 по Home Assistant
Я попробовал несколько разных интеграций и обнаружил поддержку этой розетки в двух. Но только в одной — с возможностью получать данные о расходе электроэнергии.
Она называется Xiaomi MIot и сразу ошарашивает описанием на китайском языке. По желанию можно перейти на английскую версию или воспользоваться Google переводчиком.
Устанавливаем интеграцию, после чего необходимо будет перезагрузить Home Assistant
Идем в меню настройки — сервер и нажимаем на опцию — Перезапустить
После перезагрузки — интеграция готова к работе.
Xiaomi MIot
Для работы с ней идем в раздел настройки и выбираем опцию интеграции. Тут нужно нажать на кнопку справа внизу — добавить
Ищем в списке штатных интеграций по названию — MIot Xiaomi, кликаем на нее.
После подготовки к запуску — появится окно, и опять с иероглифами. Что поделать — это родной язык разработчика.
Нажимаем на выпадающее меню — тут есть две опции — покороче и подлиннее. Длинная — это подключение к облаку под вашим аккаунтов, короткая — прямое подключение устройство по IP и токену. Удобнее получить данные с облака, поэтому выбираем длинную надпись, нажимаем подтвердить.
В следующем окне откроется диалог для авторизации в аккаунте mihome. В первой строке пишем емейл или номер аккаунта, без звездочек разумеется, во второй — пароль. Это те же логин и пароль которые используются для входа в mihome
Если все сделано правильно — интеграция подключается к облаку и создает конфигурацию.
Теперь на странице интеграций — есть новая, Xiaomi MIot подключенная к вашему аккаунту mihome.
Для подключения розетки — повторяем действия — нажимаем на кнопку справа внизу и ищем интеграцию в списке. У нас открывается тоже самое окно с короткой надписью иероглифами
Но опций в выпадающем списке теперь намного больше — сюда затянуться все ваши устройства подключенные в mihome (именно поэтому и проводилось предыдущее действия — подключение к облаку)
Ищем и выбираем нашу розетку. На досуге можно поиграться с другими устройствами, если вы не смогли подключить их другими методами.
Следующее окно отобразить модель розетки, МАС адрес и версию прошивки. Остальные данные затянутся автоматически — типы сущностей — свич и сенсоры и маппинг.
После этого создается новая конфигурация уже для розетки. При желании можно выбрать и помещение для нового устройства.
Теперь в окне этой интеграции отображаются две конфигурации — для аккаунта и розетки. При желании можете добавить еще — для других устройств.
Нажав на строку с названием розетки, в окне отобразятся параметры этой конфигурации — тут есть одно устройство с пятью объектами.
Зайдя в устройство видим что тут есть свич — который действительно включает и выключает реле розетки, работает он по локальной сети поэтому переключение обрабатывается мгновенно. Кроме него еще четыре сенсора.
Сенсор текущего значение тока в амперах, текущая мощность — в ваттах.
Накопительное значение потраченной электроэнергии в КВт / ч и напряжение в сети в вольтах
Правда по факту — реагирует на внешние раздражители только второй сенсор — текущего энергопотребления, остальные же — никак не изменяются, какую бы нагрузку я не подключал — минимальную или в 758 Ватт
Нагрузки превышающие 1 и 2 КВт / ч тоже не производят впечатления на остальные сенсоры. Хотя я считаю что тут ключевыми пунктами являются — управление реле и как раз текущее значение мощности.
Тестирование
Для нагрузочных тестов я использую свой, уже многократно проверенные энергомонитор. Кстати сама по себе розетка потребляет 1,3 Ватта энергии
Хотя по логике — чуть большее значение должен показывать энергомонитор, так как в него воткнута и сама розетка, по факту все наоборот. На мощности в 40 Ватт, умная розетка показывает немного больше, это с учетом что энергомонитор учитывает и собственное потребление розетки.
Чем выше — тем больше начинает врать розетка, на мощности почти в КВт, расхождение уже более 50 Ватт
А в 2 КВт — уже более 100 Ватт. Я подсчитал, что расхождение составляет почти ровно 6%, если увеличить на них текущие значение энергомонитора — выходим на цифры показываемые розеткой.
Видео версия обзора
Вывод
С учетом своей небольшой цены — получилось довольно интересное устройство 3 в 1 — розетка, энергомонитор и BLE шлюз. Особенно если вспомнить, что просто BLE шлюз в виде отдельного устройства стоит примерно также. За счет использования wi-fi — розетка работает напрямую с роутером, не требуя шлюза для себя, но при этом являясь им для других Bluetooth устройств и позволяя подключаться к ним удаленно и участвовать в сценариях.
К минусам отнесу — завышение показаний энергомониторинга, кстати в Home Assistant это можно исправить сделав шаблонный сенсор с поправочным коэффициентом, и нестандартную для наших стран вилку.
Источник: www.ixbt.com
Юзай новый блютус, BLE-пять! Изучаем и кодим под новый скоростной протокол на примере Arduino
С ростом количества сетевых беспроводных устройств (охранные и пожарные сигнализации, телемедицина, мониторинг окружающей среды и множество других) появляются новые и совершенствуются старые стандарты и протоколы беспроводной связи. Разные компании и DIY-разработчики используют для своих устройств и сетей разные стандарты передачи данных, например ZigBee, Z-Wave, Bluetooth 4, Wi-Fi, 6LoWPAN, Thread, ANT или собственные проприетарные протоколы. Не так давно вышла новая спецификация стандарта радиосвязи для обмена данными по воздуху Bluetooth 5. В этой статье я на примере программирования новейшего микроконтроллера покажу преимущества нового стандарта.
На правах любящего логику «программиста с паяльником» начну статью с плана.
- Обзор стандарта. Преимущества пятой версии в сравнении с четвертой.
- Выбор железа. Приемник, передатчик.
- Описание отладочной платы и микроконтроллера. В этой части я расскажу о параметрах выбранного микроконтроллера и отладочной платы.
- Начало работы с SDK (software development kit) под выбранный микроконтроллер. Здесь описывается, как начать разрабатывать простые радиоприложения под Bluetooth Low Energy четвертой версии на нашей отладочной плате. Чтобы мы привыкли к новому набору инструментов и на конкретном примере научились общаться по Bluetooth c Android-телефоном.
- Тест нового стандарта Bluetooth 5. В этой части мы сделаем две прошивки для двух отладочных плат и рассмотрим новые режимы радиопередачи по Bluetooth 5.
Обзор стандарта Bluetooth 5
Что мы знаем о новом стандарте? Мы знаем, что он обратно совместим с четвертыми версиями спецификации BLE (Bluetooth Low Energy, Bluetooth Smart), то есть с версиями 4.0, 4.1, 4.2, и позволяет новым устройствам с Bluetooth 5 общаться со старыми девайсами (разумеется, новые фичи будут недоступны). В четвертых версиях BLE, в полном соответствии с названием, позволял проектировать устройства с гораздо меньшим потреблением, чем Bluetooth Classic. Но все остальное, кроме энергопотребления, было не очень — я про скорость, объем передаваемых данных в одном пакете и дальность. Все эти свойства улучшает Bluetooth 5.
Более подробно можно узнать на официальном сайте Bluetooth 5, а мы сейчас кратко остановимся на главных преимуществах пятой версии.
WWW
Все новые Bluetooth-спецификации публикуются здесь.
Высокая пропускная способность данных
Вместе с усовершенствованиями, введенными в Bluetooth 4.2, которые позволяли увеличить объем данных в одном пакете, и еще большим увеличением возможного объема данных в пакете в Bluetooth 5 (DLE) общая пропускная способность стала впятеро выше, чем исходный уровень Bluetooth 4.0!
Теперь чистая пропускная способность данных без учета накладных расходов, таких как адресация, может достигать 1,4 Мбит/c. Зачем нужна такая высокая скорость? Согласен, дурацкий вопрос, даже не знаю, зачем я его придумал. Пользователей-аудиофилов это порадует скоростью передачи качественной музыки, а для нас, гиков, открывает возможность гораздо быстрее обновлять прошивку устройства «по воздуху» (OTA-DFU). Всего же благодаря изменениям, внесенным в физический (PHY) слой для работы Bluetooth-радио, стали доступны четыре скорости:
- 2 Мбит/с;
- 1 Мбит/с;
- 500 Кбит/с;
- 125 Кбит/с.
Уверен, что с первыми двумя скоростями тебе уже все ясно, но вот вопрос: зачем при таком богатстве нужны две «нижние передачи»?
А дело в том, что при низких скоростях и связанной с ними LE закодированной обработке с использованием прямой коррекции ошибок (FEC) становится легче отказаться от повторной передачи данных в окружающем шуме. Короче говоря, чувствительность улучшается. И не надо при высоком уровне шума повторно запрашивать пакеты данных (маленький квадрокоптер может улететь дальше от пульта управления).
Увеличение пропускной способности вещания
Для снижения загрузки вещательного (advertisment, рекламного :)) канала и решения проблемы перегрузки каналов предлагаются вещательные расширения (они же «рекламные расширения»).
Расширение длины данных и новый PHY-уровень означают, что длина пакетов увеличивается с точки зрения фактических данных и времени, в течение которого они занимают канал. Поскольку существуют только три рекламных канала, эти каналы вскоре могут перегружаться вещательными пакетами с большими объемами данных при более низких скоростях передачи в эфире, таких как 125 Кбит/с.
Рекламные расширения смягчают эту потенциальную проблему.
Улучшенное сосуществование с улучшенным чередованием каналов
Bluetooth 5 также предоставил усовершенствованный алгоритм секвенирования каналов (CSA # 2) для улучшения псевдослучайного последовательного переключения каналов. CSA # 2 повысит производительность сосуществования разрешенных устройств при наличии вокруг Wi-Fi и других Bluetooth-устройств. Все SoCs серии nRF52 имеют возможность поддерживать CSA # 2.
BLE Mesh — пока только 4.0
Ячеистая топология — сетевая топология компьютерной сети, построенная на принципе ячеек, в которой радиостанции сети соединяются друг с другом и способны принимать на себя роль коммутатора для остальных участников. Эта организация сети достаточно сложна в настройке, однако при такой топологии достигается высокая отказоустойчивость. Как правило, узлы соединяются по принципу «каждый с каждым».
Таким образом, большое количество связей обеспечивает широкий выбор маршрута следования трафика внутри сети, а значит, обрыв одного соединения не нарушит работу сети в целом. Но BLE Mesh-сети рассчитаны (по крайней мере пока) на Bluetooth стандарта четвертых версий.
Выбор железа
На момент написания этой статьи пятую версию протокола поддерживали смартфоны Samsung и Sony и в свободной продаже было довольно мало BLE5-совместимых устройств.
Поэтому, чтобы оценить все возможности Bluetooth 5, я решил взять две отладочные платы с микроконтроллером nRF52840 компании Nordic Semiconductor. Почему именно их? Просто Nordic Semiconductor давно славится своими разработками именно в области Bluetooth-микросхем. Кроме того, их разработки традиционно отличаются вменяемой ценой и богатой документацией.
Чипы серии nRF52 и конкретно nRF52840 представляют собой систему на кристалле (SoC, System on a Chip) и, согласно документации, мультипротокольны — могут работать со стандартами Bluetooth 5, Bluetooth Low Energy, ANT, 802.15.4, 2.4GHz RF. Поддерживают они и NFC.
INFO
Все многопротокольные SoCs серии nRF52 поддерживают перечисленные фичи. Кроме того, nRF52840 имеет улучшенную выходную мощность, что вместе с новыми функциями Long Range (увеличение расстояния вещания) переполняет сердце разработчика безотчетной радостью.
NRF52840 — это усовершенствованный многопроцессорный SoC, идеально подходящий для сверхмалых беспроводных приложений. Имеет полную аппаратную поддержку Bluetooth 5 (включая увеличенную дальность вещания). Софт nRF52840 крутится на 32-битном процессоре ARM Cortex-M4F (64 МГц достаточно каждому (с) почти Билл Гейтс) с 1 Мбайт флеш-памяти и 256 Кбайт ОЗУ на чипе. Поддерживает инструкции DSP (цифровая обработка сигнала), вычисления с плавающей точкой (FPU).
Поддерживает несколько протоколов, включая Bluetooth с низким энергопотреблением, ANT (кто-нибудь использовал этот протокол? :)), 802.15.4 и 2.4GHz.
NRF52840 SoC использует управление питанием, чтобы максимизировать энергоэффективность приложений и время автономной работы. Запитать чип можно от напряжения постоянного тока в диапазоне от 1,7 до 5,5 В.
EasyDMA, как и все DMA (прямой доступ к памяти), позволяет разгрузить ЦП нашего микроконтроллера, например чтобы передавать потоки данных из АЦП в UART без участия ядра.
В SoC есть также мощный криптографический сопроцессор на кристалле (ARM Cryptocell-310), обеспечивающий криптографические функции и услуги для ускорения операций, экономии времени обработки процессором данных и сокращения потребления энергии. Он включает в себя настоящий генератор случайных чисел (TRNG) и поддерживает широкий спектр асимметричных, симметричных и хеширующих криптографических сервисов. NFC также поддерживается в чипе.
NRF52840 имеет встроенную поддержку USB 2.0 (full speed) и встроенное регулирование питания, позволяющее напрямую подключаться к USB-хостам для передачи данных.
Чип совместим с существующими сериями nRF52, nRF51 и nRF24 Series от Nordic Semiconductor.
SoftDevice
Стеки беспроводных протоколов от Nordic Semiconductor известны как SoftDevices. NRF52840 поддерживается S140 SoftDevice.
S140 SoftDevice — это поддерживающий Bluetooth 5 (пока alpha).
Отладочная плата
Отладочную плату на основе этого микроконтроллера я выбрал под стать чипу, вот она: nRF52840 Preview DK Development Kit for nRF52840. Между прочим, к ней прилагается NFC-антенка!
NRF52840 PDK — это универсальный комплект для разработки плат для Bluetooth 5, Bluetooth с низким энергопотреблением, ANT, 802.15.4 и 2.4GHz с использованием nRF52840 SoC. Этот комплект поддерживает разработку для SoC nRF52840.
Набор аппаратно совместим с Arduino Uno Revision 3, позволяет использовать сторонние шилды, совместимые с этим стандартом. Антенна NFC может быть подключена к набору, чтобы активировать функциональность тега NFC. Комплект обеспечивает доступ ко всем входам и выходам через интерфейсы и имеет четыре светодиода и четыре кнопки, которые программируются пользователем.
Он поддерживает стандартную цепочку инструментов разработки Nordic Software Development с использованием Keil, IAR и GCC. Опции программы / отладки в комплекте — это Segger J-Link OB.
Кроме всего прочего, на основе младшего чипа серии nRF52832 уже существуют платы для платформы Arduino, например Arduino Primo. Почему это хорошо? Да потому, что это избавляет тебя от кодинга на С.
Присоединяйся к сообществу «Xakep.ru»!
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Источник: xakep.ru