Самодельный передатчик (часть 2)

olegtur77

Все!Собрал передатчик!Как оказалось была битая епромка,впаял другую-все заработало!Теперь реально 40 моделей,когда ж их успеть построить 😉. Подсветку запаял последовательно с диодом и рез. 680 ом.Осталось сделать фальшпанель

ВитГо

сколько проект существует - столько идет борьба за модели… и никто так не переписал сохранение моделей…
но при этом драйвер дисплея уже переписывали (опять таки только в части инициализации) наверное раз 30…

может быть уже переписать работу с еепром и получить на внутреннем еепром вполне достаточные 8-10 моделей ?

опять таки если и хочется внешний еепром - то гораздо интереснее SD карты было бы использовать, а не напаянные микросхемы…

p.s. ИМХО

olegtur77
ВитГо:

сколько проект существует - столько идет борьба за модели… и никто так не переписал сохранение моделей…
но при этом драйвер дисплея уже переписывали (опять таки только в части инициализации) наверное раз 30…

может быть уже переписать работу с еепром и получить на внутреннем еепром вполне достаточные 8-10 моделей ?

опять таки если и хочется внешний еепром - то гораздо интереснее SD карты было бы использовать, а не напаянные микросхемы…

p.s. ИМХО

сд-карта конечно удобно,в плане резервного копирования или в плане саморазвития работы с контроллерами,но в применении в передатчике жесткая микросхема лучше-впаял раз и забыл.
А что имеется ввиду под “достаточными” моделями?

ИМХО мне настроек вполне хватает. А теперь количество возросло до 40,хотя столько моделей сразу врядли кого-то есть, разве что в каком то кружке. Конечно в плане применение внутренней епромки выгодней, так как можно сделать резервное копирование через программатор.
Куда еще вижу развитие-это к увеличению числа каналов,но все применяемые вч-комплекты(покупные) расчитаны на 8 кан. Разве что дл фпв-шников применять 433мгц. Ну или еще внедрение телеметрии.

Aleksey_Gorelikov
ВитГо:

может быть уже переписать работу с еепром и получить на внутреннем еепром вполне достаточные 8-10 моделей ?

опять таки если и хочется внешний еепром - то гораздо интереснее SD карты было бы использовать, а не напаянные микросхемы…

p.s. ИМХО

Ну 8-10 моделей от 7 мало чем отличаются, и думаю многие уж +1 то модель добили… 😃 А под внешнюю епром - как раз и переписывали уже (2? 3? года назад?). По поводу 24с - она тупо удобнее, чем СД, т.к. при и2с дисплее отводить лишние ноги еще и под спи СД - уж больно жирно. Есть же адресуемая шина - грех ее не использовать. Современные флешьки - растут в гигабайтах нереально быстро. Уж больно жалко ресурсов будет на обработку фат и прочего тратить. Попробуй купи сейчас флешьку на мегабайт, два, да хоть 64! А гигабайты просто так на борту носить - как то жаба душит. Кстати, через пару лет атмеги снимут с производства, флешьки перевесят за 100гигов, а кодер с и2с так и будет продолжать рабоать, и и2с микрухи как выпускали, так и будут выпускать - ибо это классика. Исчерпали ресурс в 1млн перезаписей - небела, махнули восьминогого таракана на такой же и дальше… В отличии от СД, которые к тому времени не купишь или атмела, которого выпускать не будут. 😃 Драйвера дисплеев переписывались только исходя из удобства доставабельности\наличия дисплея, не более. И то, есть далеко не 30, а всего лишь - тик и вг +2410+3310+вариант МСВ = 5 разновидностей. Что по сути только инициализация - так это какой-никакой плюс существующего кодера. 99% потребителей он удовлетворяет.

olegtur77:

Куда еще вижу развитие-это к увеличению числа каналов,но все применяемые вч-комплекты(покупные) расчитаны на 8 кан. Разве что дл фпв-шников применять 433мгц. Ну или еще внедрение телеметрии.

