Protokol baterii Phantom 3

Moderatorzy: Adrián, breweryhills, moderatorzy2014, moderatorzy

Awatar użytkownika
pawelsky
Posty: 9764
Rejestracja: środa 19 mar 2014, 02:03
Lokalizacja: Polska
Kontakt:

Protokol baterii Phantom 3

Post autor: pawelsky »

Tak sobie w wolnych chwilach dlubie i patrze w jaki to sposob yntelygentna bateria od Phantoma 3 gada sobie z plyta glowna.

Komunikacja jest szeregowa (115200 baud, 3.3V). Dane przesylane sa jako Little Endian. Ogolny format komunikatow wymienianych z ptaszkiem jest nastepujacy:

AB ML MI MI <dane> CS

gdzie:
AB - naglowek komunikatu
ML - dlugosc (od naglowka do sumy kontrolnej wlacznie)
MI MI - identyfikator komunikatu
<dane> - dane zalezne od rodzaju komunikatu
CS - suma kontrolna (CRC-8 smbus)

Komunikacja odbywa sie na zasadzie pytanie-odpowiedz. Ponizej lista kilku komunikatow ktore udalo mi sie, po czesci przynajmniej, rozszyfrowac (firmware baterii 1.7.15.1).

Symbol => oznacza komunikat przesylany z Phantoma do baterii, zas <= oznacza komunikat wysylany z baterii do Phantoma.

=>AB 0E 04 21 00 00 00 00 00 00 00 00 00 10 - zapytanie o statyczne dane dotyczace baterii (nazwe, fabryczna pojemnosc, napiecie nominalne, etc.)
<=AB 2D 04 21 <40 bajtow danych > CS (LINK) - odpowiedz baterii zawierajaca statyczne dane

=>AB 0E 04 22 00 00 00 00 00 00 00 00 00 A8 - zapytanie o dynamiczne dane dotyczace baterii (aktualne na piecie, procent naladowania, pobierany prad, etc.)
<=AB 25 04 22 <32 bajty danych> CS (LINK) - odpowiedz baterii zawierajaca dynamiczne dane

=>AB 0E 04 25 00 00 00 00 00 00 00 00 00 B7 - zapytanie (wersja dluga) o historie ostrzezen
=>AB 05 04 25 1A - zapytanie (wersja krotka) o historie ostrzezen
<=AB 82 04 25 <125 bajtow danych> CS (LINK) - odpowiedz baterii zawierajaca historie ostrzezen

=>AB 0E 04 31 00 00 00 00 00 00 00 00 00 82 - zapytanie o ustawienia baterii
<=AB 0A 04 31 <5 bajtow danych) CS (LINK) - odpowiedz zawierajaca informacje o ustawieniach baterii

=>AB 0E 04 38 00 00 00 00 00 00 00 00 00 A3 - zapytanie (wersja dluga) o numer seryjny (barcode)
=>AB 05 04 38 49 - zapytanie (wersja krotka) o numer seryjny
<=AB 13 04 38 <14 bajtow danych> CS (LINK) - odpowiedz baterii zawierajaca numer seryjny (barcode)

Komunikatow jest oczywiscie wiecej, w miare postepow w pracy bede je tu uzupelnial (prosba do adminow o nie scalanie opisow poszczegolnych komunikatow w jeden post bo stanie sie nieczytelny i nie bedzie mozliwosci indeksowania z pierwszego postu).

W dalszych postach bede opisywal strukture poszczegolnych komunikatow.
Ostatnio zmieniony wtorek 03 maja 2016, 09:40 przez pawelsky, łącznie zmieniany 10 razy.
Jagoda
Posty: 1346
Rejestracja: poniedziałek 20 lip 2015, 16:02

Re: Protokol baterii Phantom 3

Post autor: Jagoda »

pawelsky pisze: W dalszych postach bede opisywal strukture poszczegolnych komunikatow.
No, dobra robota :-)
Pozdrawiam. :), :)
Awatar użytkownika
pawelsky
Posty: 9764
Rejestracja: środa 19 mar 2014, 02:03
Lokalizacja: Polska
Kontakt:

Statyczne informacje o baterii

Post autor: pawelsky »

Statyczne informacje o baterii
AB 2D 04 21 XX TC TC DN DN DC DC DV DV XX XX MD MD XX XX BN BN BN BN BN BN BN BN BN BN BN BN BN BN BN XX XX XX XX F1 F2 F3 F4 PL PL CS

