Чтобы улучшить этот ответ и охватить все детали, возможно, нужна статья или что-то подобное. Я постараюсь быть кратким и сосредоточиться на iOS, поскольку у Arduino практически нет ограничений на периферийные устройства Bluetooth, которые широко доступны через экраны Arduino BLE, например RedBearLab BLE Shild
Bluetooth v2.0 + EDR, v2.1 + EDR, v3.0 + HS ....
Спецификация стека Bluetooth до версии 4.0 не содержит низкоэнергетическую часть. Несмотря на то, что протокол прост в использовании, особенно если он упрощен в отношении SPP (Serial Port Profile), он недоступен на устройствах Apple iOS без программы MFi . На рынке есть немного Bluetooth-модулей, таких как Pan1321 от Panasonic, который включает в себя сопроцессор Apple для аутентификации и который можно использовать с iOS. Грустная часть истории заключается в том, что если вы посмотрите на эту официальную страницу iOS: поддерживаемых профилей Bluetooth SPP там нет, так что вы можете выбрать один из перечисленных профилей (что вы, вероятно, будете делать, если вы делаете аудио или HID устройство ).
Bluetooth с низким энергопотреблением (BLE)
Введен переход от спецификации Bluetooth v3.0 к v4.0. Новая часть спецификации имеет очень мало общего с предыдущей. По сути, вы можете посмотреть на это как Bluetooth v3.0 + BLE = v4.0 или Bluetooth Smart. BLE часть спецификации v4.0 - это то, что нас интересует.
CoreBluetooth
Помимо всех преимуществ BLE, таких как низкое энергопотребление, небольшой размер, низкая стоимость, наиболее важным было принятие на себя производителей мобильных устройств, включая Apple (MFi не требуется). BLE полностью поддерживается CoreBluetooth , и реализация на стороне iOS проста. Одна вещь, которую вы должны иметь в виду, это то, что BLE имеет низкую энергию, но также имеет низкую скорость. Хотя стандарт устанавливает минимальный интервал соединения в 7,5 мс, в документации по документам Apple указано, что рекомендация составляет 30 мс :-D Что я испытал при использовании множества разных чипов и устройств iOS, так это то, что вы сможете передавать 20 байт каждые 20-30 мс. Если требуется подтверждение, сделайте его двойным, например, 40-60 мс.
Пользовательские профили
Список стандартных профилей BLE доступен через Bluetooth Special Interest Group (SIG). Посмотрите на основе ГАТТ. К сожалению, если вы не сделаете пульсометр или устройство из списка, вы, вероятно, будете использовать обслуживание от батареи или подобное из списка профилей. К счастью, не сложно создать пользовательский профиль, который будет «заполнителем» для данных конкретного приложения, которые вы должны передать. Понимание ролей, GATT (сервисов и характеристик), UUID и других является обязательным, но, на мой взгляд, кривая обучения или стек BLE не сложна.
Когда известен профиль BLE, работающий на встроенном устройстве, подключение и связь по BLE очень просты с использованием библиотеки CoreBluetooth.
IBeacon
Apple сделала небольшой взлом, используя стандарт BLE в качестве «носителя» для iBeacon. Они используют данные производителя в рекламном пакете BLE, чтобы «заявить», что какое-то устройство является iBeacon. Что вполне нормально, я бы сказал. Следует помнить, что BLE - это не iBeacon, но все iBeacon - это BLE (устройство с жестко закодированными данными производителя, отображающими RSSI, UUID, мажорный и младший в широковещательном режиме BLE). Кроме того, iBeacon обрабатывается CoreLocation , а не CoreBluetooth . Это проясняет, каково было намерение Apple с iBeacon.
Заключение
Если вы хотите интегрировать iOS-устройство с Arduino или другим встроенным устройством, BLE - это то, что вам нужно учитывать. Существуют дополнительные причины, по которым вы хотите узнать больше о BLE, если вы посмотрите на рекламу IoT и доступные варианты RF. BLE здесь, чтобы остаться с версией v4.1 и будущими спецификациями v4.2, которые улучшат пропускную способность, обеспечат поддержку IPv6, улучшат безопасность и т. Д.
В конце, не так коротко, но я надеюсь, что это поможет.