С телеметрией проблем нет - всего лишь принимать данные с уарта и выводить на дисплей. Справится школьник. По увеличению каналов - тоже просто - правим в дефайнах и меняем длинну посылки - делов то. На хк продаются ДСМ2/Х оранджи, из второй, дебажиной партии мне еще не пришел, но из первой - с багом, но работает 14 каналов. (покрайней мере у меня в наличии 12 канальный приемник и с ним я проверял). Так что дерзайте!

olegtur77:

Конечно в плане применение внутренней епромки выгодней, так как можно сделать резервное копирование через программатор.

Уже был “образец” с резервным копированием через уарт. Собственно ничто не мешает дописать пару строк для копирования епрома в уарт-обратно. Не так это надо, по-этому особо и не шевелимся. И программатор не нужен. И прошивку можно через уарт обновлять - всего 2 провода из 5… Если не поленюсь - сделаю в феврале копию турниджи на дип-40 проце на макетке… По прикидкам еще и пяток ног на будущее останется…

olegtur77

Реально,мужики,я уже 5й год на этом кодере летаю. и сколько мне попадалось апп в руки-вроде и есть лучше, а к этой привык и все, уже думал что-то прикупить,но вот благодаря ВАМ(участвующим программистам) я еще пару лет полетаю 😉, функционала добавилось, а мои возможности еще не достигнуты.Так что продолжим. Сегодня помедитировал напильником и сделал удлиненные ручки стиков аля"граупнер",удобно.

Aleksey_Gorelikov

Олег, по фоткам не видно - фальшпанелька - принтер+ламинатор, или… ? И джойстик для меню прикольный. Что бралось за основу? Или микрики и люминьевая шайба на токарном? Интересно… В копилку знаний…

З.Ы. 8 лет назад скептики говорили, что аппу самому не сделать. 7 лет проекту, а он все живет. Уверен, что всякий Wfly, Spektrum dx6i, Fly-sky-turnigy-фигурниджи с оглядкой на этот проект и выросли. Делов то, Vad64 показал что это возможно, и школьник написал… MSV переписал… 😃 Конечно, шедевр от Valera69 - поставил все точки над i!!! Так держать!

З.З.Ы. Валере отдельный респект. Посмотрите топовые Джетти - у него дизайн сперли! 😁

olegtur77
Aleksey_Gorelikov:

Олег, по фоткам не видно - фальшпанелька - принтер+ламинатор, или… ? И джойстик для меню прикольный. Что бралось за основу? Или микрики и люминьевая шайба на токарном? Интересно… В копилку знаний…

З.Ы. 8 лет назад скептики говорили, что аппу самому не сделать. 7 лет проекту, а он все живет. Уверен, что всякий Wfly, Spektrum dx6i, Fly-sky-turnigy-фигурниджи с оглядкой на этот проект и выросли. Делов то, Vad64 показал что это возможно, и школьник написал… MSV переписал… 😃 Конечно, шедевр от Valera69 - поставил все точки над i!!! Так держать!

З.З.Ы. Валере отдельный респект. Посмотрите топовые Джетти - у него дизайн сперли! 😁

Да,панелька принтер+скотч,печатаю на фотобумаге,она плотнее.При желании иногда печатаю в фотоателье цветную. Потом на двухсторонний скотч. Главное-простота и доступность.
Джойстик(как и еепром память) с тюнера самсунг-300,пару штук валяется. Просто снял весь диск(он на защелке) и отрезал кусок платы вместе с кнопками.больше никаких премудростей.
Баг с неправильным положением тумблеров исправлен.

RW9UAO

по оранжевому передающему модулю каркну пару слов. там стоит Хмега, ее тх/рх уарта заведены на ту ногу, что идет на прием РРМ. телеметрию оно спектрумовскую принимать будет (я или Алексей сделаем) к турниге прикрутить - не вопрос, там отпаивают два резистора с 2 и 3 ноги атмеги, это уарт. убранные тумблера через пару резисторов заводят на свободные ноги проца. надо только договориться о протоколе обмена ВЧ модуля и проца пульта. 14 каналов можно упихать в 11 мсек дсмХ, обратно телеметрия. выводите УАРТ от проца.

RW9UAO

