ArduCopter Mega: порт на обычную Arduino (тестим)

Makkswell
SergDoc:

через терминал калибровка пройдёт…
только вот интересное замечание - к пирату правда не относится - почему встаёт так горизонт? или это такие 6050 китайские недопеченые? у меня на 6000-й что в вие, что в арду встаёт сразу практически ровно, даже не калиброваный - может в этом и кроется прикол, у кого летит, а у кого нет? хотя как вариант, могут ёмкости плоховатенькие у MPU-шки стоять?

через терминал дает MPU6000: Unable to get semaphore
а на счет горизонта, в вие и пирате версий помладше(2.9.1 например) все нормально показывает

SergDoc
Makkswell:

через терминал дает MPU6000: Unable to get semaphore

почистить eeprom?

omegapraim

Еще раз здравствуйте поковырял я файлик AP_GPS_NMEA.cpp и чет не нашел того что нужно. Какие пакеты используются я нашел а вот их ассоциацию и расшифровку нет((((

привожу для примера код из мультивия. Вопрос в том есть ли что то похожее. я обычно для правильной работы заменял (выделено жирным в коде).

#if defined(NMEA)
/* This is a light implementation of a GPS frame decoding
This should work with most of modern GPS devices configured to output NMEA frames.
It assumes there are some NMEA GGA frames to decode on the serial bus
Here we use only the following data :

  • latitude
  • longitude
  • GPS fix is/is not ok
  • GPS num sat (4 is enough to be +/- reliable)
  • GPS altitude
  • GPS speed
    */
    #define FRAME_GGA 1
    #define FRAME_RMC 2

bool GPS_NMEA_newFrame(char c) {
uint8_t frameOK = 0;
static uint8_t param = 0, offset = 0, parity = 0;
static char string[15];
static uint8_t checksum_param, frame = 0;

if (c == ‘$’) {
param = 0; offset = 0; parity = 0;
} else if (c == ‘,’ || c == ‘*’) {
string[offset] = 0;
if (param == 0) { //frame identification
frame = 0;
if (string[0] == ‘G’ && string[1] == ‘P’ && string[2] == ‘G’ && string[3] == ‘G’ && string[4] == ‘A’) frame = FRAME_GGA;
if (string[0] == ‘G’ && string[1] == ‘N’ && string[2] == ‘R’ && string[3] == ‘M’ && string[4] == ‘C’) frame = FRAME_RMC;
} else if (frame == FRAME_GGA) {
if (param == 2) {GPS_coord[LAT] = GPS_coord_to_degrees(string);}
else if (param == 3 && string[0] == ‘S’) GPS_coord[LAT] = -GPS_coord[LAT];
else if (param == 4) {GPS_coord[LON] = GPS_coord_to_degrees(string);}
else if (param == 5 && string[0] == ‘W’) GPS_coord[LON] = -GPS_coord[LON];
else if (param == 6) {f.GPS_FIX = (string[0] > ‘0’);}
else if (param == 7) {GPS_numSat = grab_fields(string,0);}
else if (param == 9) {GPS_altitude = grab_fields(string,0);} // altitude in meters added by Mis
} else if (frame == FRAME_RMC) {
if (param == 7) {GPS_speed = ((uint32_t)grab_fields(string,1)*5144L)/1000L;} //gps speed in cm/s will be used for navigation
else if (param == 8) {GPS_ground_course = grab_fields(string,1); } //ground course deg*10
}
param++; offset = 0;
if (c == ‘*’) checksum_param=1;
else parity ^= c;
} else if (c == ‘\r’ || c == ‘\n’) {
if (checksum_param) { //parity checksum
uint8_t checksum = hex_c(string[0]);
checksum <<= 4;
checksum += hex_c(string[1]);
if (checksum == parity) frameOK = 1;
}
checksum_param=0;
} else {
if (offset < 15) string[offset++] = c;
if (!checksum_param) parity ^= c;
}
if (frame) GPS_Present = 1;
return frameOK && (frame==FRAME_GGA);
}
#endif //NMEA

Sir_Alex
omegapraim:

ще раз здравствуйте поковырял я файлик AP_GPS_NMEA.cpp и чет не нашел того что нужно. Какие пакеты используются я нашел а вот их ассоциацию и расшифровку нет(((( привожу для примера код из мультивия. Вопрос в том есть ли что то похожее. я обычно для правильной работы заменял (выделено жирным в коде).

Вот:

// NMEA message identifiers ////////////////////////////////////////////////////
//
const char AP_GPS_NMEA::_gprmc_string[] PROGMEM = "GPRMC";
const char AP_GPS_NMEA::_gpgga_string[] PROGMEM = "GPGGA";
const char AP_GPS_NMEA::_gpvtg_string[] PROGMEM = "GPVTG";
Makkswell
SergDoc:

почистить eeprom?

чистил. что только не делал, а в итоге “тупил” БЕК(отключается зараза, померил, каждые 20-30сек вырубает). Заменил и все гуд.

SergDoc
omegapraim:

Вопрос в том есть ли что то похожее. я обычно для правильной работы заменял (выделено жирным в коде).

Дмитрий, а расскажи по подробней чёит за буковка такая “N” ?

…относящиеся к GPS приёмникам начинаются с $GP

• $GPRMC Сообщение RMC содержит данные о времени, местоположении, курсе и скорости, передаваемые навигационным GPS приёмником. Контрольная сумма обязательна для этого сообщения, интервалы передачи не должны превышать 2 секунды. Все поля данных должны быть подготовлены, пока ещё нет самих данных. Недействительные поля могут быть использованы, пока данные временно не готовы.

или у тебя ещё что-то кроме приёмника в модуль всунуто? можно в личку, дабы тему не пачкать 😃

VladimirVF

Кому-нибудь удалось разобраться с camera trigger? Я так понял что Relay означает, что можно получить получить 0 или +5V на 46-ом пине? Плата CRIUS AIOP fw 3.0.1 R2
Сделал следущее: set CH7 option to “Trigger Camera”; CAM_DURATION: 50; CAM_TRIGG_TYPE: 1; настройки RELAY_PIN в списке нет. Смотрел тетстером и фотоаппаратом на пине 46 ничего не появляется на остальных ничего не меняется. Любопытно что на пинах 7, 8,11,12 постоянно есть +5V.
Самое забавное - что спуск сервомашинкой, если например его поставить на RC11 работает.

Shuricus
Sir_Alex:

Желающие могут попробовать нашу новую программулину FlashTool:

Спасибо Алексей, программа - мега гениальная вещь!

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

Еще хочу предложить добавить туда кнопочку ERASE EEPROM, если это конечно нужно.

Shuricus

При этом - смешной баг. Прошивка залитая в АЙОП1 через конфигуратор, не коннектится с МП и в кли тоже странно себя ведет.
Залитая ардуиной - работает отлично.

omegapraim
SergDoc:

Дмитрий, а расскажи по подробней чёит за буковка такая “N” ?

или у тебя ещё что-то кроме приёмника в модуль всунуто? можно в личку, дабы тему не пачкать 😃

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

На мегапират пока подзабил, есть много неудобностей таких как например отсутствие триммирования акселя, арм вообще непривычный, случайно впилился в падушку так я его выключить не смог… С пидами тоже какие то непонятки, вобщем у меня из каробки не полетело. Но электронику я всю запустил включая глонасс гпс. Единственное что его пришлось программировать в ручную. А если внедряться глубже надо дописать пару команд для автопрограммирования приемника контроллером, ибо иначе не все его плюхи будут задействованы. Да и еще странность, армится через раз, а команда сброса всех настроек через терминал у меня так и не заработала что в ардуино что в МП. Не исключаю возможность что просто я криворукий))))))

RTemka

Триммер в пирате автоматический.
Арм 15 секунд держим, влетаем держим коптер 20 секунд ровно.
Сажаем дисармим.
Все это без ветра 😃

omegapraim

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


Так это выглядит как положено.

Итак что я сделал:

  1. Полностью пересобрал прошивку вручную (стер все что я там нагородил и все тоже самое нагородил заново с полной заменой ВСЕХ файлов).
    2)Скомпилил нужную мне прошивку в Arduino и выдрал HEX/
    3)Полностью форматнул микруху из AVRStudio и по новой залил прошивку только без arduino загрузчика? а напрямую.
    4)Ну и конечно когда увидел полностью рабочий терминал сделал setup>reset>y
