Начало там.
И тут внезапно я обнаруживаю на алиэкспрессе модули HC-11. Это радиоудлиннитель UART, сделанный из того же STM8S003F3P6 и субгигагерцового цифрового трансивера CC1101 фирмы TI. Стоимость модуля тоже радовала — $3.5-$8 вместе с доставкой.
И понеслась. Даташит, почесать репу, опять даташит, чайку, даташит, где моя кредитка? Трекчекер, трекчекер, трекчекер… Что за черт, как доставлено в Сингапур??? Вопреки привычкам, я первый раз в жизни не проверил адрес доставки… По странной прихоти алиэкспресса посылка с пробными платами уехала на адрес гостиницы, где я останавливался год назад, и куда что-то заказал тогда же. Так, в Сингапуре командированный коллега. Может зайти в гостиницу? Может. Алле, это гостиница? Вам посылка на мое имя не приходила? К вам зайдет мой коллега, и… А, уже обратно отправили… Спасибо, все отлично, простите за беспокойство...:-(
Делать нечего, время поджимает, пришлось заказать пробную партию еще раз, некисло переплатив за емс. Отмотав положенное количество нервов, заветная посылочка наконец приехала.
Попытка #2
Электроника, передатчик.
Час ковыряния с тестером, и частичный реверс-инжениринг закончен. Плата произвела неплохое впечатление — питание отфильтровано, преобразователи уровня на сигнальных выводах колхозные, но вполне рабочие. В принципе, все оказалось ожидаемо — аппаратный spi микроконтроллера (PC5-PC7) смотрит на трансивер, UART (PD5, PD6) смотрит наружу через преобразователи уровня, перепрошивочные ноги выведены на тестпады снизу модуля. Инженерная разведка разве что доложила тонкости — какая нога назначена на сигнал CS (PD4) транcивера, а какая — на вход SET (PC3) всего модуля. Теперь следующий этап — загружены в планшеты
Таким образом, изготовление передатчика сводится к припаиванию голого светодиода, провода питания и штатной антенны. Для того, чтобы уберечь провода от повреждения, а саму схему от отсыревания, запаянные передатчики были залиты термоклеем и затянуты в термоусадку.
Прошивка, передатчик.
Чип C1101 управляется по стандартному протоколу spi путем чтения и записи регистров, так же есть FIFO буфер для пакетного обмена данными. Настройку параметров чипа (т.е. значений этих регистров) рекомендуется проводить не методом внимательного взгляда, а при помощи утилиты SmartRF Studio, загружаемой с сайта TI. Утилита и вправду неплоха, интуитивно понятна и даже позволяет генерировать исходники по шаблону.
После ряда экспериментов с чипом удалось добиться от него работы на разных мощностях, в любом канале LPD диапазона. Следующий шаг — собственно структура передаваемых данных. С одной стороны, хотелось бы, чтобы звук маяка однозначно опознавался на слух по рации. С другой стороны, глупо не воспользоваться возможностями чипа и не передать что-нибудь полезное. С третьей стороны, все эти игры с радио не должны сажать батарею сверх меры. Сам чип цифровой, передает сначала битовый паттерн преамбулы, потом синхронизирующее слово, потом пакет данных и опциональный CRC. Формат передачи был придуман такой — примерно раз в 3 секунды передатчик передает серию импульсов, из 5 пакетов. Каждый пакет состоит из 2 битовых паттернов, между ними — 3 байта полезной нагрузки. Это номер и текущая мощность передатчика в дБ и контрольный байт — инверсия мощности. Модуляция — GFSK, битовые паттерны — это 101010… и 110110…. Когда такой сигнал проходит через приемный FM-тракт рации, звук получается двухтоновый, примерно 300 и 200 Гц, и легко опознавается на фоне естественных и техногенных шумов. Каждый пакет передается с разной мощностью: -30, -20, -10, 0, 10 дБ. По мере приближения человека с рацией к передатчику все больше и больше пакетов из серии начинают преобладать над шумами, и носитель рации слышит все более длинную серию сигналов. Таким образом удается очень грубо оценить дистанцию до маяка при помощи банальной LPD рации, которая своей FM-природой противоречит работе в качестве пеленгатора.
Импульсы передаются раз в три секунды, длительность серии — приблизительно полсекунды. CC1101 в режиме передачи потребляет от 20 до 30 мА, в зависимости от передаваемой мощности. Таким образом, среднее потребление всего передатчика около 5 мА. Батареи для передатчиков мы применяли разные, но наилучшим вариантом по соотношению цена-емкость оказались запасные батареи к сотовым телефонам. Нокиевская батарея при стоимости 250 руб имеет ёмкость 1350 мАч, т.е. её хватит примерно на 11 суток работы передатчика. С целью понизить потребление, контроллер после передачи серии импульсов переводит трансивер в режим stand-by, а сам переходит в режим stop. Для перезапуска контроллера применяется вочдог IWDG, который работает от собственного генератора и может разбудить остановленный и даже наглухо зависший МК. Глухое зависание никак нельзя исключить, так как зонд вместе с маяком поднимается на значительную высоту, где температура может составлять до -60С. К сожалению, в контроллерах stm8s максимальная длительность срабатывания этого вочдога чуть более секунды, что явно недостаточно. Поэтому приходится держать в памяти счётчик срабатываний вочдога и передавать серию импульсов один раз из трёх.
Электроника, приёмник
В качестве принимающего узла приемника-пеленгатора был взят тот же модуль HC-11, но, естественно, с другой прошивкой. Выходных ног у него маловато, чтобы запустить и драйвер LED, и звук, но у меня уже лежал недопаянный экспериментальный пеленгатор поколения 1+, на промышленной печатной плате, уже с мк, драйвером и индикатором.
В результате пеленгатор стал «двухядерным». Одна STMка в составе трансивера принимает сигнал, результат передаёт по интерфейсу UART на вторую STMку, а та, в свою очередь, обслуживает индикатор и дудит в пьезоизлучатель. Антенна осталась без изменений, с платы содрал старый приёмник и содрал дорожку антенны. Новый модуль припаял к ногам контроллера и антенне и приклеил к плате на 2-х сторонний скоч.
И модуль HC-11, и принимающий информацию МК прекрасно работают при напряжении питания 3.0..5.5В, таким образом можно питать это все от одноячеечного литиевого (опять-таки телефонного) аккумулятора, и из схемы ушел стабилизатор напряжения.
Финально схема выглядела примерно так:
Как всегда, время меня жестоко поджимало, и корпус для электронной части приемника пришлось делать в последний момент из чего попало. Попало оказалось омерзительной (на первый взгляд) «коробочкой для драгоценностей» в магазине «Все по 37 рублей». Рюшечки и зеркальце, которыми она была оснащена, заставили меня всплакнуть кровью, но они очень быстро отправились в мусор. В остальном коробочка чудо как хороша — полупрозрачный белый пластик скрывает «детали реализации», но позволяет прекрасно видеть светящиеся цифры индикатора. Размер идеален, как раз плата + батарейка + выключатель, и даже крышечка с защелкой.
Приемник, прошивка.
Как уже упоминалось, приёмник получился двухядерным, и прошивок в нем тоже две. Перешитый модуль hc-11 постоянно считывает значение RSSI и проверяет, не пришёл ли пакет данных, опознанный трансивером и содержащий три байта полезной нагрузки, соответствующих формату передачи (см. выше). Обо всех своих наблюдениях он докладывает по интерфейсу UART «вышестоящему начальству». Второй МК слушает данные, поступающие от первого, пересчитывает значения RSSI в очередных «попугаев», формирует цифры на индикаторе и пищит. Если пакет данных от передатчика не обнаружен, то в качестве исходного значения используется считанный RSSI, а если пакет обнаружен, то используется сумма считанного RSSI и значения мощности передатчика из принятого пакета. Приоритет, естественно, у данных, которые приняты от передатчика. Если за некий период времени принято несколько пакетов, то берем наибольшую сумму.
Как и в первой версии приёмника, рассчитанное значение «коэффициента приближения» приемник озвучивает и выводит на индикатор. Индикатор попеременно выводит то коэффициент, то номер передатчика. Если номер передатчика не принят, то вместо номера показываем прочерки. Звуковая сигнализация тоже зависит от характера принятого сигнала — частота повторения «бипов» зависит от того, является ли принятый сигнал опознанным сигналом передатчика — в таком случае «бипы» следуют вдвое чаще. Скважность «бипов», как и ранее, есть индикатор сближения.
Полевые испытания.
Полноценных предварительных испытаний, к сожалению, не проводилось, просто за недостатком времени. Все испытывалось прямо «в поле». Тем не менее, кое-какие тесты проводились в городе. Наряду со своим передатчиком, для тестирования использовалась одна из самых доступных LPD раций — Midland LTX-325.
Город
Максимальная дальность слышимости передатчика по прямой на рацию — 600м с выключенным шумодавом, 280 — со включенным. Естественно, в городе диапазон 433МГц довольно сильно зашумлен автосигнализациями, рациями строителей и охранников. Приемник постоянно показывает 15 «попугаев».
За городом
Вне цивилизации фоновый сигнал помех немного ниже, обычно 12-13 единиц. Обычно в лесу радиомаяк можно услышать при помощи рации с расстояния около 300 метров. Один из участников соревнований утверждал, что слышал маяк с расстояния 1500 метров через портативную универсальную рацию Yaesu. Однажды я слышал маяк запущенного зонда в течении нескольких минут. Учитывая скорость ветра в тот день (примерно 50 км/ч), дистанция слышимости была порядка нескольких километров. Пеленгатор обычно засекает станцию с чуть меньшего расстояния, чем рация, в лесу это 150-300 метров. Направленность антенны позволяет в целом уловить, где же находится маяк. Индикатор пеленгатора показывает порядка 12-15 единиц на краю зоны приёма, примерно 80-90 рядом с маяком. В некоторых случаях эта цифра была около 60.
Результаты
Мы использовали это оборудование и для соревнований randomrace.ru, и для других запусков. Система в целом показала свою надёжность и полезность при весьма умеренной стоимости и сложности. Бывали случаи, когда пеленгация избавляла нас от долгих и скучных поисков упавшего зонда в заболоченном лесу. В принципе, весь проект может исполнить любой любитель.
Деньги
Каждый передатчик обходится примерно в $10 — модуль с антеннкой($3.5) + батарейка(~$5) + хвостик питания + термоусадка + термоклей.
Стоимость приемника вычислить сложнее, так серийно они не делались, и довольно много денег и сил ушло на эксперименты.
Ссылки:
Первая часть: geektimes.ru/post/270168
Примерно тоже самое на английском: www.randomrace.ru/2015/gsbc/preparation/transmitter/eng
RandomRace: randomrace.ru (ближайшие соревнования: www.randomrace.ru/2016/spring)
Исходники всех прошивок: sourceforge.net/projects/randomracebeacon
GBSC: www.balloonchallenge.org/teams/15