《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于STM32的多功能抄表機(jī)
基于STM32的多功能抄表機(jī)
2016年微型機(jī)與應(yīng)用第08期
鄭杰1,趙敬鳳1,王海江1,李驚濤2,歐陽昱2,王峰2,黃旭東1
(1.安徽漢高電力科技有限公司,安徽 合肥 231202; 2.安徽省電力公司,安徽 合肥 230022
摘要: :研制了一種基于STM32的多功能抄表機(jī),集成了多種信息采集模塊以及GPS/GPRS二合一模塊SIM908,含有多種通信接口和大容量存儲(chǔ)空間,利用IAP技術(shù)實(shí)現(xiàn)多應(yīng)用加載并設(shè)計(jì)了二次開發(fā)平臺(tái)。該多功能抄表機(jī)具備成本低、擴(kuò)展性好、信息采集全面等特點(diǎn),滿足物聯(lián)網(wǎng)抄表需求。
關(guān)鍵詞: STM32 抄表機(jī) IAP SIM908
Abstract:
Key words :

  鄭杰1,趙敬鳳1,王海江1,李驚濤2,歐陽昱2,王峰2,黃旭東1

  (1.安徽漢高電力科技有限公司,安徽 合肥 231202;2.安徽省電力公司,安徽 合肥 230022)

       摘要:研制了一種基于STM32的多功能抄表機(jī),集成了多種信息采集模塊以及GPS/GPRS二合一模塊SIM908,含有多種通信接口和大容量存儲(chǔ)空間,利用IAP技術(shù)實(shí)現(xiàn)多應(yīng)用加載并設(shè)計(jì)了二次開發(fā)平臺(tái)。該多功能抄表機(jī)具備成本低、擴(kuò)展性好、信息采集全面等特點(diǎn),滿足物聯(lián)網(wǎng)抄表需求。

  關(guān)鍵詞:STM32;抄表機(jī);IAP;SIM908

0引言

  物聯(lián)網(wǎng)技術(shù)[1]的應(yīng)用使得各行各業(yè)的信息化水平越來越高,尤其是在電力、供水、供氣等領(lǐng)域,自動(dòng)化抄表[2]正在大力推進(jìn)。隨著用戶對(duì)服務(wù)質(zhì)量要求的不斷提高,對(duì)人工現(xiàn)場信息采集要求越來越高,除了對(duì)用戶用量信息按時(shí)采集外,還要對(duì)使用現(xiàn)場環(huán)境和現(xiàn)場設(shè)備信息進(jìn)行采集。比如在電力行業(yè),除了對(duì)電表用電量信息進(jìn)行讀取外,還要求能夠采集電表資產(chǎn)條碼信息、設(shè)備的經(jīng)緯度等信息,同時(shí)對(duì)現(xiàn)場人員的移動(dòng)軌跡進(jìn)行定位和記錄,便于管理。

  由于行業(yè)抄表機(jī)的使用量比較大,對(duì)抄表機(jī)的成本要求嚴(yán)格,同時(shí)對(duì)抄表機(jī)的功能要求更多更全。這給抄表機(jī)的開發(fā)帶來了挑戰(zhàn)。本文基于新型低成本低功耗的STM32處理器開發(fā)了一種多功能抄表機(jī),利用IAP技術(shù)[3]實(shí)現(xiàn)多應(yīng)用加載并設(shè)計(jì)了二次開發(fā)平臺(tái)。抄表機(jī)集成了多種信息采集模塊以及GPS/GPRS二合一模塊SIM908[4],含有多種通信接口和大容量存儲(chǔ)空間,具備成本低、擴(kuò)展性好、信息采集全面等特點(diǎn),還能實(shí)現(xiàn)遠(yuǎn)程數(shù)據(jù)下載和上報(bào),使得現(xiàn)場抄表成本大幅度下降,提高了工作效率。

1技術(shù)原理

  與其他儀表設(shè)備不同,抄表機(jī)要具備靈活的二次開發(fā)功能,支持加載運(yùn)行不同的應(yīng)用程序。為了實(shí)現(xiàn)這個(gè)功能,傳統(tǒng)的抄表機(jī)[5]開發(fā)基于嵌入式操作系統(tǒng)如Linux[6]或WinCE[7]。操作系統(tǒng)的使用對(duì)CPU的性能要求高、對(duì)RAM和ROM等存儲(chǔ)空間要求大,使得抄表機(jī)的總體成本上升,運(yùn)行嵌入式操作系統(tǒng)的抄表機(jī)還存在開機(jī)啟動(dòng)慢、界面操作復(fù)雜、功耗過大等不足,對(duì)于行業(yè)抄表這類應(yīng)用場合并非最佳選擇。利用低成本的微控制器開發(fā)行業(yè)抄表機(jī)是最適合的。

  在應(yīng)用編程(InApplication Programming,IAP)技術(shù)是應(yīng)用在Flash程序存儲(chǔ)器的一種編程模式。它可以在應(yīng)用程序正常運(yùn)行的情況下,通過調(diào)用特定的IAP程序?qū)α硗庖欢纬绦騀lash空間進(jìn)行讀/寫操作,甚至可以控制對(duì)某段、某頁、某個(gè)字節(jié)的讀/寫操作,這為數(shù)據(jù)存儲(chǔ)和固件的現(xiàn)場升級(jí)帶來了更大的靈活性。目前大多數(shù)閃存式微控器都支持IAP功能。

  對(duì)于STM32這樣內(nèi)含F(xiàn)lash程序存儲(chǔ)器的低成本處理器,IAP技術(shù)原本用來進(jìn)行軟件升級(jí)使用。本文巧妙地利用IAP技術(shù),將原本的升級(jí)操作變成不同的應(yīng)用加載操作,實(shí)現(xiàn)支持多應(yīng)用的功能。利用IAP技術(shù),將內(nèi)部Flash程序存儲(chǔ)器分為兩部分,低地址部分是主控臺(tái)程序區(qū),高地址部分是應(yīng)用程序區(qū),如圖1所示。

  

001.jpg

  主控臺(tái)程序區(qū)只運(yùn)行固定的主控臺(tái)程序,負(fù)責(zé)系統(tǒng)設(shè)置、應(yīng)用程序加載、文件管理等基礎(chǔ)功能。應(yīng)用程序區(qū)存儲(chǔ)并運(yùn)行由主控臺(tái)由SD卡中加載進(jìn)來的應(yīng)用程序。用戶在主控臺(tái)界面里可以選擇需要執(zhí)行的那個(gè)應(yīng)用,主控臺(tái)負(fù)責(zé)加載并跳轉(zhuǎn)運(yùn)行。應(yīng)用程序返回或退出后執(zhí)行復(fù)位再次回到主控臺(tái)程序。

2硬件設(shè)計(jì)

  本文采用STM32F103ZET6作為控制單元,STM32系列單片機(jī)基于ARM Cortex-M內(nèi)核[8],專為要求高性能、低成本、低功耗的嵌入式應(yīng)用設(shè)計(jì),外設(shè)非常豐富。STM32F103ZET6屬于STM32增強(qiáng)型系列產(chǎn)品,時(shí)鐘頻率達(dá)到72 MHz,內(nèi)置64 KB SRAM和512 KB Flash,擁有多個(gè)定時(shí)器、3個(gè)SPI/I2S、2個(gè)I2C、5個(gè) 串口以及USB 2.0接口,還有多個(gè)AD、DA轉(zhuǎn)換器。

  2.1硬件構(gòu)成

002.jpg

  如圖2所示,抄表機(jī)由STM32處理器和多種外設(shè)構(gòu)成,包含:通過FSMC接口連接的分辨率為240×320的LCD顯示屏(并通過PWM調(diào)節(jié)LCD亮度),鋰電池供電單元,由GPIO直接驅(qū)動(dòng)的31個(gè)物理按鍵和2個(gè)LED指示燈,通過PWM方式驅(qū)動(dòng)的可以發(fā)出多種不同的聲音的無源蜂鳴器,分別由5個(gè)串口連接的RS232、紅外收發(fā)模塊、RS485、電流環(huán)接口、條碼掃描模塊、SIM908模塊;通過STM32的SPI接口連接了W25Q16和SD卡,通過USB與上位機(jī)通信;還采用了高精度的RTC芯片DS3231SN,通過IC接口與STM32連接,配備了紐扣電池。

  2.2基于FSMC的LCD驅(qū)動(dòng)電路

  可變靜態(tài)存儲(chǔ)控制器(Flexible Static Memory Controller,F(xiàn)SMC)是STM32采用的一種新型的存儲(chǔ)器擴(kuò)展技術(shù)[9]。它在外部存儲(chǔ)器擴(kuò)展方面具有獨(dú)特的優(yōu)勢,可根據(jù)系統(tǒng)的應(yīng)用需要,方便地進(jìn)行不同類型大容量靜態(tài)存儲(chǔ)器的擴(kuò)展。STM32通過FSMC可以與SRAM、ROM、PSRAM、NOR Flash和NAND Flash存儲(chǔ)器的引腳直接相連。本文利用FSMC對(duì)顯示屏的緩存進(jìn)行高速寫操作,實(shí)現(xiàn)了快速顯示功能。FSMC設(shè)置為NORSRAM操作模式,使用該模式下Bank1的Sector4,用地址線A10作為數(shù)據(jù)命令區(qū)分線與LCD的RS腳連接,16位數(shù)據(jù)線與LCD模塊的數(shù)據(jù)線連接,剩余幾條重要的連線分別是FSMC_NE4連CS、FSMC_NWE連/WR、FSMC_NOE連/RD。

  2.3按鍵、LED與蜂鳴器設(shè)計(jì)

  抄表機(jī)一共有31個(gè)按鍵,如圖3所示。除了條碼掃描鍵、電源鍵和復(fù)位鍵,采用了矩陣鍵盤電路設(shè)計(jì),節(jié)約引腳。按鍵設(shè)計(jì)充分考慮到應(yīng)用需要,支持漢字輸入和特殊符號(hào)輸入,專門設(shè)計(jì)的復(fù)位鍵用于應(yīng)用程序死機(jī)后復(fù)位系統(tǒng)。F1~F4為用戶自定義功能鍵??旖萱I也可以用戶自定義使用?!?/p>

003.jpg

  2個(gè)LED分別代表充電狀態(tài)、工作狀態(tài)。蜂鳴器采用無源驅(qū)動(dòng)方式,通過STM32定時(shí)器產(chǎn)生PWM波形驅(qū)動(dòng)發(fā)聲。通過改變PWM波形頻率,可以發(fā)出不同音調(diào)的聲音,再通過程序進(jìn)行組合,使得不同的事件有不同的聲音提示,增強(qiáng)用戶使用體驗(yàn)。

  2.4SIM908模塊電路設(shè)計(jì)

  SIM908 是一款集成GPS導(dǎo)航技術(shù)的四頻GSM/GPRS模塊。緊湊的模塊尺寸并將GPRS和GPS整合在SMT封裝里,為實(shí)現(xiàn)內(nèi)嵌GPS的應(yīng)用節(jié)省了開發(fā)時(shí)間和費(fèi)用。SIM908模塊上自帶GPS和GPRS天線連接器,可以直接與陶瓷天線連接,不用考慮射頻PCB走線問題。本文采用UART5與SIM908模塊通信,通過AT命令交互信息進(jìn)行GPRS通信和GPS定位信息獲取。比如使用"AT+CGPSPWR=1"命令打開GPS電源后,用"AT+CGPSPWR=1"命令進(jìn)行復(fù)位,然后使用"AT+CGPSINF=32"獲取GPS定位信息。

  SIM908的電源直接由鋰電池提供,STM32通過P-MOS管SI2301來控制供電。

  2.5外設(shè)和接口

  針對(duì)現(xiàn)場表計(jì)的通信接口,本文研制的抄表機(jī)包含了紅外、RS232、RS485和電流環(huán)接口。紅外通信采用38 kHz的標(biāo)準(zhǔn)載波調(diào)制。通過MAX3232CSE芯片將USART1擴(kuò)展為RS232接口。通過SP3485EEN芯片將USART3擴(kuò)展為RS485接口,同時(shí)設(shè)計(jì)了電流環(huán)接口。UART4接條碼掃描模塊,支持安裝一維或二維掃描模塊。通過USB接口將抄表機(jī)驅(qū)動(dòng)在PC上虛擬成一個(gè)串口設(shè)備,進(jìn)行數(shù)據(jù)上下裝,同時(shí)通過USB接口為鋰電池充電。

  2.6電池充電及電源設(shè)計(jì)

  抄表機(jī)采用了充電電流最高1 A的線性鋰電池充電芯片TP4056對(duì)2 000 mAh鋰電池進(jìn)行充電管理。通過STM32的ADC對(duì)電池電壓進(jìn)行采集,當(dāng)電壓低于3.7 V時(shí),用蜂鳴器進(jìn)行提示并啟動(dòng)關(guān)機(jī)倒計(jì)時(shí)。

  本文采用了低壓差、低成本的LDO低壓差線性穩(wěn)壓芯片RT9013-33為系統(tǒng)提供3.3V電源,它非常適合用于鋰電池供電的應(yīng)用場合,通過EN引腳可以很方便地實(shí)現(xiàn)軟件自動(dòng)關(guān)機(jī)和按鍵開關(guān)機(jī)功能,

3軟件設(shè)計(jì)

  抄表機(jī)的軟件設(shè)計(jì)工作包括:基本驅(qū)動(dòng)、文件系統(tǒng)設(shè)計(jì)、主控臺(tái)功能設(shè)計(jì)、API接口設(shè)計(jì)。

  3.1基本驅(qū)動(dòng)

  基本驅(qū)動(dòng)主要包含一系列設(shè)備初始化以及讀寫操作,如時(shí)鐘初始化、定時(shí)器初始化、串口初始化、GPIO初始化配置(蜂鳴器、按鍵、LED、控制線)、FSMC 初始化及配置、ADC初始化配置、IIC/SPI接口初始化、LCD模塊初始化、SD卡文件系統(tǒng)初始化。STM32提供了豐富的硬件開發(fā)庫,用戶可以方便地對(duì)片內(nèi)外設(shè)進(jìn)行編程。

  3.2文件系統(tǒng)

  本文采用了FatFs文件系統(tǒng)[10]來對(duì)SD卡進(jìn)行文件讀寫。它是一個(gè)通用的文件系統(tǒng)模塊,用于在小型嵌入式系統(tǒng)中實(shí)現(xiàn)FAT文件系統(tǒng)。FatFs的編寫遵循ANSI C,不依賴于硬件平臺(tái)。可以很容易地移植到各種單片機(jī)平臺(tái)。FatFs文件系統(tǒng)支持fat16、fat32,包含ff.h、diskio.h、integer.h、ffconf.h 4個(gè)頭文件以及ff.c 文件系統(tǒng)實(shí)現(xiàn)。要實(shí)現(xiàn)具體的應(yīng)用移植,主要工作是根據(jù)diskio.h實(shí)現(xiàn)其diskio.c 底層驅(qū)動(dòng),包含如下功能函數(shù):disk_initialize 初始化磁盤驅(qū)動(dòng)器;disk_status 獲取磁盤狀態(tài);disk_read 讀扇區(qū);disk_write 寫扇區(qū);disk_ioctl 設(shè)備相關(guān)的控制特性;get_fattime 獲取當(dāng)前時(shí)間。

  3.3主控臺(tái)功能設(shè)計(jì)

  主控臺(tái)程序負(fù)責(zé)系統(tǒng)設(shè)置、應(yīng)用程序加載、文件管理等基礎(chǔ)功能。主控臺(tái)的流程如下。

  如圖4所示,系統(tǒng)開機(jī)后首先進(jìn)行設(shè)備初始化,然后進(jìn)入主菜單,顯示主菜單,根據(jù)用戶選擇跳入各功能模塊。功能模塊的顯示和操作方法與主菜單一樣,阻塞方式檢測到按鍵后進(jìn)行不同處理,通過返回鍵可以回到上級(jí)菜單。通過運(yùn)行應(yīng)用模塊將直接跳轉(zhuǎn)到應(yīng)用程序區(qū)運(yùn)行已經(jīng)加載的應(yīng)用,省去加載時(shí)間。而應(yīng)用選擇模塊通過文件系統(tǒng)接口將SD卡中的應(yīng)用文件羅列出來,用戶選定某一個(gè)后,將程序文件從SD卡中寫入到STM32的內(nèi)部Flash的應(yīng)用程序區(qū),并跳轉(zhuǎn)執(zhí)行。在菜單界面運(yùn)行中,后臺(tái)會(huì)執(zhí)行3種中斷處理:定時(shí)任務(wù)、串口接收、USB驅(qū)動(dòng)處理。定時(shí)任務(wù)主要負(fù)責(zé)周期性的電量檢測和狀態(tài)條刷新,以及記錄閑置時(shí)間執(zhí)行關(guān)機(jī)。

  

004.jpg

  3.4API接口設(shè)計(jì)

  為了便于用戶二次開發(fā),本文設(shè)計(jì)了一系列的API接口,幫助用戶快速開發(fā)應(yīng)用程序。主要包括:(1) LCD顯示相關(guān)函數(shù),如繪圖、文字顯示;(2)按鍵獲取;(3)文件系統(tǒng)接口;(4) 多功能輸入法接口;(5)時(shí)間獲?。唬?)定時(shí)器;(7)條碼掃描接口;(8)紅外/RS485/RS232收發(fā)接口;(9)USB通信接口及通信協(xié)議;(10) SIM908通信接口;(11)對(duì)話框接口;(12)簡單圖形界面控件。

4應(yīng)用開發(fā)平臺(tái)設(shè)計(jì)

  由于用戶二次開發(fā)的應(yīng)用要在應(yīng)用程序區(qū)運(yùn)行,需要在編譯時(shí)對(duì)中斷向量表的地址進(jìn)行偏移,同時(shí)要對(duì)程序起始地址進(jìn)行設(shè)置。為了便于用戶快速開發(fā),本文設(shè)計(jì)了專用的IDE開發(fā)平臺(tái),將API接口庫和ARM編譯庫集成到一起,同時(shí)配置好中斷向量表和起始地址以及其他配置和編譯選項(xiàng),用戶只需關(guān)注應(yīng)用程序開發(fā)。平臺(tái)還集成了USB通信協(xié)議,可以直接將程序下載到抄表機(jī)中并運(yùn)行。

5結(jié)論

  本文設(shè)計(jì)的多功能抄表機(jī)具備成本低、擴(kuò)展性好、信息采集全面等特點(diǎn),提升現(xiàn)場抄表作業(yè)的工作效率和信息化管理水平。這種抄表機(jī)目前已經(jīng)在安徽和江蘇的電力系統(tǒng)中廣泛使用。參考文獻(xiàn)

 ?。?] 王保云. 物聯(lián)網(wǎng)技術(shù)研究綜述[J]. 電子測量與儀器學(xué)報(bào), 2009, 23(12):17.

 ?。?] 曾維, 富饒. 基于電力載波的遠(yuǎn)程抄表電能表的設(shè)計(jì)[J].微型機(jī)與應(yīng)用,2013, 32(16):8789.

  [3] 李婉婉, 李宏. 單片機(jī)IAP升級(jí)方法在血液分析儀中的應(yīng)用[J].微型機(jī)與應(yīng)用, 2014, 33(21):1618.

 ?。?] 郭堅(jiān). 基于SIM908的無人機(jī)空氣質(zhì)量監(jiān)測系統(tǒng)設(shè)計(jì)與研究[D]. 天津:天津大學(xué), 2013.

  [5] 夏丹. 手持PDA抄表終端系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D]. 武漢:華中科技大學(xué), 2007.

 ?。?] 陳立定, 呂盛林. 嵌入式Linux監(jiān)控終端的多進(jìn)程控制[J]. 自動(dòng)化儀表, 2011,32(1):1315.

  [7] 羅健飛, 吳仲城, 沈春山,等. 基于ARM和WinCE下的設(shè)備接口驅(qū)動(dòng)設(shè)計(jì)與實(shí)現(xiàn)[J]. 自動(dòng)化與儀表, 2009,24(3):13.

 ?。?] 任順航, 呂鵬鵬, 王立鵬,等. 基于STM32的電能手抄系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用, 2014, 40(1):7578.

 ?。?] 潘輝. STM32FSMC機(jī)制的NORFlash存儲(chǔ)器擴(kuò)展技術(shù)[J]. 單片機(jī)與嵌入式系統(tǒng)應(yīng)用, 2009(10):3134.

 ?。?0] 李世奇, 董浩斌, 李榮生. 基于FatFs文件系統(tǒng)的SD卡存儲(chǔ)器設(shè)計(jì)[J]. 測控技術(shù), 2011,30(12):7981.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。