SergDoc
omegapraim:

ввести команду или еще чего сделать не получается потому что сыпится постоянный набор букаффффффф,

надо было просто перезапустить плату, набор букав - это мавлинк работает 😃 ты сначала законнектился планером, а потом решил терминал подрубить, так на любой платформе, будь-то пират, арду или px4 😃

RTemka

Я так понимаю ты через модемы коннектишся ?
Тогда пока модем на коптере не ребутнуть с коптера будет сыпаться телеметрия.
Как в прочем и положено.
То есть нужно просто включить коптер и приконнектить терминал.
Если до этого приконнектиться планнером.
То получим опять телеметрию

SergDoc
omegapraim:

Да и еще странность, армится через раз,

Да кстати в арду по умолчанию стоит gps - failsave, пока фикса не будет не заармится, ну плюс ещё преармчек по датчикам батарее и т.п.

VladimirVF
Shuricus:

Прошивка залитая в АЙОП1 через конфигуратор, не коннектится с МП

У меня тоже самое.

RTemka

А что такое конфигуратор ?
Если это планнер то еще бы оно коннектилось 😃

omegapraim

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

даже обидно((((

SergDoc

Чего обижаться-то 😃 после вия оно да как-то не по себе, потом привыкаешь, зная тонкости - коннект к планеру не сразу а чуть с задержкой надо делать, коннект через терминал - лучше с перезапуском платы (у меня кстати ребутит само контроллер), да под виндой у меня планнер вообще тормознутый - так что переселил его под линукс - и тоже всё прекрасно работает…
По протоколу GPS понятно - т.е. производители свой префикс ввели 😃

RTemka

В общем согласно документации мавлинк сыпеться или в порт телеметрии после запроса планнером
и сыпеться пока не перегрузишь.
Или сыпет сразу в порт OSD согласно списку
This is the complete list with the respective values:

SERIAL3_BAUD, 57 (telemetry output at 57600)
SR3_EXT_STAT, 2 ( 2hz for waypoints, GPS raw, fence data, current waypoint, etc)
SR3_EXTRA1, 5 ( 5hz for attitude and simulation state)
SR3_EXTRA2, 2 ( 2hz for VFR_Hud data )
SR3_EXTRA3, 3 ( 3hz for AHRS, Hardware Status, Wind )
SR3_POSITION, 2 ( 2hz for location data )
SR3_RAW_SENS, 2 ( 2hz for raw imu sensor data )
SR3_RC_CHAN, 5 ( 5hz for radio input or radio output data )

omegapraim

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