Откуда есть пошла идея
Один мой старый приятель взялся обсуждать со мной свою новую затею — все мы в свое время увлекались приключенческими гонками, коих проводится множество в наших краях, но вот не давала человеку спокойно жить предсказуемость классической приключенческой гонки — контрольные пункты (КП) расставляются людьми, а значит их можно хоть немного предугадать.
Вот так и появился RandomRace.ru (кратко — RR).
Итак, основная идея RR — запустить гоночные КП на шарах в воздух, на некоторой случайной высоте высоте шары будут лопаться, а КП — падать на парашютах. КП будут отдавать свои GPS координаты на сервер гонки, а участники будут их потом искать. В принципе, правила соревнований составлены так, чтобы КП-зонды возвращались организаторам силами участников. Естественно, кроме тех зондов, которые отличились повышенным рандомом и улетели куда-то в за.. далеко. Такие КП приходится искать организаторам собственными силами. Так получилось, что в результате я занялся техническим решением задачи «последних 100 метров», когда орги приехали на место, найти КП очень хочется, а координаты неточные. С этой целью было задумано использовать радиопеленгацию — каждый зонд несет радиопередатчик, а организаторы несут приемник-пеленгатор.
Общие требования к передатчику:
— малый вес и объем
— питание от литий-полимерного элемента (батарея от сотового телефона)
— время автономной работы не менее суток
— низкая цена, т.к. вероятность потери устройства немалая
Общие требования к приемнику:
— умеренный вес и объем
— направленая антенна
— звуковая и визуальная индикация уровня сигнала
— время автономной работы не менее 2х часов
— дальность обнаружения приемника — от 100 метров по лесу.
Позже наша команда стала принимать участие в соревнованиях Global Balloon Space Challenge, а так же в других событиях, и, естественно, маяки применялись во всех случаях.
Частоты и антенны
От стандартных частот «охоты на лис» пришлось отказаться из-за габаритов антенн, и в результате тягостных раздумий было решено использовать частоту 433 МГц. Условно безлицензионная, не требует больших антенн, в продаже есть некоторое количество передатчиков и приемников для этого диапазона. Антенна передатчика должна быть всенаправленной, антенна приемника — наоборот, узконаправленной. В случае передатчика особого выбора не было — антенна-пружинка или печатная. Для приемника выбор шире — рамка, классическая «лисья» рамка+штырь, двойной или тройной квадрат, йога, волновой канал. Очередной вечер на форуме сахары и тягостные раздумья привели к выводу, что все-таки двойной квадрат. Это некоторый компромисс между внятным габаритом, простотой и качеством приема. Размер всей антенны порядка 18*18*8 см. Передний квадрат — разомкнутый вибратор, задний, чуть побольше, замкнутый рефлектор. Плата приемника была смонтирована в разрыве вибратора. Геометрию таких антенн желательно выдерживать максимально точно. Материал для изготовления антенны — тормозной трубка для «жигулей» и нескольких кусков оргстекла, добытых в кладовке.
Два квадрата из трубки удерживаются диагональной деталью и двумя угловыми трапециевидными пластинами в углах. Вся конструкция надежнейшим образом стянута кабельными стяжками. Для изготовления деталей я напечатал чертежи в реальном масштабе и наклеил их на оргстекло. После чего засверлил отверстия и вырезал контуры электролобзиком. Несмотря на мои опасения, антенна получилась довольно жесткой, но в то же время оргстекло оказалось слишком хрупким материалом и быстро поломалось. Во второй раз неметаллические детали антенны были сделаны по тем же чертежам на лазерном резаке из фанеры (спасибо, фаблаб-политех). К чертежам добавилась пистолетная ручка и отверстия облегчения. Для защиты от воды фанера была покрыта аэрозольным акриловым лаком.
Учимся их готовить
Для всей электроники в проекте были использованы микроконтроллеры из серии STM8 — не самые популярные, но они мне нравятся. Низкая цена, что в данном проекте одно из основных условий, богатая периферия, возможность запитать мк напрямую от Li-Po батареи, общая неприхотливость и хорошие демо платы — вот что меня привлекает в этих чипах. Стоит также отметить простоту плат, т.к. шьется мк по 1 проводу (иногда 2 — еще нужен reset). По этому же интерфейсу работает аппаратный отладчик.
Чтобы прошить микроконтроллер STM8, нужен совместимый программатор. Программатор можно купить отдельно, но проще и дешевле взять одну из плат серии STM8-что_нибудь-DISCOVERY. Для использования встроенного в плату программатора необходимо отпаять 2 перемычки и завести проводками пины с платы на целевое устройство. Лично я применяю программатор, штатно отломанный от STM8S-DISCOVERY, а для массовой перепрошивки — специальный адаптер с двумя крокодилами и двумя щупами от тестера. К сожалению, gcc не портирован для ядра STM8, приходится пользоваться бесплатными версиями платных компиляторов. В моем случае это raisonance, среда разработки — stvd.
Первая версия электроники
Передатчик
Для первой версии устройства были куплены модули фирмы Telecontrolli. Для передатчиков — RT4-433 (позже RT14-433). Поначалу это казалось хорошим вариантом. Для управления модулями в передатчике использовался один из самых дешевых MCU — STM8S003F3, в удобном для пайки корпусе SO-16. Схема банальная — собственно MCU, обязательный конденсатор, фильтрующий конденсатор в цепи питания, радиомодуль, светодиод и резистор к нему. Примерно раз в секунду передатчик издает примерно полусекундный ам-модулированный импульс с частотой 200Гц и моргает светодиодом. Эта вариация маяка пережила несколько испытаний и инкарнаций.
Применялись самопальные лутованные платы,
Китайские ПП с seeedstudio;
Антеннки — пружинки и печатные.
Так же были эксперименты с разными светодиодами и разными токами — например, была мысль, что резкие короткие вспышки неестественного синего цвета изнутри прозрачного контейнера могут помочь найти контейнер в лесу ночью. Так же варьировались радиомодули, в зависимости от конъюнктуры рынка радиодеталей.
Приемник
Для приемника-пеленгатора применялись модули RRQ14-433 от той же Telecontrolli. У модуля два выхода — принятые данные и аналоговый уровень АРУ, он же RSSI. На микроконтроллер STM8S903C заведены оба, но выход данных был на всякий случай, сигнал на нем игнорировался прошивкой. RSSI же опрашивался непрерывно при помощи встроенного АЦП контроллера. Индикация уровня сигнала должна быть двоякой — с одной стороны визуально, причем умеренно крупными цифрами, видимыми и днем, и ночью. С другой стороны, надо прицепить звук — чтобы не надо было непрерывно глядеть на индикатор. Ну и голливудские традиции такие — должно пищать. Контроллер снова был из семейства STM8S, но другой — STM8S903, снабженный встроенным источником опорного напряжения, который нужен для измерения RSSI. На роль индикатора был назначен двухразрядный 7мисегмениный светодиодный индикатор. Классические ардуиноподобные схемы с горой резисторов, динамической индикацией и прочим мне городить совсем не хотелось, поэтому в дело пошел интегральный драйвер светодиодов STP16CP05. Это 16тиканальный сдвиговый регистр со стабилизацией тока на каждом выходе, причем величина тока задается одним резистором сразу для всех выходов. 16 каналов — как раз на 2 цифры по 7 сегментов + десятичные точки. Сам индикатор — просто индикатор внятного размера с общим анодом. Звук я делал в последний момент из попавшихся под руку плейерных наушников. Наушники были подключены через резистор (чтобы не мучить МК большими токами), к прямому и инверсному выходам таймера МК. Поскольку радиомодуль требует 5В, пришлось поднять напряжение питания (2х ячеечный модельный LiPo на 800mAh) и поставить LDO на 5В (на схеме его нету).
Прошивка контроллера непрерывно меряет уровень RSSI, пытается найти там пики в момент приема радиосигнала, пересчитать их в неких «попугаев» и вывести на индикатор. Эти же попугаи конвертируются в длительность периодических «бипов». При 0 попугаев пеленгатор молчит, при 99 — непрерывно пищит. Прошивка передатчика переделывалась 100500 раз, в основном по поводу внятного пересчета RSSI. Код оттуда я никому не покажу, нельзя так людей пугать.
Первый блин.ком
Первые испытания и соревнования с применением полученной системы «найди меня» прошли в целом успешно, пеленгатор пару раз позволил найти упавший зонд в лесу. Антенна показала приемлимую направленность, зонды, как и предполагалось, можно услышать по рации. Дистанция обнаружения в лесу тоже в рамках разумного. Из неприятных открытий было то, что параметры модулей передатчика довольно сильно «гуляют» от экземпляра к экземпляру — как частота, так и мощность. Разные модули пищали на каналах 32-42, при ожидаемом 34. Уровень RSSI на приемнике тоже вел себя несколько странно, но некоторое шаманство в алгоритме приемника позволило видеть на индикаторе некоторую величину, похожую на уровень сигнала передатчика в неких попугаях. В преддверии изготовления очередной партии внезапно выяснилось, что ключевые для всего проекта модули передатчиков сильно подорожали и вообще практически исчезли из продажи. В тоске я уныло рылся в сокровищах алиэкспресса, без особой надежды найти замену.
И тут.
И тут следует продолжение.
Ссылки:
Примерно тоже самое на английском: 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
Автор: Elmot