Простой поисковый радио маячок.
В моих испытаниях LoRa 0.1Вт в среднем выдает х2.5 от дальности Si4432 и +30% радейки Баофенг. Проблему с GPS не замечал, поскольку собираю координаты в неактивном режиме модуля связи, и на момент передачи они уже давно в ОЗУ тини13. А так во всех испытаниях получалось что устойчивая дальность связи LoRa больше чем самый слабый прием на аналоге радейки, превосходит она аналог по дальности в любых условиях 😒
Поигрался вчера на природе с комплексом, дальность связи получилась примерно раза в два выше чем с Si4432. Пеленговать не пробовал, у меня антенны простые неправленые, но обратил внимание на интересную особенность: RSSI действительно с расстоянием меняется слабо, а вот параметр SNR меняется существенно. Возможно его можно будет использовать для определения направления. Также пока не придумал алгоритм работы после того как маяк проснется. Понятно, что маяку нужно дать время для запуска GPS и фиксации координат (сколько?) при этом желательно не включать маяк на передачу. Но в тоже время неплохо было бы сообщить приемнику, что маяк проснулся и ловит спутники. Приемнику также желательно дать время для фиксации координат. Поэтому я думаю, обратная связь очень желательна для маяка и приемника. Нужно только продумать алгоритм взаимодействия.
По работе логики в маячке пришел к вот такой схеме, где основным идет спящий режим, но из-за длительного разогрева GPS маяк при выходе из сна сразу отвечает коротким одиночным пакетом, в котором уровень RSSI, и мы сразу видим, что он проснулся и насколько он “видит” нас. Дальше в зависимости от RSSI маяк ставит у себя конфиг мощности, если мы близко то зачем валить 100мВт, ведь можно экономить батарейку, и подает питание на свой GPS, сам процесс прогрева очень рандомный, а ждать не всегда выгодно, поэтому пришел к выводу что удобнее дать модулю 8 сек. после приема валидных спутников, и передавать на пульт что есть. Дрейф в 30-50 метров первого пакета может не мешать, а дальше у нас есть выбор, если на пульте активна опция “работать непрерывно”, то после приема с маячка пульт сразу пошлет короткий пакет, и маячек увидев активность канала пойдет на повторный GPS с повторным прогревом 8 сек, и уже третий или четвертый пакет будет точным.
Такой алгоритм позволяет работать как одиночно так и непрерывно, что кажется удобным. Код маячка кажется готов, а пульт еще допиливаю.
Поигрался с гирокомпасом. Он у меня давно лежал без дела. Получилось вроде неплохо, при любых поворотах и наклонах приемника стрелка держит заданное направление.
Порой очень не хватеет такого гиромодуля, у меня направление идет с GPS, а он любит потупить пару секунд и работает лишь в прямолинейном движении, еще видел ряд видео где дешевые модули компасов работали очень нестабильно, им мешали любые устройства что рядом, и осиливать связку компаса с акселерометром HMC5883 + MPU6050 пока руки не дошли. А у вас оно работает здорово, практически как на телефоне, к стати еще один вариант поиска - вбить координаты в гугл карту 😁
Круто!
Я в молодости тоже на ассемблере программировал, но сейчас я бы взял камень пожирнее 😃
infojournal.ru/wp-content/…/mir_info-6-2017.pdf
Предварительные замеры выявили серьезную проблему режима сна, быстрый CAD запрос наличия сигнала, что длится 60мс не видит сигналы ниже уровня шума, то есть не срабатывает с запросами менее rssi=58(-106дБм), при том сама кодировка LoRa работает гораздо дальше, до rssi=42(-122дБм), получается при использовании быстрого опросчика дальность маяка падает вдвое, до уровня Si4432. Еще очень короткие сообщения в 1 байт недостаточны для сработки уровня и хорошей работы протокола LoRa, нету той чувствительности пока не будет хотя бы несколько байт в пакете, в результате для корректной работы по дальности нужно вводить в прием RX, который длится в 10-20 раз дольше чем CAD, и не получается такой экономии батарейки как у Si4432 😦
Да, нехорошие грабли. 😦
Я тоже проверял дальность с уже разбуженным маяком. 😃
Может там проблема кроется в точной настройке частоты, у разбуженного маяка срабатывает автоподстройка и дальность возрастает.
Есть еще один момент, очень не желательно трясти микросхему запросами по шине SPI во время приема, от этого точно падает дальность даже у si4432.
Необходимо еще несколько тестов, что-то не то с уровнями на нескольких замерах, попробую заменить радиомодуль, возможно повредил входной каскад маячка, и из-за этого он плохо будится.
Заменил модуль и повторил замеры, попутно исправил пару багов в коде, и оказалось что CAD сканирование работает корректно, сигнал LoRa вменяемо определяется когда есть, проблема была именно со старым модулем, не знаю что его замучило.
Но не все так гладко, двухсторонняя связь все-равно не так дальнобойна как односторонняя, без сна сигнал 100мВт удавалось ловить проволочной антенной до 1км в лесу, а иногда чуть больше, когда с режимом сна дальность упала до 700-800 метров. Пара таких мелких модулей работает примерно как радейка баофенг с аналоговым Si4432, тоже неплохо но всегда хочется большего. Еще возможен вариант разместить в пульте 1Вт модуль, такой гарантированно разбудит маячек, и в программе указать непрерывную работу на несколько минут, такой вариант связи может оказаться более дальнобойным, но 1Вт модули дороги и дефицитны.
По шине SPI, в мануале о запросах ничего не указано, а в реальности опрашиваю статусный регистр модуля раз в 10…20мс, но разницы по связи даже при постоянном опросе статусного регистра не заметил.
Есть чем померить выходную мощность?
Настройки по умолчанию:
RFM_Write(0x09,0x8F); //power =8f основной усилитель 80-8F -16 значений
RFM_Write(0x4D,0x84); // power default дополнительный усилитель ток 80-8F -16 значений
RFM_Write(0x0B,0x32); // current control on 100ma default. Для максимальной мощности согласно доке должно быть 120мА. 😃
Если поставить:
RFM_Write(0x09,0xFF); //Set maximum transmit power settings
RFM_Write(0x4D,0x8F); //мах power PA_boоst +20db
RFM_Write(0x0B,0x32); //current control on 150ma. Ток сильно задирать не стал, антенна не очень хорошая.
Мощность излучения должна быть больше.
Эти плюшки проходились еще пол года назад, регистр 0х09=8F максимальное значение, и FF для него вне конфига, будет пользоваться “по умолчанием”. Регистр 0х4D не принадлежит ЛоРа, он с пачки FSK/OOK и в режиме ЛоРа его не существует, только нативная таблица ЛоРы оказывает влияние на ее работу, отдельным особняком идут пины dio, но они больше бесполезны. С конфигом тока игрался ранее, и перебрав множество настроек пришел к выводу что максимальные значения по мощности и эффективности стоят по умолчанию, и любые правки сделают либо тоже самое либо хуже. А так 100мВт модуль при максимальной мощности потребляет около 120мА тока, это его предел, правда недавно вышли на Али модули SX1262 150мВт ревизии, ну 22дБм.
Еще очень охота спустить частоту на 170-315 МГц, согласно мануалу эти модули SX1278 это умеют, только развязка выходных фильтров не подходит, уже пробовал, при 370МГц завал был такой что реального выхода излучения почти не было, а номиналы неизвестны, и в самом Китае перестали продавать модули такой частоты, а раньше то были.
В процессе работы по маячку вылезли неприятные грабли, проблема с питанием GPS. Для экономии акб необходимо отключать модуль приема спутников, но как это делать? Оказалось у тини13 не все выводы одинаковые по токоотдаче, РВ5 самый хилый, а РВ0/1 самые токовые, но даже с ними модуль что потребляет 25мА просаживается на 0.5в, что крайне плохо, ибо еще с рабочим АКБ получаем нерабочий GPS.
Отключать у GPS нужно именно провод “плюс”, ведь при отключении “минуса” потеряем запитку резервной памяти орбит “горячего” старта. Использование транзистора п-р-п не помогает, там так же просадка по переходу, а для р-п-р надо делать развязку, хочется простое компактное и надежное решение 😃
А чем p-n-p транзистор не нравится? Там из обвязки всего пара сопротивлений. Один с базы на вывод контроллера для ограничения тока 1-10кОм, второй высокоомный с базы на эмиттер 50-200К для надежного запирания транзистора. Второе сопротивление можно и не ставить, но нужно следить программно чтобы вывод не оказался воздухе. Транзистор эмиттером к аккумулятору коллектором к потребителю. Вместо биполярного можно поставить и полевой транзистор Р-типа c изолированным затвором, тогда вообще сопротивления можно не ставить.
Есть “цифровые” PNP транзисторы с обвязкой внутри, например - PDTA124. Очень экономят место на плате.
Почитал про транзисторы с составными резисторами, прикольно придумали, кажется мелочь а меньше рассыпухи что может отвалится, а значит выше надежность, только уже прошил тини13 под ногу “ресет”, а теперь получается надо управлять не положительным а отрицательным импульсом, когда тинька уже залочилась 😒
Варианты с неотключением ноги лучше не использовать, это лишние токи с АКБ и для автономности это критично. Думал еще о мелком тиристоре но у них зачастую токи удержания 20мА, что соизмеримы с потреблением GPS, а значит тиристор не выключится. Кажется для экономии Р-мосфет маленький в SOT23 будет лучше всего, у р-п-р транзистора выше ток утечки и управления, но затвору полевика понадобится подтяжка на “плюс”, а это еще один резистор 😃
Еще есть EMD9: fscdn.rohm.com/en/products/…/emd9t2r-e.pdf
Достаточно просто лапки между собой скоммутировать и с тиньки будете управлять NPN, а выходом - PNP. И тоже никаких лишних резисторов.
EMD9T2R дефицитка, днем с огнем не сыщешь, те же цифровые транзисторы так же не везде есть, а вот р-мосфет мелкий реально достать много где, и как запчасть он проще, думаю проще это лучше.
Заметил некрасивую особенность, собирал как-то платку сбрасывания ФЮЗ’ов для тинек, она корректно резетит лоченные в 8МГц чипы, но 1МГц не восстанавливает, а у меня уже 3шт таких тинек и новые закончились 😦
…а вот р-мосфет мелкий реально достать много где, и как запчасть он проще, думаю проще это лучше.
В принципе, да. Причем, там можно обойтись без дополнительного места под резистор. Резистор 0603 нормально помещается на контактные площадки самого транзистора между лапками, просто лапку транзистора и контакт резистора нужно паять одновременно.