Protokol baterii Phantom 3
Moderatorzy: Adrián, breweryhills, moderatorzy2014, moderatorzy
Protokol baterii Phantom 3
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.
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.
Re: Protokol baterii Phantom 3
No, dobra robotapawelsky pisze: W dalszych postach bede opisywal strukture poszczegolnych komunikatow.
Pozdrawiam. :), :)
Statyczne informacje o baterii
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
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.
Re: Protokol baterii Phantom 3
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
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.
Re: Protokol baterii Phantom 3
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
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.
Re: Protokol baterii Phantom 3
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:
Ponizej krotki filmik to obrazujacy:
Re: Protokol baterii Phantom 3
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.
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...
... jeśli nie wiesz co robić, nabieraj wysokości. Jeszcze nikt nie zderzył się z niebem...
Re: Protokol baterii Phantom 3
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).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.
Najwieksza trudnoscia tutaj bedzie znalezienie taniego zrodla dobrych LiHV 4500mAh 4S o wymiarach pasujacych do dziury.
Re: Protokol baterii Phantom 3
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.
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.
Re: Protokol baterii Phantom 3
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
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
Re: Protokol baterii Phantom 3
Polak potrafi :)
Re: Protokol baterii Phantom 3
no gratuluję pawelsky ;) gratuluję. Kolejny udany projekt w Twoich rękach :D
Re: Protokol baterii Phantom 3
Niestety nigdzie nie moge znalezc LiHV 4S pasujace rozmiarem do dziury.StoQ pisze:no gratuluję pawelsky ;) gratuluję. Kolejny udany projekt w Twoich rękach :D
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.
Re: Protokol baterii Phantom 3
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
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.
http://www.molex.com/molex/products/dat ... TACLES.xml
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.