AB
2D - dlugosc komunikatu (45 dziesietnie)
0421 - identyfikator komunikatu
XX - ???
TC TC - pojemnosc calkowita (uint16, mAh)
DN DN - liczba rozladowan (uint16)
DC DC - pojemnosc nominalna (uint16, mAh) -> 4480mAh
DV DV - napiecie nominalne (uint16, mV) -> 15200 = 15.2V
XX XX - ???
MD MD - data produkcji (patrz opis ponizej)
SN SN - numer seryjny (uint16)
BN BN BN BN BN BN BN BN BN BN BN BN BN BN BN - nazwa baterii (15 znakow ASCII) -> "ATL NVT DJ005"
XX XX XX XX - ???
F1 F2 F3 F4 - wersja firmware (w formacie F4.F3.F2.F1)
PL PL - zywotnosc baterii (uint16, %) ???
CS

Data kodowana jest jako liczba calkowita (uint16). Format kodowania daty: (rok - 1980) * 512 + miesiac * 32 + dzien (binarnie RRRRRRRMMMMDDDDD)
Przyklad: 3A 48 -> 0x483A -> 0b0100100000111010 -> 36(+1980) 1 26 -> 2016/01/26
Ostatnio zmieniony wtorek 03 maja 2016, 09:39 przez pawelsky, łącznie zmieniany 6 razy.
Awatar użytkownika
pawelsky
Posty: 9764
Rejestracja: środa 19 mar 2014, 02:03
Lokalizacja: Polska
Kontakt:

Re: Protokol baterii Phantom 3

Post autor: pawelsky »

Dynamiczne informacje o baterii
AB 25 04 22 XX BT BT TV TV CC CC CC CC AC AC AC AC PC PC C1 C1 C2 C2 C3 C3 C4 C4 XX XX XX XX XX XX XX XX XX CS

AB
25 - dlugosc komunikatu (37 dziesietnie)
0422 - identyfikator komunikatu
XX - ???
BT BT - temperatura baterii (uint16, stopnie Kelwina * 10)
TV TV - napiecie calkowite (uint16, mV)
CC CC CC CC - prad (int32t, mA, ujemny przy pobieraniu, dodatni przy ladowaniu)
AC AC AC AC - sredni prad (int32t, mA, ujemny przy pobieraniu, dodatni przy ladowaniu)
PC PC - procent naladowania (uint16, %)
C1 C1 - napiecie na 1 celi (uint16, mV)
C2 C2 - napiecie na 2 celi (uint16, mV)
C3 C3 - napiecie na 3 celi (uint16, mV)
C4 C4 - napiecie na 4 celi (uint16, mV)
XX XX XX XX XX XX XX XX XX - ???
CS
Ostatnio zmieniony niedziela 01 maja 2016, 13:41 przez pawelsky, łącznie zmieniany 3 razy.
Awatar użytkownika
pawelsky
Posty: 9764
Rejestracja: środa 19 mar 2014, 02:03
Lokalizacja: Polska
Kontakt:

Re: Protokol baterii Phantom 3

Post autor: pawelsky »

Numer seryjny (barcode)
AB 13 04 38 XX SN SN SN SN SN SN SN SN SN SN SN SN SN CS

AB
13 - dlugosc komunikatu (19 dziesietnie)
0438 - identyfikator komunikatu
XX - ???
SN SN SN SN SN SN SN SN SN SN SN SN SN (uint8 x 13) - numer seryjny (barcode)
CS
Ostatnio zmieniony wtorek 03 maja 2016, 09:40 przez pawelsky, łącznie zmieniany 2 razy.
Awatar użytkownika
pawelsky
Posty: 9764
Rejestracja: środa 19 mar 2014, 02:03
Lokalizacja: Polska
Kontakt:

Re: Protokol baterii Phantom 3

Post autor: pawelsky »

Dzis udalo sie odniesc pierwszy maly sukces. Po podlaczeniu zasilania z zasilacza oraz generowaniu komunikatow 0421, 0422 i 0438 poprzez Adruino Phantom nie protestuje juz ze brak mu madrej baterii i pozwala uruchomic silniki.

Ponizej krotki filmik to obrazujacy:

Awatar użytkownika
Verid
Posty: 13005
Rejestracja: poniedziałek 01 lut 2010, 11:29
Lokalizacja: Mikoszewo

Re: Protokol baterii Phantom 3

Post autor: Verid »

Didżeje cię znienawidzą.... :mrgreen:
Ten wredny...
Awatar użytkownika
cebulator
Posty: 1432
Rejestracja: poniedziałek 10 wrz 2012, 08:16
Lokalizacja: Mielec

Re: Protokol baterii Phantom 3

Post autor: cebulator »

Ciekawe czy w P4 też zrobili ten sam protokół. Bo może nie spodziewali się że ktoś to będzie rozgryzał.
Obstawiam że w nie wiele minie od czasu publikacji a na BG będą tanie baterie.
Pozdrawiam Sławek

