micro / minimOSD для NAZA
общего у minimOSD и minnazaOSD только плата, микропрограмма и соответственно алгоритм работы совершенно другой. То что minimOSD и АРМ могут обмениваться данными - да это так, iOSD и naza v2 (v1) - да, minnazaOSD и naza v2 (lite, v1) - нет
То что minimOSD и АРМ могут обмениваться данными - да это так, iOSD и naza v2 (v1) - да, minnazaOSD и naza v2 (lite, v1) - нет
Понято, принято. Для понимания процессов именно это и было нужно
Александр, в Вашем возрасте нужно вести себя корректнее, даже в форуме . Вас этому не учили?
На себя посмотрите, для начала:
Почитай соседние ветки (minimOSD) , я тебя прошу. И умнее будешь выглядеть , и вопросов будет меньше
Так проще?
Вы умнее точно не выглядите. И намеки на лету точно не ловите.
В случае с АПМ то-же самое. Данные с ЖПС приходят напрямую в контроллер а не в ОСД, поэтому он уже и отдает всю информацию в ОСД. Все логично.
Есть USB для прошивки подвеса tarot t2d.
Возможно ли его использовать для настройки и прошивки minimOSD. Просто есть плата, нету FTDI.
Если возможно, то как подключить? никто не пробовал?
Там стоит pl2303hx, судя по даташиту это тот же ftdi, так что пойдет.
Подключение: если расположить плату вверх микросхемой и вниз разъемом (usb разъем вверху), то слева направо 1- RX, 2- TX, 3- пустой, 4- масса.
Пришла следующая идея.
Начинать отсчет времени (тот который на экране показывает) когда коптер взлетает. Ну а взлет соответственно контролировать по газу > 50 процентов. Идея навеяна тем, что обычно от включения коптера и осд до реального взлета проходит от 2-х минут и больше.
Парни, кто в коде разобрался может сделаете соответствующий мод? Думаю будет всем полезен… кто заюзал пин газа.
PS. Если сложно реализовать не начинать отсчет времени с момента загрузки ОСД, можно реализовать однократный сброс времени при первичном газе. Подумалось, что так может быть проще.
однократный сброс времени при первичном газе. Подумалось, что так может быть проще.
этот мод пол года назад сделал, вот: www.rcgroups.com/forums/showthread.php?t=2020638&p…
Будет ли реализовано GPS+компас для правильного рисования стрелки “домой”?
Или надежды мало?
мне кажется этот вопрос нужно задавать автору проекта, например на рцгрупс. И чем чаще он будет его слышать, тем больше вероятность что он его услышит. Моих знаний для такого мода не достаточно 😦
как-то даже обидно мне стало после предыдущего поста, поэтому собрался и сделал магнитный компас 😃 Алгоритм взят отсюда www.rcgroups.com/forums/showthread.php?t=1995704 поэтому как и в оригинале компенсации наклона нет!
Итак, манипуляций много, сначала процедуру void parse_dji_mag из GPS_DJI.ino:
void parse_dji_mag(struct DJI_MAG *mag)
{
#ifdef DJI_HEADING_FROM_MAG
int mask = mag->mask;
short x = decodeShort((byte*)&mag->magX, mask) ^ 0x0100;
short y = decodeShort((byte*)&mag->magY, mask) ^ 0x0100;
float heading = -atan2(y, x) * 180.0 / M_PI;
if (heading < 0.0) heading += 360.0;
// TODO add magnetic declination
// TODO add tilt compensation
GPSValues.Heading = heading;
#endif
}
заменяем на такой код:
int16_t decodeShortMag(uint16_t mag16, uint8_t mask)
{
union { uint16_t s; uint8_t b[2]; } val;
uint8_t byte0=(mag16&0x00FF);
uint8_t byte1=(mag16&0xFF00)>>8;
val.b[0] = byte0 ^ mask;
val.b[1] = byte1 ^ mask;
return val.s;
}
void parse_dji_mag(struct DJI_MAG *mag)
{
#ifdef DJI_HEADING_FROM_MAG
uint8_t mask = mag->uk01;
mask = (((mask ^ (mask >> 4)) & 0x0F) | ((mask << 3) & 0xF0)) ^ (((mask & 0x01) << 3) | ((mask & 0x01) << 7));
int16_t x = decodeShortMag(mag->magX, mask);
int16_t y = decodeShortMag(mag->magY, mask);
if(x > magXMax) magXMax = x;
if(x < magXMin) magXMin = x;
if(y > magYMax) magYMax = y;
if(y < magYMin) magYMin = y;
headingNc = -atan2(y - ((magYMax + magYMin) / 2), x - ((magXMax + magXMin) / 2)) * 180.0 / M_PI;
if(headingNc < 0) headingNc += 360.0;
GPSValues.Heading = headingNc;
#endif
}
в GPS_DJI.h после строки float get_dji_down(void); добавляем строку:
int16_t magXMin;
int16_t magXMax;
int16_t magYMin;
int16_t magYMax;
double headingNc;// heading (not tilt compensated in degrees
ну и последнее в OSD_Config.h после строки #define GPS_PROTOCOL_DJI добавляем строку:
#define DJI_HEADING_FROM_MAG
Алексей, отличная работа! Может еще можно выложить готовые исходники со всеми модами?
ты сначала попробуй а потом “отличная работа” 😃 Я лично еще толком не тестил, только в руках коптер поносил по квартире и все
Все исходники выложить не могу т.к. у меня от оригинала там уже рожки и ножки остались, многое под себя переделал. Но пару файлов где максимальное количество изменений GPS_DJI.ino и GPS_DJI.h выложу
А что еще под себя переделал, такого что остальным не подойдет?
Сори за нубство, не вдавался в копание исходников, просто заливал hex и шрифты.
Поправьте, где не прав:
Хочу проверить например мод alezz-а со стрелкой по компасу.
Имею уже действующую ОСД, подключение “easy”.
- Скачиваю файл MinNazaOsd_r75.zip (еле раскопал, может есть свежее версия?).
- Изменяю\заменяю GPS_DJI.ino и GPS_DJI.h.
- С помощью ардуиновской IDE напрямую компилирую и заливаю прошивку.
Хочу подключить еще напряжение батареи (только это, без остальной пайки на плату), без датчика напряжения, напрямую к батарее.
4. Нужен делитель с другими резисторами. 4,7к и 100к (примерно в 20 раз понизим напряжение)
5. Прямо в файле FlightBatt.h правлю параметр #define VOLT_DIV_RATIO, подбирая калибровку напряжения.
6. Компилирую\заливаю\проверяю значение напряжения на ОСД. При необходимости повторяю п.5-6.
А что еще под себя переделал, такого что остальным не подойдет?
кому то пойдет, кому-то нет. Например: у меня включен радар, но отключена калибровка напряжение батареи (коэф подбирал руками и зашил прямо в исходник), при уровне газа >30% переключаются панели
- Скачиваю файл MinNazaOsd_r75.zip (еле раскопал, может есть свежее версия?).
- Изменяю\заменяю GPS_DJI.ino и GPS_DJI.h.
- С помощью ардуиновской IDE напрямую компилирую и заливаю прошивку.
- да, r75 самая новая официальная
- да, плюс добавляешь строку включения компаса в OSD_Config.h (см. выше)
- компилируешь ардуиновской IDE, заливаешь в ОСДшку конфигуратором идущим в комплекте минназаосд
при уровне газа >30% переключаются панели
А для чего это?
А для чего это?
да баловство по сути. Я описывал такой мод в этой теме раньше, интересно поищи
Ставлю ардуино 1.0.6.
Загружаю minNAZAOSD.ino из комплекта MinNazaOsd_r75.
Жму проверить\скомпилировать.
Получаю:
This report would have more information with
“Show verbose output during compilation”
enabled in File > Preferences.
Arduino: 1.0.6 (Windows XP), Board: “Arduino Nano w/ ATmega328”
In file included from ArduCam_Max7456.cpp:4:
ArduCam_Max7456.h:78: error: expected class-name before ‘{’ token
ArduCam_Max7456.h:84: error: ‘uint8_t’ has not been declared
ArduCam_Max7456.h:84: error: ‘uint8_t’ has not been declared
ArduCam_Max7456.h:87: error: ‘uint8_t’ has not been declared
ArduCam_Max7456.h:90: error: ‘uint8_t’ has not been declared
ArduCam_Max7456.h:90: error: ‘uint8_t’ has not been declared
ArduCam_Max7456.h:97: error: ‘size_t’ does not name a type
ArduCam_Max7456.h:98: error: ‘uint8_t’ has not been declared
ArduCam_Max7456.h:99: error: ‘BetterStream’ has not been declared
ArduCam_Max7456.h:101: error: ‘uint8_t’ does not name a type
ArduCam_Max7456.cpp: In member function ‘void OSD::init()’:
ArduCam_Max7456.cpp:38: error: ‘video_mode’ was not declared in this scope
ArduCam_Max7456.cpp: In member function ‘void OSD::setMode(int)’:
ArduCam_Max7456.cpp:96: error: ‘video_mode’ was not declared in this scope
ArduCam_Max7456.cpp:97: error: ‘video_center’ was not declared in this scope
ArduCam_Max7456.cpp: In member function ‘int OSD::getMode()’:
ArduCam_Max7456.cpp:110: error: ‘video_mode’ was not declared in this scope
ArduCam_Max7456.cpp: In member function ‘int OSD::getCenter()’:
ArduCam_Max7456.cpp:125: error: ‘video_center’ was not declared in this scope
ArduCam_Max7456.cpp: At global scope:
ArduCam_Max7456.cpp:149: error: prototype for ‘void OSD::setPanel(uint8_t, uint8_t)’ does not match any in class ‘OSD’
ArduCam_Max7456.h:84: error: candidate is: void OSD::setPanel(int, int)
ArduCam_Max7456.cpp: In member function ‘void OSD::openPanel()’:
ArduCam_Max7456.cpp:164: error: ‘row’ was not declared in this scope
ArduCam_Max7456.cpp:164: error: ‘col’ was not declared in this scope
ArduCam_Max7456.cpp: In member function ‘void OSD::closePanel()’:
ArduCam_Max7456.cpp:193: error: ‘row’ was not declared in this scope
ArduCam_Max7456.cpp: At global scope:
ArduCam_Max7456.cpp:199: error: prototype for ‘void OSD::openSingle(uint8_t, uint8_t)’ does not match any in class ‘OSD’
ArduCam_Max7456.h:90: error: candidate is: void OSD::openSingle(int, int)
ArduCam_Max7456.cpp:223: error: no ‘size_t OSD::write(uint8_t)’ member function declared in class ‘OSD’
ArduCam_Max7456.cpp:238: error: prototype for ‘void OSD::control(uint8_t)’ does not match any in class ‘OSD’
ArduCam_Max7456.h:87: error: candidate is: void OSD::control(int)
ArduCam_Max7456.cpp:255: error: prototype for ‘void OSD::write_NVM(int, uint8_t*)’ does not match any in class ‘OSD’
ArduCam_Max7456.h:98: error: candidate is: void OSD::write_NVM(int, int*)
:(
проверил компас в поле - все работает идеально, по крайней мере при нормальных углах наклона рамы:
проверил компас в поле - все работает идеально
Опубликуйте код на рсгрупп, пусть тестируют. Напишите автору, спросите почему он этого не сделал, может есть какие то тонкости, не учтенные вами.
Загружаю minNAZAOSD.ino из комплекта MinNazaOsd_r75. Жму проверить\скомпилировать.
В этой теме, поищите, есть ссылка на видео как использовать проект в Ардуино. Сделаете как там показано, начнет компилировать.
Опубликуйте … Напишите … спросите
звучит как приказ 😃 На самом деле на рцгрупс давным давно опубликовал, а на вопрос “почему” могу ответить и сам. На тот момент когда автор активно занимался минназаОСД протокол компаса еще не был взломан, а когда взломали - он уже на ОСДшку забил, последняя правка кода была в ноябре 2013г.
звучит как приказ
Ни в коей мере. Это было пожелание 😃
На самом деле на рцгрупс давным давно опубликовал
Что значит давно? Вы же только сегодня написали “как-то даже обидно мне стало после предыдущего поста, поэтому собрался и сделал магнитный компас”.
он уже на ОСДшку забил
Может у человека времени не хватает… А вы его простимулируете своим кодом.
“давно” значит несколько часов назад 😃 На самом деле будет JR63 продолжать проект minnazaosd дальше или нет, есть у него время или нет, не особо и важно. На теперешнем этапе это уже вполне добротный и полноценный продукт. А уж с магнитным компасом и подавно 😃 Хотя если JR63 вставит мой код в основной проект, безусловно за
Всем привет !!! Копался в зап. частях и попалось ОСД от Кролика 2.
Само сабой появился вопрос . На базе его реально сварганить весь этот
модуль и подключить к Назе лайт.
для самых ленивых, кто хочет посмотреть стрелку домой на основе компаса, но не хочет компилить исходники выкладываю свою готовую прошивку: