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

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?

Pavel_liev

Выводы тини13 не равносильны по току, ресет у нее при работе в качестве выхода самый слабый, а как дальше извращаться с исходниками вам виднее. Как по мне там добавить в приемнике компас хардварный(сейчас там север определяется по GPS) и ЖКИ поновее и будет неплохо, вся эта штука прототип, пилить и пилить еще ее.

armor66

Почитаю про компасы. А с ЖКИ предпочтительнее LCD12864 или что-то еще есть на примете?

Pavel_liev

про гирокомпасы тонны видео, но там есть чего кодить, а с LCD12864 один из похожих и доступных на нокиашный, альтернатива цветные LED но там без STM32 делать нечего.

armor66

Может для начала, режимы М/А сместить вниз на место статуса, а на этом месте разместить азимут? Да, цветной экран скорее излишество.

Pavel_liev

дизайн легко меняется, сам азимут показывать числом смысла нет, при поиске сегмент круга интуитивно понятен, идею не придумывал, а брал с коммерческих маячков, вот например tinyloc x30

1 month later
armor66

Добрый день. Подскажи пожалуйста, зачем после приема CAD в маячке если канал свободен, делаем еще 10 запросов? Или я неправильно понял - там где комментарий “;выждем освобождение канала”. И в первом ответе отправляем только RSSI? Тогда почему длину пакета в FIFO пишем ldi R17,12 не понял, что значит комментарий “;значение с приемника”?

Pavel_liev

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

armor66

Там если канал занят (есть бит CadDetected), сбрасываем счетчик, а если свободен, проверяем еще 10 раз - это просто задержка? И RSSI же 1 байт, тогда почему длину пакета в FIFO пишем ldi R17,12?

Pavel_liev

Проверка 10 раз это задержка с учетом что в помехах на границе приема может быть пробел в приеме, и пару приемов отсутствия сигнала еще не означает что передача не происходит. А вот 12 байт в фифо соответствуют настройкам сигнала пробуждения с пульта, дело в том что пакет в 12 байт с текущими настройками это одна секунда, удобно для формирования 10 секундного отсчета пробуждения со сна, но принятое содержимое не используется, просто конфиг приема, он ждет освобождение канала для своей передачи что проснулся.

1 month later
Pavel_liev

Постепенно прибывают заказанные из Китая посылки, среди прочего STM32F103C8, на который пал выбор как апгрейд системы и уход от мною любимой меги8, а все ради пока отдаленной и призрачной надежды двигаться вперед и таки освоить современные типы ЖКИ, которые любимая мною мега8 может не потянуть. Мне нравился асм, но прогресс и все такое, пришлось осваивать всегда пугавший С#. Беглый гуглопоиск и кучка видео помогли определится со средой - CubeID, бесплатный и не скованный ограничениями, со всякими визуальными плюшками и современный, впрочем не обошлось без ложечки невкусностей, китайские чипы позиционируются как клоны и самые новые версии ПО отказываются с ними дружить, но все это легко решается, ничего критичного. К облегчению С# не так сильно отличается от старых школьных бейсика с делфи, пара дней и джентельменский набор освоен, попутно быстро привыкаешь к мощностям камня, с асм код вылизывался и делался чуть ли не ювелирным, когда для SMT32 подключить математическую библиотеку и жмякнуть тангенс угла это каких-то 4кб ПЗУ, представить только, на меге8 это половина всего камня, гигантский кусок кода, когда для стм’ки всего мелкий сдвиг шкалы на 6%, конские ресурсы и возможности создают ленивый код совсем без экономии, а работает всеравно быстрее, балуют такие камни, очень балуют.

В планах теста осваиваю модуль компаса, точнее магнитометра HMC5883L, и как оказалось цифрокомпас далеко не простое устройство, получить заветное направление севера со стабилизацией в пространстве та еще задачка, на деле чип компаса сходит с ума при не горизонтальном расположении, при отклонении от горизонта на 5° углы сваливаются до 20°, в придачу такой модуль требует акселерометр, чтобы знать поправку на горизонт, а тому для жизни требуется гироскоп(оба девайса известны как MPU-6050). Прохожу стадию граблей и ужаса, и это по своему интересно, давно так не развлекался 😔

EHOT

Павел, а меня удивляет выбор C#, а не просто C. Можно и написать на асм е, никто не держит. ))) Большую часть кода 4К, пожалуй съела функция printf вывода на консоль. Само вычисление тангенса меньше. Изучайте файл файл map, там много интересного о распределении памяти. Закажите stm32L МК. Почти такой же как Ваш, но с плюшками пониженного потребления. Скачайте IDE SeggerEmbeddedStudio for ARM. Очень интересная среда, поддержка разных МК. Нужно подгружать доп пакеты по нужным МК.

Pavel_liev

Решеточку поставил просто чтоб выделить букву, а какой именно там Си понятия не имею, для меня это не так важно, а важно что могу с ним управится и постепенно въезжаю в синтаксис, хотя мелкие вещи после АСМ все же напрягают, например отрицательные числа и переполнения, типы данных, лечится но на все это нужно время. Рrintf никогда не использовал, и что с ним делать на МК то, где нет консоли? Код все же пишется под то что есть у чипа, на картинке это ЖКИ 1602, ну с него проще начинать, попутно помогает что все наброски беру со старого доброго ассемблера, ненужно библиотеки подтягивать, что очень здорово. Студию пока перекачивать смысла не вижу, эта справляется, жаль только как у АВР нету отладчика виртуального, чтобы код гонять без МК, например интересно было сколько тактов тот же тангенс считается, а оказалось чтобы узнать сие нужно гонять специально счетчик внутри МК. Так же понравилось что у STM32 можно обращатся к регистрам напрямую, как у АВР, но карта регистров сложнее, не всегда это удобно, глаза разбегаются.

EHOT

Консоль делается просто - подключаете через UART TTL-USB адаптер и выводите нужную информацию.
В STM32 небольшие куски кода можно запускать а RAM, без перезапись флеша. В среде разработки Keil симулятор имеется. Даже позволяет получать на встроенную виртуальную консоль то что в UART выдаете

Pavel_liev

Keil ставил, дизайн красивее чем у куба, но платный и ограниченный, и все равно нужно использовать кубовский модуль для создания шаблона-заготовки, проще сразу взять куб и быть на нем. В проектах привык делать отладку средствами самого устройства, на его ЖКИ. Сейчас главная задача это собрать компас чтобы не брать север от модуля GPS, на практике спутниковая навигация дает север только когда двигаться в одном направлении, что не удобно, и медленная она, около пяти секунд тупит.