... jeśli nie wiesz co robić, nabieraj wysokości. Jeszcze nikt nie zderzył się z niebem...
Awatar użytkownika
pawelsky
Posty: 9764
Rejestracja: środa 19 mar 2014, 02:03
Lokalizacja: Polska
Kontakt:

Re: Protokol baterii Phantom 3

Post autor: pawelsky »

cebulator pisze:Ciekawe czy w P4 też zrobili ten sam protokół. Bo może nie spodziewali się że ktoś to będzie rozgryzał.
Obstawiam że w nie wiele minie od czasu publikacji a na BG będą tanie baterie.
Baterie sa juz na BG (i nie tylko) dostepne od jakiegos czasu, tylko po ostatnich upgradeach przestaly dzialac. Podejrzewam ze w nowym firmware DJI zbanowalo ich numery seryjne (bo po podlaczeniu Phantom bardzo sie o ten numer upomina).

Najwieksza trudnoscia tutaj bedzie znalezienie taniego zrodla dobrych LiHV 4500mAh 4S o wymiarach pasujacych do dziury.
Awatar użytkownika
pawelsky
Posty: 9764
Rejestracja: środa 19 mar 2014, 02:03
Lokalizacja: Polska
Kontakt:

Re: Protokol baterii Phantom 3

Post autor: pawelsky »

Historia ostrzezen
AB 82 04 25 XX (WH WH WH WH) x 31 CS

AB
82 - dlugosc komunikatu (130 dziesietnie)
0425 - identyfikator komunikatu
XX - ???
WH WH WH WH (uint8 x 4) - historia ostrzezen (rekord 1)
...
WH WH WH WH (uint8 x 4) - historia ostrzezen (rekord 31)
CS

Komunikat zawiera 31 4-bajtowych rekordow z informacjami o ostrzezeniach baterii (zbyt wysoka temperatura, zbyt niskie napiecie, automatyczne rozlawodanie, itp.). Wartosci zerowe oznaczaja brak ostrzezen.
Awatar użytkownika
pawelsky
Posty: 9764
Rejestracja: środa 19 mar 2014, 02:03
Lokalizacja: Polska
Kontakt:

Re: Protokol baterii Phantom 3

Post autor: pawelsky »

Ustawienia baterii
AB 0A 04 31 XX S1 S2 S3 S4 CS

AB
0A - dlugosc komunikatu (10 dziesietnie)
0431 - identyfikator komunikatu
XX - ???
S1 - czas do automatycznego rozladowania (w dniach)
S2 - ???
S3 - ???
S4 - ???
CS
Awatar użytkownika
L.mArK
Posty: 687
Rejestracja: wtorek 16 lip 2013, 22:29
Lokalizacja: Kraków

Re: Protokol baterii Phantom 3

Post autor: L.mArK »

Polak potrafi :)
Awatar użytkownika
StoQ
Posty: 1021
Rejestracja: sobota 14 maja 2011, 12:57
Lokalizacja: Szczecin

Re: Protokol baterii Phantom 3

Post autor: StoQ »

no gratuluję pawelsky ;) gratuluję. Kolejny udany projekt w Twoich rękach :D
Awatar użytkownika
pawelsky
Posty: 9764
Rejestracja: środa 19 mar 2014, 02:03
Lokalizacja: Polska
Kontakt:

Re: Protokol baterii Phantom 3

Post autor: pawelsky »

StoQ pisze:no gratuluję pawelsky ;) gratuluję. Kolejny udany projekt w Twoich rękach :D
Niestety nigdzie nie moge znalezc LiHV 4S pasujace rozmiarem do dziury. :-(

Zna ktos moze jakias firme ktora bylaby w stanie skompletowac cos o wymiarach nie wiekszych niz 35x45x110?

Chwilowo zamowilem zwykle LiPo 4000mAh do eksperymentow, ale za dlugo to raczej Ph3 na tym nie polata.
Awatar użytkownika
pawelsky
Posty: 9764
Rejestracja: środa 19 mar 2014, 02:03
Lokalizacja: Polska
Kontakt:

Re: Protokol baterii Phantom 3

Post autor: pawelsky »

Szukalem, szukalem i chyba w koncu udalo mi sie znalezc zlacze ktorego DJI uzywa w beterii do PH3

http://www.molex.com/molex/products/dat ... TACLES.xml

Obrazek

Z czyms takim to juz jakas plytke mozna projektowac. Zobaczymy ile Chinczyk bedzie chcial za kilka sztuk...

EDIT: Pan Chinczyk niestety zlaczy na stanie nie mial wiec musialem sie wykosztowac lokalnie (ponad 20PLN za sztuke!) ale zlacza dotarly i co wazniejsze pasuja. Teraz czekam tylko na obudowe baterii zeby zdjac wymiary i bedzie mozna zaczac projektowac jakas plytke elektroniki.
ODPOWIEDZ