2024年2月19日发(作者:)

串口摄像头使用说明书

一、串口摄像头介绍

1、基本介绍

SXH-V1/V2系列串口摄像头是一款具有视频采集和图像压缩功能的摄像头,具有130万象素CMOS摄像头,最大分辨率可达到1280×960,它是一个内含有拍摄控制、视频捕捉、图像数据采集、图像JPEG压缩、串口通讯等功能的齐全的工业用图像采集设备。采用标准的JPEG图像压缩算法,本产品的图像输出格式与常用计算机完全兼容。同时,本产品带有可选择的红外照明功能,能够实现自动照度补偿、在黑暗的光线下仍能较好的图片质量。

该摄像头的接口可定制为标准的RS-232接口、485接口或TTL电平串口,能够很方便和与各种计算机和嵌入式控制系统、数据传输系统相连。使用485接口时可以方便控制设备接入多个摄像头。最大串口通讯速率可达115200bps。

摄像头接口无特殊说明的使用RS232接口,不提供硬件握手信号,支持的通讯速率为:4800、9600、14400、19200、38400、57600、115200,设备默认通讯波特率为115200,可以通过命令配置。

SXH-V1/V2系列串口摄像头是按照工业极标准设计的,输入电压可以支持5、12V直流电压,可在-30度到+70度范围内正常工作。

2、性能概要

◆含有130万象素CMOS摄像头;

◆标准的485接口,可以根据要求定制为RS-232接口、TTL电平、USB接口,便于与嵌入式工控设备相连;

◆ 传输速率最高可达115200比特/每秒,可以通过串口设置波特率。

◆ 带有自动的象素缺陷补偿、黑度校正、RGB色彩插值补偿、Gamma参数补偿和色调、饱和度补偿功能。

◆ 具有自动的边缘增强、白光平衡、自动曝光、背景对比补偿功能。

◆ 采集图像分辨率为1280×960、640×480(VGA)彩色、320×240(QVGA)彩色/160×120(QQVGA)彩色多种分辨率可选;

◆ 采集图像质量为“最好”、“较好”和“普通”三种画质可选;

◆ 标准的JPEG图像输出,图像大小在4K~40K字节之间,根据图像分辨率和图像质量而不同。

◆ 具有“抓拍一帧”和“连续拍摄”两种操作模式

◆ 具有普通型和红外照明两种类型,其中红外照明可以根据环境照度不同而自动开关实现照明补偿,其照度、角度可以根据要求选择,可以远程照明和完全隐蔽照明。

◆ 可以根据拍摄要求,配用视角为80度~120度等系列标准镜头

◆ 单一5V(或12V)供电,也可根据要求定制供电电压。

◆ 普通型电流100mA,红外照明型根据照度的不同,电流在100mA到550mA之间。

◆ 工作温度-30℃~70℃

3、适用领域 (Applications)

1

各种图像采集系统、环境监控、工业现场过程控制、医疗设备、安全防盗、车载GPS、图像采集系统

4、摄像头接口定义

摄像头引出线(共四根)无特别说明的情况下,定义如下:

红色

黄色

5、485测试方法

485接口的摄像头连接pc进行镜头调试、参数设置的时候需要通过一个485转换器和PC的232接口连接。485数据线只需要两根线,称为A、B或485+、485-。连接的时候将摄像头的两根485数据线和转换器的两根数据线连接,转换器上的电源(+5v)和地不用连接。另外给摄像头提供一个5v电源,接到摄像头的+5V和GND端即可。注意485的数据线有正负之分,接错不会造成设备损坏,但不能正常通讯,此时交换一下即可。摄像头的电源一定不能接错,否则会烧坏摄像头。

485+ A

摄转485- B

像换GND GND

+5V

+5V

+5V电源

6、规格参数

电气参数

内容

工作电压

工作电流

SENSOR 型号

图像压缩格式

波特率

像素

图象参数

规格参数及说明

DC5V(+7~+24V)

典型值:<130mA 夜视最大值:<250mA

MT9M111

JPEG

9600、19200、57600、115200可选

最大100K (1280*960)

支持:320×240、640×480、1280×960

2米(在夜视情况下,拍摄2M外的人物以能分辨肖像的面部特征为辩定的依据)

自动

2

电源正极 黑色 电源信号地

232发送(485A) 232接收(485B) 白(绿)色

电脑232接口

夜视距离

白平衡

曝光

视角

