Hubsan x4 H501M waypoints fpv

kiws
Эдуард:

Купил себе 501а. Решил, что надо брать комплектом. Успел по распродаже. Обошлось чуть больше 11 т.р.
501 м переберу на предмет целостности, проверю и буду продавать. Хватит трепать нервы.

Конечно это правильно! Если есть возможность купить или обменять, вернуть, то нечего думать. Стоит попробовать H501A. Я, вот, тока в ближайший год точно не смогу позволить себе покупку другой модели. Пока живем на одну зарплату, т.е. бюджет ограничен. 😃.

Поэтому не спеша, в своё удовольствие, ковыряюсь с имеющимися моделями.
Рассчитываю за зиму поэкспериментировать в техническом плане. А к полетам вернусь весной.

Из существенного:
Пока едут компасы, удалось освоить азы C++ и применить вот этот алгоритм деобфускации авторства Олега Худякова к прошивке H501M.
Сейчас просмотрел комментарии автора прошивки. Модель компаса в H501M я определил ранее верно - в прошивке многократно имеется его название: Ready to init IST8303.
Кроме того, имеется контроль на запись в компас, например, имеется комментарий: Write IST8303_REG_CNTRL1 error.
В прошивке имеется упоминание компаса IST8310. Значит с ним тоже H501M работает, или задуман работать.
Видна калибровка гироскопа. Гироскоп описан минимум 2-х видов. Это хорошо. Это ОЧЕНЬ хорошо. Если дело не в компасе, а в гироскопе окажется, то будет возможность попробовать другой тип.
Листаю дальше…

Нашел какой у нас чип барометра: dps310.
Вот странная надпись:
S T M i c r o e l e c t r o n i c s S T M 3 2 J o y s t i c k.
STM - это понятно, микроконтроллер у нас STM, а джойстик??

Дольше листаю…
Нашел список переменных:
GyroX,GyroY,GyroZ,AccX,AccY,AccZ,MagX,MagY,MagZ,Baromoter,Latitude,Longitude,gAngleX,gAngleY,Compass,GyroDynamicZeroX,GyroDynamicZeroY,GyroDynamicZeroZ,err6aix,errbaro,errcompass,errgps,Voltage,fAccX,fAccY,fAccZ,GyroX1,GyroY1,GyroZ1,GZeroX,GZeroY,GZeroZ,GHead,GSX,GSY,CPUz,RAccX,RaccY,RAccZ,fAccX,fAccy,fAccZ,fMagX,fMagY,fMagZ,GPS_NUM,GPS_SPEED,fELocX,fELocY,fELocZ GNRMC GNGGA GNVTG GNGSA.

По ним можно составить примерное впечатление.

kiws

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

APP\Hubsan_copter.cpp @Jan 30 2018 09:24:25 //Т.е. по идее H501M, изготовленные после 30 января должны идти с версией 1.1.7, а до 30 января 2018г. прошивали версию 1.1.4.
%s Init_finish %d
error sensor baro
error sensor compass
error sensor inertial 6 axis
error sensor GPS
remove all file succeed!!
MPUREG_ICM20600_ID Disconnect or Error! //1-й тип гироскопа/акселерометра
Init Accel !
Init Gyro !
gyro did not converge: diff=%f dps
******************************
calibrate _gyro_orth %d, %d
***********************************
MPU6050 acc offset calibrate! //2-й тип гироскопа/акселерометра
MPU6050 gryo offset calibrate!
start Flash_eraseCompletely…
erasing w25Q device now… wait
Flash_eraseCompletely ok
@check rom true
Ready to init IST8303 //1-й компас
IST83XX ID is %x
Read compass Id error
ist8303 intial setting error
IST8303_REG_SELECTION_REG error
Rean N IST8303_REG_XX_CROSS_L error
crossaxis_enable = 1
crossaxis_enable = 0
Write IST8303_REG_CNTRL1 error
Mag_Offsetx = %f
Mag_Offsety = %f
Mag_Offsetz = %f
?IST8310_Radii = %f //замечен 2-ой тип компаса?? Или случайно написали так? Тут у меня имеются сомнения
>Mag_Accurancy = %d
=======================
Mag_Lib is Ready
=====================
start gtap200 init ! //1-й тип барометра
gtap200 init ok!
@who_am_i = %x
icm20600 not availabley
_product_id = %x
******************************
calibrate _gyro_orth %d, %d
***********************************
MPU6050 acc offset calibrate!
MPU6050 gryo offset calibrate!
@dps310_iic_readprom error
=====================
start dps310 init ! //2-ой тип барометра
Dps310 ID error
dps310_config error
activate error
CI_Calibrate:%d
AutopilotVer
AutopilotVer
H501M_FC_V1.1.7 //версия прошивки
0123456789abcdef //Учимся считать до 16 😃
0123456789ABCDEF //Повторение - мать учения! 😁
===============================MagAccurary %d===============================
"$GNRMC,013513.60,A,2231.57856,N,1 //GPS
!6.18937,E,0.799,240816,A*6C

