#c# #bluetooth-lowenergy
#c# #bluetooth -низкое энергопотребление
Вопрос:
Я хотел бы получить несколько советов о том, как начать реализацию указанной ниже идеи:
У меня есть 3 маяка BLE (Bluetooth с низким энергопотреблением). Я хотел бы создать приложение в Windows, используя Visual Studio.
На данный момент я использую плату микроконтроллера ESP32, которая получает информацию, передаваемую маяками BLE. Эта информация включает в себя RSSI, уровни температуры и влажности. Затем вся эта информация отправляется на мой рабочий стол (под управлением Windows 10) по последовательной связи.
Теперь мои знания о том, как действовать дальше, резко терпят неудачу.
Я знаю, что вы можете использовать RSSI для вычисления расстояния, но это ненадежно. Причина этого заключается в том, что перед маяком находится металлический предмет. Это приведет к резкому падению RSSI. Следовательно, для ПК маяк кажется еще большим, однако на самом деле он не перемещен.
Я слышал об использовании AOA (угол прибытия) или AOD (угол вылета), но я не уверен, как это реализовать в Visual Studio или даже если это правильно.
В принципе, я хочу графически показать положение маяка относительно моего ПК / сканера. Сканер (ESP32) расположен очень близко к моему компьютеру.
Может кто-нибудь предложить какие-либо рекомендации о том, как воплотить эту идею в реальность?
Ответ №1:
Вы правы, RSSI не идеален для такого рода задач. Мало того, что значение колеблется, вам также необходимо самостоятельно перевести RSSI (уровень сигнала) на правильное расстояние.
Новая функция определения направления Bluetooth (AOA и AOD) действительно была бы лучшим способом определения положения вашего устройства относительно маяков, но ESP32 не предлагает этих функций, поскольку они представлены в спецификации BLE 5.1.
Для AOA и AOD требуется специальное оборудование с двумя антеннами. Одним из SoC, который поддерживает определение направления по Bluetooth, является nRF5340 от Nordic semiconductor.
Другим подходом может быть использование скользящего среднего для полученного значения RSSI, чтобы сгладить колебания и использовать это значение в качестве расстояния. Если вы знаете положение маяков вокруг вас, положение вашего принимающего устройства можно рассчитать с использованием расстояния. Этот подход работает только в том случае, если маяки неподвижны, а ваш компьютер перемещается, а не наоборот.