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

Sir_Alex
dundel1:

Уже полчаса висит окошко “ожидание прошивки” с пустой шкалой, и никаких шевелений.

Ага, есть проблемка на сервере. Вроде поправил, попробуйте еще раз

men68
Sir_Alex:

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

Пробовал. Прошивка сначала долго не грузилась, потом загрузилась (но в выборе только rc3_BETA), пошла прошивка… вылетает с ошибкой - типа “что-то не так с прошивальщиком avrdude”.

Через IDE прошился без проблем.

З.Ы. Кстати, огромное спасибо за Ваш труд. Решил попробовать после Вия - небо и земля. Коптер, даже при моих “навыках” полета, полетел по-настоящему 😃

omegapraim

А можно немного пожеланий? как быть владельцам типа меня у которых есть выносной компас к примеру? и плата V1 от рц таймера? Я тож подумываю о том что бы попробовать мегапират, но вот то что у меня есть свой собственный GPS модуль нестандартный немного и модуль компаса отдельно вынесен, а тот что на плате сдут феном. Планируется ли более гибкое по?))))

blind_oracle
omegapraim:

А можно немного пожеланий? как быть владельцам типа меня у которых есть выносной компас к примеру? и плата V1 от рц таймера? Я тож подумываю о том что бы попробовать мегапират, но вот то что у меня есть свой собственный GPS модуль нестандартный немного и модуль компаса отдельно вынесен, а тот что на плате сдут феном. Планируется ли более гибкое по?))))

А в чем проблема-то? У меня мегапират и внешний компас, всё работает. Нужно одну строчку закомментировать в коде и всё. Или раскомментировать, не помню 😃 Даже сдувать не надо ничего.

omegapraim

Я не про то, я про программу для нубов))))) так то ручками то понятно что работать будет))))))

blind_oracle
omegapraim:

Я не про то, я про программу для нубов))))) так то ручками то понятно что работать будет))))))

А, ну нубам внешний компас не нужен, это слишком сложно 😁

omegapraim

Просто после мультивия, где я уже все знаю, честно сказать сложновато в арду разобраться с полтыка. Есть может где что почитать? чтоб не задавать тут дурацкие вопросы?

blind_oracle

Тут и почитать, делая поиск по ключевым словам. А основные вещи есть у Алекса на сайте пирата в доках.

omegapraim

ок буду разбираться))))) Просто интересно стало))))) че за неведомый зверь.

Makkswell

Доброй ночи.
Помогите понять что не так.

Имеется:
Crius V2
Пират версии 3.0.1 r3

  1. Почему так встал горизонт?(плата на столе лежит)
  2. Аксель откалибровать не выходит. Всегда дает Failed

SergDoc
Makkswell:
  1. Аксель откалибровать не выходит. Всегда дает Failed

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

omegapraim

Еще раз здравствуйте, прошу помощи ибо сам я задолбаюсь искать в коде, у меня на плате AIO v1 сгорел выход A1 помоему ну тот на который идет с делителя напряжения информация в мультивие я себе в коде перенастроил этот порт на A3 где это можно сделать в мегапирате?

men68

Могу ошибаться (сам новичок), вроде это в настройках Mission Planer
battery-monitor

Connected outputs to A0 and A1, defining them in adv parameters list: BATT_CUR_PIN = 1 (A1) e BATT_VOLT_PIN = 0 (A0)

I did Mission Planner battery monitor calibration procedure and everything work ok!

Еще может будет полезной PDF-ка с начальными инструкциями по связке AIO и MegapirateNG
Crius AIOP V2.0 Guide for MegaPirateNG

omegapraim

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

И сразу в догонку еще один вопрос, какие NMEA пакеты кроме GGA и RMC и где в коде это глянуть, дело в том что формат выдачи пакета RMC отличается на одну букву и из-за этого контроллер его вообще игнорирует. В общем где посмотреть настройки NMEA которые запрашивает пират?

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