kiws

В Курской прошивке программист Hubsan удалил вот эти блоки: Mag_Accurancy (Магнетометр - точность) и Mag_Lib (Магнетометр - библиотека).
Наверное сильно упростили коррекцию показаний магнетометра самой прошивкой коптера.

Дисассемблировать у меня не получилось, не знаю точку входа в программу (нет опыта).

Filin737
kiws:

Вот что выловил из прошивки 1.1.7

Браво, Сергей! Спасибо! А опыт, говорят, дело наживное? 😁

kiws

Обратите внимание на эти странные строки в прошивке:

kiws:

"$GNRMC,013513.60,A,2231.57856,N,1
!6.18937,E,0.799,240816,A*6C

GPS модуль посылает текстовые сообщения такого вида с координатами и другой важной информацией. А тут уже многие цифры заранее прописаны.
Как будто координаты куда улетать домой в Китай 😁.
Шучу, не может быть такого (насчет улетать домой).

Filin737
kiws:

Шучу, не может быть такого (насчет улетать домой).

Не знаю, не знаю… Мой никогда не желал вернуться в исходную точку, каждый раз прямиком куда-то отправлялся, невзирая на мои танцы с пультом (смартфоном).

kiws

Что-то у H501A, H501S, H507A не похожи прошивки на H501M.
У нас обилие текста, а у перечисленных всего несколько строк читаемого текста. Мало за что есть зацепиться для сравнения между ними.
Может другой программист писал для нас. Оставил кучу сообщений, что в принципе должно быть неплохо для анализа.

Хотя, у H501A тоже есть список переменных в текстовом виде, и он очень похож на H501M, но поменьше. Наверное это из-за того, что у нас по сути все реализовано на одном STM32 контроллере, а у других H501-х есть FC и RX прошивки.

mazepa2000
Эдуард:

Снова поменялась прога для андроида.

ЧТО НОВОГО
Zino:
Добавлены параметры параметров камеры (4K, 2.7K, 1080P, ISO, экспозиция и т. Д.).
Добавлено отслеживание изображений.

😦

Эдуард

Понятно. Я не смотрел ещё. Они теперь будут эту Зину проталкивать.

kiws

Немного получилось продвинуться с прошивкой.

Благодаря информации, полученной от Олега, дисассемблировал код.
Вот участок, связанный с определением компаса:

