Comments 18
Когда в IEEE 802.15.4a добавили возможность измерения расстояний, это казалось фантастикой. К сожалению, это работало только для UWB PHYs, а поработать с такими не удалось.
Статья ни о чём. Во-первых переотражения. Во-вторых Tdelay на вашем графике -- самое сложное. Особенно сложно его сделать более-менее постоянным. Потому, чтобы отправить ответ там столько всего нужно, и это всё выполняется отнюдь не за гарантированно константное время. Если в чипе трансивера какой-то аппаратный автомат, который вот точно-точно всё делает за фиксированное время, тогда как-то можно откалибровать и пользоваться (кстати в "Нордике" аппаратное подтверждение так работает).
Далее, таймеров на 6ГГц разумется так просто нигде нет. Если чип на 2.4ГГц в идеале там может быть таймер который считает такты несущей, но и то вряд ли. Между аналоговым генератором с ФАПЧ и сложной цифровой схемой таймера -- небольшая пропасть. Впрочем, измерение времени запросто может осуществляться не тупо подсчётом тактов, а фазовым методом: условно, меандры прямого и задержанного сигнала перемножаются (ксорятся), и получившиеся единички накапливаются на конденсаторе и измеряются АЦП. Имеется ввиду относительно низкочастотный меандр (где каждый фронт -- факт приёма или передачи посылки), а не несущая, разумеется. Кстати такой метод потенциально можно реализовать с любым трансивером, да хоть с известным "Нордиком" (NRF24L01): отправка пусть будет по фронту сигнала CS SPI-интерфейса (по нему же трансивер запустит передачу), а фронт приёма -- запрос прерывания. Первый фронт начинает заряд конденсатора, второй завершает. Потом напряжение на конденсаторе измеряется и вычисляется время отклика. Если процесс многократно повторять не сбрасывая заряд на конденсаторе, то можно многократно повысить точность измерений.
Существует гораздо более простой и доступный метод, который работает здесь и сейчас -- RSSI (амплитуда несущей принимаемого сигнала). Можно откалиброваться в реальных условиях, с реальными антеннами, и пользоваться. В помещении конечно опять же переотражения сильно мешать будут, ещё сильней, чем с TOF методом. Да и на открытом воздухе сказывается многолучевое распространение (по крайней мере прямая волна и отражённая от земли). Поляризация антенн ещё, наличие препятствий на пути сигнала. Но в целом метод вполне рабочий в определённых обстоятельтвах, и самое главное выход RSSI действительно есть почти во всех трансиверах.
Естественно, это все делается полуавтоматом. И UWB -- это ни разу не 2.4 GHz, это, например, 3 -- 10 GHz. Таймеры на ToF тоже аппаратные. На выход получаются уже измеренные значения, с учетом времени прохождения сигнала от счетчика до антенны и обратно. Точность измерения по тому же 802.15.4a — 499.2 MHz * 128.
UWB это не про гигагерцы, а про крайне не эффективный, но простейший способ модуляции. Когда полоса модулированного излучения на порядки наверное шире полосы модулирующего сигнала. UWB -- это, условно, "искровый передатчик". У которого спектральная мощость сосредоточена не в одной узкой вертикальной "палке", а в той же палке положенной на бок, т.е. размазана "по всему спектру". И приёмник устроен достаточно просто (фильтр ВЧ и амплитудный детектор), ему лишь важно что эта самая спектральная мощность пришла ему в антенну, совершенно не важно на какой именно частоте и с какой фазой. Поскольку спектр очень широкий, практически "весь", то помехи на конкретной частоте не очень мешают (на деле не совсем так, поэтому уходят в область очень высоких частот, где их просто нет). Крайне простые приёмник и передатчик, благодаря чему опять же удаётся освоить высокие частоты. И при этом удивительно низкий (по отношению к ширине полосы) битрейт. Но в абсолютных значениях всё равно высокий.
И уж такты поштучно там точно никто не считает, там даже кварц не нужен. Да и тактов как таковых нет. Есть широкополосный генератор шума используемый в качестве передатчика. Его модулируют путём включения (on/off keying). Цифровых схем на много-много гигагерц там не нужно. При желании UWB можно сделать самому на дискретных транзисторах, конденсаторах, диоде и микроконтроллере (нужен чтоб (де)модулировать сигнал).
Кстати чего далеко ходить, любой лазерный дальномер измеряет растояние. Там никаких гигагерцев нет. Там в простейшем случае один фотодиод и модулированный сигнал на лазерном диоде. Который отражённый приходит с задержкой по фазе. И по ней можно вычислить расстояние (сравнивая принятый фотодиодом и модулирующий сигналы). В UWB можно поступить ровно так же. Благо там длины волн уже короче измеряемых расстояний, так что всё получится.
Есть TOF камеры, но там тот же принцип: каждый пиксель поделён на две половинки и синхронно со вспышками подсвечивающего прожектора накопление света идёт на одну или вторую половину. Разница накопленного заряда говорит о расстоянии. Измерение чисто аналогое, без гигагерцев.
Когда говорится про "аппаратные таймеры", то скорей имеется ввиду, что из регистра у трансивера прямо расстояние считывается, а как оно получилось -- "секрет фирмы".
А этот RSSI у вас действительно когда-нибудь работал, или это предположения? )
По факту картина его значений представляет совершенно чудовищную зебру, из-за переотражений и интерференции, и в помещении, и в поле. Совершенно непригодный метод. Но почему-то все предпочитают убедиться сами, а на слово не верят )
А вот TOF c UWB - прекрасно работает даже в мет. ангаре, где одно сплошное переотражение.
Звучит как-то бредово. Погрешности времени выполнения микрокода добавят к единицам сантиметров десятки метров.
Скорее всего, в реальности это закрытый аппаратный блок, который на выходе тупо пишет в регистр расстояние в метрах/сантиметрах. И внутри он чисто аппаратный, и на 90% аналоговый, и данные он определяет, скорее всего, по итогам нескольких тысяч пересылок "туда-сюда". Нужно время - пинаем микруху, она отправляет сигнал. Там его аналоговая схема принимает, и отправляет обратно. Принятый сигнал - опять отправляем обратно, и так тысячу раз. На выходе получаем интервал времени в несколько десятков микросекунд, который уже позволяет отлично вычислить расстояние между двумя объектами. Можно даже подобрать количество переотражений, чтобы интервал времени в микросекундах был численно равен расстоянию в сантиметрах...
Вообще не разу не програмировал контролёры и не работал с радио, так что не к теме контекста, если что. Правда, приходилось проектировать АЦП и один из простых методов когда что-то нужно измерить точно, но линейка имеет слишком большое деление это сложить измеряемую величину саму с собой n-раз. Грубо говоря повторяем цикл десять ( или 2^х :) ) раз подряд, измеряем суммарное время результат делим на десять и вот нам уже для той же точности нужна частота 6000/10=600 МГц. Плюсом идёт понижение отношения сигнал шум в корень из количества усреднений раз (могут быть ньюансы).
Ещё раз скажу я не в теме общего контекста и если тут скажут что, например, устройства не могут тратить столько времени на в общем вспомогательную процедуру или что на борту нет "мозгов" чтобы эту операцию произвести. Селяви), нужно придумывать что-то другое.
принцип определения пути радиосигнала..
Скорость света в вакууме и воздухе\бетоне\грунте существенно отличается. Даже погода (давление\температура\влажность) существенно влияет на скорость распространения радиоволн. Но если мерить большие километры с погрешностью в малые километры, то метод отлично работает. Для большей точности уже приходится измерять фазу волны с частотой, изменяемой по известному закону.
Мерить амплитуду сигнала (RSSI) тоже не прокатывает, так как даже небольшие изменения окружающей среды и взаимного расположения антенн ОЧЕНЬ сильно могут изменить уровень сигнала.
Даже на простых приемниках получается довольно точно мерить частоту и, как следствие, скорость через доплеровский сдвиг. Например у меня с помощью LoRa на 433МГц довольно неплохо измерялась скорость до 100км\ч
Дальности большие? А то может, переходите на темную сторону силы (акустика/гидроакустика)? =) Таймера хватит с разрешением в десятки микросекунд. Хотя, конечно, своих проблем тоже хватает.
Дальность еще не оценивал.
Надо откалибровать трансивер.
А гидро-акустика это очень весело. Как по мне океаны еще интереснее чем космос. С удовольствием разглядываю снимки затонувших артефактов
https://www.youtube.com/watch?v=oBOy9ywfmNs
Кто-нибудь понимает как вывели эту магическую формулу для Double-sided Two-way Ranging?
https://www.youtube.com/watch?v=5KN4dJdkHUk&t=126s
![](https://habrastorage.org/getpro/habr/upload_files/7a8/ddf/6d0/7a8ddf6d05ef1c5e32072a4b653d3c59.png)
Давно думал о таком методе в плане применения для отслеживания позиции разных трансиверов типа LoRa, WiFi и прочих BT. Какие ASIC чипы знаете у которых таймеры выведены наружу или каким либо образом подключаемы к внутренним схемам десериализации? Мне кажется, на вскидку, можно данное реализовать на простых счётчиках, правда помню только 2.2 ГГц 8-битные счётчики двую западных компаний.
Принцип определения дальности между радио трансиверами