新闻中心

EEPW首页 > 电源与新能源 > 设计应用 > 基于单片机的物联网图像采集系统应用设计

基于单片机的物联网图像采集系统应用设计

作者:时间:2018-08-14来源:网络收藏

导读:本方案基于STM8设计,与其他嵌入式图像采集系统相比,具有成本低、设计新颖、系统体积小、结构简单等优势,能以非常低的成本附加到其他物联网传感节点上,使物联网节点具有采集和传输图像的功能,更大程度上方便用户使用。

本文引用地址:http://www.eepw.com.cn/article/201808/386705.htm

物联网具有以下特点:

(1)物联网节点对价格敏感。物联网是信息传感技术的大规模应用,传感节点数目成百上千,若每个节点的成本提高一点,整个物联网系统的成本就会提高很多。所以传感节点图像采集的成本应尽量低。

(2)大部分物联网应用对图像质量要求不高。图像采集主要是帮助用户不需要到现场就可以观察现场情况,对于大多数应用只要能分辨出现场场景即可,没必要采集很高像素的图像。

(3)基于成本考虑,物联网大多选用RS232,Zigbee,GPRS等传输速率不高的联网方式,图像传输时间较长。但许多监测节点安放的位置固定,采集的图像是准静态图像,也就是说,大部分情况下,图像是不变的,所以对帧率要求不高。即使图像采集的速度慢一些,也不会对现场情况的观察有太大的影响。

基于的物联网低成本CMOS图像采集系统方案针对物联网传感节点的特性,结合现有的技术条件和实际应用,提出一种用直接与CMOS图像相连,采用Flash为图像存储器,RS232为图像传输协议,并且多帧图像拼接成一幅图像的方法,实现了远程监控。所选器件价格低廉,硬件连接简单,从而成本非常低。该系统可单独作为独立的图像采集系统,又能以非常低的成本附加到其他物联网节点上,应用领域广泛。

1 系统总体方案

图像采集系统是根据某种特定的使用目的和应用条件,由图像采集、图像存储、图像传输和系统控制等相关电子设备和传输介质组成的一个有机整体。图1是系统的总体框图,系统主要由单片机、图像、Flash图像存储器组成。图像负责图像的采集,采集的图像数据由单片机实时读取。图像传感器的分辨率为240×320,数据量为150 KB,而单片机的内部RAM只有2K,存不下一帧图像,所以选择了一款Flash作为图像存储器,单片机将读取的图像数据转存人Flash图像存储器。由于图像数据转存入Flash需要占用数据采集的时间,这就导致单片机会错过部分数据的采集,根据所采图像为静态图像这一应用背景,错过的数据可通过下两帧图像替代,由此确定了用3帧图像拼成一幅图像的算法。等一幅图像采集转存完毕,单片机再从Flash图像存储器中读取图像数据,通过RS232 口传输到上位机。

2 系统硬件设计

2.1 图像传感器

系统采用了SP0828 CMOS芯片作为图像传感器。SP0828是一款完整的1/13英寸QVGA格式COMS图像传感器芯片。它支持RGB565、YUV422、Raw Bayer、Format图像格式,最高像素为240×320,最高帧速率为30帧/s,能够满足物联网传感节点图像采集的要求。SP0828可工作在3种模式下:普通sensor、EMI、SPI;3种模式的选择可通过I2C总线控制内部可编程功能寄存器来实现。该系统采用SPI模式,RGB565格式图像输出。

2.2 STM8单片机

STM8单片机是系统的控制中心,协调着整个系统的运作,所以必须要有较高的响应速度和丰富的外设资源。系统选用高性能、低功耗的8位微处理器STM8S207S6。它运行速度快,最高可以达到24 M。它的内部资源丰富,拥有32 KB的系统内可编程Flash,2 KB的内部RAM,l024 B的EEPROM,2个可编程的串行UART接口,一个最高速度可达400 bit/s的硬件I2C接口,一个可工作在主从模式的最高速度可达10 bit/s的硬件SPI接口等。并且它的开发工具简单,易于使用,价格便宜,开发资料多。因此,选用该款单片机不仅不需要为系统配置额外器件,而且大大降低了整个系统的成本及缩短了开发时间。

2.3 Flash图像存储器

STM8S207S6内部RAM为2 KB,一幅240×320分辨率图像的大小为150 KB,内部RAM不足以存下该分辨率的图像,所以系统选用一款Flash存储器SST25VF020作为外挂图像存储器。SST25VF020是SST25VF系列产品中的一员,其芯片具有以下特点:总容量为256 KB;单电源读和写操作,工作电压为2.7~3.3 V;低功耗,工作电流为7 mA,等待电流为3μA;SPI接口,可接受SPI时钟频率高达33 MHz,快速编程、快速擦除、快速读取等,该系列特点满足图像存储的要求。

2.4单片机与图像传感器、图像存储器的连接

STM8单片机与SP0828 COMS图像传感器、SST25VF020 Flash图像存储器的硬件连接如图2所示。

STM8单片机通过硬件12C接口对图像传感器内部寄存器进行初始化,通过硬件SPI接口接收图像传感器发送的数据。因为Flash图像存储器也是SPI接口,所以图像存储器与图像传感器分时复用STM8单片机的硬件SPI接口。

各接口代表的意义如下:

SPI_CS:图像传感器SPI接口片选,低电平有效,只有该接13为低电平,图像传感器才能接收单片机的SPI时钟,然后往单片机传送数据。该引脚连接单片机的PD7普通I/O口。

