Activity
И так, наконец-то приехал мне нунчак и WMP, праздники сделали свое дело, шла посылка больше месяца. Также раньше был куплен контроллер Arduino mini Pro. Посидел несколько вечеров, поковырялся, и понял, что есть проблемка, не могу связать нунчак и ардуино. До этого усиленно юзал тему про MultiWii в коптерной теме. Вроде все просто, но в тоже время и не все понятно. В сети нашел множество проектов подключения нунчака для управления сервой, что в принципе мне и нужно. Вот например тут www.windmeadow.com/node/42 . Но у меня данный код не заработал, тупо скапировал и попытался залить в ардуино, выскочило пару ошибок, исправил их. Суть в другом. В мониторе вижу, что Ардуинка пытается общаться с нунчаком, но все данные с нунчака с акселерометра и с джойстика идут в виде чисел 255 и 1-чек для двух кнопок. Такое впечатление, что все-таки не работает нунчак или слишком большая скорость для клона нунчака. Поэтому прошу помощи, кто может посмотреть и подправить код, где ошибка. И еще в MultiWii есть такое понятие в коде, как уменьшение скорости передачи в шине I2C, как в моем случае можно уменьшить скорость? Вот код для подключения нунчака к ардуино из ссылки выше, буду очень признателен в помощи:
#include <Wire.h>
#include <string.h>
#undef int
#include <stdio.h>
uint8_t outbuf[6]; // array to store arduino output
int cnt = 0;
int ledPin = 13;
void
setup ()
{
beginSerial (19200);
Serial.print (“Finished setup\n”);
Wire.begin (); // join i2c bus with address 0x52
nunchuck_init (); // send the initilization handshake
}
void
nunchuck_init ()
{
Wire.beginTransmission (0x52); // transmit to device 0x52
Wire.send (0x40); // sends memory address
Wire.send (0x00); // sends sent a zero.
Wire.endTransmission (); // stop transmitting
}
void
send_zero ()
{
Wire.beginTransmission (0x52); // transmit to device 0x52
Wire.send (0x00); // sends one byte
Wire.endTransmission (); // stop transmitting
}
void
loop ()
{
Wire.requestFrom (0x52, 6); // request data from nunchuck
while (Wire.available ())
{
outbuf[cnt] = nunchuk_decode_byte (Wire.receive ()); // receive byte as an integer
digitalWrite (ledPin, HIGH); // sets the LED on
cnt++;
}
// If we recieved the 6 bytes, then go print them
if (cnt >= 5)
{
print ();
}
cnt = 0;
send_zero (); // send the request for next bytes
delay (100);
}
// Print the input data we have recieved
// accel data is 10 bits long
// so we read 8 bits, then we have to add
// on the last 2 bits. That is why I
// multiply them by 2 * 2
void
print ()
{
int joy_x_axis = outbuf[0];
int joy_y_axis = outbuf[1];
int accel_x_axis = outbuf[2] * 2 * 2;
int accel_y_axis = outbuf[3] * 2 * 2;
int accel_z_axis = outbuf[4] * 2 * 2;
int z_button = 0;
int c_button = 0;
// byte outbuf[5] contains bits for z and c buttons
// it also contains the least significant bits for the accelerometer data
// so we have to check each bit of byte outbuf[5]
if ((outbuf[5] >> 0) & 1)
{
z_button = 1;
}
if ((outbuf[5] >> 1) & 1)
{
c_button = 1;
}
if ((outbuf[5] >> 2) & 1)
{
accel_x_axis += 2;
}
if ((outbuf[5] >> 3) & 1)
{
accel_x_axis += 1;
}
if ((outbuf[5] >> 4) & 1)
{
accel_y_axis += 2;
}
if ((outbuf[5] >> 5) & 1)
{
accel_y_axis += 1;
}
if ((outbuf[5] >> 6) & 1)
{
accel_z_axis += 2;
}
if ((outbuf[5] >> 7) & 1)
{
accel_z_axis += 1;
}
Serial.print (joy_x_axis, DEC);
Serial.print (“\t”);
Serial.print (joy_y_axis, DEC);
Serial.print (“\t”);
Serial.print (accel_x_axis, DEC);
Serial.print (“\t”);
Serial.print (accel_y_axis, DEC);
Serial.print (“\t”);
Serial.print (accel_z_axis, DEC);
Serial.print (“\t”);
Serial.print (z_button, DEC);
Serial.print (“\t”);
Serial.print (c_button, DEC);
Serial.print (“\t”);
Serial.print (“\r\n”);
}
// Encode data to format that most wiimote drivers except
// only needed if you use one of the regular wiimote drivers
char
nunchuk_decode_byte (char x)
{
x = (x ^ 0x17) + 0x17;
return x;
}
Спасибо, Дмитрий!
Насчет магнитов. Вчера написал письмо в магазин, что дал ссылку Роберт. Ответили оперативно. Делают любые магниты по чертежам заказчика, время изготовления 5-9 недель. Минимальная сумма заказа 1,000$. Так что, снова упираемся в целесообразность.
Спасибо! Тоже им написал, посмотрим что ответят если поймут мой английский 😃 ! А что у Вас за проект? Где можно посмотреть?
Роберт, спасибо за ссылку. Очень интересно. Можно попробовать с ними пообщаться. Посмотрим, что по цене получится. Если честно искал только отечественных производителей. И не стоит забывать, что цена дана на штучные изделия, если речь зайдет о крупных партиях, цена значительно упадет, так мне сказали.
Да, кстати так и сделал на нескольких роторах, после того как была повреждена родная обмотка, применил обычный рыболовный шнур из рыболовного магазина, толщина 0.15-0.2 мм, пропитал суперклеем и связал кончики нитки, мотор работает до сих пор!
Алексей, речь видимо про аутранеры? Там думаю, вообще не проблема для магнитов, они прижимаются к ротору, а в инранере магниты работают на отрыв от ротора! В случае поломки одного магнита, ротор думаю сложнее восстановить будет.
Спасибо!
Спасибо!
Что-то у меня все ссылки кроме последней битые!
Сергей, все верно. Но я бы оставил пластиковый спур, при правильном зазоре, он отходит очень долго, не тратьте деньги. Лучше купить запасной спур. У меня был случай, как раз на конверсии Т-Махха, дал сыну погонять, он тогда еще не соображал особо, или медленно ехал или тапка в пол. Вообщем вылетел с трассы в траву, трава по пояс, вообщем пока я успел у него взять пульт, он столько травы намотал на оси, что срезало пластиковый спур. А с металлическим спуром порвал бы коробку 100%. К тому же, сейчас на многих конверсиях уже как эталон идут заводские пластиковые спуры.
Александр, спасибо!
Александр, то есть я правильно понял, в сервах убираются упоры и они работают как мотор-редуктор, так? Чем питаете сервы в вашем случае? И для реализации движения вперед необходимо микширование?
Герман, видимо речь про Реву? насколько я помню у РЕВЫ были такие спуры, и модуль 1, сам на такой позже перешел. А на Т-Маххе, спуры на большее число зубов, за 50 и модуль 0.8, если не ошибаюсь.
Сергей, все будет зависеть от того, что тебе нужно. Какой у тебя мотор, какую хочешь скорость и т.д. там много факторов, посмотри у меня в дневнике еще одну запись про электроконверсии, там статейки я писал про конверсии, будет очень полезно.
Герман, спасибо за дополнение, тоже хорошее решение. Еще хотел дополнить, что я не своем Т-Маххе оставил слиппер, только подтянул его посильнее, проблем с этим никаких не заметил.
Немного поработал сегодня своим ЧПУ ;D, сделал стойку для крепления маленькой сервы и верхнюю планку, к которой будет крепиться весь подвес к качалке большой сервы. Добавил фото.
Доделал нижнюю часть подвеса, фото выше. Вес облегченной конструкции с сервой составил 70 гр, до облегчения было 86гр.
- С успехом!!! 😃
На самолетах и коптерах стабилизация - более-менее держит сам аппарат на курсе, не убирая никуда тряску. Используется в паре или внутри автопилота, чтобы модель могла сама ориентироваться в пространстве и находить дорогу “домой”; но никак не для плавности съемки!
То есть, вот как на видео ниже, Вы не считаете нормальной стабилизацией видео?
А я вот мечтаю такого добиться, на своем подвесе.
Уточни: у неё есть встроенная электронная стабилизация или сглаживание - имеется ввиду, что при угле 180 градусов не очень лезет в глаза?
Да, не лезет в глаза, только там угол, если не ошибаюсь 127 градусов, к сожалению никакой стабилизации в ГоПрошке нет, да и не особо она нужна там за свои деньги.
Пример
Да такие конструкции встречал, но он заточен именно на руку, в моем случае подвес надо будет выносить на штанге, да и вес подвеса как в примере будет очень большой.
Цель моего подвеса не максимально стабильная картинка, к этому тоже надо стремиться, а чтобы максимально долго движущаяся модель находилась в близком расстоянии от камеры, вот пожалуй и все. Все остальное конечно будет делаться видео монтажем. Вот тут мое видео, пробовал снимать ГоПро и потом замедлять видео, там начиная с 1-й минуты есть прыжки, снято было с руки, пытался отслеживать модель, но расстояние было около 2-х метров до модели. Вот такой эффект, только еще для более ближней съемки я хочу получить.
а потом это дело будет в свободном доступе? или это хлеб и претендовать на халяву не стоит?
Да, конечно, будет в свободном доступе, на хлеб зарабатываю инженером на заводе, это все хобби 😃, в принципе, все просто, буду выкладывать фото, если все заработает, могу снять размеры, без проблем.
Гоупро - обычная или HD? Какое разрешение видео дает?
Кстати стабилизация реально помогает только двух типов: качественным механическим гироскопом (стоит 100500 денег), либо электронная или постобработка. Постобработка для компенсации тряски вообще всегда помогает, но нужен запас по углу зрения и разрешению, чтобы результат был смотрибелен.
Стабилизация при помощи электронной следящей системы - лажа, работает рывками и недостаточно точно, как минимум пост-обработку в конце все равно делать придется.
Камера HD мотоспорт, максимальное разрешение 1080, но 60 кадров в секунду снимает максимум 960. Насчет стабилизации - не думаю что все так сложно! На самолетах и коптерах же подвесы применяются с успехом, тут не думаю, что в чем-то есть разница. Камера не плохо сглаживает тряску.
Вообще по механике не вижу проблем, подвес уже почти сделал. Проблему вижу для себя - это стабилизация. Думаю реализовать все на Ардуинке + WMP +Нунчак. С нунчака хочу задействовать джойстики и кнопки, а с WMP гироскоп. Вот тут придется немного поупражняться, с нунчаком уже разобрался. Так что, вот пока такая концепция высвечивается.
Эдуард, а можно все-таки по подробнее про лампочку-тестер узнать?