Радиометка для ардуины

Тема в разделе "Проводная и беспроводная связь", создана пользователем ДмитрийД, 12 июн 2015.

  1. ДмитрийД

    ДмитрийД Нерд

    Есть ли такие модули?
    Приемыш на арду, пердач даем человеку. В зависимости от удаления человека от арду выполняем логику.

    Желательный радиус действия до 100м
     
  2. Megakoteyka

    Megakoteyka Оракул Модератор

    Для передачи данных навалом всяких. А вот определение расстояния - совсем другая задача, на порядок сложнее.
     
  3. geher

    geher Гуру

    Из просто реализуемого приходит в голову только использование GPS на носимом устройстве и ардуине и любая пара достаточно мощных приемопередатчиков. Естественно, потребуется какой-то МК и для обработки данных с GPS (или приемопередатчик со встроенным МК). Но там существенные ограничения на условия применения: если нужно получить достаточно хорошую точность, то все должно происходить на открытом пространстве.
     
  4. ДмитрийД

    ДмитрийД Нерд

    Допустим имея 2 модуля nrf24l01
    есть ли у них на выходе информация о уровне сигнала? какой точности? можно ли на ее основе реализовать задачу?
     
  5. geher

    geher Гуру

    Предупреждение! Дальше чистая теория, на практике мной не применялась.

    В библиотеке rf24 у класса есть только методы testCarrier и testRPD. Первый определяет наличие несущей, второй - что уровень сигнала выше -64dBm

    Еще есть setPALevel, дискретно задающий один из четырех уровней сигнала передатчика:
    RF24_PA_MIN — -18dBm; RF24_PA_LOW — -16dBm; RF24_PA_HIGH — -6dBm; RF24_PA_MAX — 0dBm

    Применить это можно так.
    Выставляем последовательно уровни мощности передатчика по кругу, гоним какие-нибудь данные и проверяем, есть ли сигнал на приемнике (при помощи testRPD, testCarrier или просто посылкой сообщения и ожиданием ответа). В случае регистрации проверяемого события приемник на максимальной мощности немедленно шлет одно сообщение, в ином случае другое. Необходимо разработать протокол обмена, при котором диагностические сообщения приемника будут должным образом идентифицироваться с выставляемой мощностью на передатчике (попросту говоря, задержки между переключениями мощности должны быть достаточно большими, чтобы приемник успевал передать по крайней мере три сообщения).
    Таким образом можно определить, на каком из четырех уровней передаваемого сигнала он смог приняться или зарегистрироваться на приемнике, что позволяет разбить зону вокруг передатчика на пять частей в соответствии с уровнем передаваемого сигнала, который сможет принять приемник (пятая часть - самая удаленная, при которой не регистрируются диагностические сообщения с приемника).

    Естественно мало-мальская точность измерения доступна только в чистом поле в условиях отсутствия препятствий, помех и отраженных сигналов. В остальных случаях зоны не будут представлять из себя некую площадь, ограниченную двумя окружностями, а что-то весьма хитрое, благодаря интерференции и дифракции более чем запутанное.
    Кроме того, testRPD, похоже, будет реагировать на любой сигнал на частоте выбранного канала, testCarrier будет реагировать только на правильную несущую (но от любого источника, включая BT 4.0 BLE), а качественная передача сообщений будет возможна только на уровнях выше уровня регистрации неущей. В условиях чистого и равномерного эфира (без помех и препятствий) это, возможно (но не факт), позволит еще чуть увеличить количество зон за счет применения для детекции всех трех способов.

    Данные записываются и считываются непосредственно в регистр и из регистра передатчика. Большей точности по уровню сигнала добиться вроде как не получится (разве что есть еще какой-то неизвестный мне регистр, который хранит уровень принимаемого сигнала или точный уровень сигнала на передатчике), но я в этом сильно сомневаюсь.
     
    Последнее редактирование: 12 июн 2015
  6. Radius

    Radius Гик