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

armor66

Красивое:) Получилось! Добавил в инициализацию 0x21;LCD Extended Commands и 0xBA;Set LCD Vop. Без этого картинки нет, без 0x14;LCD bias mode - есть, но бледная. Спасибо за код с такими подробными комментариями. Про тигромух нашел только “добавлен режим ретранслятора с модуляцией LoRa”. Видимо, меня в гугле забанили:)

Pavel_liev

Если не путаю - LoRa’шный коммерческий тигромух. Моему дрону такие, без защитного корпуса, не подходят, один раз в воду с купалкой и капец)) Не думал что кто-то будет повторять эту штуку, инструкции толковой не сделал, там две кнопки и если долго удерживать кнопку вызова то маячек переходит в непрерывный режим работы, а с одиночным вызовом сделает три или четыре ответа, делал серию из повторов потому что GPS первые разы дает погрешность, а вот частотная калибровка на модулях LoRa обычно ненужна, у них полоса достаточно широкая и те что паял работали сразу. После вызова маячек сразу отвечает и передает с каким уровнем сигнала “слышит” нас, затем активирует свой GPS и передаст координаты когда модуль прогреется, при этом можно повторно вызывать если GPS долго не разогревается, он повторно ответит уровень с каким “слышит” нас и будет делать то же самое, один раз помогло когда упал антенной GPS в землю и не мог пойматься, искал по уровню.

Pavel_liev

Из багов, передатчик почему-то зависает при просадке АКБ ниже 3.5в(для 100мАч это где-то две недели лежания), что-то с полевым транзистором коммутации питания, всегда когда пытаюсь пробудить на полусевшем АКБ зависает пока не заряжу и не пройдет “ресет”, хотел избавиться от транзистора коммутации питания GPS, но тини13 не тянет такой ток на ножке, там при активации импульсно более 50мА, разве что брать чип где больше ног и параллелить.

armor66

Транзистор попробую IRLML6402 у него Gate Threshold Voltage -0,55В должен открываться стабильно. Может питание просаживается? Вызов - это когда Auto Mode Call с обратным отсчетом? А непрерывный режим - Manual Mode включается, и обратно тоже длинным нажатием?

Pavel_liev

Режимы переключаются удержанием кнопки, маячек в “Авто” получает с приемника команду повторной отправки, это более полу-авто режим, при потери связи он все-равно уснет как в ручном, после пяти попыток, на екране при этом статус поменяется на ERror. На практике метка GPS скакает с точностью около 4х метров, особенно когда облачность и сыро, а в хорошую погоду метра два берет, хотя коптер обычно не сваливает после посадки, “Авто” более актуально для движущихся целей. Вот прошлогоднее видео в ютубе, там кажется с радейкой тоже сравнивал

armor66

Ясно, это я напутал. Допаяю маячек, разберусь.

Pavel_liev

по просадке питания и зависании: когда АКБ заряжен полностью то все работает нормально, но при попытке разбудить при полуразряженном АКБ все виснет, передатчик вообще не отвечает на запросы, при этом если зарядить АКБ то всеравно не будет отвечать пока не снять полностью питание тини13 передатчика и не включить обратно, и проблема там кажется не в транзисторе а именно режиме сна тини13 при ФЮЗах что отключают ногу “ресет”, не хватало выходов для управления питанием GPS, и такие проблемы начались именно когда в ФЮЗах настроил “ресет” на выход сигнала, а если эту настройку убрать то все работет штатно до полного разряда АКБ в 2.8в и будится нормально аж до входа АКБ в защиту по разряду. Из-за чего решил что проблема именно в том, что нельзя использовать пониженное напряжение при питании тини13 с ФЮЗами что переключают “ресет” на выход сигнала(виртуальная внутренняя подтяжка слетает), и думал взять другой чип где больше ножек, например тини44, что позволит добавить новых плюшек, типа светодиодной подсветки.

armor66

Да, фигово что так с ресетом. Неплохо было бы еще пару ног - на вход с полетника (приемника) и выход на бузер (светодиод).

armor66

Что-то меня понесло:) Делал на tiny13 и ключе IR3313 включение / отключение питания борта удержанием кнопки и отключение без PWM. Можно бы и такое добавить.

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

Павел, хорошую работу делаете, а не думали посмотреть в сторону STM32F030/G030 в корпусе TSSOP20,
там на порядок больше “всего”, а вес процессора будет не больше и никаких ФЮЗов.

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