Hubsan X4 FPV H501S - FAQ, инструкции, прошивки, модернизации

fisenko

Обзор работы H501S и аппы DEVO.

В передатчик DEVO 8S установлен модуль, включающий чип A7105 и прошита прошивка DeviationTX, поддерживающая протокол Hubsan4.
Что в данный момент работает:
Биндится, армится, летает, переключает режимы светодиодов, переключает полётные режимы, запись видео/фото, принудительный дизарм, бортовое напряжение по телеметрии, failsafe RTH.
Не работает:
Всё остальное 😃 (RTH, fly with no GPS, Circle Fly, Headless mode и т.д.)
На дальность не проверял, в аппе выставлена мощность 150 mW

Обсуждение работы протокола Hubsan4 на форуме проекта DeviationTX.

8 days later
tpc
fisenko:

В передатчик DEVO 8S установлен модуль, включающий чип A7105 и прошита прошивка DeviationTX, поддерживающая протокол Hubsan4.
Что в данный момент работает:
Биндится, армится, летает, переключает режимы светодиодов, переключает полётные режимы, запись видео/фото, принудительный дизарм, бортовое напряжение по телеметрии, failsafe RTH.
Не работает:
Всё остальное 😃 (RTH, fly with no GPS, Circle Fly, Headless mode и т.д.)

И это не удивительно, потому как протокол особо, похоже, никто не тестировал.
У goebish, похоже, нету такой апаратуры и написал он это “вслепую”.

Там есть, например, такая ошибка в хабсановском пакете 0xe8:

    case 0xe8: // H501S
        // GPS latitude
        Telemetry.gps.latitude = (u32)packet[1]<<24|(u32)packet[2]<<16|(u32)packet[3]<<8|packet[4];
        TELEMETRY_SetUpdated(TELEM_GPS_LAT);

        // GPS longitude
        Telemetry.gps.latitude = (u32)packet[5]<<24|(u32)packet[6]<<16|(u32)packet[7]<<8|packet[8];\
        TELEMETRY_SetUpdated(TELEM_GPS_LONG);

        // RSSI ???
        Telemetry.value[TELEM_FRSKY_RSSI] = packet[14];
        TELEMETRY_SetUpdated(TELEM_FRSKY_RSSI);
        break;
willkhlau

