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

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, на практике спутниковая навигация дает север только когда двигаться в одном направлении, что не удобно, и медленная она, около пяти секунд тупит.

armor66

Пока похвастать нечем, кроме копирования того функционала, что уже есть. Сначала взял модули EBYTE E32-400MBL. С ними засада в том, что stm8l не поддерживаются GCC, да еще и залоченными приходят. Пришлось поставить SDCC и под виндой разблокировать через STM8ProgrammerTools. С компасом и акселерометром 16kb мне похоже не хватит (еще оказалось, что в 5110 пиксели не квадратные - круг так просто не нарисовать), но в качестве маяка даже с printf для отладки - вполне. Взял затем EBYTE E77-400, но wle5cc в platformio нет, да и с CubeIDE как-то всё не просто. В общем пока летаю на AVR:)

Pavel_liev

Да у 5110 пиксели чутка вытянутые, когда делал круг то брал фотошоп, и распечатку пикселей матрицы, там рисовал окружность и затем подгонял под симметрию, но смотрится оно нормально, ЖКИ же мелкий. Жаль только эти 5110 ЖКИ б/у’шные все, а новые идут под 128х64, очень хочется ч/б с разрешением 160х120 на 2", только сейчас проще цветной TFT найти чем монохромник.

Изучаю модули компаса, поигрался с НМС5883, нестабильны и много брака, и с гироакселерометром MPU-6050, пока что склоняюсь к LSM303DLHC(GY511). Основные грабли что магнитометры сильно сходят с ума при не идеально горизонтальном положении, компенсируется это обычно через акселерометр что дает поправку для расчета тригонометрии, но не покидает идея набрать сферу показаний магнитометра и делать выборку из нее не используя акселерометр и тригонометрию, в случае АСМ это было бы очень эффективно для кода, хотя на Си пять килобайт туда-сюда, ни о чем.