ROM:0000F804 ; ---------------------------------------------------------------------------
ROM:0000F804 PUSH.W {R4-R10,LR} //стёк
ROM:0000F808 MOV R4, R0
ROM:0000F80A VPUSH {D8}
ROM:0000F80E SUB SP, SP, #0x20
ROM:0000F810 ADR R0, aReadyToInitIst ; “Ready to init IST8303\r\n”
ROM:0000F812 BL sub_23FE4 //управление работой шины I2C
ROM:0000F816 MOVS R0, #1
ROM:0000F818 BL sub_1FA7C
ROM:0000F81C MOVS R0, #1
ROM:0000F81E BL sub_1FAA6
ROM:0000F822 LDR R6, =0x20000534
ROM:0000F824 LDR R7, =0x40005400
ROM:0000F826 ADDS R6, R6, #4
ROM:0000F828 MOVS R3, #1 //число регистров для чтения
ROM:0000F82A MOVS R2, #0 //регистр ID
ROM:0000F82C MOVS R1, #0xC //адрес компаса
ROM:0000F82E MOV R0, R7
ROM:0000F830 STR R6, [SP]
ROM:0000F832 BL sub_B750 //Чтение ID регистра компаса
ROM:0000F836 MOVS R5, #0
ROM:0000F838 CBZ R0, loc_F87A //Если не прочитали ID, то выход
ROM:0000F83A LDRB R1, [R6]
ROM:0000F83C ADR R0, aIst83xxIdIsX ; “IST83XX ID is %x\r\n”
ROM:0000F83E BL sub_23FE4 //управление работой шины I2C
ROM:0000F842 MOVS R0, #0x32 ; ‘2’
ROM:0000F844 BL sub_B9C4
ROM:0000F848 MOVS R3, #1 //это надо записать
ROM:0000F84A MOVS R2, #0x40 ; ‘@’ //регистр темп. компенсации
ROM:0000F84C MOVS R1, #0xC //адрес компаса
ROM:0000F84E MOV R6, R7
ROM:0000F850 MOV R0, R7
ROM:0000F852 BL sub_B412 //Настройка температурной компенсации
ROM:0000F856 CBZ R0, loc_F8B4 //Если не получилось с компенсацией, то выход из компаса
ROM:0000F858 MOVS R3, #0xC0 ; ‘L’ //это надо записать
ROM:0000F85A MOVS R2, #0x42 ; ‘B’ //регистр гистерезиса
ROM:0000F85C MOVS R1, #0xC //адрес компаса
ROM:0000F85E MOV R0, R6
ROM:0000F860 BL sub_B412 //Настройка гистерезиса
ROM:0000F864 CBZ R0, loc_F8B6 //Если не получилось с гистерезисом, то выход из компаса
ROM:0000F866 ADD R0, SP, #4
ROM:0000F868 STR R0, [SP]
ROM:0000F86A MOVS R3, #2 //сколько регистров надо прочитать
ROM:0000F86C MOVS R2, #0x9C ; ‘Ь’ //первый регистр смещения
ROM:0000F86E MOVS R1, #0xC //адрес компаса
ROM:0000F870 MOV R0, R6
ROM:0000F872 BL sub_B750 //Тестовое чтение части регистров смещения
ROM:0000F876 CBZ R0, loc_F8D4 //Если не прочитались регистры смещения, то пометка что их нет, и продолжение работы процедуры инициализации компаса
ROM:0000F878 B loc_F8DA //Продолжение с пометкой что регистры смещения есть

И т.д. и т.п.
Явно не увидел чтобы сравнивался регистр ID на значение FF, может это где-то спрятано.
Т.е. большая вероятность что Hubsan H501M настроен на работу разных компасов из серии IST83**, без разницы какой ID, главное чтобы не 0. Но надо чтобы в компасе обязательно были регистры 0, h40, h42.

Artmkas

Сегодня вышло новое обновление на Ios, там что то про GPS и ограничения. Кто силен в китайском?
优化云台调节;
无GPS起飞增加条件限制。

maverickr
Artmkas:

Сегодня вышло новое обновление на Ios, там что то про GPS и ограничения. Кто силен в китайском?
优化云台调节;
无GPS起飞增加条件限制。

Optimize the pan/tilt adjustment;
No GPS takeoff increases the condition limit

mazepa2000

А теперь по русски 😃)))
Так на андроид не давно вышло обновление,возможно на яблоко вышло позже или это другое обновление? На Андроиде интересного для нас не фиксили.

Artmkas
mazepa2000:

А теперь по русски 😃)))
Так на андроид не давно вышло обновление,возможно на яблоко вышло позже или это другое обновление? На Андроиде интересного для нас не фиксили.

Это новое обновление, на Андройд с сильной задержкой выходят. Зина на Андройде появилась недавно, а на Ios она уже несколько месяцев.

mazepa2000

Радует.но мало что понял из перевода если честно.

mazepa2000

Ну вот и андроид обновился.Что нового обещают?

mazepa2000

переводчик вот что сказал, по поводу изменений в новой версии андроида.
Оптимизация настройки PTZ;
Нет GPS взлет увеличивает ограничения условий.
может кто то более корректно переведет?

Обновлено
14 декабря 2018 г.
Текущая версия
1.6.3

kiws

Получил “псевдо” японский магнитометр AK8975 из Китая. Испытал его, пока просто подключив к Arduino, без hubsan.
Сразу скажу что его качество заметно уступает нашему IST8303. У нашего показания стабильные и предсказуемые, а у AK8975 хаотично прыгают ±20 градусов. Как будто подделка какая-то. Поможет только усреднение.
Все таки честный, “фирменный” Китай заметно качественнее китайских же реплик других производителей.

Позже попробую все таки подключить новый компас к H501M. Сначала с прошивкой 1.1.7, потом с другой, в которой изменил пару строк проверки компаса специально для AK8975.

mazepa2000

У кто знает,есть от производителя ссылка на обновление прошивки,только официальная,что они рекомендуют нашему зверьку?