Используйте HM-10 для определения расстояния до маяка Estimot.

Я хотел бы, чтобы мой Arduino + HM-10 определял расстояние до маяка Estimote без использования телефонного соединения, но я не уверен, что это вообще возможно.

Могу ли я обнаружить маяк только с HM-10? Могу ли я оценить расстояние между моим Arduino+HM-10 и маяком? Я знаю, что Apple не опубликовала алгоритм, но я уже оценил расстояние до маяка с помощью приложения Cordova для Android.


person tatianag    schedule 29.08.2016    source источник


Ответы (2)


Да, это возможно.

Вы должны использовать RSSI и алгоритм, который вы должны выбрать в зависимости от того, чего вы хотите достичь.

Пожалуйста, найдите мой ответ здесь, в чтобы получить более подробную информацию, особенно об ограничениях технологии BLE для измерения расстояния.

person Darko Djuric    schedule 29.08.2016
comment
Спасибо за этот ответ! Возможно ли без телефона и без Wi-Fi? - person tatianag; 29.08.2016
comment
Конечно, это возможно. Вы должны прочитать значение BLE RSSI на вашем Arduino (спросите его у HM-10), а затем вы должны использовать это значение RSSI для оценки расстояния (либо с помощью простого, либо более сложного алгоритма). - person Darko Djuric; 29.08.2016

Да, это возможно и с прошивкой новее v538 (проверить версию можно командой "AT-VERS?") тоже несложно.

SoftwareSerial mySerial(8, 9); // RX, TX

//     Connect HM10      Arduino Uno
//     Pin 1/TXD          Pin 7
//     Pin 2/RXD          Pin 8

void setup() {
     Serial.begin(9600);
     mySerial.begin(9600);
}
void loop(){
     String message;
     if (Serial.available()) {
          c = Serial.read();
          mySerial.print(c);
     }
     if (mySerial.available()) {
          message = "";
          delay(10);
          while (mySerial.available()) {
          c = mySerial.read();
          message = message + c;
     }
          Serial.println(message);
}

Это основной код для подключения к вашему HM10 [контакты rx/tx могут отличаться]. Если вы отправляете «AT» через свой монитор последовательного порта, HM10 должен вернуть «OK».

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

AT-ROLE1 //устанавливает центральную роль

AT-IMME1 //должен работать без предварительной активации

AT-RESET // перезапускает HM10

После этого, если отправить "AT-DISI?" через монитор последовательного порта HM10 должен начать поиск iBeacons и (в случае, если он его найдет) вернуть следующее [буквы P являются заполнителями]:

OK+ДИСК[P0:P1:P2:P3:P4]

Это сообщение содержит МОЩНОСТЬ (мощность отправляемого сигнала) и RSSI (мощность полученного сигнала) iBeacon, из которых можно вычесть расстояние до маяка.

Последние 2 цифры P3 содержат МОЩНОСТЬ iBeacon, P4 — значение RSSI. [примечание: 2 цифры мощности являются шестнадцатеричными значениями, вам нужно сначала преобразовать их в десятичные значения --- число должно быть где-то около 190]

Наиболее распространенный способ измерения расстояния между маяками (насколько я знаю):

расстояние = 10 ^ ((POWER-RSSI) / 10n) [n между 2 и 4, я использую 2]

:) Я надеюсь, что это поможет и удачи в вашем проекте.

person David Schraudt    schedule 21.04.2017
comment
Однако следует отметить, что расчет дальности с iBeacons довольно неточен. Так что не ждите от него слишком многого - person David Schraudt; 21.04.2017