отвечу публично. итак, берем rcopen.com/forum/f4/topic298253/94 вот этот модуль. в нем стоит Хмега32 и моя любимая CYRF6936. делаем программатор для хмеги из ft232 и с помощью аврдудки можем зашить в него свою программу. смотрим в даташит, видим что один из уартов Хмеги замкнут, т.е. RX и TX торчат наружу, в ту ногу, которой он РРМ принимает.
потом берем описание как к турниге прикручивают frsky телеметрию, там освобождают ноги УАРТ от тумблеров, цепляем их вместе на ногу куда РРМ генерится. ногу РРМ переводим в Z состояние, а УАРТом устраиваем обмен с процом ВЧ блока. вуаля.
теперь по программе для ВЧ блока. у Алексея есть эти модули, мои еще пока едут из Германии (спасибо DL7RFP). на основе вот этого bitbucket.org/PhracturedBlue/deviation/…/dsm2.c?at… кода все и делается. на сегодня я умею: принимать и передавать 14 каналов с телеметрией в режимах дсм2/дсмХ. телеметрию умею принимать/передавать всю, фрактуредблю сделал прием только того, что ему ТМ1000 умеет отдавать, я еще и всякие повербоксы умею с гпсками. когда он обзаведется недостающим железом, допилит.

кстати, в порядке бреда. перетащить юзер интерфейс из этого проекта. там у дево7 вроде ЖКИ 128х64 монохром.

Aleksey_Gorelikov
RW9UAO:

договориться о протоколе обмена ВЧ модуля и проца пульта.

Ну думаю, для совместимости надо протокол обмена тот же что и у FR-SKY использовать. Чтобы можно было и в турниджи и в самодельном передатчике хоть те, хоть те модули использовать. Ну а по поводу УАРТа - в Самодельном передатчике он если мне не изменяет память - свободен, в отличии от турниджи, где тумблеры переносить надо.

RW9UAO:

делаем программатор для хмеги из ft232

avrasp умеет хмеги шить. Надо только (при необходимости) обновить прошивку и согласовать уровни парой резисторов (хмега от 5 вольт сдохнет).

RW9UAO

можно и фрискин, его расширить надо. например, регулировка мощности, номер модели для modelmatch.
у меня СОМпортовый avr910 программатор =) он не умеет хмегу.

Aleksey_Gorelikov

Сделай на меге8 аврасп. Можно выкинуть все детали, кроме кварца, двух кондеров к нему и двух стабилитронов на линии усб. Ну и делитель на резюках нужен будет чтоб на хмегу 5 вольт не подавать. Я по собственной лени лет 7 назад сделал такой (правда с прошивкой 910) из шнура усб и меги в дипе. Тупо ногами меги обжал шнур, напаял навесным кварц и пару диодов (чтоб питание понизить), замотал сверху изолентой. Делал как временное решение, досих пор живет. 😃

ВитГо

чтото почитал я про эти модули - гм… ощущение что еще сыровато все это… 😦

перенести выключатели в турниге не проблема… был бы толк…

Aleksey_Gorelikov
ВитГо:

чтото почитал я про эти модули - гм… ощущение что еще сыровато все это… 😦

А что сыровато то? Железо 100 лет отлажено на спектрумах, мультиплексах и т.д. Апельсины ничего не изобретали, кроме выходного усилителя мощности. Его как я понял с флайская срисовали, который тоже вроде года 3 как работает.

А софт, так Серега с протоколом разобрался и тестят эту ревизию протокола уже по всему миру в альтернативных прошивках Дево6,8,10… Ну да, наверно сыроват, но тут любой свеженаписанный софт сыроват будет. Дык оттестим, отдебажим. Хотя, по протоколу пока замечаний от пользователей не видно.

PigTail

Честно не понимаю, чего все в оранжевый модуль уперлись, Валкеровский гораздо дешевле и ненужо трахаться с Иксмегой.

RW9UAO

у валькиного апгрейдного модуля (мы же про него говорим? который для переделки не телеметрийных в телеметрийные) торчит наружу голый SPI. который несколько сложнее прикрутить к основной тяжелой программе. опять же жесткий реалтайм накладывает повышенные требования. а наладить обмен по УАРТу можно достаточно просто.

