Простой поисковый радио маячок.

Pavel_liev

Спасибо, об STM’ках думал и много, продвинутые чипы с хорошими характеристиками, но их в моем случае нужно практически с нуля осваивать, а AVR ассемблер знаю достаточно неплохо, сложно собраться с мыслями и переходить на новую платформу что идет на языке высокого уровня, когда почти все время проводил в более древних штуковинах, а так все идет к тому что будущее за STM32, при чем у этих тварей даже потребление ниже, аж обидно как-то, прогресс.

Гена_Большой

Павел, честное слово пол года назад сам так думал ), а сейчас пишу для STM32.
Зная ASM Вы без труда освоите Си, плюсы даже не нужны.

Pavel_liev:

при чем у этих тварей даже потребление ниже, аж обидно как-то, прогресс.

и не только потребление, количество портов в/в, таймеров и прочих фич, включая офигительную FreeRTOS,
к которой я сам начал подбираться ).

я сам начинал с ассемблера, правда IBM370 )) в OS MFT в далекие 80-е.

Pavel_liev

armor66 у тини13 ножек маловато для разных плюшек, уже заняты все выводы, и та же мега8 отлично обеспечивает питанием GPS модуль просто с одной ноги, хватает силы тока ее внутренностей, а вот у тини13 просаживается, там всплеск при холодном старте более 50мА, и если его не выдержать то не включится, а дальше падает до 10-18мА, высока вероятность что у другого чипа два или три вывода в параллель потянут по току.

Гена_Большой
Pavel_liev:

там всплеск при холодном старте более 50мА

а если питать через эмиттерный повторитель ?

armor66

После запроса пишет got signal, gps на маячке включается и мигает, но приемник данные не получает, и gps координаты на втором экране одинаковые a) и b) и Ub-0.00V

Pavel_liev

обычные транзисторы не понятули, а мосфет справился, и мега8 одной ногой тянет, нужны дополнительные тесты, а еще GPS модули разные попадаются, из тех что тестировал больше всего понравились Quectel L80R, и хуже всего себя вели Neo6m.

Гена_Большой
Pavel_liev:

обычные транзисторы не понятули

любопытно, у BC847 максимальный ток коллектора 100мА, должно по идее хватать.
но у него падение около 0,5-0,6В, а напряжение питание какое ?

Pavel_liev

got signal означает что приемник получил ответ от маячка, еще там должно показывать уровень с каким маячек увидел запрос приемника, и вблизи они отталкиваясь от этого уровня будут уменьшать мощность передачи, а вот то что GPS моргает но не выдает координат на пульт скорее всего означает что тини13 не видит сообщение с GPS на ноге UART, при чем это может быть как ошибка монтажа так и завышенное напряжение питания, если питаете от +5в то для правильной бод* синронизации софтварного UART придется тайминги изменить внутри кода тиньки.

Pavel_liev

Гена_Большой BC847 пробовал, не работало, первичный всплекс мультиметром смотрел, там не все могло показать, может все дело в падении напряжения, а питаю обычно от одиночного литиевого АКБ с 4.2в, а GPS согласно мануалу при 3.3в нормально работает, на деле и при 2.9в работает, детально дело не изучил, просто от лени бахнул мосфет и на этом остановился.

Pavel_liev

armor66 вот исходники передатчика на тини13, в нем используется софтварный UART, при 4.2в на моих рандомных тиньках проблем небыло, но возможно у вас несовпадают задержки для чтения и там просто кашу по RX видит вместо сообщения с GPS.

Вот так выглядит система определения лог0 или лог1 на UART, это простая переборка опроса чтения с инкременацией счетчика:

sbic PinGPS,data_gps	;выполнить если бит порта "1"
inc R17
sbic PinGPS,data_gps	;выполнить если бит порта "1"
inc R17
sbic PinGPS,data_gps	;выполнить если бит порта "1"
inc R17
sbic PinGPS,data_gps	;выполнить если бит порта "1"
inc R17
sbic PinGPS,data_gps	;выполнить если бит порта "1"
inc R17
sbic PinGPS,data_gps	;выполнить если бит порта "1"
inc R17