ECLK:图像传感器的主时钟输入引脚,连接单片机的CLK_CCO口。单片机通过该口为图像传感器提供16 MHz的主时钟。SPI_RD:图像传感器的图像控制信号输入脚,该引脚控制图像传感器下一帧图像是否到来,高电平有效,该13连接单片机的PB6普通I/O口。

SPI_CLK:图像传感器SPI数据输出的时钟信号输入脚,该引脚连接单片机硬件SPI的SPI_SCK口。单片机通过该引脚为图像传感器提供采数时钟,图像传感器根据采数时钟向单片机传输数据。

SPI_SDA:图像传感器SPI数据输出的数据信号输出脚,该引脚连接单片机硬件SPI的SPI_MISO口。单片机通过该引脚采集数据。

SPI_INT:图像传感器的中断申请信号。图像传感器把每帧图像分成几次中断,单片机响应中断,在中断服务程序里接收数据。该引脚连接单片机PIM具有外部中断接收功能的I/O口。

SBDA、SCLK:图像传感器I2C接口的数据引脚和时钟引脚,连接单片机硬件I2C接口的I2C_SDA和I2C_SCL,是单片机对图像传感器内部寄存器读写操作的数据总线和时钟总线。

PWDN:图像传感器初始化信号线,该引脚连接单片机的PC2普通I/0口。该信号线要在图像传感器上电的过程中拉低,只有该引脚在低电平的情况下,图像传感器才能正常工作。

SST_CE:Flash SPI接口的片选引脚,低电平有效,该引脚连接单片机的PD0普通I/O口。

SST_SO、SST_SI:Flash SPI接口的数据引脚,连接单片机SPI_MISO和SPI_MOSI口,与图像传感器的SPI_SDA分时复用SPI_MISO口。

SST_SCK:Hash SPI接口的时钟信号输入引脚,连接单片机的SPI_SCK口,与图像传感器的SPI_CLK分时复用SPI_SCK口。

3 系统软件设计

3.1主程序的设计

系统软件可分为:图像传感器模块、图像存储器模块、图像的多帧采集和拼接模块、串口数据传输模块。其基本流程图如图3所示。为了尽量提高单片机的处理速度,将系统的时钟频率设置为最高,即16 MHz。

3.2 图像传感器模块软件设计

根据SP0828 CMOS数字图像传感器的工作原理和工作流程,图像传感器模块包括了图像传感器上电初始化、图像传感器寄存器初始化、图像数据采集3个部分。

3.2.1 图像传感器上电初始化

图像传感器上电初始化,就是图像传感器在上电结束但尚未开始工作的时候,对图像传感器芯片提供主时钟、初始化信号线拉低等一系列的操作,以使图像传感器能够正常工作或者获得最佳的工作状态。其主要流程如图4所示。

DVDD28AVDD连接电源,DVDD28AVDD拉高即是上电。在上电之后,延时至少10岬,初始化信号线PWDN拉低。然后延时至少110μs,单片机为图像传感器提供主时钟,为使图像传感器工作在最快的速度,单片机为图像传感器提供最高16 MHz的时钟。最后延时至少20 clock,单片机通过I2C接口对图像传感器内部寄存器进行初始化。上电结束。

3.2.2 图像传感器内部寄存器初始化

CMOS图像传感器采用I2C总线控制其各项功能,简单、快捷。I2C总线也是目前图像传感器采用最普遍的控制方式。用户可以通过I2C总线改变图像传感器内部可编程寄存器的缺省参数来设置图像传感器的工作方式,如时钟、帧率、曝光、对比度、亮度等。I2C总线是芯片间串行数据传输总线,它只用一根数据线SDA和一根时钟线SCL即可实现完善的双工同步数据传输。I2C总线规定,主控制器发送起始信号表明一次数据传输的开始,然后为寻址字节,寻址字节由高7位地址位和低1位方向位组成。方向位表明主控制器与被控制器之间的数据传输方向,当该位为“0”时表明主控制器对被控制器的写操作,为“1”时表明主控制器对被控制器的读操作。寻址字节后是按照指定地址读写操作的数据字节与应答位。数据传送完成后主控制器必须发送终止信号。I2C协议的时序如图5所示。

STM8单片机有专门的硬件I2C接口,因此可通过该接口实现与图像传感器的通信。该系统中STM8单片机的I2C_SDA数据线和I2C_SCL时钟线分别连接图像传感器的SBDA数据传输口和SCLK时钟传输口。通过上述对I2C协议的分析,设计了如图6所示的I2C总线数据传输流程。

I2C总线操作的典型时序信号有起始位信号、终止位信号、发送地址、发送数据、接收数据,所有的时序信号都是通过对单片机硬件I2C内部寄存器的操作实现的。I2C模块主要功能函数如下:

(1)读取图像传感器内部寄存器的值

unsigned char I2C_Read(unsigned char slave—address,unsigned charreg address,unsigned char slave_read_address)

/* slave_address是图像传感器的地址+写操作符“0”,reg_address是图像传感器内部寄存器的地址,slave_read_address是图像传感器的地址+读操作符“1”*/

{

unsigned char val;

I2C_Start();//启动I2C总线,I2C_CR2寄存器最低位置l

I2C_SendDAdr(slave_address);//发送图像传感器的地址+写操作符“0”

I2C_SendDat(reg_address);//发送内部寄存器的地址

I2C_Start();//启动I2C总线,I2C_CR2寄存器最低位置1

I2C_SendDAdr(slave_read_address);//发送图像传感器的地址+读操作符“1”

vai=12C_RcvDat();//从I2C接口读取数据

I2C_stop();//释放I2C总线,I2C_CR2寄存器次低位置1

retunl val;

}


上一页 1 2 下一页

关键词: 传感器 单片机

评论


相关推荐

技术专区

关闭