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

Sir_Alex
omegapraim:

В общем где посмотреть настройки NMEA которые запрашивает пират?

AP_GPS_NMEA.cpp

omegapraim:

Увы но именно переназначения порта там нет скорее всего, глянул одним глазком, все таки скорее всего это надо делать в коде.

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

Только на A3 висит Piezo (Buzzer), значит его надо переместить, например на сгоревший A1, это можно сделать в config.h, строка:
# define PIEZO_PIN AN3

P.S. Это касательно послденей версии 3.0.1 R3

omegapraim

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

Alexsiv
Sir_Alex:

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

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

плата у меня такая
к ней подключено такое

с помощю ардуино иде выбирал красную хоббикинговскую плату прошивалась 3.0.1 и летало без проблем.

Sir_Alex
Alexsiv:

пробовал все платы из предложенных

OK, вечером погоняю разные варианты прошивок.

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

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