最低照度

环境参数 工作温度

储存温度

SXH(海螺壳) 主机尺寸

主机重量

SXH(防水壳)

SXH(小外壳)

主机尺寸

主机重量

主机尺寸

主机重量

自动

根据客户要求安装不同的镜头,视角50-120°

1.0Lux(550nm)

-30-70摄氏度

-40-85摄氏度

Φ120X90mm

300克

Φ65X90mm

750克

45X60X40mm

270克

3

二、摄像头接口协议

1、基本报文格式介绍

串口摄像头采用可以支持232或485接口进行通讯,其通讯协议保持一致。下行(到摄像头)报文的基本格式如下:

报文头

2字节

摄像头地址 报文类型

1字节

报文头:固定两个字节0X90EB,第一个字节是0XEB,第二个字节是0X90;

摄像头地址:每个摄像头都可以设定一个地址,地址范围从0-255,其中地址0保留,地址255用于广播报文。每个摄像头只处理地址和自己内部设定的地址相同的报文,地址不等当作无效报文。

报文类型:定义具体的命令类型,主要命令见下表

报文类型(16进制)

0x 01

0x 02

测试摄像头

按照报文给定的图像参数拍照并传输图像数据,

一次传输完全部图象数据,注意该协议返回的数据长度是三个字节,没有状态字节,状态字节对应图象数据长度的高字节,

最大支持16M字节的图象大小。

0x 03

0x 04

0x 05

0x 06

0x 08

0x0a

报文长度 命令参数

2字节

<(65536-9)

CRC校验码

2字节 1字节

命令说明 备注

设置对比度

设置亮度

按照报文给定的图象参数拍照,并返回图像长度

传输图像数据

关闭、打开红外灯

修改波特率不保存

4

未实现

未实现

新的波特率不会保存,重新上电后仍然回复到原

来的波特率

0x0b

0x0c

0x0d

0x 12

修改波特率参数并保存参数

强制摄像头进入低功耗状态

修改摄像头的ID

按照报文给定的图像参数拍照并传输图像数据,

一次传输完全部图象数据,注意该协议返回的数据长度是三个字节,没有状态字节,状态字节对应图象数据长度的高字节,

最大支持16M字节的图象大小。

0x30

请求拍照,以默认的压缩比和图象大小进行拍照,拍照结束返回图象大小,如果修改过图象大小参数,会以最后一次的图象大小进行拍照

0x31

0x32

0x33

0x34

报文长度:定义报文的数据长度,只计算命令参数部分的数据长度。

CRC校验码:从摄像头地址字节开始到命令参数结束部分数据的CRC校验码。校验码错误的报文作为无效报文丢弃。

注:摄像头发送的报文均计算了CRC校验码,接收到命令,由于数据长度较短,且为了调试方便,没有对校验码做判断,用户在调试程序时可以先不处理校验码,但数据长度不能少,可以用两个字节00 00 代

5

未实现

返回拍照的图片大小

请求传输指定包的图像数据

设置分包传输的包大小

报告上次拍照命令拍摄的图片数据大小

设置默认的图象分辨率

必须顺序传递,从第0包开始,不可以随机请求

默认512字节,包大小必须是128的倍数

0x30开始的命令主要用于分包传输协议,就是主机端没有大的缓存时可以使用这些指令。

替。如在通讯恶劣的环境需要摄像头判断上位机发送的校验码,可以订货时注明。

CRC校验码计算公式:

C语言算法代码如下:

static const unsigned short crc_ta[256]={ /* CRC余式表 */

0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7,

0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef,

0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6,

0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de,

0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485,

0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d,

0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6, 0x5695, 0x46b4,

0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc,

0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823,

0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b,

0x5af5, 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12,

0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a,

0x6ca6, 0x7c87, 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41,

0xedae, 0xfd8f, 0xcdec, 0xddcd, 0xad2a, 0xbd0b, 0x8d68, 0x9d49,

0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, 0x1e51, 0x0e70,

0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, 0x9f59, 0x8f78,

0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f,

0x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067,

0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e,

0x02b1, 0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256,

0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d,

0x34e2, 0x24c3, 0x14a0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405,

0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, 0xc71d, 0xd73c,

0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634,

0xd94c, 0xc96d, 0xf90e, 0xe92f, 0x99c8, 0x89e9, 0xb98a, 0xa9ab,

0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882, 0x28a3,

0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a,

0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92,

0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9,

0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1,

6

0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8,

0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0

};

