Protokoll einer Philips DC-3840 Kamera

 

Eigenschaften der Philips DC-3840 Kamera

  • kleine Bauform, 25x25mm
  • Bildformate 640x480, 320x240, 160x120
  • 5V Spannungsversorgung
  • geringe Stromaufnahme von etwa 60mA / 20µA suspend
  • Geschwindigkeit: bis zu 6 FPS
  • Übertragung: seriell (3,3V gegen GND)
  • Chip: OV528 Serial Bridge

 


Befehlstabelle

Die Philips DC-3840 Unterstützt folgende Befehle (diese entsprechen in etwa der einer C328):

Command

ID Number

Parameter1

Parameter2

Parameter3

Parameter4

Initial

FFFFFF01h

Baudrate

Preview 
Type

Preview
Resolution (Still image only)

JPEG Resolution

Get Picture

FFFFFF04h

Picture Type

Picture
ID

00h

00h

Snapshot

FFFFFF05h

Snapshot Type

Skip Frame
Low Byte

Skip Frame
High Byte

00h

Save Data

FFFFFF06h

Destination

Length Byte0

Length Byte1

Length Byte2

Reset

FFFFFF08h

Reset Type

00h

00h

00h

Power Off

FFFFFF09h

00h

00h

00h

00h

Data

FFFFFF0Ah

Data Type

Length Byte 0

Length Byte 1

Length Byte 2

SYNC

FFFFFF0Dh

00h

00h

00h

00h

ACK

FFFFFF0Eh

Command ID

ACK counter

00h / Package ID Byte 0

00h / Package ID Byte 1

NAK

FFFFFF0Fh

00h

NAK counter

Error Number

00h

Kompression

FFFFFF10h

00h low
02h high

00h

00h

00h

Light

FFFFFF12h

00h Day
01h Night

00h

00h

00h

Color FFFFFF17h

00h Color
01h S/W

00h 00h 00h
DIGITAL
ZOOM
FFFFFF18h 01h normal
00h 2x
00h 00h 00h

Synchronisation

Zuerst wird zur Kamera ein Sync Kommando geschickt. Das kann bis zu 60mal erforderlich sein, da sich die Kamera evt. im Sleep Mode befindet:

0xFF 0xFF 0xFF 0x0D 0x00 0x00 0x00 0x00

Kamera Antwortet irgendwann mit:

0xFF 0xFF 0xFF 0x0E 0x0D 0x00 0x00 0x00
0xFF 0xFF 0xFF 0x0D 0x00 0x00 0x00 0x00

Daraufhin sendet der Host:

0xFF 0xFF 0xFF 0x0E 0x0D 0x00 0x00 0x00

Somit ist die Synchronisation abgeschlossen!


Daten anfordern/empfangen

Mit den Kommandos wird nun ein JPEG Bild abgerufen (160 x 120 Pixel):

0xFF 0xFF 0xFF 0x08 0x01 0x00 0x00 0x00
0xFF 0xFF 0xFF 0x01 0x01 0x07 0x19 0x13
0xFF 0xFF 0xFF 0x05 0x00 0x00 0x00 0x00
0xFF 0xFF 0xFF 0x04 0x01 0x00 0x00 0x00

Mit den Kommandos wird nun ein JPEG Bild abgerufen (320 x 240 Pixel):

0xFF 0xFF 0xFF 0x08 0x01 0x00 0x00 0x00
0xFF 0xFF 0xFF 0x01 0x01 0x07 0x09 0x05
0xFF 0xFF 0xFF 0x05 0x00 0x00 0x00 0x00
0xFF 0xFF 0xFF 0x04 0x01 0x00 0x00 0x00

Mit den Kommandos wird nun ein JPEG Bild abgerufen (640 x 480 Pixel):

0xFF 0xFF 0xFF 0x08 0x01 0x00 0x00 0x00
0xFF 0xFF 0xFF 0x01 0x01 0x07 0x09 0x07
0xFF 0xFF 0xFF 0x05 0x00 0x00 0x00 0x00
0xFF 0xFF 0xFF 0x04 0x01 0x00 0x00 0x00

Daraufhin sendet die Kamera die Anzahl der Bytes und die Daten:

0xFF 0xFF 0xFF 0x0A DataType Byte0 Byte1 Byte2
Daten.....................................................................
..............................................................................

Sollen die gleichen Daten noch mal gesendet werden, schickt man nur das Kommando:

0xFF 0xFF 0xFF 0x04 0x01 0x00 0x00 0x00

 

Ein kleiner DC-3840 Kameratreiber für einen ATmega32/644

Wichtig ist dabei, dass der Quarz mit 14,7456Mhz schwingt! Die Kamera wird dabei direkt an den USART des Prozessors angeschlossen. An Pin D.5 stehen die Daten seriell zur Verfügung (Softuart, 1 Startbit, 8 Datenbits, 1 Stoppbit, 38400Baud).

Kamera Treiber für ATmega32/644 (04.01.2008)
(Eine aktuellere Implementierung findet sich im Code zum ETH_EX)

Testbild einer DC3840
Testbild (320 x 240 Pixel) welches ich mit der Kamera gemacht habe.


Gutes aus dem Forum