基于單片機的物聯(lián)網(wǎng)圖像采集系統應用設計
導讀:本方案基于STM8單片機設計,與其他嵌入式圖像采集系統相比,具有成本低、設計新穎、系統體積小、結構簡(jiǎn)單等優(yōu)勢,能以非常低的成本附加到其他物聯(lián)網(wǎng)傳感節點(diǎn)上,使物聯(lián)網(wǎng)節點(diǎn)具有采集和傳輸圖像的功能,更大程度上方便用戶(hù)使用。
本文引用地址:http://dyxdggzs.com/article/201808/386705.htm物聯(lián)網(wǎng)具有以下特點(diǎn):
(1)物聯(lián)網(wǎng)節點(diǎn)對價(jià)格敏感。物聯(lián)網(wǎng)是信息傳感技術(shù)的大規模應用,傳感節點(diǎn)數目成百上千,若每個(gè)節點(diǎn)的成本提高一點(diǎn),整個(gè)物聯(lián)網(wǎng)系統的成本就會(huì )提高很多。所以傳感節點(diǎn)圖像采集的成本應盡量低。
(2)大部分物聯(lián)網(wǎng)應用對圖像質(zhì)量要求不高。圖像采集主要是幫助用戶(hù)不需要到現場(chǎng)就可以觀(guān)察現場(chǎng)情況,對于大多數應用只要能分辨出現場(chǎng)場(chǎng)景即可,沒(méi)必要采集很高像素的圖像。
(3)基于成本考慮,物聯(lián)網(wǎng)大多選用RS232,Zigbee,GPRS等傳輸速率不高的聯(lián)網(wǎng)方式,圖像傳輸時(shí)間較長(cháng)。但許多監測節點(diǎn)安放的位置固定,采集的圖像是準靜態(tài)圖像,也就是說(shuō),大部分情況下,圖像是不變的,所以對幀率要求不高。即使圖像采集的速度慢一些,也不會(huì )對現場(chǎng)情況的觀(guān)察有太大的影響。
基于單片機的物聯(lián)網(wǎng)低成本CMOS圖像采集系統方案針對物聯(lián)網(wǎng)傳感節點(diǎn)的特性,結合現有的技術(shù)條件和實(shí)際應用,提出一種用單片機直接與CMOS圖像傳感器相連,采用Flash為圖像存儲器,RS232為圖像傳輸協(xié)議,并且多幀圖像拼接成一幅圖像的方法,實(shí)現了遠程監控。所選器件價(jià)格低廉,硬件連接簡(jiǎn)單,從而成本非常低。該系統可單獨作為獨立的圖像采集系統,又能以非常低的成本附加到其他物聯(lián)網(wǎng)節點(diǎn)上,應用領(lǐng)域廣泛。
1 系統總體方案
圖像采集系統是根據某種特定的使用目的和應用條件,由圖像采集、圖像存儲、圖像傳輸和系統控制等相關(guān)電子設備和傳輸介質(zhì)組成的一個(gè)有機整體。圖1是系統的總體框圖,系統主要由單片機、圖像傳感器、Flash圖像存儲器組成。圖像傳感器負責圖像的采集,采集的圖像數據由單片機實(shí)時(shí)讀取。圖像傳感器的分辨率為240×320,數據量為150 KB,而單片機的內部RAM只有2K,存不下一幀圖像,所以選擇了一款Flash作為圖像存儲器,單片機將讀取的圖像數據轉存人Flash圖像存儲器。由于圖像數據轉存入Flash需要占用數據采集的時(shí)間,這就導致單片機會(huì )錯過(guò)部分數據的采集,根據所采圖像為靜態(tài)圖像這一應用背景,錯過(guò)的數據可通過(guò)下兩幀圖像替代,由此確定了用3幀圖像拼成一幅圖像的算法。等一幅圖像采集轉存完畢,單片機再從Flash圖像存儲器中讀取圖像數據,通過(guò)RS232 口傳輸到上位機。
2 系統硬件設計
2.1 圖像傳感器
系統采用了SP0828 CMOS芯片作為圖像傳感器。SP0828是一款完整的1/13英寸QVGA格式COMS圖像傳感器芯片。它支持RGB565、YUV422、Raw Bayer、Format圖像格式,最高像素為240×320,最高幀速率為30幀/s,能夠滿(mǎn)足物聯(lián)網(wǎng)傳感節點(diǎn)圖像采集的要求。SP0828可工作在3種模式下:普通sensor、EMI、SPI;3種模式的選擇可通過(guò)I2C總線(xiàn)控制內部可編程功能寄存器來(lái)實(shí)現。該系統采用SPI模式,RGB565格式圖像輸出。
2.2 STM8單片機
STM8單片機是系統的控制中心,協(xié)調著(zhù)整個(gè)系統的運作,所以必須要有較高的響應速度和豐富的外設資源。系統選用高性能、低功耗的8位微處理器STM8S207S6。它運行速度快,最高可以達到24 M。它的內部資源豐富,擁有32 KB的系統內可編程Flash,2 KB的內部RAM,l024 B的EEPROM,2個(gè)可編程的串行UART接口,一個(gè)最高速度可達400 bit/s的硬件I2C接口,一個(gè)可工作在主從模式的最高速度可達10 bit/s的硬件SPI接口等。并且它的開(kāi)發(fā)工具簡(jiǎn)單,易于使用,價(jià)格便宜,開(kāi)發(fā)資料多。因此,選用該款單片機不僅不需要為系統配置額外器件,而且大大降低了整個(gè)系統的成本及縮短了開(kāi)發(fā)時(shí)間。
2.3 Flash圖像存儲器
STM8S207S6內部RAM為2 KB,一幅240×320分辨率圖像的大小為150 KB,內部RAM不足以存下該分辨率的圖像,所以系統選用一款Flash存儲器SST25VF020作為外掛圖像存儲器。SST25VF020是SST25VF系列產(chǎn)品中的一員,其芯片具有以下特點(diǎn):總容量為256 KB;單電源讀和寫(xiě)操作,工作電壓為2.7~3.3 V;低功耗,工作電流為7 mA,等待電流為3μA;SPI接口,可接受SPI時(shí)鐘頻率高達33 MHz,快速編程、快速擦除、快速讀取等,該系列特點(diǎn)滿(mǎn)足圖像存儲的要求。
2.4單片機與圖像傳感器、圖像存儲器的連接
STM8單片機與SP0828 COMS圖像傳感器、SST25VF020 Flash圖像存儲器的硬件連接如圖2所示。
STM8單片機通過(guò)硬件12C接口對圖像傳感器內部寄存器進(jìn)行初始化,通過(guò)硬件SPI接口接收圖像傳感器發(fā)送的數據。因為Flash圖像存儲器也是SPI接口,所以圖像存儲器與圖像傳感器分時(shí)復用STM8單片機的硬件SPI接口。
各接口代表的意義如下:
SPI_CS:圖像傳感器SPI接口片選,低電平有效,只有該接13為低電平,圖像傳感器才能接收單片機的SPI時(shí)鐘,然后往單片機傳送數據。該引腳連接單片機的PD7普通I/O口。
ECLK:圖像傳感器的主時(shí)鐘輸入引腳,連接單片機的CLK_CCO口。單片機通過(guò)該口為圖像傳感器提供16 MHz的主時(shí)鐘。SPI_RD:圖像傳感器的圖像控制信號輸入腳,該引腳控制圖像傳感器下一幀圖像是否到來(lái),高電平有效,該13連接單片機的PB6普通I/O口。
SPI_CLK:圖像傳感器SPI數據輸出的時(shí)鐘信號輸入腳,該引腳連接單片機硬件SPI的SPI_SCK口。單片機通過(guò)該引腳為圖像傳感器提供采數時(shí)鐘,圖像傳感器根據采數時(shí)鐘向單片機傳輸數據。
SPI_SDA:圖像傳感器SPI數據輸出的數據信號輸出腳,該引腳連接單片機硬件SPI的SPI_MISO口。單片機通過(guò)該引腳采集數據。
SPI_INT:圖像傳感器的中斷申請信號。圖像傳感器把每幀圖像分成幾次中斷,單片機響應中斷,在中斷服務(wù)程序里接收數據。該引腳連接單片機PIM具有外部中斷接收功能的I/O口。
SBDA、SCLK:圖像傳感器I2C接口的數據引腳和時(shí)鐘引腳,連接單片機硬件I2C接口的I2C_SDA和I2C_SCL,是單片機對圖像傳感器內部寄存器讀寫(xiě)操作的數據總線(xiàn)和時(shí)鐘總線(xiàn)。
PWDN:圖像傳感器初始化信號線(xiàn),該引腳連接單片機的PC2普通I/0口。該信號線(xiàn)要在圖像傳感器上電的過(guò)程中拉低,只有該引腳在低電平的情況下,圖像傳感器才能正常工作。
SST_CE:Flash SPI接口的片選引腳,低電平有效,該引腳連接單片機的PD0普通I/O口。
SST_SO、SST_SI:Flash SPI接口的數據引腳,連接單片機SPI_MISO和SPI_MOSI口,與圖像傳感器的SPI_SDA分時(shí)復用SPI_MISO口。
SST_SCK:Hash SPI接口的時(shí)鐘信號輸入引腳,連接單片機的SPI_SCK口,與圖像傳感器的SPI_CLK分時(shí)復用SPI_SCK口。
3 系統軟件設計
3.1主程序的設計
系統軟件可分為:圖像傳感器模塊、圖像存儲器模塊、圖像的多幀采集和拼接模塊、串口數據傳輸模塊。其基本流程圖如圖3所示。為了盡量提高單片機的處理速度,將系統的時(shí)鐘頻率設置為最高,即16 MHz。
3.2 圖像傳感器模塊軟件設計
根據SP0828 CMOS數字圖像傳感器的工作原理和工作流程,圖像傳感器模塊包括了圖像傳感器上電初始化、圖像傳感器寄存器初始化、圖像數據采集3個(gè)部分。
3.2.1 圖像傳感器上電初始化
圖像傳感器上電初始化,就是圖像傳感器在上電結束但尚未開(kāi)始工作的時(shí)候,對圖像傳感器芯片提供主時(shí)鐘、初始化信號線(xiàn)拉低等一系列的操作,以使圖像傳感器能夠正常工作或者獲得最佳的工作狀態(tài)。其主要流程如圖4所示。
DVDD28AVDD連接電源,DVDD28AVDD拉高即是上電。在上電之后,延時(shí)至少10岬,初始化信號線(xiàn)PWDN拉低。然后延時(shí)至少110μs,單片機為圖像傳感器提供主時(shí)鐘,為使圖像傳感器工作在最快的速度,單片機為圖像傳感器提供最高16 MHz的時(shí)鐘。最后延時(shí)至少20 clock,單片機通過(guò)I2C接口對圖像傳感器內部寄存器進(jìn)行初始化。上電結束。
3.2.2 圖像傳感器內部寄存器初始化
CMOS圖像傳感器采用I2C總線(xiàn)控制其各項功能,簡(jiǎn)單、快捷。I2C總線(xiàn)也是目前圖像傳感器采用最普遍的控制方式。用戶(hù)可以通過(guò)I2C總線(xiàn)改變圖像傳感器內部可編程寄存器的缺省參數來(lái)設置圖像傳感器的工作方式,如時(shí)鐘、幀率、曝光、對比度、亮度等。I2C總線(xiàn)是芯片間串行數據傳輸總線(xiàn),它只用一根數據線(xiàn)SDA和一根時(shí)鐘線(xiàn)SCL即可實(shí)現完善的雙工同步數據傳輸。I2C總線(xiàn)規定,主控制器發(fā)送起始信號表明一次數據傳輸的開(kāi)始,然后為尋址字節,尋址字節由高7位地址位和低1位方向位組成。方向位表明主控制器與被控制器之間的數據傳輸方向,當該位為“0”時(shí)表明主控制器對被控制器的寫(xiě)操作,為“1”時(shí)表明主控制器對被控制器的讀操作。尋址字節后是按照指定地址讀寫(xiě)操作的數據字節與應答位。數據傳送完成后主控制器必須發(fā)送終止信號。I2C協(xié)議的時(shí)序如圖5所示。
STM8單片機有專(zhuān)門(mén)的硬件I2C接口,因此可通過(guò)該接口實(shí)現與圖像傳感器的通信。該系統中STM8單片機的I2C_SDA數據線(xiàn)和I2C_SCL時(shí)鐘線(xiàn)分別連接圖像傳感器的SBDA數據傳輸口和SCLK時(shí)鐘傳輸口。通過(guò)上述對I2C協(xié)議的分析,設計了如圖6所示的I2C總線(xiàn)數據傳輸流程。
I2C總線(xiàn)操作的典型時(shí)序信號有起始位信號、終止位信號、發(fā)送地址、發(fā)送數據、接收數據,所有的時(shí)序信號都是通過(guò)對單片機硬件I2C內部寄存器的操作實(shí)現的。I2C模塊主要功能函數如下:
(1)讀取圖像傳感器內部寄存器的值
unsigned char I2C_Read(unsigned char slave—address,unsigned charreg address,unsigned char slave_read_address)
/* slave_address是圖像傳感器的地址+寫(xiě)操作符“0”,reg_address是圖像傳感器內部寄存器的地址,slave_read_address是圖像傳感器的地址+讀操作符“1”*/
{
unsigned char val;
I2C_Start();//啟動(dòng)I2C總線(xiàn),I2C_CR2寄存器最低位置l
I2C_SendDAdr(slave_address);//發(fā)送圖像傳感器的地址+寫(xiě)操作符“0”
I2C_SendDat(reg_address);//發(fā)送內部寄存器的地址
I2C_Start();//啟動(dòng)I2C總線(xiàn),I2C_CR2寄存器最低位置1
I2C_SendDAdr(slave_read_address);//發(fā)送圖像傳感器的地址+讀操作符“1”
vai=12C_RcvDat();//從I2C接口讀取數據
I2C_stop();//釋放I2C總線(xiàn),I2C_CR2寄存器次低位置1
retunl val;
}
評論