Как мне связать и / или связать с BLE на iOS, используя код Swift и HM-10, чтобы отправленные данные были зашифрованы? - PullRequest
0 голосов
/ 20 декабря 2018

Справочная информация

Я построил простую схему, которая включает в себя Arduino Nano и последовательный модуль BLE HM-10.
Вы можете увидеть эту схему в следующей электротехникеВопрос SE: https://electronics.stackexchange.com/questions/412525/when-i-write-data-to-a-ble-characteristic-ffe1-to-send-data-over-bluetooth-is

У меня также есть проект Xcode, написанный на Swift, который успешно отправляет байты в характеристику FFE1.Все это прекрасно работает, и я могу видеть данные, поступающие с моего iPad через монитор Arduino Serial.

Однако, исходя из проведенного мной исследования (см. Предыдущую ссылку), я считаю, что я определил, что данные, которые я отправляю с помощью CoreBluetooth writeValue () не зашифрован.

Что я пытаюсь сделать

Теперь, когда я успешно отправил и получил байты, яхотел бы, чтобы мой iPad связывался с устройством BLE (HM-10), чтобы я мог гарантировать, что отправляемые данные шифруются через предоставленный канал BLE.

То, что я пытался

  • Прочитайте основные документы Bluetooth в Apple, но я не могу найти способ сопряжения или связи с устройством, чтобы данные, передаваемые по каналу, затем были зашифрованы.
  • Чтениекаждый такой вопрос, который я мог найти, но не могу найти ни одного кода iOS, который показывает мне, как связывать и отправлять данные надежно.
  • Я нашел некоторую очень базовую информацию, которую мне нужно попробовать, чтобы привязать устройствазаписать в характеристику устройства BLEу которого есть свойство CBCharacteristicPropertyNotifyEncryptionRequired, но документация об этом в Apple является нелепой однострочной .
  • . Я написал код, повторяющий характеристики HM-10, и прочитал свойстваи я, кажется, не нашел эту собственность.Но документы на HM-10 , похоже, указывают на то, что он поддерживает аутентификацию и шифрование, и я знаю, что это часть BLE.

Вопросы

  1. Можете ли вы указать мне код Swift, который дает мне пример того, что я буду делать для связи и отправки зашифрованных данных?Есть ли какое-либо свойство, которое мне нужно установить на CBPeriperhal, или какое-то значение, которое мне нужно отправить в writeValue()?
  2. Я неправильно понимаю?HM-10 не поддерживает отправку зашифрованных данных?

1 Ответ

0 голосов
/ 20 декабря 2018

После публикации моего вопроса я снова искал сопряжение / соединение.

Я был перенаправлен по ссылке на таблицу данных для HM-10 , которую я прочитал много раз.Однако на этот раз я искал слово «облигация» внутри документа.

Когда я это сделал, я прочитал следующую таблицу в документе:

HM-10 AT+TYPE bond

Это заставило меня задуматься и угадать.Я полагаю, что проблема в том, что HM-10 отправляется как ТИП 0, так что пользователи-любители могут настроить его без сопряжения.
Это весьма отличается от модулей HC-05 (классический Bluetooth), которые я использовалМного раз в других проектах, которые требуют сопряжения.

Возможное решение

Я считаю, что все, что мне нужно сделать, это установить AT_TYPE в 2, а затем мой iOS (iPad)Затем устройство разрешит мне выполнить сопряжение с использованием ПИН-кода.

Я предполагаю, что после этого каждый пользователь будет вынужден использовать ПИН-код для сопряжения своего устройства, и тогда данные будут доступны только для записи (с использованием writeValue).через защищенный канал BLE.

Дополнительная информация

Это также интересно для меня, потому что когда я использую стандартное сканирование iOS по Bluetooth, ОС никогда не видит HM-10-- имя не отображается в разделе Bluetooth.Я предполагаю, что это из-за того, что HM-10 не передает, что он может соединиться через пин-код, а iOS игнорирует его.
Это всегда было мне интересно, потому что, хотя iOS не видела HM-10, я мог подключиться кэто и отправить данные к нему через мой код Swift.Вау, все это может наконец-то сойтись.

Я протестирую это сегодня вечером и отправлю обратно, чтобы подтвердить, решает ли настройка TYPE это.

Еще одна вещь

Ни одно из обширного прочтения, которое я читал на HM-10 ( см. Фантастические, подробные статьи Мартина Карри ), никогда не упоминало эту опцию, и я нигде не видел ее обсуждаемой.

Я также вижу, что на некоторых сайтах указывается, что AT+TYPE предназначен для установки устройства Master / Slave (Central / Periperhal) , которое я не считаю правильной документацией для этого элемента.,Все это дополнительно затрудняло определение того, как заставить это работать.

Примечание об обновлении

Я читал еще одну таблицу данных для HM-10 и это показывает, что настройка по умолчанию для AT + TYPE фактически равна 0 (PIN-код не требуется), как показано в нижней части диаграммы.Не уверен, почему в другой таблице данных не было этой информации, поскольку она выглядит как тот же график.

set module bond mode

Обновление 2 - это ответ.Я включил HM-10 и запустил код Arduino, который позволяет мне отправлять AT-команды и отправлял AT+TYPE3<ENTER>, а затем отправлял AT + RESET, чтобы HM-10 перезапустился сам.

После этогоВам больше ничего не нужно делать.Я использовал свое приложение iOS, запущенное на iPad, для отправки данных по признаку FFE1.Когда я попытался это сделать, iOS открыла диалоговое окно «BLE-пара / связь» по умолчанию и спросила или PIN-код (по умолчанию 000000 на этих компонентах HM-10).

Примечание Одна вещь, которую я обнаружил, это то, что один из моих HM-10 неисправен.Это позволяет записывать данные, даже если я отменяю соединение или не могу выполнить соединение (отправив неверный PIN-код).Компонент этого производителя больше не доступен, поэтому я предполагаю, что это ошибка.Другой HM-10 у меня работает именно так, как ожидалось.Если вы не создаете пару или не можете выполнить сопряжение, приложение не может записать данные.Я отмечу это как ответ, как только смогу.

...