Tigra74

Есть в нете и под СД и пот фрискайметрию-на других сайтах-но делится не хотят

RW9UAO
Tigra74:

но делится не хотят

есть один нюанс. отвлеченно, я портировал одну программу под одну железку, мне тоже не хотели помогать. я дал ссылки на свои проекты, показал что я умею и чего достиг. после этого открыли доступ “в свои” и скрытые ветки форума. в конце концов, прицепить SD карту - элементарно, натянуть на нее FAT (пусть не ходить дальше корневого каталога) тоже пара пустяков. elm-chan.org посмотрите в разделе FAT библиотеки.

PigTail
RW9UAO:

голый SPI. который несколько сложнее прикрутить к основной тяжелой программе

Кто мешает воткнуть еще один процессор, как собственно в оранже и сделано, только нечто более понятное, чем XMega?

RW9UAO

хмега, PSoC, ARM, пофигу. просто есть готовый ВЧ блок, который вставляется в готовую турнигу. зачем изобретать лишние сущности.

Aleksey_Gorelikov
Tigra74:

Есть в нете и под СД и пот фрискайметрию-на других сайтах-но делится не хотят

А просить то пробовали? 😃
СД - посути епромка SPI только большая и с фат-ом. Фрискайметрия - делаешь буфер под строку, принимаешь в него уарт. Разбираешь этот буфер на куски, выдергиваешь телеметрию да на экран. Подсмотреть работу с уарт - тут кто-то выкладывал вариант для сбрасывания моделей на комп, можно в той же 9х, можно просто примеры в том же кодевижине.
Не хтоят делиться - весьма относительное понятие. Возможно просто люди сделалидля себя, их устраивает, как-то работает, но гарантий что заработает у других попусту нет. Ну к примеру с той же СД - валялась карта на 32мгб, сделали на ней. Сейчас такую хрен найдешь, а для большей - надо всю библиотеку фат переписывать. И смысл это выкладывать? Повторябельность низкая, а копипастеры потом вопросами засыпят “почему у мну не работает”. Саппорт - вобще отдельная тема. Из за его отсутвия 90% проектов умирает. Человек сделал для себя, потратил время, силы. Подарил другим, а вместо благодарности - притензии. Я вот не люблю делиться по такой причине: программист я так себе, что-то в угоду своей ограниченности могу сделать не логичным или не оптимальным или… Некоторые слезно исходники в личке вымогают, а потом там же поносят о том, что где-то комментариев мало, где-то через задницу написано и вобще они обязательно перепишут все как надо, т.к. мой код не потребный… Потом пропадают. Раздавал свой порт этого проекта на турниджи всем желающим. Желающих получить исходники оказалось всего 5 человек, из них никто в то что было ничего своего не добавил, не исправил и не выложил. И смысл был выкладывать? Из 5 двое спасибо сказали, трое помоев налили.

Ну и шкурный вопрос… Вы на других сайтах чем-нибудь поделились? Я не говорю про результаты, хотябы востребованные идеи… Самодельный передатчик с дисплеем на и2с я показал первый раз тут 6 лет назад, и только года через 3 иглб3 кажется спросил что за дисплей и как его поставить. Я описал подключение и инициализацию в двух словах и человек сам за сутки сделал, не доставая вопросами и не клянча исходники.

ВитГо

Алексей, “самодельный передатчик” в том виде как он написан сейчас - путь в тупик…
поэтому в нем что либо дописывать особого смысла нет…
а попробовав его переписать - уже получим другой проект 😃

опять таки большой вопрос - а нужен ли новый проект под это железо ? - большинству достаточно того функционала что уже есть, а остальные уже перепрыгнули на 9ex

кстати из вашего проекта под турнигу я брал драйвер дисплея… и он еще долго трудился в составе VCoder’a, только спустя где то год я его частично переписал в плане инициализации, и полностью в плане графических примитивов…

так что выкладывание исходников в любом виде всегда полезно для кого то…
ну а кто не может без поноса - тот пусть идет нах… и нечего о нем даже задумываться…