Если читается каша и тайминги не совпадают то в конце этого блока можно добавить или убрать еще пару запросов.

sbic PinGPS,data_gps	;выполнить если бит порта "1"
inc R17

обычно при входе в синхро погрешность в три-четрые запроса проканывает но если разбежность больше то тини13 не может определить текст с UART корректно и тогда после вызова не сможет передать координаты с GPS. Код кажется топорным но когда пытался внедрить цикл с красивым чтением, то все работало намного хуже из-за времени на переходы, а вот именно такой топорный вариант определения бита UART получился самым помехоустойчивым. Так же тестировал UART в морозилке и на жаре, с заряженной и севшей АКБ, тинька нормально себя показала, но при питании с 5в тайминги могут отличаться, и этого уже не помню. Чтобы не лочить тини13 фюзами отладку можно делать запитав GPS напостоянно иизменив в коде ногу ввода, это первые строчки с .equ data_gps=5 ;data in UART GPS

LoRa_GPS_TX_korpus2.zip

Pavel_liev

в коде замерил сделанные ранее пометки про внутреннее сопротивление ножек у тини13, оно пипец огромное и не одинаковое, а уже и успел позабыть об этом 😔

;Rвн.портов: PB0/1=20R; PB2/3/4=28R; PB5=32R
armor66

Да, got signal и уровень показывает, питается напрямую от аккумулятора, попробую подзарядить. Кроме gps еще и напряжение не передает (делитель 470к / 33к). Подключение проверил, может с Ra-01 какие проблемы.

Pavel_liev

а напряжение передастся только в пакете с GPS, пока не прочитает корректно UART то не будет отправки и показаний

armor66

Может действительно, Quectel L80R купить, а то я везде пихаю BN-220/250, хотя протокол и там NMEA. Попробую прошить без reset.

Pavel_liev

а разве BN250 чем-то плох? Мне не понравился только Neo6m, самый медленный по поиску, потребляет больше других и ловит хуже, просто у Нео6 древний чип и код. Тини13 осуществляет выборку координат из сообщения, в пакете GPS много чего перечислено, обычно они стандартизированы но есть небольшие отличия между фирмами, местами запятая не там и местами нулей после замятой может быть другое количество, с теми модулями что у меня были старался прописывать чтобы все было универсальным, хотя там один и тот же код выборки на меге8 приемника и тини13 передатчика, и на меге8 так же применен софтварный UART ибо он работает стабильнее и лучше хардварного. Просто если у вас один и тот же GPS то не понимаю почему на меге8 все работает а с тини13 нет, софтварный код с задержками там идентичен, разве что тайминги у меги8 чуть отличаются.

armor66

Нет, не плох, и мега8 определяет координаты. Да, а какая скорость должна быть у gps модуля?

Pavel_liev

стандартные настройки таких модулей 9600 бод, если бы были проблемы то мега8 не читала бы, а поскольку не читает только передатчик с тини13 то вероятно дело в синхронизации UART, пробуйте подергать по пару значений задержки что писал выше, там просто больше нечему не работать, либо для теста поискать другой GPS. Тини13 использует подстроку $GPGGA, в протоколе NMEA формат данных и запятые с точками и их позиции строго стандартизированы, обычно там все хорошо.

armor66

Проверю для начала GPS модули, они к разным полетникам подключались. Потом уже прошивку маячка посмотрю.

armor66

у BN-220 baudrate 9600, protocol out UBX+NMEA, а у BN-250 дикие 230400 и protocol out только UBX. В прошивке 4 блока по 10 (sbic PinGPS,data_gps ;выполнить если бит порта "1"inc R17). Просто в конце, перед (;80мкс) добавить или убрать пару строк? Может сделать отправку фейковых данных с маячка в качестве теста?

armor66

ААААААААААА! Убрал два вызова sbic/int и заработало, спасибо тебе огромное!

armor66

Работает у меня в диапазоне от -2 до -5 опроса от исходного кода. Питание GPS можно ведь повесить на вывод Reset?