управление моделью с помощью Wii Nunchuk

kukabarra

попробовал подключить wii remote + nunchuk через ppjoy и погонять на симуляторе (RealFlight G4.5) - понравилось.

теперь хочу сделать то-же самое на настоящем самолетике.

самолетик - для начала Firebird Phantom 37МГц. новичковый, и запчасти на него есть (второй такой-же со сгоревшей платой приемника-всё-в-одном).

со снятием сигнала с передатчика - понятно. от микросхемы к ВЧ идет единственная дорожка, по которой идет PPM. подал его на китайский PPM-USB-провод - все 3 канала видятся и работают.

с формированием и подачей своего PPM на ВЧ часть - пока не понятно. не пробовал еще.

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

с подключением нунчака к ATMEG’е по i2c, снятием данных и рассчетом roll/pitch по акселерометру - понятно и работает.

какие еще проблемы могут возникнуть?

кстати, сейчас жду посылку с новым самолетиком и вот этим пультом HK-T6A. как там с входом PPM или другим тренерским ВХОДОМ ?
не хотелось бы лезть с паяльником в новый пульт.

v61
kukabarra:

с подключением нунчака к ATMEG’е по i2c, снятием данных и рассчетом roll/pitch по акселерометру - понятно и работает.

можно поподробнее?
Тоже понравилась идея управлять моделью с помощью нунчака, только не хватает мозгов реализовать конвертер i2c в PPM…

а пульт такой есть у меня, там на радиомодуль чистый PPM идет, и на тренерском разъеме он есть

P.S. мой телефон 519-549, пообщаемся?

kukabarra

подробнее - ну например
frank.circleofcurrent.com/…/nunchuk_joystick.htm - подробное описание как подключить wii nunchuk в качестве usb-джойстика к компу + прошивка для 168й меги в исходниках. правда только оси, без рассчетов roll/pitch. есть ссылки на описание протокола.

ну или здесь - www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=124888903… - описание подключения и работы с nunchuk и motion+ (много не нужного в данном случае, но и нужного хватает) для arduino (который по сути - та-же мега168/328 с минимальной обвязкой).

гуглом без проблем находится вся нужная информация - ее навалом.

пока читаю положение по i2c, обсчитываю roll/pitch и скидываю на ком-порт в текстовом виде.

PPM еще нету, буду разбираться как его генерить. скорее - просто несколько раз выставлять таймер на нужное время и дрыгать ножкой в прерывании.

мой макет пока выглядит вот так:

когда доведу до ума софтовую часть - придумаю что-нить с платкой. или просто обмотаю пленкой и в карман 😆

kukabarra

таки сделал 3х-канальный PPM выход - roll + pitch + Y стика.
выставил отображение как на пульте самолетика.

через PPM-USB-кабель - работает.
через smart propo plus - работает. “градусник” каналы видит.

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

на sound-card oscilloscope они совпадают (настоящего осцилографа нету 😦 ). интервалы между посылками замерены с пульта и выдерживаются до сотых долей мс.

0 - 0.3мс
1 - 0.7-1.7мс (1.2мс середина) - первый канал
0 - 0.3мс
1 - 0.7-1.7мс (1.2мс середина) - второй канал
0 - 0.3мс
1 - 0.7-1.7мс (1.2мс середина) - третий канал
0 - 0.3мс
1 - остальное время до 25мс (или до 15мс, если “анти-крэш” выключен с пульта).

напряжение у меня на схеме - 3.4в, на пульте контроллер запитан от 3в стабилизатора.

в чем может быть трабл?

anonymice

простите, что вмешиваюсь, но попробуйте написать fmkit, он точно летает с нунчаком

v61

Александр скорее всего видел тот проект…

msv

Период PPM вообще-то 20мс… Хотя обычно это не критично…
Может приемник хочет инверсный PPM? Или категорически ждет в PPM определенное кол-во каналов…

kukabarra
msv:

Период PPM вообще-то 20мс… Хотя обычно это не критично…
Может приемник хочет инверсный PPM? Или категорически ждет в PPM определенное кол-во каналов…

кроме PPM-выхода у меня есть еще и простейший PPM-вход, (который выдает интервалы импульсов и пауз, без обработки) - им и смотрел.

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

и с ТОЧНО таким-же периодом.
там когда нажимаешь на правый стик, пульт переключается на 15мс период (светодиод на пульте начинает мигать), а самолетик реагирует на канал элеронов отклонением не одной (как в 25мс режиме), а обоих половинок V-хвоста.

PPM-USB-кабель на эти переключения не реагирует никак.

вечером попробую сделать повтор сигнала контроллера пульта через свой контроллер.

если самолетик будет на него реагировать - значит что-то не то с моим PPM, если нет - значит с электронной частью (что гораздо хуже, т.к. с электроникой у меня не очень).

anonymice:

простите, что вмешиваюсь, но попробуйте написать fmkit, он точно летает с нунчаком

с самим нунчаком всё понятно. непоняты особенности приемника данного конкретного самолетика.

kukabarra

таки работает.

качество видео, конечно, отвратное, но ничего лучше телефоном снять не получается.

чуть позже выложу исходники прошивки, если кому интересно.

скорее всего на днях испытаю в полете, если ветра не будет.

v61
kukabarra:

чуть позже выложу исходники прошивки, если кому интересно.

Конечно интересно!
Кстати, у нунчака есть провод “det”? (они есть 2-х вариантов)…

kukabarra
v61:

Конечно интересно!
Кстати, у нунчака есть провод “det”? (они есть 2-х вариантов)…

