Hi guys,
Yes, it's someone else interested in an easy and cheap way of getting hold of a thermal imaging core with as little extra stuff tacked on.
Give me a nudge if there is another more detailed thread on this topic, otherwise I'm going to stick here as a data dump for those interested.
I have some BMW diag software, including a very basic program that will forward and return commands.
So- here are some of the possible commands and controls. Note- I think this is direct from the camera module itself!
Statuses
STATUS_KAMERA_TEMP camera temp
STATUS_HEIZUNG_TEMP heating temp (it has a heated front lens for clearing rain and condensation)
STATUS_KAMERA_SPANNUNG - spannung = voltage
STATUS_KAMERA_STUNDEN - operating hours
STATUS_SHUTTER_CYCLE -shutter cycle time in seconds
STATUS_ZEILE_LESEN - "Read data of a line from the camera.
It is the one half of one line read (160 bytes)
The camera image consists of 320 columns and 240 rows" - official function description
STATUS_VERDREHWINKEL - camera rotation angle, returns 1/10 deg angle
STATUS_OFFSETWINKEL - gives the offset angle, 8 bit data centred on 128decimal, and can read +/- 7.2 degrees
STATUS_DEAD_PIXEL - this returns the result of a dead pixel test, and gives the reply as a voltage(?!)
STATUS_KAMERA_BOARD - this reads ID data such as serial numbers and manufacturer codes
Controls and commands
STEUERN_TESTBILD "Displays test patterns NIVI the camera to
Test Image 1 -> diagonal gray stripes
Test Image 2 -> Vertical grayscale bar
Test image 3 -> horizentale grayscale bar
Test image 5 -> horizentale grayscale dark bottom light up"
STEUERN_SHUTTER- The following closing procedure can be set
00 => shutter remains open
01 => Shutter closes automatically every 2 min WITHOUT pixel calibration
02 => Shutter closes automatically every 2 min WITH pixel calibration
06 => shutter is closed (not Image Display)
STEUERN_WINKEL_SCHREIBEN - writes the rotation angle
STEUERN_HEIZUNG_AUS - switches heating off
STEUERN_HEIZUNG_EIN - switches heating on
STEUERN_ZOOM_AUS - zoom out
STEUERN_ZOOM_EIN - zoom in
STEUERN_TEST_PIXEL_EIN - switches on the dead pixel test, this takes 3.5 mins and outputs the total number of dead pixels - an off command is also available
Now some of the more interesting parts-
AUTHENTISIERUNG_START - for this, you need to give an "argument", in this case feed it the binary buffer, and the binary buffer is formed like this (in German, but fairly self explanatory, google translate is there if you need it!)
Als Argument wird ein vorgefuellter Binaerbuffer uebergeben
Der Binaerbuffer hat folgenden Aufbau
Byte 0 : Datentyp (1:Daten, 2:Maskendaten)
Byte 1 : (unbenutzt) Wortbreite (1:Byte, 2:Word, 3:DWord)
Byte 2 : (unbenutzt) Byteordnung (0:LSB zuerst, 1 MSB zuerst)
Byte 3 : (unbenutzt) Adressierung (0: freie Adressierung, 1:Blockadressierung)
Byte 4 : Authentisierungszeit in Sekunden
Byte 5,6 : (unbenutzt) WordParameter 1 (low/high)
Byte 7,8 : (unbenutzt) WordParameter 2 (low/high)
Byte 9,10,11,12 : (unbenutzt) Maske (linksbuendig)
Byte 13,14 : Anzahl Bytedaten (low/high)
Byte 15,16 : (unbenutzt) Anzahl Wortdaten (low/high)
Byte 17,18,19,20 : (unbenutzt) Wortadresse (low/highbyte, low/highword)
Byte 21,.... : Schluesseldaten
Byte 21+Anzahl Daten: ETX (0x03)
Fault code outputs
0xA788 Heater Camera
0xA789 voltage Supply Camera
0xA78A Tamper Protection Camera uh oh! - it has a form of anti tamper
0xA78B IR Sensor
0xA78C Defective Pixel
0xA78D Shutter
0xA78E HW/SW error
0xA78F Video out failure
0xA790 Camera not adjusted
0xA768 Camera Overtemperature
0xA769 Watching Reset (Camera)
0xFFFF unbekannter Fehlerort
So, that might be making things overcomplicated, especially if someone is going to tap into the raw sensor data but it is explaining what the "private CAN" connections are about, and it shows the module has some brains and self diagnosis.
This particular info should be for the first version of the camera, but it looks like it applies to all of them.
I haven't got a camera, I'm not on the level of the hardware hacking that some people might be on, but if i can help, I will!