李 禎,陳廣飛,崔立鵬
基于低功耗A R M的物聯(lián)網(wǎng)Wi-F i接入方案設(shè)計(jì)與實(shí)現(xiàn)
李 禎,陳廣飛,崔立鵬
目的:設(shè)計(jì)一種低功耗物聯(lián)網(wǎng)Wi-Fi接入方案,便于傳感器網(wǎng)絡(luò)接入互聯(lián)網(wǎng)。方法:采用低功耗ARM作為主控芯片,驅(qū)動(dòng)Marvell 88W8686網(wǎng)卡芯片,并移植LWIP(輕量型TCP/IP)協(xié)議,共同實(shí)現(xiàn)Wi-Fi網(wǎng)絡(luò)的加網(wǎng)、建立TCP連接、發(fā)送數(shù)據(jù)等一系列工作。結(jié)果:經(jīng)測(cè)試,本系統(tǒng)可快速連接Wi-Fi網(wǎng)絡(luò),最大發(fā)送電流在170 mA以內(nèi),靈敏度為-85 dBm。結(jié)論:該系統(tǒng)具有功耗低、速度快、支持多協(xié)議等優(yōu)點(diǎn),非常適合應(yīng)用于物聯(lián)網(wǎng)網(wǎng)關(guān)以及傳感器節(jié)點(diǎn)的設(shè)計(jì)方案中,具有廣闊的發(fā)展空間。
物聯(lián)網(wǎng);ARM;Wi-Fi
電子信息技術(shù)的發(fā)展和計(jì)算機(jī)的出現(xiàn),以及互聯(lián)網(wǎng)、移動(dòng)通信技術(shù)的問(wèn)世以前所未有的方式改變著人類的生活[1]。與此同時(shí),我們不僅僅滿足于人與人之間的通信,更希望能夠在物品與物品之間、人與物品之間,甚至人與現(xiàn)實(shí)環(huán)境之間實(shí)現(xiàn)高效的信息交互。
物聯(lián)網(wǎng)概念的提出為滿足人類的新要求帶來(lái)了希望。概括來(lái)說(shuō),物聯(lián)網(wǎng)是信息技術(shù)與物理環(huán)境的高度融合。物聯(lián)網(wǎng)是將物品信息通過(guò)傳感器網(wǎng)絡(luò)與互聯(lián)網(wǎng)聯(lián)接,進(jìn)行信息交換,以實(shí)現(xiàn)智能化識(shí)別、定位、跟蹤、監(jiān)控和管理的一種網(wǎng)絡(luò),是信息化在人類社會(huì)綜合應(yīng)用達(dá)到的更高境界。
傳感器網(wǎng)絡(luò)是物聯(lián)網(wǎng)的關(guān)鍵技術(shù)之一,由很多傳感器節(jié)點(diǎn)組成。這些節(jié)點(diǎn)具有數(shù)據(jù)采集、處理、無(wú)線通信和自組織的能力,協(xié)作完成大規(guī)模復(fù)雜的監(jiān)測(cè)任務(wù),其組成包括傳感器、微處理器、通信模塊以及電源管理模塊。網(wǎng)絡(luò)中通常只有少量的sink節(jié)點(diǎn)負(fù)責(zé)發(fā)布命令和收集數(shù)據(jù),實(shí)現(xiàn)與互聯(lián)網(wǎng)的通信[2]。在工作過(guò)程中,傳感器節(jié)點(diǎn)可以通過(guò)短距離的無(wú)線通信技術(shù)將信息直接傳送至Internet,也可先傳送至sink節(jié)點(diǎn),匯總后再發(fā)送給Internet,方案視具體應(yīng)用情況而定。
在多種短距離的無(wú)線通信方式中,藍(lán)牙(Blue tooth)、ZigBee都具有低成本、低功耗的優(yōu)點(diǎn),但傳輸距離近、速率低使得其應(yīng)用范圍受限。隨著低功耗Wi-Fi技術(shù)的發(fā)展以及業(yè)界與IEEE 802.11標(biāo)準(zhǔn)的普遍認(rèn)可,基于Wi-Fi的傳感器網(wǎng)絡(luò)接入Internet方案越發(fā)受到人們的青睞。IEEE 802.11已經(jīng)成為事實(shí)上的局域網(wǎng)標(biāo)準(zhǔn),與TCP/IP協(xié)議完美結(jié)合,一些網(wǎng)絡(luò)管理工具都在此基礎(chǔ)上開(kāi)發(fā),相應(yīng)的知識(shí)體系被建立并完善,IT技術(shù)人員也已經(jīng)很熟悉管理Wi-Fi網(wǎng)絡(luò),使其在無(wú)線智能終端上得到廣泛應(yīng)用。傳感器網(wǎng)絡(luò)采用Wi-Fi接入技術(shù),還可節(jié)省開(kāi)發(fā)需兼容私有協(xié)議網(wǎng)關(guān)的大量投入,非常有利于物聯(lián)網(wǎng)的應(yīng)用發(fā)展[3]。
本方案采用STM32作為系統(tǒng)微控制器,將傳感器網(wǎng)絡(luò)中的數(shù)據(jù)整合,一方面,通過(guò)SPI口傳送數(shù)據(jù);另一方面,驅(qū)動(dòng)Wi-Fi芯片下載固件程序,并使其完成初始化、掃描、加網(wǎng)、建立連接和發(fā)送數(shù)據(jù)等一系列操作。數(shù)據(jù)傳輸至上位機(jī)接收軟件,可進(jìn)一步將數(shù)據(jù)整合并發(fā)送至Internet,實(shí)現(xiàn)互聯(lián)網(wǎng)接入。其系統(tǒng)組成如圖1所示。
圖1 系統(tǒng)組成
1.1 STM32介紹
STM32系列是為要求高性能、低成本、低功耗的嵌入式應(yīng)用專門設(shè)計(jì)的ARM Cortex-M3內(nèi)核,按性能分成2個(gè)不同的系列——STM32F103“增強(qiáng)型”系列和STM32F101“基本型”系列。考慮到移植協(xié)議棧需要較大的存儲(chǔ)空間,本方案采用 “增強(qiáng)型”STM32F103RE,它具有72 MHz主頻、512 KB Flash以及64 KB SRAM。
1.2 Marvell 88W8686芯片介紹
88W8686是Marvell公司針對(duì)移動(dòng)電話、PDA、數(shù)字?jǐn)z像機(jī)等移動(dòng)應(yīng)用推出的一款低成本、低功耗、高集成度的Wi-Fi SoC芯片。它的物理層采用一個(gè)802.11a/b/g基帶,可實(shí)現(xiàn)多種調(diào)制技術(shù),如DSSS、OFDM、DBPSK、DQPSK、CCK和QAM等,并且可在2.4和5 GHz雙頻無(wú)線收發(fā),兼容性強(qiáng)。MAC層定義了2種介質(zhì)訪問(wèn)控制方式,即基本訪問(wèn)機(jī)制和集中控制訪問(wèn)機(jī)制。本方案中采用基本訪問(wèn)機(jī)制中的載波偵聽(tīng)多路訪問(wèn)/沖突避免(CSMA/CA)來(lái)實(shí)現(xiàn)無(wú)線工作站點(diǎn)和接入點(diǎn)之間的媒介共享。同時(shí),該芯片還提供了電源管理和數(shù)據(jù)加密功能。以上所有的功能模塊由其內(nèi)部自帶的ARM處理器來(lái)管理協(xié)調(diào)。
88W8686的驅(qū)動(dòng)程序框架如圖2所示。這里的主機(jī)驅(qū)動(dòng)(host driver)負(fù)責(zé)與 88W8686內(nèi)的固件(firmware)進(jìn)行通信。其中firmware是Wi-Fi SoC芯片中運(yùn)行的一段程序,系統(tǒng)上電啟動(dòng)之后,處理器將其下載到Wi-Fi芯片中,之后該firmware即可運(yùn)行在SoC內(nèi),基于SoC內(nèi)部的ARM CPU、MAC和基帶模塊、射頻模塊以及硬件接口等實(shí)現(xiàn)硬件接口控制、數(shù)據(jù)服務(wù)、802.11 MAC層管理、硬件控制等功能。host driver與firmware之間有數(shù)據(jù)通道與命令通道2個(gè)通道。數(shù)據(jù)通道用來(lái)傳輸要發(fā)送和接收的數(shù)據(jù),命令通道用來(lái)傳輸控制命令。host driver將標(biāo)準(zhǔn)802.3幀發(fā)送給 SoC內(nèi)的WLAN firmware,WLAN firmware將其處理為802.11幀之后通過(guò)無(wú)線發(fā)送出去;WLAN firmware接收到802.11幀之后,將其轉(zhuǎn)化為802.3幀,然后通過(guò)數(shù)據(jù)通道發(fā)送給host driver。
2.1 硬件接口驅(qū)動(dòng)
本方案中,控制器與Wi-Fi芯片通過(guò)SPI口通信。具體連接方法如圖3所示。
這里采用的GSPI口為SPI接口的增強(qiáng)版,其接口分別為 SPI_CLK、SPI_ SDI、SPI_SCSn、SPI_ SDO、SPI_SINTn。與標(biāo)準(zhǔn)SPI相比,增加了一個(gè)中斷信號(hào)線,可使其與STM32上的一個(gè)設(shè)置為輸入的GPIO管腳相連,通過(guò)外部中斷來(lái)實(shí)現(xiàn)具體功能。
圖2 驅(qū)動(dòng)程序分層結(jié)構(gòu)
圖3 STM32與Marvell 88W8686硬件接口
2.2 固件下載
系統(tǒng)上電后只能進(jìn)行一些寄存器的讀寫操作。想要實(shí)現(xiàn)Wi-Fi芯片的功能,需要先下載helper,然后helper再與host一同工作,將88W8686的固件下載至芯片內(nèi),最后檢查固件的運(yùn)行狀態(tài),若固件的運(yùn)行狀態(tài)良好才開(kāi)始進(jìn)行其他初始化操作。這里給出使用SPI接口下載固件的步驟[4],如圖4所示。
2.3 網(wǎng)卡初始化
在驅(qū)動(dòng)代碼中構(gòu)建lbs_private結(jié)構(gòu)體,其中包括網(wǎng)卡設(shè)備的全部信息。在主程序中建立newpower_Wi-Fi_iface結(jié)構(gòu)體,這里定義了對(duì)網(wǎng)卡設(shè)備進(jìn)行
操作的具體函數(shù)。
固件下載成功后,通過(guò)調(diào)用scan_work()函數(shù)掃描Wi-Fi網(wǎng)絡(luò),并將結(jié)果存放至priv->network數(shù)據(jù)域中,返回并打印存放于exist_ap_list中的掃描結(jié)果名單。之后調(diào)用assoc_ap()函數(shù)向firmware發(fā)送身份驗(yàn)證信息以及與指定AP的關(guān)聯(lián)命令,這其中包括事先定義好的ssid與密碼。
圖4 固件下載及啟動(dòng)流程
2.4 收發(fā)命令與數(shù)據(jù)
命令收發(fā)通過(guò)control path來(lái)完成,host驅(qū)動(dòng)和88W8686固件之間的交互采用請(qǐng)求-應(yīng)答模式。STM32發(fā)出命令CMD_XXX,88W8686收到命令后進(jìn)行處理,返回命令結(jié)果CMD_RES_XXX。命令交互采用串行結(jié)構(gòu),主機(jī)驅(qū)動(dòng)必須等到接收到當(dāng)前請(qǐng)求命令的響應(yīng)后, 才能發(fā)送下一個(gè)命令[5](CMD_CODE_DNLD命令除外,該命令不需要返回命令響應(yīng)),如圖5所示。
圖5 命令交互模式
88W8686的命令可實(shí)現(xiàn)固件重啟與初始化、基帶/MAC/射頻控制、狀態(tài)信息、掃描、關(guān)聯(lián)、認(rèn)證、電源管理等功能。
數(shù)據(jù)收發(fā)通過(guò)data path來(lái)完成。每個(gè)通過(guò)接口傳輸?shù)臄?shù)據(jù)包都必須添加一個(gè)包描述符(packet descriptor),數(shù)據(jù)包的幀格式如圖6所示。
圖6 數(shù)據(jù)包幀結(jié)構(gòu)
2.5 完整加網(wǎng)流程
以加入一個(gè)典型的Infrastructure網(wǎng)絡(luò)并進(jìn)行數(shù)據(jù)收發(fā)為例,host驅(qū)動(dòng)的工作流程如下:
(1)首先使用CMD_CODE_DNLD命令下載固件至88W8686,設(shè)置固件為基礎(chǔ)模式(Infrastructure模式);
(2)等待固件下載完成并啟動(dòng);
(3)使用CMD_802_11_SCAN命令,搜索當(dāng)前環(huán)境中的無(wú)線網(wǎng)絡(luò);
(4)使用CMD_802_11_AUTHENTICATE命令,設(shè)置固件為開(kāi)放認(rèn)證模式;
(5)使用CMD_802_11_ASSOCIATE命令,與AP建立關(guān)聯(lián)。
至此,終端即與AP建立起連接,可進(jìn)行數(shù)據(jù)的收發(fā),如圖7所示。
圖7 通信流程示意圖
LWIP(light weight IP)是瑞士計(jì)算機(jī)科學(xué)院(Swedish Institute of Computer Science)的Adam Dunkels等開(kāi)發(fā)的TCP/IP協(xié)議棧。該協(xié)議棧適用于相對(duì)PC而言資源較少的嵌入式系統(tǒng),且代碼開(kāi)源,無(wú)論是否有操作系統(tǒng)的支持均可運(yùn)行。
LWIP通過(guò)內(nèi)存共享的方式實(shí)現(xiàn)應(yīng)用層與底層協(xié)議之間的通信,從而避免了內(nèi)存復(fù)制產(chǎn)生的性能損失。因此,它只需要不超過(guò)100 KB的RAM和40 KB左右的ROM就可以運(yùn)行,這使LWIP協(xié)議棧能夠在低端嵌入式系統(tǒng)中使用。
LWIP的源碼和詳細(xì)文檔可從其官方網(wǎng)站獲得。在本項(xiàng)目中,采用LWIP的穩(wěn)定版本LWIP v1.4.0。
LWIP的移植包括數(shù)據(jù)類型及定義、lib_arch中的一些庫(kù)函數(shù)、網(wǎng)絡(luò)接口層的移植等[6]。
3.1 數(shù)據(jù)類型及定義
在/src/include/lwip目錄下,一些頭文件包含了
有關(guān)編譯器或處理器結(jié)構(gòu)的定義。在這里,需要將所有的定義與STM32相匹配。首先,在數(shù)據(jù)類型以及長(zhǎng)度方面,分別定義了u8_t為無(wú)符號(hào)8位數(shù)據(jù),s8_t為有符號(hào)8位數(shù)據(jù),16位和32位定義與此類似。其次,在字節(jié)序的轉(zhuǎn)換方面,#define PACK_STRUCT_ FIELD(x)定義了小端模式。另外,C語(yǔ)言的結(jié)構(gòu)體默認(rèn)為4字節(jié)對(duì)齊,但LWIP在處理數(shù)據(jù)包時(shí)是根據(jù)不同數(shù)據(jù)的長(zhǎng)度來(lái)讀取的,因此,在定義結(jié)構(gòu)體時(shí),一定要使用_packed關(guān)鍵字,讓編譯器放棄字節(jié)對(duì)齊。例如宏定義 #define PACK_STRUCT_BEGIN _packet就采用了這種方法。
3.2 庫(kù)函數(shù)
LWIP用到了一些外部庫(kù)函數(shù),這些函數(shù)通常與用戶使用的處理器或編譯器有關(guān),因此,需自行編寫。修改數(shù)據(jù)大小端的函數(shù)為:
u16_t htons(u16_t n);//16位數(shù)據(jù)高低字節(jié)交換u16_tntohs(u16_t n);
u32_t htonl(u32_t n);//32位數(shù)據(jù)大小端對(duì)調(diào)u32_tntohl(u32_t n);
對(duì)字符串的操作定義函數(shù)包括:
char*strncpy(char*s1,const char*s2,size_t n);//將s1的前n位拷貝至s2
intstrncmp(const char*s1,const char*s2,intlen);//字符串s1與s2比較
intstrlen(const char*str);//計(jì)算字符串長(zhǎng)度
void_membitcpybl(void*dest,const void*src,intdestoffset,intsrcoffset,size_tnbits);//用于小端模式以字節(jié)為單位的內(nèi)存數(shù)據(jù)塊之間的互相拷貝
這些函數(shù)可參考標(biāo)準(zhǔn)函數(shù)庫(kù)實(shí)現(xiàn)。
3.3 網(wǎng)絡(luò)接口層移植
LWIP向上提供應(yīng)用層接口,向下提供與硬件相關(guān)的網(wǎng)絡(luò)接口,與網(wǎng)卡的驅(qū)動(dòng)程序相關(guān)聯(lián)。在驅(qū)動(dòng)中需要實(shí)現(xiàn)網(wǎng)絡(luò)接口的收、發(fā)、初始化以及中斷服務(wù)程序。
LWIP通過(guò)netif結(jié)構(gòu)體來(lái)描述硬件網(wǎng)絡(luò)接口,其中包含了對(duì)接口的屬性變量以及收發(fā)函數(shù)的定義。所有的網(wǎng)絡(luò)接口都保存在一個(gè)全局鏈表中,并通過(guò)結(jié)構(gòu)體中的next指針連接。上層協(xié)議通過(guò)調(diào)用netif結(jié)構(gòu)體中的方法netif→input()及netif→output()進(jìn)行以太網(wǎng)packet的收、發(fā)等操作。
對(duì)網(wǎng)絡(luò)接口的移植主要就是以下幾個(gè)函數(shù):err_t(*input)(structpbuf*p,structnetif*inp);//該函數(shù)被驅(qū)動(dòng)調(diào)用,傳遞數(shù)據(jù)包給TCP/IP棧
err_t(*output)(structnetif*netif,structpbuf*p,structip_addr*ipaddr);//該函數(shù)被IP模塊調(diào)用,向以太網(wǎng)上發(fā)送一個(gè)數(shù)據(jù)包,函數(shù)要先通過(guò)IP地址獲得解決硬件地址,然后發(fā)包
err_t(*linkoutput)(structnetif*netif,structpbuf *p);//該函數(shù)提供直接發(fā)送數(shù)據(jù)包的接口。
經(jīng)實(shí)驗(yàn)測(cè)試,本系統(tǒng)可順利完成掃描加網(wǎng)等功能,并通過(guò)路由器與Internet連接,最大發(fā)送電流在170 mA以內(nèi),靈敏度為-85 dBm。將Wi-Fi技術(shù)加入傳感器節(jié)點(diǎn),使得傳感器網(wǎng)絡(luò)與Internet的連接更加簡(jiǎn)單易行,也為物聯(lián)網(wǎng)應(yīng)用提供了更加廣闊的平臺(tái)。在醫(yī)用物聯(lián)網(wǎng)中,通過(guò)無(wú)線傳感器網(wǎng)絡(luò)、Wi-Fi、Internet、數(shù)據(jù)庫(kù)等技術(shù),提供生理參數(shù)感知與監(jiān)測(cè)、健康管理與慢病管理、緊急醫(yī)療救助、移動(dòng)醫(yī)護(hù)服務(wù)、醫(yī)用資源管理、遠(yuǎn)程手術(shù)、電子健康檔案、區(qū)域健康監(jiān)測(cè)與一體化等服務(wù)[7-8]。
在智能家居系統(tǒng)中,可為電視、冰箱等家用電器、煙霧報(bào)警器、電燈等擴(kuò)展Wi-Fi功能,實(shí)現(xiàn)對(duì)其遠(yuǎn)程開(kāi)關(guān)控制;或結(jié)合醫(yī)用物聯(lián)網(wǎng),為家庭健康終端擴(kuò)展Wi-Fi功能,實(shí)現(xiàn)遠(yuǎn)程家庭保健。
Wi-Fi技術(shù)除了在終端上使用外,還可以作為物聯(lián)網(wǎng)網(wǎng)關(guān),與ZigBee、藍(lán)牙、RFID或其他短距離的無(wú)線通信技術(shù)結(jié)合起來(lái),以網(wǎng)關(guān)的形式實(shí)現(xiàn)這些通信技術(shù)的Internet接入。同時(shí)它可提供如TCP/IP、HTTP、WebServer等高層應(yīng)用和圖形用戶界面,用來(lái)進(jìn)行整個(gè)網(wǎng)絡(luò)中設(shè)備的添加、刪除、狀態(tài)查詢、參數(shù)配置等管理和控制。
物聯(lián)網(wǎng)的網(wǎng)絡(luò)通信技術(shù)發(fā)展日趨成熟?;赪i-Fi技術(shù)的物聯(lián)網(wǎng)可以充分利用現(xiàn)有的已普及的Wi-Fi網(wǎng)絡(luò)資源,特別是電信運(yùn)營(yíng)商大量部署的“無(wú)線城市”網(wǎng)。與3G網(wǎng)絡(luò)無(wú)縫對(duì)接來(lái)部署和實(shí)施,將大大節(jié)約網(wǎng)絡(luò)建設(shè)的投入。Wi-Fi技術(shù)的普及性、標(biāo)準(zhǔn)化程度高,以及便于安裝管理等一系列優(yōu)點(diǎn),決定了其將在物聯(lián)網(wǎng)中得到更廣泛的應(yīng)用。
[1]孫傳寧,張雪.物聯(lián)網(wǎng)概念及關(guān)鍵技術(shù)綜述[J].福建電腦,2010(12):39-41.
[2]孫其博,劉杰.物聯(lián)網(wǎng):概念、架構(gòu)與關(guān)鍵技術(shù)研究綜述[J].北京郵電大學(xué)學(xué)報(bào),2010,33(3):1-9.
[3]Serbulent Tozlu,Murat Senel,Wei Mao,et al.Wi-Fi enabled sensors for internet of things:A practical approach[J].IEEE Communications Magazine,2012,50(6):134-143.
[4]范皖勇.嵌入式Wi-Fi技術(shù)研究與應(yīng)用[D].上海:華東師范大學(xué),2009.
[5]莊藝唐.嵌入式Wi-Fi技術(shù)研究及其在語(yǔ)音通信中的應(yīng)用[D].上海:華東師范大學(xué),2004.
[6]楊曄.實(shí)時(shí)操作系統(tǒng)uC/OS-II下TCP/IP協(xié)議棧的實(shí)現(xiàn)[J].單片機(jī)與嵌入式系統(tǒng),2003(7):80-83.
[7]陸家星.面向普適醫(yī)療的無(wú)線傳感器網(wǎng)絡(luò)研究[D].上海:東華大學(xué),2009.
[8]王升才,周承仙.無(wú)線局域網(wǎng)在醫(yī)療系統(tǒng)中的應(yīng)用[J].沈陽(yáng)工業(yè)大學(xué)學(xué)報(bào),2005,27(3):61-65.
(收稿:2013-04-26 修回:2013-07-15)
Design and Implementation of Wi-Fi Access Solution with Internet of Things Based on Low Power ARM
LI Zhen,CHEN Guang-fei,CUI Li-peng
(General Hospital of the PLA,Beijing 100853,China)
Objective To design a low-powerWi-Fiaccesssolutionwith internetof things to connectsensorsnetwork to Internet. Methods Low-power ARM main controller,Marvell88W8686 network chip and light TCP/IPwere involved in the solution for Wi-Fiaccess,establishing TCP connection,data sending and etc.Results Wi-Finetwork could be accessed to Internet rapidly,with themaximum currentnotmore than 170 mA and sensitivity of-85 dBm.Conclusion The solution results in low-power,high-speed and multi-protocol-compatibleWi-Fiaccess,and thus isworth applying to internet of things gateway and sensor node.[Chinese Medical Equipment Journal,2014,35(3):52-55]
internet of things;ARM;Wi-Fi
R318;TP393.02
A
1003-8868(2014)03-0052-04
10.7687/J.ISSN1003-8868.2014.03.052
解放軍總醫(yī)院臨床科研扶持基金(2012FC-ZHCG-005)
李 禎(1988—),女,碩士研究生,研究方向?yàn)獒t(yī)療物聯(lián)網(wǎng),E-mail:lizhen_301@163.com。
100853北京,解放軍總醫(yī)院(李 禎,陳廣飛,崔立鵬)