版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
基于單片機的智能快遞柜終端系統(tǒng)設計與實現(xiàn)摘要 III前言 1第1章緒論 21.1設計目的及意義 21.2國內外研究現(xiàn)狀 2第2章設計方案與模塊選擇 32.1系統(tǒng)設計要求 32.2電路模塊選擇 32.1.1主控模塊的選擇 32.2.2液晶屏的選擇 42.2.3通信模塊的選擇 42.2.4電源模塊的選擇 42.2.5攝像頭的選擇 52.3系統(tǒng)基本架構 5第3章系統(tǒng)硬件設計 63.1主控電路的設計 63.2電壓轉換電路 73.3SIM800A短信模塊 83.4攝像頭模塊 93.5SPI-flash模塊電路 103.6TFT液晶顯示屏 103.7繼電器開關的設計 113.8SD卡接口電路 12第4章系統(tǒng)軟件設計 134.1主程序流程 134.2SIM800A短信模塊程序 144.3OV7670攝像頭模塊程序 144.4SD卡程序 144.5TFT顯示程序程序 154.6觸摸操作程序 154.7BMP圖像處理程序 164.8SPI-Flash程序 164.9FATFS文件系統(tǒng)程序 16第5章系統(tǒng)整體調試 185.1FATFS文件系統(tǒng)程序 185.1.1STM32系統(tǒng)板的調試 185.1.2SIM800A模塊電路調試 185.1.3繼電器開關電路調試 205.2程序調試 205.2.1OV7670攝像頭調試 215.2.2隨機數(shù)的產(chǎn)生 215.2.3輸入鍵盤的調試 215.2.4中文字庫的更新 225.3整體調試與結果分析 22總結 24參考文獻 25摘要隨著我國快遞行業(yè)的發(fā)展,配送如何變得更加高效率成為行業(yè)發(fā)展的關鍵因素。相比較上門配送、集散點取件,自助形式的快遞柜取件方式相比前兩種有著較大優(yōu)勢。論文結合實際,設計了基于STM32的智能快遞柜系統(tǒng),負責存儲快件和相關信息的發(fā)送功能??蛻羰褂孟到y(tǒng)隨機發(fā)送的驗證碼來取件,取出快件后攝像頭拍攝取件人照片存儲到SD中。本系統(tǒng)是在分析了智能快遞柜終端系統(tǒng)的系統(tǒng)組成與主要功能后,設計實現(xiàn)了智能快遞柜終端系統(tǒng)硬件電路,系統(tǒng)硬件電路包括STM32主控模塊電路、SIM800A短信模塊電路、繼電器開關電路、OV7670攝像頭模塊電路、SD卡模塊電路、TFT液晶模塊接口電路和SPI-flash模塊電路。在STM32硬件平臺上進行程序功能設計以及人機交互界面來設計,利用SIM800A通信模塊實現(xiàn)短消息通信功能,并通過2.4寸TFT顯示屏實現(xiàn)顯示及輸入相關信息等功能,利用AltiumDesigner軟件設計了電路原理圖。最后系統(tǒng)經(jīng)過了軟硬件聯(lián)調測試,滿足了系統(tǒng)設計的預期目標。關鍵詞:STM32主控模塊;智能快遞柜;短信驗證碼;GSM模塊前言隨著快遞業(yè)的迅速發(fā)展,這個與人們生活息息相關的行業(yè)受到了越來越多人的喜愛,快遞業(yè)有著方便、安全和快速等特點,但是快遞的投遞效率在最后逐件簽收配送環(huán)節(jié)降低。針對這一問題,為節(jié)約快遞件逐件確認簽收的時間,提高快遞業(yè)服務效率,論文結合實際應用,設計了一款基于STM32的智能快遞終端系統(tǒng),以實現(xiàn)快遞件的自助派件。系統(tǒng)選用STM32單片機作為系統(tǒng)控制核心,并分析了智能快遞柜系統(tǒng)的總體系統(tǒng)結構。智能快遞柜終端主要負責快遞件的存儲和相關信息的發(fā)送通知功能。終端系統(tǒng)主要滿足派件功能和快遞員保存數(shù)據(jù)功能。在派件過程中,快遞員首先需要登陸終端;成功登陸后選擇空置箱門來放置快遞件,如果當前快遞柜有貨物,則不能存儲快件,如果快遞柜中沒有快件,可正常存儲快件??旒嫒肟爝f柜后快遞員輸入客戶的手機號信息,通過SIM800A模塊以短信方式發(fā)送給客戶取件碼通知客戶取件??蛻羧〖r,輸入正確驗證碼就可方便地提取快遞件。驗證碼采用隨機方式,確保一柜一碼,確??爝f安全送到客戶手中??蛻羧〕隹旒^程中,能夠通過攝像頭拍攝取件人照片并存儲到系統(tǒng)的SD卡中。當前快遞派送主要存在以下幾點問題:1.快遞員在等待收件人取件的過程中需要花費大量的時間,不利于其余剩下的快件的派送。2.快遞主人正在上課或上班時不方便領取快遞則需要另外找時間派送。3.容易受天氣影響,下雨等天氣無法派件。4.快遞包裹被人冒領丟失。為解決這一問題而設計了一款快遞柜。 第1章緒論1.1設計目的及意義本課題研究的基于STM32的快遞柜將解決傳統(tǒng)快遞派件的主要缺陷。運用STM32F103ZET6做主控核心,來操控液晶屏的顯示和觸摸輸入鍵盤的操作,完成存放快遞和領取快遞的工作。GSM模塊發(fā)送短信驗證碼,收件人使用驗證碼取件,這樣就能使快遞員節(jié)省了時間,只需要將快件放入柜子中便可以離開,收件人也不用必須馬上去取件。這個方案大大的方便了人們。1.2國內外研究現(xiàn)狀2006-2015年期間,我國快遞業(yè)務量復合增速達40%,業(yè)務量從2006年的10億件增長到2015年的206.7億件,增長近20倍,并在2014年首度超過美國,規(guī)模持續(xù)保持全球第一[1]。2015年,同城、異地和國際快遞業(yè)務收入分別占全部快遞收入的14.5%、54.6%和13.3%[2]。成立于2011年的上海寶盒速遞有限公司,快遞員將快件存入快遞柜前,需要先通過驗證??爝f員將快件存放在快遞柜后,后臺一條短信會發(fā)送到收件人的手機上,該短信包含取件的密碼,有了取件的密碼,收件人即可開箱取件,完成取件后,快遞員也會收到一條通知短信,證明已完成派送。密碼輸入錯誤的話,快遞就無法被取走,快遞柜外安裝的攝像頭會記錄取件過程。國內雖然有了這樣一家公司,但是成本非常高。本項目在成本方面做足了考慮,成本比寶盒速遞低了很多,而且又能達到無人值守的目的。實現(xiàn)了取件自由,節(jié)約時間的目的。
第2章設計方案與模塊選擇2.1系統(tǒng)設計要求本系統(tǒng)選擇ST意法的STM32F1系列芯片作為主控芯片。完成以下設計要求:1.實現(xiàn)派件員存放包裹后自動發(fā)送驗證碼到收件人。2.實現(xiàn)收件人通過短信驗證碼領取包裹。3.實現(xiàn)收件人領取成功后自動拍照保存照片并短信通知快遞員包裹被領取。完成這些功能大致要解決以下三個題目:1.編寫MCU與TFT液晶屏之間的顯示以及觸摸輸入操作界面的設計程序。2.通過SIM800模塊發(fā)送驗證信息,將驗證信息發(fā)送給收件人。3.控制OV7670拍照和SD卡存儲照片。2.2電路模塊選擇2.1.1主控模塊的選擇本設計在主控芯片的選擇上提出了幾種方案。第一種是51系列單片機,第二種是AVR系列單片機ATMEG16,第三種是STM32F1系列STM32F103ZET6單片機。這幾款單片機都是比較常用的單片機,但是性能指標卻相差很大。各個方案芯片的性能參數(shù)如表2-1所示。表2-1各方案芯片對比表方案選擇方案一方案二方案三芯片名稱STC89S52ATMEG16STM32F103ZET6數(shù)據(jù)總線寬度8bit16bit32bit時鐘頻率8MHz16MHz72MHz數(shù)據(jù)RAM大小512字節(jié)1k192kBADC通道數(shù)量無1024ADC分辨率10bit12bitI/O數(shù)量32I/O32I/O140I/O工作電源電壓3.3V~5.5V4.5V~5.5V1.8V~3.6V特性低功耗功耗低、穩(wěn)定性強低功耗、高性能、穩(wěn)定性強、高速運算數(shù)據(jù)總線寬度8bit16bit32bit因為本系統(tǒng)要使用到的外設偏多,僅僅是TFT液晶屏就需要34個接口,OV7670攝像頭需要19個接口,還需要使用到的SPI通信接口與SD卡通信,異步串口USART與SIM800A短信模塊的通信,STM32F103ZET6都能提供這些外設和功能,51系列和AVR系列都沒有足夠的功能和接口,綜合以上的各種考慮本系統(tǒng)采用的主控芯片毫無疑問為速度快、功能更強大、功耗又低的STM32F103ZET6。2.2.2液晶屏的選擇 方案一:液晶LCD1602,該LCD價格便宜僅3元人民幣,但缺點很明顯不能顯示中文文本,只能顯示單純的數(shù)字或字符,而且只顯示兩行,不能滿足本課題中快遞盒子的顯示需求和任務。故不選擇此方案。方案二:選用LCD12864來顯示,該LCD比較方案一中的稍微強大一些,能顯示中文漢字、數(shù)字和英文字符并且顯示的內容更多達到了4行,STM32和該LCD有串口并行通信兩種。使用串口方式時STM32只需要2個I/O口就能顯示任意的內容,十分的節(jié)約I/O口,但是該LCD不能顯示圖片,不能觸摸操作。故不選擇此方案。方案三:選用2.8寸電阻式TFT觸摸液晶屏,該液晶屏不僅可以顯示漢字和圖片,還可以觸摸操作,用戶的交互上能做到比較的友好。故選擇此方案。2.2.3通信模塊的選擇通信模塊的選擇有兩個方案。方案一:選擇W5500網(wǎng)絡模塊,通過與路由器連接將快遞信息上傳服務器,用戶打開專門的APP獲取驗證碼,而連接該模塊與APP需要用到MQTT協(xié)議,在設計上存在較高的難度,不僅需要編寫一個APP軟件,還需要在linux操作系統(tǒng)下搭建網(wǎng)絡監(jiān)控服務器,用戶假如不及時查看APP還是不能在第一時間知道快遞的狀態(tài)。故不選擇此方案。方案二:選擇SIM800通信模塊。該模塊的全球移動通信系統(tǒng)工作頻段有兩個,分別是900MHz和1800MHz,可以實現(xiàn)存儲管理服務、通用分組無線服務技術的數(shù)據(jù)系統(tǒng)傳輸功能??梢越邮蘸桶l(fā)送短信,也可以接聽和撥打電話等。該方案符合本系統(tǒng)的要求,故選此該方案。2.2.4電源模塊的選擇不同模塊需要不同的工作電壓,其中有5V、12V、15V三種。STM32不能直接用5V供電,需要把5V電壓壓低到3.3V,這里用到的芯片是ASM1117-3.3。2.2.5攝像頭的選擇攝像頭的選擇OV7670攝像頭,該攝像頭自帶FIFO,拍出來的照片圖像清晰,本系統(tǒng)使用該攝像頭完全足夠。2.3系統(tǒng)基本架構本系統(tǒng)通過STM32控制TFT液晶屏顯示提示信息,以及輸入驗證碼的輸入鍵盤,當快遞員輸入快遞員賬號,進入存件模式,在該模式下可以看到當前盒子的狀態(tài)是否存在快件,系統(tǒng)同時控制繼電器通電使電磁鎖收縮開啟盒子,快遞員存放快件后,通過在觸摸鍵盤上輸入快遞主人的號碼,將隨機驗證碼發(fā)送給快遞主人,收件人收到含有隨機驗證碼的短信后,收件人憑驗證碼輸入正確的驗證碼操作界面后,系統(tǒng)會進行拍照,拍照成功并將照片保存在SD卡并打開盒子,快遞員同時也會收到該快件被取走的短信。該系統(tǒng)主要由STM32F103ZET6主控電路模塊、TFT電阻式2.8寸液晶顯示觸摸屏模塊、攝像頭OV7670拍照模塊、SD卡存儲模塊、SIM800短信發(fā)送模塊、SPI-flash字庫模塊、兩路繼電器模塊組成。系統(tǒng)架構如圖2-1所示。圖2-1STM32系統(tǒng)框圖
第3章系統(tǒng)硬件設計本章給出快遞盒子的硬件設計和整體布局,主要是STM32主控模塊電路、SIM800A短信模塊電路、繼電器開關電路、OV7670攝像頭模塊電路、SD卡模塊電路、TFT液晶模塊接口電路和SPI-flash模塊電路。完成以上設計的制作軟件是AltiumDesigner。這是一款繪圖軟件,可以用來設計繪制電路原理圖、PCB連線以及輸出設計。3.1主控電路的設計該系統(tǒng)使用STM32F103ZET6單片機作為主控芯片。STM32F103ZET6芯片如圖3-1所示。它的主要功能是完成對TFT液晶的顯示和觸控,并控制SIM800短信模塊發(fā)送短信,控制OV7670攝像頭拍照和SD卡的存儲功能。STM32F103ZRT6是一款性能很高而且內核是基于Cortex-M3的單片機。系統(tǒng)時鐘經(jīng)過內部鎖相環(huán)倍頻最高可達72M,擁有100個可編程輸入/輸出IO口。圖3-1STM32F103ZET6芯片主控電路的原理圖如圖3-2所示。主控電路分為三個部分:STM32芯片、復位電路和晶振。為了使該設計使用得方便些,增加了JTAG下載接口、啟動模式選擇接口,還有用排針引出所有I/O口。圖3-2最小系統(tǒng)原理圖3.2電壓轉換電路本系統(tǒng)需要3.3V的工作電壓供給STM32主控芯片,但是輸入該系統(tǒng)的電壓為5V,所以需要進行轉換電壓之后才能向芯片供電,該電路進行電壓轉換所用的芯片是AMS1117-3.3,在本設計的電路中,這個芯片可以得到由5V轉化為3.3V的電壓。其轉換電路原理圖如圖3-3所示。轉換電路中的兩個電容起到的作用都是濾波。無紋波的輸入的電壓是濾波的目的。圖3-3電壓轉換電路3.3SIM800A短信模塊SIM800芯片工作頻段有四頻,分別為850MHz、900MHz、1800MHz和1900MHz。AT指令就是由該系統(tǒng)通過串口給SIM800的,SIM800再根據(jù)接收的AT指令內容發(fā)送短信。AT指令由終端設備傳輸給數(shù)據(jù)電路終端設備。AT指令在寫的時候,必須必須在最前面加上“AT”,以回車結尾。該電路可以低功耗實現(xiàn)收發(fā)短信、語音通話、數(shù)據(jù)傳輸和傳真信息的傳輸。SIM800模塊自帶波特率檢測功能,可以檢測從1200bps到115200bps的通信速率。原理圖如圖3-4所示。模塊通電時電源指示燈亮,斷電電源指示燈則滅。將手機卡插入到U4卡座中,天線接口J1用來增強通信信號強度。網(wǎng)絡狀態(tài)可以根據(jù)指示燈的亮和滅來判斷。網(wǎng)絡狀態(tài)指示燈的工作狀態(tài)如表3-1所示。表3-1SIM800A指示燈狀態(tài)表NET_STA工作狀態(tài)熄滅關機64ms亮/800ms滅未注冊到網(wǎng)絡64ms亮/3000ms滅注冊到網(wǎng)絡64ms亮/300ms滅GPRS正常通信圖3-4SIM800A電路原理圖該電路最核心的部分就是希姆通公司的SIM800A,STM32發(fā)送的AT指令全部由該模塊接收。該電路的電源使用的是MPS公司的高效同步降壓芯片MP2303,該芯片的電源轉化效率非常高,輸入的電壓范圍寬。該模塊的任務是快遞員在系統(tǒng)中輸入收件人號碼,系統(tǒng)隨即會生成隨機驗證碼,快遞員將驗證碼發(fā)送出去,當收件人輸入隨機驗證碼,取走快遞之后,快遞員會收到來自系統(tǒng)會發(fā)過來的短信,通知快遞員快遞已經(jīng)被取走。3.4攝像頭模塊OV7670CMOS圖像傳感器是mniVision公司的產(chǎn)品,此攝像頭工作電壓低而且體積小巧。OV7670O攝像頭可以輸出圖像數(shù)據(jù)的方式有取窗口、子采樣和整幀等。此攝像頭能通過編程實現(xiàn)伽馬曲線、白平衡、色和度圖像的的處理。OV7670攝像頭的特點有:電壓低、靈敏度高,SCCB接口是標準的而且也兼容IIC接口,支持RawRGB、RGB(GBR4:2:2,RGB565/RGB555/RGB444),YUV(4:2:2)和YCbCr(4:2:2)輸出格式,具有豐富輸出尺寸類型[3]。該攝像頭模塊配備了一塊FIFO先進先出隊列的芯片,該芯片可以臨時存儲圖像的數(shù)據(jù),分擔CPU占用率使運行更加流暢。產(chǎn)品如圖3-5所示。在本系統(tǒng)中,OV7670的功能是在收件人輸入正確的驗證碼取件時完成拍照,OV7670攝像頭的供電電壓為3.3V,而本系統(tǒng)中STM32主控芯片也是用為3.3V電壓進行供電,攝像頭所需的工作電壓也是3.3V,而I/O口輸出的電壓剛好為3.3V,完全符合系統(tǒng)的需要。圖3-5OV7670攝像頭接口電路原理圖3.5SPI-flash模塊電路通信協(xié)議SPI主要應用在FLASH、EEPROM、數(shù)字信號處理器和AD轉換器等方面。SPI種通信協(xié)議被越來越多的芯片集成,其原因是所用的芯片引腳很少,只需要四根線就可實現(xiàn)全雙工通信。W25Q128這款芯片也支持這個協(xié)議,該芯片擁有128M的存儲空間,通常被應用于存放字庫。原理圖如圖如3-6所示。MISO是輸出數(shù)據(jù)由從設備執(zhí)行,輸入數(shù)據(jù)由主設備執(zhí)行的信號線。SCK:串行時鐘信號;CS:片選信號。圖3-6SPI-flash接口電路原理圖在本系統(tǒng)中SPI-flash的作用是用于存放字庫,以便于TFT液晶顯示中文內容,沒有字庫的話TFT液晶屏會顯示一些亂碼。因為本設計需要顯示不同的狀態(tài)和提示信息,中文顯示必不可少,同時也是為了使得更加人性化,界面更加友好。3.6TFT液晶顯示屏TFTLCD全稱薄膜晶體管液晶顯示器,它的原理是通過在液晶顯示屏的每一個像素上設置薄膜晶體管,能夠很好的克服非選通時的干擾[4]。液晶顯示屏的圖像質量很高是因為掃描線數(shù)與靜態(tài)特性無關。本系統(tǒng)選用了ALIENTEK2.8寸TFTLCD面板模塊,TFTLCD能顯示16位色的彩圖。系統(tǒng)需要顯示用戶的輸入狀態(tài)和快遞盒子的狀態(tài),同時也要顯示觸摸鍵盤,TFTLCD能夠滿足需求,所以使用了該模塊。該屏幕不僅能顯示還是一款觸摸屏,TFT液晶觸摸屏的原理與電阻式觸摸原理相同。電阻式觸摸屏利用壓力感應觸點來定位正在觸摸的位置來檢測電阻的。電阻式觸摸屏的優(yōu)點在于有很高的精度、很低的價格、很好的穩(wěn)定性以及很強的抗干擾性。如圖3-7所示。圖3-7TFT液晶屏接口電路原理圖在本系統(tǒng)中TFT液晶模塊的任務是顯示當前狀態(tài)和輸入鍵盤,當有檢測到觸摸后,根據(jù)觸摸的位置確定觸摸得到的數(shù)值.當快遞員輸入了密碼+盒子編號后,對應的盒子的狀態(tài)信息會顯示在屏幕上,“存在快遞”或“沒有快遞”。這個時候快遞員可以在輸入鍵盤輸入快遞主人的手機號碼,輸完手機號碼后,點擊確定鍵,短信如果發(fā)送成功就會提示“發(fā)送成功”的字樣??爝f主人在輸入鍵盤輸入驗證碼,假如驗證碼正確系統(tǒng)會提示“正在出件”的字樣,快遞主人就可以取件,出件完成后會恢復原始狀態(tài)“等待取件”。3.7繼電器開關的設計繼電器可以控制電磁鎖的開鎖和關鎖操作,因此作為電磁鎖的開關。本系統(tǒng)設計了兩路繼電器開關,用于兩個快遞盒子。電路的原理是電器的短路和斷路由8050三極管來控制,繼電器采用的松樂繼電器,來實現(xiàn)開通和閉合操作。實現(xiàn)開鎖需要在繼電器閉合的時侯,電磁鎖收縮,鎖定狀態(tài)需要繼電器斷開,然后電磁鎖彈出。開關電路圖如圖3-8所示。圖3-8繼電器開關電路3.8SD卡接口電路本系統(tǒng)是用SD卡存儲拍攝的照片,SD卡有非常大的存儲空間,而且SPI和SDIO驅動都能支持。STM32F103ZET6自帶了SDIO接口驅動,通信速度最高可達到24M,傳輸數(shù)據(jù)每秒最高可達到12M字節(jié)[5],對于傳輸照片完全足夠了。因為SD卡有幾十G的存儲空間,替換起來比較容易,而且編程起來并不復雜,很多單片機如果想要擴展大容量外部存儲器都會選擇SD卡。收件人在取件的時候,輸入正確的驗證碼,系統(tǒng)會自動拍照并將照片保存在SD卡中的picture文件夾下。其原理圖如圖3-9所示。SDIO_D0、SDIO_D1、SDIO_D2、SDIO_D3用于數(shù)據(jù)傳輸端,SDIO_CMD是使能端,SDIO_SCK是時鐘輸入端。圖3-9SD卡接口原理圖第4章系統(tǒng)軟件設計4.1主程序流程本系統(tǒng)的軟件部分是指快遞盒子的主控芯片STM32F103ZET6的程序,該快遞盒子的程序是用C語言編程的。在這里主要介紹了程序的開發(fā)環(huán)境和程序開發(fā)設計思路。本系統(tǒng)使用的編程軟件是Keil5,該編程軟件是Window操作系統(tǒng)的應用程序。Keil軟件不僅可以編譯程序,還可以在線仿真調試和燒寫程序到STM32中。STM32主控芯片程序的流程圖如4-1所示。本系統(tǒng)的程序相對于一般的設計都要大得多,主要包括SPI-flash程序OV7670攝像頭模塊程序、SIM800模塊程序、SD卡模塊程序、FATFS文件系統(tǒng)程序、TFT液晶顯示和觸摸程序、以及BMP格式圖像處理程序。接下來將一一介紹這些子程序的設計。圖4-1主程序流程圖4.2SIM800A短信模塊程序下面將介紹配置SIM800模塊的程序的過程,若想使該模塊正常工作,首先要使能GPIO的時鐘和串口的時鐘,因為本次設計分配給SIM800的串口為串口3,所以用于發(fā)送和接收數(shù)據(jù)的I/O口為PB10和PB11,指定I/O口后需要配置I/O口的速度,這里將這兩個I/O口配置為50MHz,然后需要配置I/O口的輸入輸出方式,PB10為STM32串口3的發(fā)送引腳,因此將PB10引腳配置為推挽輸出,接收引腳為PB11,該引腳配置為浮空輸入。接下來需要設置通信的協(xié)議,串口的波特率配置為115200,如果SIM800模塊配置的波特率范圍寬,則該模塊會自動識別波特率和自動匹配相同的波特率,傳輸數(shù)據(jù)很穩(wěn)定,幾乎沒有丟失或遺漏的情況,因此最常用115200,所以選用它。字長設置為八位數(shù)據(jù)格式,一個停止位,奇偶校驗位沒有,也沒有硬件流控制,接收與發(fā)送模式被用在串口的設置。完成以上配置操作后使能串口3即可正常工作。SIM800模塊讀取與發(fā)送短信需要用到AT指令,讀取與發(fā)送短信的將用到下面一些指令:AT+CMGF/AT+CSCS/AT+CSMP/AT+CMGR/AT+CMGS/AT+CPMS等[6]。文本模式可使短信發(fā)送中文:AT+CMGF=1,電話號碼使用UNICODE編碼顯示。經(jīng)過轉換編碼的字符串到SIM800中,短信便成功發(fā)送。4.3OV7670攝像頭模塊程序對于OV7670模塊,主要的重點是將圖像數(shù)據(jù)存儲起來。該過程為:首先等待OV7670模塊的同步信號,然后FIFO寫指針復位,接著FIFO寫使能,接著等待下一個同步信號,最后FIFO寫禁止[7]。程序設計的思想如下:首先配置一個外部中斷用來幀同步信號將的捕獲,然后啟動OV7670的圖像數(shù)據(jù)存儲中斷程序,等到下一個幀同步信號來的時候,將數(shù)據(jù)存儲關閉,一幀數(shù)據(jù)也就完成了。然后經(jīng)過BMP圖像處理,將數(shù)據(jù)保存在SD卡中。4.4SD卡程序要實現(xiàn)驅動SD卡最重要的步驟是初始化SD卡(這里介紹的是支持CMD8指令的SD卡),將SD卡初始化完成后,剩下的就是讀寫操作。首先需要執(zhí)行的是卡上電,即設置SDIO_POWER[1:0]=11,通電后對復位SD卡需要發(fā)送CMD0,然后發(fā)送CMD8命令,看SD卡是否支持該命令,如果SD卡支持該命令,則可以判斷SD卡是不是2.0版本或更高級的版本[8]。在發(fā)送CMD8時,STM32主控芯片的供電電壓3.3V,可以通過設置VHS位告訴SD卡,根據(jù)參數(shù)該電壓范圍應該發(fā)送0X1AA,此時SD卡會返回響應給主機??–ID寄存器和卡RCA通過發(fā)送CMD2和CMD3命令用來換取。在得到相對地址RCA以后,再發(fā)送CMD9可以得到CSD寄存器里面的內容,從而得到扇區(qū)大小以及SD卡的容量等信息。最后,CMD7命令完成SD卡的讀和寫操作。4.5TFT顯示程序程序TFT顯示屏能顯示16位的彩色圖片,設計使用TFT模塊實現(xiàn)觸摸鍵盤和中文顯示。該LCD的使用流程如下:首先硬復位,主要是將LCD_RST從低拉高既可完成操作,接著初始化序列,執(zhí)行上面兩步只需要一行,執(zhí)行完之后就可以設置坐標來讀GRAM指令時,即可以讀出顏色數(shù)據(jù),再交由單片機處理,通過寫GRAM指令時來寫入顏色數(shù)據(jù),再由LCD顯示該顏色。TFTLCD的設置步驟:第一步,初始化TFTLCD模塊連接的I/O口,將LCD的RST和主控芯片的RST連接起來,所以主控芯片和LCD會達成同步復位。然后進行初始化序列,這部分直接移植就可以了。初始化完成無誤后,LCD即能正常顯示了。值得一提的是,如果串口1沒有被初始化的,就需要屏蔽printf函數(shù),如果不屏蔽,STM32就會陷入死循環(huán)。在TFTLCD模塊上顯示字符和數(shù)字,需要設置光標位置,寫入GRAM指令,寫入畫筆顏色(不設置默認藍色),把內容寫進去。該部分程序封裝在子函數(shù)里面,需要顯示調用LCD_ShowString函數(shù)即可以顯字符和數(shù)字,如果需要顯示一種字符就需要調用一次該函數(shù),如果顯示多種字符就要多次調用該函數(shù)。如果在同一個坐標上多次使用該函數(shù)會把原來的內容覆蓋,如果需要清空所有顯示的內容則調用LCD_Clear清屏函數(shù)。4.6觸摸操作程序本設計中使用了電阻式觸摸屏,由于電容式觸摸屏價格高而采用了價格相對較低的電阻式觸摸屏。定位觸摸位置需要檢測電阻來,需要用AD轉換器來檢測電阻,該模塊的觸摸屏控制器使用XPT2046,XPT2046芯片是逐步逼近型的,共有4條通道,分辨率的精度達到12位的,有125kHZ轉換速率。電阻式觸摸屏的程序設計思路如下:首先執(zhí)行初始化操作,接著需要進行觸摸校準,通過讀取屏幕坐標值提高觸摸的準確度,未執(zhí)行校準的情況下默認使觸摸屏無法使用。完成以上操作就可以正常觸摸了。在該設計中,需要設置操作刪除、返回、確定的鍵來實現(xiàn)數(shù)字0-9的輸入。首先設置好以上操作的各個區(qū)域,當觸摸下某一區(qū)域時,通過XPT2046進行AD轉換得到觸摸的位置坐標,在使用switch語句判斷該坐標是屬于哪一個區(qū)域,實現(xiàn)得到數(shù)字0-9的值需要執(zhí)行確定、刪除或返回操作。4.7BMP圖像處理程序BMP圖片格式是Windows操作系統(tǒng)的標準圖片格式,后綴名為“.bmp”,這個格式的圖片的格式是位映射存儲,無壓縮,所以就算圖片不失真但是占用很大的存儲空間。在攝像頭獲取到圖像信息后,需要創(chuàng)建BMP的位圖信息,然后將各個相關信息初始化,比如要設置BMP圖片的分辨率為LCD的分辨率,并設置像素位數(shù)為16位,接著創(chuàng)建文件,寫入位圖信息與數(shù)據(jù)。最后在顯示屏的GRAM中讀取每個像素點的顏色值,寫入BMP文件中。4.8SPI-Flash程序SPI-Flsh通過存放字庫,實現(xiàn)顯示中文和英文字符的作用。STM32的SPI2連接該模塊,開始要先使能SPI2的時鐘,然后將相關的I/O口設置為復用輸出,這里需要注意的是,如果復用輸出不設置的話,SPI2仍然默認連接標準的輸入輸出口,在其他地方已經(jīng)使用了這些I/O,為了不沖突使用了復用功能。這里使用了STM32的PB13引腳、PB14引腳、PB15引腳,這三個引腳都設置為復用推挽輸出,I/O口速度為50MHz。接著設置SPI2工作在主機模式,這里選擇全雙工模式,數(shù)據(jù)格式為8位,設置時鐘極性SCK以及采樣方式,確定傳輸速度(140.625kHz)需要設置SPI的時鐘參數(shù)。設置數(shù)據(jù)傳輸順序將MSB位設置在前面,LSB位設置在后面,最后一步設置CRC檢驗,提高通信穩(wěn)定性。完成以上操作之后就使能SPI2,發(fā)送數(shù)據(jù)使用函數(shù)SPI_I2S_SendData,接收數(shù)據(jù)使用函數(shù)SPI_I2S_ReceiveData。4.9FATFS文件系統(tǒng)程序FATFS是完全免費的開源文件系統(tǒng),特別適合嵌入式系統(tǒng)的設計。移植到各類單片機也是非常的方便,只需要做微小的修改即可使用。由于該文件系統(tǒng)十分龐大,這里只介紹幾個常用的函數(shù)。函數(shù)f_opendir(DIR*DirObject,constTCHAR*DirName)用來打開一個已經(jīng)存在的文件夾,*DirObject用來存儲打開的文件夾信息,*DirName用來指向文件夾名稱。函數(shù)f_readdir(DIR*DirObject,FILINFO*FileInfo)用來讀取文件夾內的文件,*DirObject用來讀取文件夾信息,*FileInfo用來存儲讀到的文件信息。調用此函數(shù)可以讀取文件夾的所有文件。函數(shù)f_open(FIL*FileObject,constTCHAR*FileName,BYTEModeFlags)用來打開或者新建一個文件,*FileObject用來存儲文件對象[9],*FileName指向文件名的指針,ModeFlags設置打開方式。函數(shù)f_read(FIL*FileObject,Void*Buffer,UINTByteToRead,UINT*ByteRead)讀取文件內容,*FileObject指向文件對象的指針,*Buffer數(shù)據(jù)的緩沖指針從指向存儲讀取到的,ByteToRead準備讀取的字節(jié)數(shù),*ByteRead用來檢測文件的末尾。函數(shù)f_write(FIL*FileObject,constvoid*Buffer,UINTByteToWrite,UINT*ByteWritten)用來向文件中寫入數(shù)據(jù),前提是以寫文件的形式打開文件。*FileObject指向文件對象的指針,*Buffer指向存儲讀取到的數(shù)據(jù)的緩沖指針,ByteToWrite字節(jié)數(shù)寫入*ByteWritten記錄寫入字節(jié)數(shù)用來檢測是否寫完。第5章系統(tǒng)整體調試5.1FATFS文件系統(tǒng)程序5.1.1STM32系統(tǒng)板的調試STM32系統(tǒng)板集成了SPI-Flash模塊、OV7670攝像頭模塊、TFTLCD模塊、下載口和SD卡等接口的。所圖5-1所示。圖5-1STM32系統(tǒng)板在STM32的焊接上,使用了常見的堆焊技術,最后完成所有焊接后,用萬用表測試電源線和地線,如果電路沒有短路,就接電并下載了一個流水燈程序,流水燈能夠閃爍,但是閃爍的時間間隔與程序的設置的時間不一致。檢查之后發(fā)現(xiàn),問題出在使用錯了連接晶振的電容,將22pF的電容誤用成104的電容,所以改變晶振的起振頻率,將電容更換成22pF后,LED的閃爍時間間隔跟程序中設置的一致。至此,完成STM32系統(tǒng)板的調試。5.1.2SIM800A模塊電路調試該模塊的功能是完成短信的發(fā)送。該模塊根據(jù)正點原子的原理圖進行設計并做了微小的修改,因為本設計只需要發(fā)送短信,所以為了減少時間和出現(xiàn)錯誤的幾率,不需要使用的部分沒有焊接,比如麥克風接口和232串口。首先對電源和地進行測試,測試了并沒有出現(xiàn)短路的情況,于是就可以通過CH340串口模塊與電腦USB連接來實現(xiàn)通信。將手機卡插進取去后SIM800模塊就會開機,但是每次開機后馬上就會自動關閉,還沒來得及注冊網(wǎng)絡,查找原因之后發(fā)現(xiàn)是電腦的USB只能提供5V/1A的輸出,所以USB的功率達不到模塊的要求,但是SIM800模塊要正常工作所需的功率為10W。于是增加了一個5V2A的電源給模塊,這時候模塊成功注冊到網(wǎng)絡。順利注冊網(wǎng)絡后串口調試助手發(fā)送AT+CSCS=”GSM”,來測試能否正常收發(fā)短信,這時候如果串口調試助手返回OK的字樣,就設置為文本格式,發(fā)送AT+CMGF=1。這時候需要輸入我的號碼作為收信人,發(fā)送AT+CMGS=設置收信人,然后輸入短信內容“Helloworld”,最后點擊發(fā)送。等待接收“Helloworld”的短信,但是等待了幾分鐘都沒有收到,一開始以為是發(fā)送不成功是因為網(wǎng)絡繁忙,放松了幾次后還是這樣。于是開始尋找原因,閱讀AT指令文檔,終于發(fā)現(xiàn)錯誤出現(xiàn)在最后一步,文檔中明確說明輸入完了短信內容后需要以16進制發(fā)送才能成功。只好再次重復以上步驟,只不過在最后一步上,把16進制發(fā)送的選項打勾了,幾秒鐘手機果然收到了短信。自此,SIM800模塊完成調試。該模塊如圖5-2所示。圖5-2SIM800A模塊使用SIM800A模塊和另外一臺手機發(fā)送5條短信給手機,從發(fā)送完成就馬上計時,一直到接收成功。通過這個方法了解SIM800A模塊發(fā)送短信到手機和手機和手機之間發(fā)送短信是否存在時間上的差異,。模塊到手機以及手機到手機之間發(fā)送短信所需耗時如表5-1。表5-1發(fā)送短信速度對比表模式第一次第二次第三次模塊發(fā)到手機5s6s4s手機發(fā)到手機4s4s5s由上表可以看出,模塊從發(fā)送短信到手機接收短信耗時與手機發(fā)送短信到手機接收短信耗時基本一致,大概都是在5s,說明該模塊與手機短信功能基本無差異。5.1.3繼電器開關電路調試該系統(tǒng)有兩個小盒需要控制,用二路繼電器組成了開關控制電路,繼電器的開關電路如圖5-3所示。想要繼電器閉合來實現(xiàn)控制的電路并不難,只需要使用三極管8050將STM32的I/O口的信號放大即可。因為該電路實在是比較簡單,焊接好后直接上電,有信號來繼電器確實能夠閉合,該模塊實現(xiàn)了開關控制的功能,調試完成。圖5-3繼電器開關電路5.2程序調試本系統(tǒng)的程序相對于來說還是比較龐大的,涉及的部分有SIM800A模塊程序、隨機數(shù)產(chǎn)生程序OV7670模塊程序、SD卡程序、TFT液晶顯示程序、觸摸程序、FATFS程序、輸入鍵盤界面、定時器程序、短信的文本格式轉化程序、I/O口的控制程序。因本課題涉及的程序多,調試繁雜,不能一一在此進行介紹,所以主要介紹幾個主要花了較多時間調試的程序。5.2.1OV7670攝像頭調試該模塊在單獨調試時能夠正常拍照并保存在SD卡之中,于是在添加到總的工程后編譯,但是并沒有通過,經(jīng)錯誤提示并檢查后發(fā)現(xiàn)在OV7670模塊的程序的定義里出現(xiàn)了extern后還在它賦后面賦值,比如說externu8ov_sta=0;這語句在主函數(shù)中已經(jīng)定義過了這句話又定義了一次ov_sta,但是由于該變量在OV7670.c中再次使用到了,所以需要再一次定義,但是這次定義與上一次不同,定義之前必須加extern,使用extern有一個需要注意地方,變量之后不允許再賦值,正確的使用方法為:externu8ov_sta;修改了上面的錯誤,再次編譯就沒有問題了,將程序下載到STM32芯片,模擬快遞被人取走后OV7670通過STM32控制進行拍照,但是用電腦讀取SD卡中的照片的時候,照片上顯示的是TFT液晶屏截圖的內容,拍攝的照片不是自己想要的。為什么會這樣呢?經(jīng)過一番思考和推理,發(fā)現(xiàn)原因出在了TFT液晶上,攝像頭工作的時候原本是實時將圖像信息顯示在TFT液晶上,但是由于操作和鍵盤輸入都需要鍵盤顯示,事先已經(jīng)將圖像信息屏蔽不顯示。攝像頭截取屏幕實時顯示的畫面,將得到了攝像頭圖像數(shù)據(jù)經(jīng)過圖像處理成為照片拍照的原理。為沒有刷新屏幕導致拍照的瞬間截取到的是狀態(tài)和輸入鍵盤,自然得不到攝像頭圖像照片。發(fā)現(xiàn)了這個問題后,在程序里修改了拍照的機制,在拍照的前一時刻將屏幕刷新顯示攝像頭的圖像信息,然后拍照完成恢復顯示輸入鍵盤,即可完成拍照。5.2.2隨機數(shù)的產(chǎn)生本系統(tǒng)需要產(chǎn)生隨機驗證碼發(fā)送給收件人取件,而STM32F1系列的芯片并沒有產(chǎn)生隨機數(shù)的功能,只有一開始使用通過定時器計時產(chǎn)生一個數(shù)值后發(fā)送給收件人的方法讓程序產(chǎn)生,但是這樣會出現(xiàn)很多問題,產(chǎn)生的數(shù)值可能會很大也可能很小,導致的結果是驗證碼的位數(shù)不確定,造成的后果就是驗證碼位數(shù)太少可能會被人胡亂試出來。所以需要改變方案,最后使用了屏幕坐標加快遞員輸入收件人號碼各個數(shù)字的間隔時間相加后乘以379,使得到的很大的數(shù)值,然后取該數(shù)值的萬、千、百、十和個位。這樣產(chǎn)生的數(shù)值獲取的驗證碼不會重復,因為使用了十一位手機號碼輸入的間隔時間和,屏幕的橫縱坐標。5.2.3輸入鍵盤的調試輸入鍵盤作為交互界面必須做得實用、可靠。這部分程序的設計任務是做劃分好區(qū)域,數(shù)字0-9的各個區(qū)域顯示和觸摸,如圖5-4所示。編寫程序,屏幕上顯示阿拉伯數(shù)字0-9和這些數(shù)字之間的分割線,完成這部分后仍然不能觸摸但是能顯示了。因為還沒有將各個數(shù)字分配在各個區(qū)域中,觸摸區(qū)域劃分好后,將各個區(qū)域賦值通過switch語句實現(xiàn),當按下某一區(qū)域即可得到某一數(shù)字。圖5-4觸摸輸入鍵盤界面5.2.4中文字
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度公益慈善晚會活動策劃與實施合同4篇
- 2025年度互聯(lián)網(wǎng)內容提供商ICP證年審全權委托服務合同3篇
- 二零二五年度生物科技研發(fā)農(nóng)民工就業(yè)服務合同4篇
- 電子商務平臺消費者權益保護2025年度國際協(xié)調合同2篇
- 2025年度牛肝菌有機認證與市場拓展合同
- 二零二五版昆明滇池度假區(qū)酒店管理合同3篇
- 二零二五年度農(nóng)業(yè)種植勞務作業(yè)承包合同范本3篇
- 2025年度塑料管材國際貿(mào)易爭端解決合同
- 2025年度私立學校校長任期教育科研成果轉化合同
- 二零二五年度企業(yè)員工期權激勵合同范本
- 廣東省佛山市2025屆高三高中教學質量檢測 (一)化學試題(含答案)
- 人教版【初中數(shù)學】知識點總結-全面+九年級上冊數(shù)學全冊教案
- 四川省成都市青羊區(qū)成都市石室聯(lián)合中學2023-2024學年七上期末數(shù)學試題(解析版)
- 2024-2025學年人教版七年級英語上冊各單元重點句子
- 2025新人教版英語七年級下單詞表
- 公司結算資金管理制度
- 2024年小學語文教師基本功測試卷(有答案)
- 未成年入職免責協(xié)議書
- 項目可行性研究報告評估咨詢管理服務方案1
- 5歲幼兒數(shù)學練習題
- 2024年全國體育單招英語考卷和答案
評論
0/150
提交評論