unsigned short cal_crc(unsigned char *ptr, unsigned short len)

{

unsigned short crc;

unsigned char da;

crc=0;

while(len--!=0) {

da=(unsigned char) (crc/256); /* 以8位二进制数的形式暂存CRC的高8位 */

crc<<=8; /* 左移8位,相当于CRC的低8位乘以 */

crc^=crc_ta[da^*ptr]; /* 高8位和当前字节相加后再查表求CRC ,再加上以前的CRC */

ptr++;

}

return(crc);

}

上行报文的基本格式如下:

报文头

2字节

状态:1字节的状态字节,反映了摄像头的当前状态

D7

保留

D6

保留

D5

保留

D4

保留

D3

保留

D2

保留

D1

保留

D0

=1摄像头内部错误

=0正常

7

摄像头地址报文类型

(ID)

1字节

1字节

报文长度 状态

2字节 1字节

数)

据CRC校验码

2字节

<(65536-9

2、具体命令介绍

1、 测试摄像头

命令类型:0x01

命令长度:0x0002

命令参数:0x55aa

返回:

数据长度:0x0002

数据内容:0xaa55

举例:

发送到摄像头:90 eb 01 01 02 00 55 aa 00 00

返回:90 eb 01 01 02 00 aa 55 00 00

2、 拍照并传输图像数据

命令类型:0x02

命令长度:0x0002

90 eb 01 02 02 00 分辨率(0-7) 压缩比(0-3) crc1 crc2

命令参数:字节1代表图像的分辨率,取值范围见下表

分辨率代码

0

1

2

3

4

5

6

7

字节2 代表图像的压缩比,取值范围0-4,共5个等级,0时压缩比最小,图像效果最好。

返回:

注意:该上行报文取消了摄像头状态字节,该字节被图象长度的第三字节取代,该字节和数据长度两字节

8

分辨率

128*120

160*120

128*96

320*240

128*160

640*480

1152*864

1280*960

备注

一起形成一个三字节的数据长度。

数据长度:压缩后图象数据的大小

数据内容:压缩后的完整jpeg数据

举例:

90 eb 01 02 04 23 06 02 00 00 00

其中的04 23 06三个字节代表数据长度394275字节的数据长度

3、 设置对比度

命令类型:0x03

命令长度:0x0001

命令参数:对比度大小,对比度值以0x80为中间值上下波动。

返回:

状态字节:00

数据长度:0x0001

数据内容:设定的对比度值

4、 设置亮度

命令类型:0x04

命令长度:0x0001

命令参数:亮度大小,亮度值以0x80为中间值上下波动。

返回:

状态字节:00

数据长度:0x0001

数据内容:设定的亮度值

5、 拍照

命令类型:0x05

命令长度:0x0002

命令参数:字节1代表图像的分辨率,取值范围见上表

9

字节2 代表图像的压缩比,取值范围0-4,共5个等级,0时压缩比最小,图像效果最好。

返回:

状态字节:D7=1;标识图像数据大于64K

数据长度:0x0004

数据内容:4字节 压缩后图象数据的大小

6、 传输图像数据

命令类型:0x06

命令长度:0x0000

命令参数: 无

返回:

数据长度:压缩后图象数据的大小

数据内容:压缩后的完整jpeg数据

7、 红外灯控制

命令类型:0x08

命令长度:0x0001

命令参数: 红外灯开关 0x33 = 打开 0xCC

返回:

数据长度:0x0001

数据内容:红外灯开关值

8、 修改波特率参数

命令类型:0x0a

命令长度:0x0001

命令参数: 01 = 9600

02 = 19200

03 = 28800

= 关闭

10

04

05

06

返回:无

= 38400

= 57600

= 115200

例:需要设置9600的波特率,命令如下: 90 EB ID 0A 01 00 02 CRC1 CRC2

其它的波特率需要定制,无特别说明默认的波特率是115200,该命令修改后的波特率不会被保存,重新上电以后仍然回到原来的波特率。

9、 修改波特率参数并保存

命令类型:0x0b

命令长度:0x0001

命令参数:00 = 4800

01 = 9600

02 = 19200

03 = 28800

04 = 38400

05 = 57600

06 = 115200

07 = 115200

返回:无

例:需要设置9600的波特率,命令如下:90 EB ID 0B 01 00 02 CRC1 CRC2

其它的波特率需要定制,无特别说明默认的波特率是57600

该命令修改后的波特率会被保存,重新上电后使用新的波特率。

修改摄像头ID标识 10、

命令类型:0x0d

命令长度:0x0001

命令参数: 新的ID标识号,可以取值范围为1-255

返回:

数据长度:0x0001

数据内容:新的ID号

例:需要设置ID=2时,命令如下: 90 EB原来ID号 0D 01 00 02 CRC1 CRC2

11、

拍照并传输黑白图像数据

11

命令类型:0x12

命令长度:0x0002

命令参数:字节1代表图像的分辨率,取值范围见下表

分辨率代码

0

1

2

3

4

5

6

7

字节2 代表图像的压缩比,取值范围0-4,共5个等级,0时压缩比最小,图像效果最好。

返回:

注意:该上行报文取消了摄像头状态字节,该字节被图象长度的第三字节取代,该字节和数据长度两字节一起形成一个三字节的数据长度。

数据长度:压缩后图象数据的大小

数据内容:压缩后的完整jpeg数据

举例:

90 eb 01 02 04 23 06 02 00 00

其中的04 23 06三个字节代表数据长度394275字节的数据长度

12、 分包传输图像数据时请求拍照命令

命令类型:0x30

命令长度:0x0000

命令参数: 无

返回:拍照成功后返回图像数据的大小及包数量,一共6个字节,低字节在前。其中前面4字节是图像数据长度,2字节是分包数量。

12

分辨率

128*120

160*120

128*96

320*240

128*160

640*480

1152*864

1280*960

备注

数据长度:0x0005

例:需要拍照时,命令如下:90 EB ID号 30 00 00 CRC1 CRC2

返回:90 EB ID号 30 07 00 状态字节LEN1 LEN2 LEN3 LEN4 PACK1 PACK2 CRC1 CRC2

13、 请求按分包传输图像数据

命令类型:0x31

命令长度:0x0002

命令参数: 请求的图像数据包号,占两个字节,最大可达65536个数据包

返回:返回指定包的图像数据的大小

数据长度:

数据内容:图像数据

例:请求包号1的命令如下:90 EB ID号 31 02 00 01 00 CRC1 CRC2

返回:90 EB ID号 31 命令长度1 命令长度2 状态字节 包号L 包号H 数据 CRC1 CRC2

返回的命令长度=指定包数据+包号2字节+状态1字节,如果不是最后一个包,包数据大小就是包长度。

按分包传输图像数据时,必须先发送分包拍照命令(0x30),拍照成功后必须从0包顺序传递,不可以随机传送任意包号的数据。

14、 设置分包传输图像数据时的包大小,默认是512字节

命令类型:0x32

命令长度:0x0002

命令参数:数据包大小,占两个字节,包大小必须是128的整数倍,如 128 256 512 1024 2048等

返回:返回指定包的图像数据的大小

数据长度:0x0003

数据内容:新的数据包大小

例:设定512包的命令如下: 90 EB ID号 32 02 00 00 02 CRC1 CRC2

返回: 90 EB ID号 32 03 00 STA 00 02 CRC1 CRC2

15、 设置分包拍照的默认图像分辨率

命令类型:0x34

命令长度:0x0002

命令参数:字节1 图像分辨率

13

字节2 图像压缩比(0-4)

图像分辨率代码,见下表

分辨率代码

1

3

5

7

返回:返回指定包的图像数据的大小

数据长度:0x0003

数据内容:新的数据包大小

例:设定640×480的命令如下: 90 EB ID号 34 02 00 05 01 CRC1 CRC2

返回: 90 EB ID号 34 03 00 STA 05 01 CRC1 CRC2

图示2:分包传输时一幅完整图片采集流程1

注意:此流程仅供参考,设计中应包含但不限于如下流程,即对一下采集流程兼容。

分辨率

160*120

320*240

640*480

1280*960

备注

14

设置图象参数320*240

90 EB 01 34 XX

应答(ACK)

90 EB 01 34 XX

拍照命令

90 EB 01 30 XX

应答(ACK)

90 EB 01 30 XX

(允许传送)应答第0包

90 EB 01 31 XX

6+512字节图象数据,PACK ID= 0

(允许传送)应答第1包

90 EB 01 34 XX

6+512字节图象数据,PACK ID= 1

6+512字节图象数据,PACK ID= N-1

(允许传送)应答第n包

90 EB 01 34 XX

15