So, falls nochmal jemand über diesen Thread stolpert, ich habe das
Protokoll zum grössten Teil geknackt.
Es ist tatsächlich eine 1-Wire Kommunikation, die Kamera scheint der
Initiator zu sein, indem sie die am Akku als 'C' bezeichnete Leitung für
100-150ms auf low zieht. Das 'weckt' den Akku-MC auf. Innerhalb von ca.
500ms muss nun ein Kommando der Kamera folgen, sonst geht der Akku
wieder in Sleep.
Die Kommunikation erfolgt nun mit 1200 Baud, ein Pullup ist an der 'C'
Leitung immer aktiv.
Lediglich zwei Kommandos scheint es zu geben, jeweils durch 2 Bytes der
Kamera initiiert:
1 | 0x01 0x07 : Kommando 'Identifikation' Akku antwortet mit
|
2 | 0x56 0x46 0x08 0x08 0xD0 0x02 0x3F 0xD0 0x02 0xC8 0xDC 0x64 // in ASCII:
|
3 | 'V' 'F'
|
bei einem Akku vom Typ VF808. Vermutlich würde ein VF-815 mit 'VF' 0x08
0x15 antworten. Die Bedeutung der folgenden Bytes erschlieest sich mir
nicht, es handelt sich aber nicht um eine Seriennummer, da meine beiden
Akkus so ziemlich das gleiche antworten. Den Abschluss bildet eine CRC-8
Checksum mit Polynom 0x07, im obigen Beispiel die 0x64.
Das andere benutzte Kommando (0x02 0x0e) ist die Abfrage des
Ladezustandes. Der Akku scheint einen 2-Kanal 10-bit ADC zu benutzen,
der gespreizte Werte pro Zelle für den Bereich 4,2 Volt bis 'Akku leer'
ungefähr bei 3,4 Volt ausgibt:
1 | 0x02 0x0E 0x08 0x04 0xCB 0x02 0xDD 0xC3 0x02 0x00 0x00 0x4C 0xDD 0xDC 0x0E
|
2 | Command
|
3 | unbekannt NN
|
4 | ADC1 LL MM HH
|
5 | ADC2 LL MM HH
|
6 | Runtime? LL MM HH
|
7 | unbekannt NN NN
|
8 | CRC-8 NN
|
Ein randvoller Akku liefert also z.B. 0xe0 0xff 0x02 als ADC Wert
zurück. Auch hier bildet eine CRC-8 über den gesamten Datensatz (also
mit Kamera Kommando) mit 0x07 als Polynom den Abschluss. Ein leerer Akku
gibt tatsächlich 0x00 0x00 0x00 zurück, bei einer Restspannung von
gesamt ca 6,8 V.
Im Moment verfolge ich es nicht weiter, da ich genug Akkus habe.