[QUOTE=Всё остальное 😃 (RTH, fly with no GPS, Circle Fly, Headless mode и т.д.)
На дальность не проверял, в аппе выставлена мощность 150 mW

Обсуждение работы протокола Hubsan4 на форуме проекта DeviationTX.[/QUOTE]

CH9-Headless, CH10-RTH, CH11-GPS hold
RTH and Headless works, here my setting with Devo7E

model9.rar

tpc

Непосредственно перед выводом на экран надписи “System initializ” в пульте H901A (FPV2) производится инициализация радио-модуля 2.4ГГц.
Алгоритм инициализации поочерёдно включает 11 каналов с задержкой 5 мс и замеряет RSSI на каждом.
Лушее значение RSSI запоминает вместе с номером канала и по окончании работы алгоритма устанавливает лучший канал.

Т.е. когда вы видите надпись “System initializ” уже установлена оптимальная частота по измеренному RSSI.

tpc

Кстати, сразу же за выводом надписи “System initializ” аналогичная процедура с поиском и выбором “чистого” канала производится и для видеотракта.
Тоже последовательным перебором каналов по диапазону с сохранением частоты канала у которого был наилучший RSSI.

7 days later
tpc

Процедура обнаружения магнетометра:

В начале дрон пытается найти магнетометр HMC5883L с адресом 0x1E на шине I2C. Для этого:

  1. Читается регистр 10 (идентификационный регистр A) и проверяется на совпадение с 0b1001000.
  2. Читается регистр 11 (идентификационный регистр B) и проверяется на совпадение с 0b110100.
    Если выполняются оба условия, датчик HMC5883L считается обнаруженным и взводится флаг, что датчик HMC5883L обнаружен.

При несовпадении хотя бы одного условия флаг обнаружения HMC5883L сбрасывается и выполняется процедура,
которая десять раз включает и выключает бит 7 порта GPIOF с задержкой между включениями и выключениями
по 1000 тиков таймера TIM6. Вероятно, на этот вывод подключен светодиод и он мигает когда HMC5883L не обнаружена.
После этого следует задержка 10 мс и далее процедура обнаружения нового датчика магнетометра с адресом 0xC на шине I2C.

Самое интересное, что если и этот датчик не обнаружен, то дрон снова мигает светодиодиком и начинает обмен с каким-то устройством
с адресом 0x18 на шине I2C. Возможно, что он умеет работать ещё с каким-то видом датчика. Нужно разбираться.

Магнетометр HMC5883L используется в двух режимах:

Режим 1 - частота 15Гц, диапазон +/-2.5Ga, одиночные измерения.
CRA = 0b10001 (DO2, MS0 = 15Hz rate, Positive bias current)
CRB = 0b1100000 (GN1, GN0 = +/-2.5Ga range)
MR = 1 (MD0 = Single measurement mode)

Режим 2 - частота 30Гц, усреднение по 4 замерам, диапазон +/-1.9Ga, непрерывное измерение.
CRA = 0b1010100 (MA1, DO2, DO0 = 4 averaged samples, 30Hz rate)
CRB = 0b1000000 (GN1 = +/-1.9Hz range)
MR = 0 (Continuous Measurement Mode)

Для чего какой пока не разбирался. Наверное один для калибровки, другой для измерений в полёте.

tpc

Наконец удалось разобраться с магнетометром нового образца EA4000038.
Процедура обнаружения магнетометра:

В начале дрон пытается найти старый магнетометр HMC5883L с адресом 0x1E на шине I2C.

Для этого:

  1. Читается регистр 10 (идентификационный регистр A) и проверяется на совпадение с 0b1001000.
  2. Читается регистр 11 (идентификационный регистр B) и проверяется на совпадение с 0b110100.
    Если выполняются оба условия, датчик HMC5883L считается обнаруженным и взводится флаг, что датчик HMC5883L обнаружен.
    Если не выполняется хотя бы одно условие, то вызывается процедура мигающая 10 раз светодиодом (предположительно).

Далее выполняется поиск нового магнетометра ALPS HSCDTD008A с адресом 0xC на шине I2C (миниатюрный в корпусе 8 pin FLGA размером 1.6x1.6 мм).
Для этого: считывается регистр 0xF “Who I am” и проверяется на значение 0b1001001.
При совпадении магнетометр HSCDTD008A считается найденым и взводится соответствующий флаг.
За тем, вызывается сброс (reset) взведением бита 7 (SRST) регистра 0x1D (CTRL3).
Производится задержка 100 мс.
Сбрасывается бит SRST и взводится бит 1 OCL (Start to Calibrate Offset in Active Mode) того же регистра.
Опять делается задержка 100мс.
В регистре 0x1B (CTRL1) взводятся биты соответствующие активному режиму и частоте измерений 100 Гц.

Магнетометр Honeywell HMC5883L 3-х осевой магнетометр с разрешением 0.25 микротесла на LSB в корпусе
16-pin LPCC размером 3.0x3.0x0.9 мм. Диапазон измерения -8…+8 миллитесла.

Магнетометр ALPS HSCDTD008A 3-х осевой магнетометр с разрешением 0.15 микротесла на LSB в корпусе
8-pin FLGA размером 1.6x1.7x0.7мм. Диапазон измерения -7.2…+7.2 миллитесла.
В магнетометре присутствует FIFO память на 8 измерений.

tpc

Кстати, если значение магнитометра не считывается, то диод тоже мигает 10 раз и заново запускается процедура поиска магнетометра описанная выше.

И таки да, дрон понимает ещё один, какой-то до селе науке неизвестный, третий вид магнетометра.

tpc

Краткий алгоритм работы прошивки RX:

  1. Инициализация часов, регистров управления, портов ввода-вывода.
  2. Определение манетометра.
  3. Инициализация приёмо-передатчика A7105.
  4. Перемигивание белыми светодиодами в колпаках 2 секунды.
  5. Установка мощности A7105.
  6. Инициализация GPS.
  7. Инициализация watchdog.
  8. Основной цикл:

8.1. Обработка команд.
8.2. Через 0.2 сек от старта цикла инициализация и установка мощности RTC6750.
8.3. Через 1 сек от старта цикла включение сохранённого видеоканала.
8.4. Чтение показаний магнетометра через I2C.
8.5. Чтение и разбор сообщений NMEA от GPS через USART.
8.6. Установка режима свечения светодиодов колпаках.
8.7. Отсчёт времени при помощи TIM16.
8.8. Переход к п. 8.1.

Albvin

Подскажите пожалуйста , что можно сделать с пультом версии про. После прошивки перестал полностью работать дисплей. Он просто не включается, хотя индикатор работы пульта работает . В компьютере он определяется. Возможно с дуру не ту прошивку прошил.

7 days later
tpc

С самого начала, еще когда не приехал квадрик уже хотелось чтобы он мигал белым, а не сиреневым.

Подобрал номиналы резисторов для того, чтобы сиреневый свет стал белым.
Номиналы с макета:

R R4 = 8R2 (8.2 Ом)
G R5 = 2R7 (2.7 Ом)
B R6 = 220 (22 Ом)

Это наиболее удачный вариант. Номиналы скорректированы относительно предыдущего сообщения для того, чтобы светодиоды светили по-ярче, а белый точнее попадал в белый цвет.
При включении цвет будет немного в теплоту, но по мере прогрева становится лунно-белый. При перегреве даже немножко синит, так что в полёте думаю будет самое оно.

Потребляет около 250 мА на 3.3 В.

tpc


Слева родной вариант, справа - модифицированный.

22 days later
bald100

здравствуйте, Почему прошивки на оф сайте HUBSAN для разных стран разные??? какую лучше ставить тогда???

1 month later
BSan

Захотелось сделать камеру с изменяющимся углом взгляда. Сделал. Проверил. Работает. Похвастался.









Правда - сделано на Н501С, но не принципиально, смысл тот же.
Никаких приводов, зато и почти без изменения веса.
Новый корпус камеры сидит достаточно плотно, не болтается, но руками изменить угол можно легко и просто (если допрыгнуть до квада 😃)
Мне кажется, все были бы только ЗА, если бы производитель добавлял подобный простой функционал в стоке.

Bigfisher

Пока никак не решусь на установку новой официальной прошивки. На оф. сайте показывают и объясняют, но очень быстро и на английском. :-/Нет ли инструкции по обновлению на русском и какие впечатления от новой прошивки?

my_name

Коллеги! Вопрос к знатокам про аппы (H906a). После ребинда с h501ss не отображаются координаты пульта. Там, где они должны быть, пустая строка. При этом координаты коптера там, где им и положено находиться… В аппе на приемнике ЖПС горит красный светодиод. Судя по тому, что расстояние от коптера до пульта вычисляется (хотя пробовал только в режиме 6 спутников при запуске моторов, дальше по мере нахождения большего кол-ва координаты уточняются) и расстояние соответственно меняется в пределах 10м, пульт координаты свои знает но не показывает. При дизарме дельта по расстоянию устанавливается в 0. Вот такая беда. Что делать то?
П.с:Прошивка версии пульта с 1.1.9 до 1.1.16 не помогла.

Рамзес888
my_name:

Коллеги! Вопрос к знатокам про аппы (H906a). После ребинда с h501ss не отображаются координаты пульта. Там, где они должны быть, пустая строка. При этом координаты коптера там, где им и положено находиться… В аппе на приемнике ЖПС горит красный светодиод. Судя по тому, что расстояние от коптера до пульта вычисляется (хотя пробовал только в режиме 6 спутников при запуске моторов, дальше по мере нахождения большего кол-ва координаты уточняются) и расстояние соответственно меняется в пределах 10м, пульт координаты свои знает но не показывает. При дизарме дельта по расстоянию устанавливается в 0. Вот такая беда. Что делать то?
П.с:Прошивка версии пульта с 1.1.9 до 1.1.16 не помогла.

Проверяйте провод и разъемы самого модуля GPS (разъединить и заново соединить), возможно где-то контакт плохой.
А еще надо осмотреть визуально сам модуль - если на площадке с антенной есть трещина (трещины) - то ловить НЕ будет - под замену!

my_name

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

Рамзес888
my_name:

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

Эти модули Одинаковые, я даже менял местами с самим коптером - попробуйте и тогда все станет ясно, либо модуль не рабочий, либо все-таки контакт…
P.S.: пульт ни как не будет реагировать на отсутствие GPS (показаний на пульте не будет).

my_name

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