导读:本计划依据STM8单片机规划,与其他嵌入式图画收集体系比较,具有本钱低、规划新颖、体系体积小、结构简略等优势,能以十分低的本钱附加到其他物联网传感节点上,使物联网节点具有收集和传输图画的功用,更大程度上便利用户运用。
物联网具有以下特色:
(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;
}