Aleksey_Gorelikov
ВитГо:

опять таки большой вопрос - а нужен ли новый проект под это железо ? - большинству достаточно того функционала что уже есть, а остальные уже перепрыгнули на 9ex

Под это железо ИМХО не нужно уже ничего. На этом железе и этом проекте останутся исключительно почитатели паяльника и именно этого проекта. Функционала действительно на 99% достаточно, добавить телеметрию для фрскаев, возможно переписать модуль оранджа - не шибко трудно и кому это надо - думаю сделает обязательно. У мну фрская нет и я этим заниматься не планирую. Кол-во каналов увеличивается не особо проблемно. Модули по уарту - тоже кстати уже года 4 как в этом проекте работают у некоторых. Только распространения особенного не получали ввиду редкости модулей.
За что я люблю этот проект (в любой реинкарнации) - за то что в нем работают мои идеи. 😃 Он ужастно простой, жудко логичный и лично у меня не возникает проблем ни с настройкой моделей, ни с дополнением фунционала. И я его ни на что не променяю.
Переписать заново - действительно проще написать и сделать новый. От моих модификаций - исходная печатная плата уже превратилась в макетку с кучей перерезанных дорожек и напаянных перемычек. Скорее всего я просто выкину плату и воткну в аппу когда-нибудь просто макетку с дип-40 процом (либо 644, либо 1284, в зависимости от необходимых ресурсов. Кстати последний проц - самый интересный из атмег! 😃 Гляньте сколько у него РАМ!) Возможно эта модификация - расширит рамки проекта людьми, стесняющимися поверхностного монтажа, ЛУТ и прочей магии. Но идеология ГУИ останется таже! Наглядно и просто. И никакие инструкции не нужны и понятно все.
Но всем, кто интересуется проектом именно чтобы летать - я рекомендую турниджи+ер9 как бютжетный вариант или бренды. Многие надеются съэкономить - это ошибка. Экономнее турниджи - не будет. Делать железо самому - уже посути абсурд (если это не хобби).

ВитГо:

кстати из вашего проекта под турнигу я брал драйвер дисплея… и он еще долго трудился в составе VCoder’a,

Приятно, но вся графика (да и весь проект по сути) это этот “самодельный передатчик” от МСВ с легкими корректировками под другое железо. Приятно, что время было потрачено не зря и кому-то это пригодилось. Из постоянно летающих на том, что получилось у меня - знаю только 2 человек. Собственно, по-этому и забросил. ЕР9х фунциональнее хоть и чуть сложнее в плане понимания. За-то уже “общепризнана”. На твоем кодере много народу летает??? Статистика есть?

RW9UAO

я летал на фокус/мсв пиленном под турнигу. экран применял свой 128х64. два года летал. потом сделал на 3310 экране, полгода летал. продал парнишке за бесценок, он несколько полетов успел до снега. ждет сезона.

ВитГо
Aleksey_Gorelikov:

На твоем кодере много народу летает??? Статистика есть?

по моей статистике около 7 человек… ну еще я 😃)

vcoder переписывать тоже безтолку - генерация сигналов сделана по принципу самодельного кодера - так не правильно…
сейчас пишу новую прошивку, но она будет уже наверное для гурманов, так как многое будет реализовано не так как в уже привычном самокодере или vcoder или er9x

драйвер дисплея мсв неудачен в плане быстродействия, все таки попиксельно буквы рисовать это жесть 😃))

вот вывод символа с попиксельными координатами lcd_X, lcd_Y
это для турниги, но в принципе поставьте свое разрешение экрана по горизонтали\вертикали и пойдет для любого другого…
буфер на дисп выкидывать обычным образом…

