You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I don't use deviation, but your code initially pointed me in the right direction, so I want to provide my findings for your use. I am currently writing Arduino nano code to convert Hubsan telemetry to DJI for the DJI HD FPV air unit, and I do believe I have cracked the rest of the Hubsan telemetry protocol. Maybe others had too, but I'll be damned if I could find it. Every other code repo said "to do: voltage working, figure out rest of telemetry".
So here ya go. Took me one week of dreaming about packets. Initial tests show the following works on an H501. Hope someone finds it useful.
static void hubsan_update_telemetry()
{
if((packet[0]==0xe1 || packet[0]==0xe7) && hubsan_check_integrity()) {
Heading = HubsanTelemetry(packet[1], packet[2]);
Rotation = HubsanTelemetry(packet[3], packet[4]);
Pitch = HubsanTelemetry(packet[5], packet[6]);
Speed = HubsanTelemetryFloat(packet[7], packet[8]);
Distance = HubsanTelemetryFloat(packet[9], packet[10]);
Altitude = HubsanTelemetryFloat(packet[11], packet[12]);
Voltage = (float)(packet[13]/10.0);
}
}
int HubsanTelemetry(unsigned int FirstByte, unsigned int SecondByte)
{
int combined;
if (FirstByte < 128) {
combined = (FirstByte*255 + SecondByte)/10;
} else {
combined = 0-((255-FirstByte)*255 + (255-SecondByte))/10;
}
return combined;
}
float HubsanTelemetryFloat(unsigned int FirstByte, unsigned int SecondByte)
{
float combined;
if (FirstByte < 128) {
combined = ((float)FirstByte*255.0 + (float)SecondByte)/10.0;
} else {
combined = 0.0-((255.0-(float)FirstByte)*255.0 + (255.0-(float)SecondByte))/10.0;
}
return combined;
}
static u8 hubsan_check_integrity()
{
int sum = 0;
for(int i = 0; i < 15; i++)
sum += packet[i];
return packet[15] == ((256 - (sum % 256)) & 0xff);
}
The text was updated successfully, but these errors were encountered:
Hey Guys,
I don't use deviation, but your code initially pointed me in the right direction, so I want to provide my findings for your use. I am currently writing Arduino nano code to convert Hubsan telemetry to DJI for the DJI HD FPV air unit, and I do believe I have cracked the rest of the Hubsan telemetry protocol. Maybe others had too, but I'll be damned if I could find it. Every other code repo said "to do: voltage working, figure out rest of telemetry".
So here ya go. Took me one week of dreaming about packets. Initial tests show the following works on an H501. Hope someone finds it useful.
The text was updated successfully, but these errors were encountered: