1、引言
隨著物聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,物聯(lián)網(wǎng)技術(shù)中一個(gè)重要的實(shí)現(xiàn)就是要將各類傳感器控制節(jié)點(diǎn)采集到的數(shù)據(jù)通過Internet網(wǎng)上傳到用戶手機(jī)或者PC機(jī),為了滿足這一需求,需要設(shè)計(jì)出一種既能作為無線傳感器網(wǎng)絡(luò)的協(xié)調(diào)器,又能實(shí)現(xiàn)遠(yuǎn)程GPRS傳輸和網(wǎng)絡(luò)連接的網(wǎng)關(guān)設(shè)備。
針對(duì)以上需求,本設(shè)計(jì)采用STM32F417作為主設(shè)備控制芯片,片上運(yùn)行μC/OS-II實(shí)時(shí)系統(tǒng)作為設(shè)備管理系統(tǒng),使用uIP作為TCP/IP網(wǎng)絡(luò)協(xié)議棧,主設(shè)備同時(shí)具有鍵盤操作及顯示功能,可以進(jìn)行本地設(shè)置,也可以使用PC機(jī)遠(yuǎn)程設(shè)置。嵌入式網(wǎng)關(guān)中的GPRS模塊通過串口與嵌入式主設(shè)備相連,無線協(xié)調(diào)器通過串口將采集來的數(shù)據(jù)上傳到嵌入式主設(shè)備,主設(shè)備也可以將命令下發(fā)給無線協(xié)調(diào)器,無線協(xié)調(diào)器通過ZigBee無線通信協(xié)議將命令發(fā)給傳感器。
2、系統(tǒng)硬件設(shè)計(jì)
嵌入式網(wǎng)關(guān)系統(tǒng)主要包括嵌入式主設(shè)備、GPRS模塊、無線協(xié)調(diào)器、路由器。嵌入式網(wǎng)關(guān)系統(tǒng)框圖如圖1所示。
圖1 ?嵌入式網(wǎng)關(guān)系統(tǒng)框圖
嵌入式主設(shè)備通過網(wǎng)口與路由器相連;通過串口與GPRS模塊相連,用AT指令控制GPRS模塊;通過串口發(fā)送指令給無線協(xié)調(diào)器,間接控制無線傳感器組。
2.1、嵌入式主設(shè)備硬件設(shè)計(jì)
嵌入式設(shè)備硬件平臺(tái)主要由STM32F417為主控芯片,外圍硬件電路包括液晶顯示電路,網(wǎng)口驅(qū)動(dòng)電路,鍵盤操作和串口驅(qū)動(dòng)電路。硬件電路框圖如圖2所示。
圖2 ?嵌入式主設(shè)備硬件電路框圖
本設(shè)計(jì)中采用串口液晶,串口液晶無需設(shè)計(jì)復(fù)雜的驅(qū)動(dòng)電路,只需要串口命令對(duì)其控制,顯示頁(yè)面和控件可以下載到液晶的FLASH中,根據(jù)設(shè)計(jì)需要編寫GUI界面。鍵盤操作主要為用戶提供本地設(shè)置網(wǎng)關(guān)設(shè)備的功能。
STM32F417內(nèi)置MAC模塊,要實(shí)現(xiàn)網(wǎng)絡(luò)傳輸需要外擴(kuò)一片PHY芯片,底層網(wǎng)絡(luò)驅(qū)動(dòng)就是對(duì)PHY芯片的操作,TCP/IP協(xié)議采用uIP協(xié)議棧;與GPRS模塊的連接使用串口,通過發(fā)送AT指令來實(shí)現(xiàn)對(duì)GPRS模塊連接網(wǎng)絡(luò),發(fā)送短信,開關(guān)機(jī)等操作;對(duì)無線協(xié)調(diào)器的操作也是通過串口,自定義協(xié)議完成控制。
2.2、GPRS模塊硬件設(shè)計(jì)
GPRS模塊主要實(shí)現(xiàn)將傳感器采集來的數(shù)據(jù)上傳給用戶手機(jī),用戶可以通過手機(jī)對(duì)傳感器進(jìn)行遠(yuǎn)程控制。GPRS模塊通過串口與嵌入式主設(shè)備相連。硬件設(shè)計(jì)框圖如圖3所示。
圖3 ?GPRS模塊硬件設(shè)計(jì)框圖
GPRS模塊主控芯片采用Philips公司的LPC2103,主要實(shí)現(xiàn)對(duì)GPRS收發(fā)器(SIMCOM300)的驅(qū)動(dòng)控制,以及通過串口與嵌入式主設(shè)備連接。
2.3、無線協(xié)調(diào)器硬件設(shè)計(jì)
無線協(xié)調(diào)器是將無線傳感器組采集的數(shù)據(jù)通過ZigBee網(wǎng)絡(luò)傳輸給嵌入式主設(shè)備,嵌入式主設(shè)備通過串口將控制命令發(fā)送給無線協(xié)調(diào)器,再間接發(fā)給無線傳感器組。硬件系統(tǒng)框圖如圖4所示。
圖4 ?無線協(xié)調(diào)器硬件設(shè)計(jì)框圖
無線協(xié)調(diào)器使用TI公司開發(fā)的CC2430芯片作為主控芯片,CC2430整合了ZigBee射頻前端、內(nèi)存和微控制器,支持ZigBee無線通信協(xié)議,工作頻段在2.4GHz。
3、系統(tǒng)軟件設(shè)計(jì)
本設(shè)計(jì)中的軟件包括運(yùn)行于STM32F417上的嵌入式主設(shè)備軟件、運(yùn)行于CC2430上ZigBee協(xié)議棧與客戶端軟件及運(yùn)行于LPC2103上的GPRS模塊軟件。
3.1、嵌入式主設(shè)備軟件設(shè)計(jì)
嵌入式主設(shè)備軟件以μC/OS-II實(shí)時(shí)系統(tǒng)作為設(shè)備管理主程序框架,同時(shí)嵌入了uIP協(xié)議棧作為TCP/IP協(xié)議,嵌入式主設(shè)備的功能是通過網(wǎng)口與以太網(wǎng)連接實(shí)現(xiàn)與遠(yuǎn)程PC機(jī)的通信;外接串口液晶屏和按鍵實(shí)現(xiàn)本地參數(shù)設(shè)置;通過串口控制GPRS模塊及無線協(xié)調(diào)器。主設(shè)備系統(tǒng)軟件設(shè)計(jì)如圖5所示。
圖5 ?主設(shè)備軟件設(shè)計(jì)
3.1.1、μC/OS-II系統(tǒng)任務(wù)
μC/OS-II系統(tǒng)建立任務(wù),包含系統(tǒng)任務(wù)、圖形用戶接口任務(wù)、網(wǎng)絡(luò)處理任務(wù)、存儲(chǔ)數(shù)據(jù)管理任務(wù)、串口任務(wù)、空閑任務(wù)、統(tǒng)計(jì)時(shí)間運(yùn)行任務(wù)。
主程序集中在main()入口函數(shù),完成μC/OS-II系統(tǒng)初始化、硬件平臺(tái)初始化、建立主任務(wù)、設(shè)置節(jié)拍計(jì)數(shù)以及啟動(dòng)μC/OS-II系統(tǒng)等。
開始任務(wù)建立通過App_TaskStart()函數(shù)完成,再由該函數(shù)調(diào)用App_TaskCreat()建立其他任務(wù),一共創(chuàng)建了主任務(wù)、串口通信任務(wù)、圖形界面任務(wù)、按鍵任務(wù)、I2C總線讀寫EEPROM任務(wù)、SPI讀寫FLASH任務(wù)、網(wǎng)絡(luò)處理任務(wù)以及空閑任務(wù)和時(shí)間片任務(wù)。建立任務(wù)流程圖如圖6所示。
圖6 ?系統(tǒng)任務(wù)建立流程圖
3.1.2、網(wǎng)絡(luò)管理軟件設(shè)計(jì)
系統(tǒng)網(wǎng)絡(luò)協(xié)議棧采用uIP協(xié)議,相關(guān)硬件平臺(tái)初始化是STM32F417內(nèi)部以太網(wǎng)模塊的初始化和對(duì)DP83848PHY芯片的初始化設(shè)置,硬件初始化在BSP_Init()函數(shù)中調(diào)用,并嵌套一個(gè)NetInit_Config()用來初始化uIP協(xié)議棧、配置本機(jī)IP地址及端口號(hào)。
IP協(xié)議是簡(jiǎn)化的TCP/IP協(xié)議,主要包含IP、TCP、UDP、ICMP、ARP這些網(wǎng)絡(luò)層和傳輸層協(xié)議,應(yīng)用層協(xié)議涉及HTTP、Telnet、WEB等服務(wù)。uIP協(xié)議棧構(gòu)架如圖7所示,uIP協(xié)議與底層驅(qū)動(dòng)的接口函數(shù)為uip_input(),與上層應(yīng)用程序的函數(shù)為UIP_APPCALL()。在系統(tǒng)開始任務(wù)建立函數(shù)App_TaskStart()中增加了從網(wǎng)絡(luò)設(shè)備讀取一個(gè)IP數(shù)據(jù)包,返回?cái)?shù)據(jù)長(zhǎng)度;定時(shí)查詢TCP連接收發(fā)狀態(tài),ARP表更新,網(wǎng)絡(luò)接收完成傳遞信號(hào)量。具體代碼如下:
while(1)
{
uip_len=tapdev_read();
if(uip_len》0)OSSemPost(ETH_SEM);
eth_poll();
OSTimeDlyHMSM(0,0,0,10);
}
圖7 ?uIP協(xié)議棧接口架構(gòu)圖
M32F417內(nèi)部中斷實(shí)現(xiàn)。程序中設(shè)備作為服務(wù)器使用,設(shè)置本地IP為192.168.100.222,端口號(hào)為8011,網(wǎng)絡(luò)調(diào)試時(shí),PC機(jī)上使用TCP/UDP測(cè)試工具,設(shè)置PC機(jī)為客戶端,連接方式為TCP方式,網(wǎng)絡(luò)連接成功如圖8所示。
圖8 ?PC機(jī)客戶端連接設(shè)備服務(wù)器
3.2、GPRS模塊軟件設(shè)計(jì)
GPRS模塊主要功能,如圖3所示,主控芯片通過串口1與主設(shè)備通信,通信協(xié)議為自定義的串口協(xié)議,串口2通過AT指令控制GPRS收發(fā)器,AT指令具體實(shí)現(xiàn)開關(guān)機(jī),連網(wǎng),短信接收與發(fā)送等功能。GPRS模塊程序流程如圖9所示。
圖9 GPRS模塊軟件流程圖
3.3、無線協(xié)調(diào)器軟件設(shè)計(jì)
無線協(xié)調(diào)器的軟件包括ZigBee協(xié)議棧與客戶端程序兩部分,協(xié)調(diào)器上電后首先掃描信道,選擇一個(gè)合適的信道即合適的網(wǎng)絡(luò)標(biāo)識(shí)符,然后啟動(dòng)網(wǎng)絡(luò),允許傳感器設(shè)備連接。然后網(wǎng)關(guān)中的主設(shè)備通過串口與無線協(xié)調(diào)器連接,間接通過無線協(xié)調(diào)器與無線傳感器組連接。
ZigBee協(xié)議將2.4GHz的射頻頻段分為16個(gè)獨(dú)立的信道,每個(gè)設(shè)備都有一個(gè)默認(rèn)信道集,協(xié)調(diào)器掃描自己的默認(rèn)信道集并選擇一個(gè)噪聲最小的信道作為自己所建網(wǎng)絡(luò)的信道。程序流程如圖10所示。
圖10 協(xié)調(diào)器軟件流程圖
4、實(shí)驗(yàn)結(jié)果
將以上設(shè)計(jì)網(wǎng)關(guān)應(yīng)用于電流功率監(jiān)測(cè)平臺(tái),實(shí)驗(yàn)中監(jiān)測(cè)對(duì)象為電源的電流和電壓,最后要計(jì)算出電源的功耗,監(jiān)測(cè)模塊的主控芯片通過模數(shù)轉(zhuǎn)換通道對(duì)電流和電壓進(jìn)行采集,模數(shù)轉(zhuǎn)換即AD采集的對(duì)象一般是電壓值,所以對(duì)電源的輸出電流需要轉(zhuǎn)換為電壓,監(jiān)測(cè)模塊使用MAX472將電流轉(zhuǎn)換為電壓,轉(zhuǎn)換電流電路如圖11所示。
圖11 ?電流轉(zhuǎn)換電路
5、結(jié)束語
針對(duì)物聯(lián)網(wǎng)實(shí)際應(yīng)用設(shè)計(jì)出的嵌入式網(wǎng)關(guān),具有環(huán)境搭建簡(jiǎn)單容易,便于維護(hù),成本低等特點(diǎn),廣泛應(yīng)用于智能家居、溫室控制、機(jī)房設(shè)備監(jiān)控、環(huán)境監(jiān)測(cè)等物聯(lián)網(wǎng)應(yīng)用中。嵌入式網(wǎng)關(guān)的設(shè)計(jì)理念及模型在對(duì)各種物理量的采集傳輸中都可以發(fā)揮作用,傳輸媒介也可以根據(jù)環(huán)境和安全需求更換傳輸媒介,傳輸協(xié)議也能夠依據(jù)需求發(fā)展自定義設(shè)計(jì)嵌入。
評(píng)論
查看更多