“det” - это что?

www.hardwarebook.info/Wiimote_Expansion_Port

если 3й пин - то да, есть.
он соединен с плюсом питания на платке нунчака, а не внутри разъема.

roman_fpv
kukabarra:

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

Интересно!
Тоже с удовольствием попробовал бы 😇

kukabarra

непонятно как, но я таки умудрился спалить свою единственную мегу168. 😃😦

где в Омске можно купить замену - непонятно. в ДАНе нету.

пришлось извращаться с тем что есть.

после обгрызывания всего, что можно обгрызть и замены i2c библиотеки на более простую - удалось впихнуть код в мегу48.
см. приложенный архив

работают 4 канала, в симе (через USB-PPM) вполне можно летать.
вживую пока не проверял.

Сообщение от Sodefi
на видео случаем не икар?

на видео Firebird Phantom
своеобразный самолетик.

нунчаковские оси отображаются в раскладку его пульта.

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

wj.zip

kukabarra

добавил экспоненты ( rconline.ru/modules/smartsection/item.php?itemid=6… )

доделал режим, когда по умолчанию пропускается PPM сигнал с пульта (подаваемый на PB0), а при нажатии на кнопку C нунчака - передается сигнал от него.

проверить вживую пока не получается - дождь и ветер 😦

wj15.zip

v61
kukabarra:

пришлось извращаться с тем что есть.

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

а сильно сложно поправить код под 8-ю мегу?
(их есть немного, а за 48-й ехать специально надо…😉)

kukabarra

таки попробовал вживую.

пока для проверки - тупо обмотал макетку несколькими слоями плени с пузырьками и накрыл 2мя пенопластовыми поддонами.

результат пока не радует 😦

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

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

ну и выяснилось, что за те два года, что самолет лежал без дела - аккумуляторы выдохлись. 2-2.5 минуты полного газа и срабатывает отсечка двигателя. если летать в пол-газа - тяги не хватает. 😦

еще выяснилось, что на московке-2 негде полетать - пришлось идти вдалека 😦

v61:

а сильно сложно поправить код под 8-ю мегу?
(их есть немного, а за 48-й ехать специально надо…😉)

по идее - не очень сложно.
но у меня с первого раза не получилось (тоже есть мега8 и первая мысль была переделать под нее) - не заработал i2c. непонятно почему.

попробую потом… тем более в 48й тесно - флэш занят на 97%

kukabarra

уменьшил экспоненты, уменьшил расходы - теперь самолет немного более управляем.

полетал минут 5 на школьном дворе

телефон, которым снималось - как всегда “на высоте”. на этот раз он даже повис в процессе съемки, так что у видео съехала скорость 😃

v61

неплохо…
ждем прошивку под 8-ю мегу 😉

kukabarra

то-ли моя мега8 косячная, то-ли еще что, но она в упор не хочет работать с i2c. хотя на этой-же прошивке в протеусе i2c дебагер показывает активность.

вот тестовая сборка для atmega8 - частота 8МГц, скорость UART - 38400, PPM выводится на PD7 + на UART выводятся данные по каналам.

если у кого есть желание - можете проверить.

SCL и SDA подтянуты 1.8кОм резисторам к 1 в самом нунчаке.

штатное питание нунчака - 3.3в.
от 5в он работает, но как это со временем скажется на его микросхемах - вопрос открытый. видел на форумах комментарии типа “уже давно так пользую, ничего не сгорело и не собирается”.

wj_m8_test.zip

cvy7

так все вроде нормально, i2c у m8, m48, m88 не отличается, если не считать реальных адресов и векторов, правда тактовая частота задана в 2 раза больше чем 100 кгц, но это не должно сказаться, активности совсем нет (осциллографом)?

kukabarra
cvy7:

так все вроде нормально, i2c у m8, m48, m88 не отличается, если не считать реальных адресов и векторов, правда тактовая частота задана в 2 раза больше чем 100 кгц, но это не должно сказаться, активности совсем нет (осциллографом)?

откуда “в 2 раза больше”?
в коде - 100кГц

если это про блок в twimaster.c

#ifndef F_CPU
#define F_CPU 4000000UL
#endif

/* I2C clock in Hz */
#define SCL_CLOCK  100000L

то F_CPU уже задана в Makefile и переопределяться не будет.

к тому-же, нунчак штатно использует FAST I2C (400кГц) и на частоту ему как-то так.
специально сейчас проверил на 48й меге - и на 400кГц работает нормально, и на 100кГц, и на 1кГц (данные приходят меееедленно).

нет осцилографа, чтобы посмотреть активность.

похоже, это просто глюк моей меги8. не единственный, кстати - у нее еще и на UART иногда мусор сыпется. просто так, сам по себе.
поскольку она у меня единственная - проверить больше не на чем.

PigTail

Чой то мне вспоминается, что встречалось в сети о косячности i2c у 8 меги в принципе, но подробностей не помню. Есть 168 и 168V в DIP, если надо для эксперементов, кидайте в личку адрес вышлю

kukabarra
PigTail:

Чой то мне вспоминается, что встречалось в сети о косячности i2c у 8 меги в принципе, но подробностей не помню. Есть 168 и 168V в DIP, если надо для эксперементов, кидайте в личку адрес вышлю

уже едет посылка с мегами328 и wii motion+ - до ее прихода особых экспериментов не предвидится.

так только, настройки подкрутить - но это и на 48й прекрасно делается.

v61

Если не секрет, откуда посылка с 328-ми?