void LCD_char(unsigned char ch, unsigned char mode) { // Вывод символа
const unsigned char *fontpointer;

if (ch<127) { // знакогенератор латиницы
fontpointer=NewFontLAT; ch=ch-32; }
else { // знакогенератор русских букв
fontpointer=NewFontRUS; ch=ch-192;}

if (mode==2) mode=lcd_blink; // если нужно отображать в режиме мерцания - то берем значение инверсии из lcd_blink

unsigned char lcd_YP=7- (lcd_Y & 0x07); // битовая позиция символа в байте
unsigned char lcd_YC=(lcd_Y & 0xF8)/8; // байтовая позиция символа на экране

for (unsigned char x=0; x<6; x++) {

unsigned char temp=pgm_read_byte(fontpointer+ch*6+x);

if (mode!=0) {
temp=255-temp;
if (lcd_Y>0) LCD_pixel(lcd_X, lcd_Y-1, 1); // если печать в режиме инверсии - сверху отчертим линию
}

temp&=0x7F;

lcd_buff[lcd_YC*128+lcd_X]=lcd_buff[lcd_YC*128+lcd_X] + (temp<<(7-lcd_YP)); // печать верхней части символа

if (lcd_YP<7) lcd_buff[(lcd_YC+1)*128+lcd_X]=lcd_buff[(lcd_YC+1)*128+lcd_X] + (temp>>(lcd_YP+1)); // печать нижней части символа

lcd_X++;
if (lcd_X>126) return;
}
}

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

void LCD_line(unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2, char mode) { // процедура рисования линии
signed char dx, dy, sx, sy;
unsigned char x, y, mdx, mdy, l;

dx=x2-x1; dy=y2-y1;

if (dx>=0) { mdx=dx; sx=1; } else { mdx=x1-x2; sx=-1; }
if (dy>=0) { mdy=dy; sy=1; } else { mdy=y1-y2; sy=-1; }

x=x1; y=y1;

if (mdx>=mdy) {
l=mdx;
while (l>0) {
if (dy>0) { y=y1+mdy*(x-x1)/mdx; }
else { y=y1-mdy*(x-x1)/mdx; }
LCD_pixel(x,y,mode);
x=x+sx;
l–;
}
} else {
l=mdy;
while (l>0) {
if (dy>0) { x=x1+((mdx*(y-y1))/mdy); }
else { x=x1+((mdx*(y1-y))/mdy); }
LCD_pixel(x,y,mode);
y=y+sy;
l–;
}
}
}

дальше несколькими подпрограммами добавляется печать токенов - это когда один байт указывает на строку которую нужно напечатать, наверное для самокодера не самое нужное (в меге 128 дофига места), но для турниги уже актуально
вызывать LCD_str - она уже сама разбирает что нужно напечатать и в каком порядке вызвать…

void LCD_token(unsigned char tknum, unsigned char mode) { // печать токена по номеру
char *tokenpointer;

tokenpointer=(char*)pgm_read_word(&(token_tbl[tknum])); // получим адрес указателя на строку (адрес элемента массива)

while (pgm_read_byte(tokenpointer)!=‘\0’) {
LCD_char(pgm_read_byte(tokenpointer), mode);
tokenpointer++;
}
}

void LCD_prn(unsigned char chr, unsigned char mode) { // печать символов на дисплее с кодами токенов
if ((chr>99) & (chr<192)) LCD_token(chr-100,mode);
else LCD_char(chr, mode);
}

void LCD_str(char *str, unsigned char mode) { // печать строки из Flash

if (mode==2) mode=lcd_blink;
if ((mode==1) & (lcd_X>0))
for (char y=0;y<8;y++) LCD_pixel(lcd_X-1, lcd_Y+y-1, 1); // если печать в режиме инверсии - сбоку от строки отчертим линию

while (pgm_read_byte(str)!=‘\0’) {
LCD_prn(pgm_read_byte(str), mode);
str++;
}
}

массив токенов описан по следующей схеме

char model[] PROGMEM = “МОДЕЛИ”;
char reset[] PROGMEM = “СБРОС”;
char load[] PROGMEM = “ЗАГРУЗИТЬ”;
char save[] PROGMEM = “ЗАПИСАТЬ”;

char channel[] PROGMEM = “КАНАЛ”;

char *token_tbl[] PROGMEM = { // таблица адресов токенов
model,
reset,
load,
save,
channel

};

в общем как говорит один мой знакомый - “нет предела совершенству”
поэтому драйвер дисплея у меня и переписался сам собой…

осталось найти в себе силы переписать остальное 😃