基于TI Z-STACK的智能小車調(diào)度系統(tǒng)設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:針對(duì)高職院校物聯(lián)網(wǎng)應(yīng)用技術(shù)專業(yè)實(shí)訓(xùn)問題,基于MCS-51及CC2430單片機(jī)、紅外及超聲波傳感器,設(shè)計(jì)了一套基于TI Z-STACK協(xié)議棧的智能小車調(diào)度系統(tǒng)。分析了無線網(wǎng)的組建流程及軟件實(shí)現(xiàn)方法。
關(guān)鍵詞:Z-STACK協(xié)議棧;智能小車;物聯(lián)網(wǎng)實(shí)訓(xùn);CC2430
無線傳感器網(wǎng)絡(luò)是高職高專物聯(lián)網(wǎng)應(yīng)用技術(shù)專業(yè)課程體系中的核心課程之一。目前,各院校的無線傳感器網(wǎng)絡(luò)課程實(shí)驗(yàn)實(shí)訓(xùn)平臺(tái)多以51內(nèi)核的CC2430為主,如何快速從51單片機(jī)轉(zhuǎn)型到掌握CC2430是專業(yè)實(shí)訓(xùn)平臺(tái)需解決的核心問題。為此,設(shè)計(jì)了本套基于單片機(jī)及TI Z-STACK協(xié)議棧的智能小車調(diào)度系統(tǒng)。
1 系統(tǒng)組成及功能
本系統(tǒng)由模擬通信指揮車(Coordinator)、探路車(Sensor Endpoint)、架橋車和運(yùn)輸車(Endpoint)及沙盤等構(gòu)成,在圖1所示的模擬調(diào)度環(huán)境運(yùn)行。由探路車先行獲取路面信息,發(fā)送給通信指揮車,由通信指揮車調(diào)度其他車輛行駛。探路車若進(jìn)入架橋區(qū),則向通信指揮車報(bào)告路面遇阻信息,然后由通信指揮車下發(fā)指令,讓運(yùn)輸車停車,讓架橋車趕赴架橋區(qū)架橋。待橋面架好后,探路車再次向通信指揮車報(bào)告路面恢復(fù)信息,由后者下發(fā)指令,調(diào)度探路車、運(yùn)輸車?yán)^續(xù)行駛,最終到達(dá)指定泊車區(qū)。
2 硬件電路設(shè)計(jì)
通信指揮車、架橋車、運(yùn)輸車的硬件電路包括51單片機(jī)控制模塊、紅外傳感器模塊、L298N電機(jī)驅(qū)動(dòng)模塊及CC2430通信模塊,探路車還包括超聲波傳感器模塊,如圖2所示。其中,紅外傳感器模塊主要用于巡線;超聲波傳感器用于探測(cè)架橋區(qū)的斷裂路面;L298N電機(jī)驅(qū)動(dòng)模塊用于驅(qū)動(dòng)小車電機(jī);51單片機(jī)控制模塊用于小車巡線控制,并與CC2430通信模塊通過串口方式進(jìn)行通信。CC2430通信模塊是調(diào)度系統(tǒng)的核心,用于完成無線通信網(wǎng)絡(luò)組建和數(shù)據(jù)傳輸功能。由于CC2430和51單片機(jī)控制模塊分別工作于3.3 V和5 V邏輯電平,故在進(jìn)行串口通信時(shí)需進(jìn)行電平轉(zhuǎn)換。本系統(tǒng)采用在51單片機(jī)的TX和CC2430的RX引腳間接100 Ω電阻的方案保證了二者通信正常運(yùn)行。
3 軟件設(shè)計(jì)
3.1 基于Z-STACK協(xié)議棧的無線網(wǎng)絡(luò)組建
3.1.1 Z-STACK無線網(wǎng)絡(luò)組建的基本流程
Z-STACK是TI公司推出的符合ZigBee2006規(guī)范,定義了完全構(gòu)建在應(yīng)用層上的操作系統(tǒng)抽象層(Operation System Abstraction Layer,OSAL層)來隔離Z-STACK協(xié)議棧和特定硬件系統(tǒng),采用輪詢及優(yōu)先級(jí)控制方式實(shí)現(xiàn)任務(wù)調(diào)度。在進(jìn)入應(yīng)用層小車調(diào)度任務(wù)(Car_Dispatch)處理之前,需首先進(jìn)行無線網(wǎng)絡(luò)的組建。本系統(tǒng)采用星形網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),由通信指揮車(協(xié)凋器)負(fù)責(zé)網(wǎng)絡(luò)的發(fā)起。在Z-STACK(基于ZigBee2006)中,無線網(wǎng)絡(luò)組建的基本流程為:
main()→osal_init_system()→osalInitTasks()→ZDApp_Init(taskID++)→ZDOInitDevice(0)→ZDApp_NetworkInit(extendedDelay)→osal_set_event(ZDAppTaskID,ZDO_NETWORK_INIT)
通過tasksEvents[ZDAppTaskID] |=ZDO_NETWORK_INIT向ZDAppTaskID任務(wù)中添加ZDO_NETWORK_INIT事件(消息),進(jìn)行網(wǎng)絡(luò)初始化,接下來在ZDApp_event_loop中處理ZDO_NETWORK_INIT事件,其過程為:
ZDApp_event_loop→ZDO_StartDevice
在該函數(shù)中,協(xié)調(diào)器將通過NLME_NetworkFor-mationReques發(fā)起網(wǎng)絡(luò),執(zhí)行回調(diào)函數(shù)ZDO_NetworkFormationConfirmCB(),向ZDAppTask ID任務(wù)發(fā)ZDO_NETWORK_START消息,然后在ZDApp_event_loop中通過osal_set_event(ZDAppTaskID,ZDO_STATE_CHANGE_EVT)向應(yīng)用層發(fā)ZDO_ STATE_CHANGE_EVT消息,應(yīng)用層的小車調(diào)度任務(wù)處理函數(shù)根據(jù)ZDO_STATE_CHANGE_EVT判斷無線網(wǎng)的狀態(tài),并確定探路車、運(yùn)輸車的注冊(cè)情況;而路由器和終端節(jié)點(diǎn)將通過NLME_NetworkDiscoveryRequest發(fā)現(xiàn)網(wǎng)絡(luò),并執(zhí)行回調(diào)函數(shù)ZDO_NetworkDiscoveryConfirmCB(),加入?yún)f(xié)調(diào)器組建的無線網(wǎng)絡(luò)。
3.1.2 網(wǎng)絡(luò)拓?fù)渑c數(shù)據(jù)幀格式
本系統(tǒng)采用星型網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),通信指揮車負(fù)責(zé)系統(tǒng)的調(diào)度。無線網(wǎng)絡(luò)上下行鏈路以及各小車的車載CC2430模塊與51單片機(jī)模塊通信的數(shù)據(jù)幀格式如圖3所示。
以探路車為例,它與通信指揮車通信的信息流向如圖4所示。圖中①為Endpoint向Sink注冊(cè);②為51單片機(jī)利用傳感器采集路面信息,通過串口發(fā)送到Endpoint;③為Endpoint通過RF方式將數(shù)據(jù)傳輸?shù)絊ink;④為Sink從收到的數(shù)據(jù)中提取信息,分析出路面狀態(tài),然后向Endpoi nt下發(fā)控制指令;⑤為Endpoint從收到的數(shù)據(jù)控制指令后進(jìn)行處理,然后通過串口向51單片機(jī)下發(fā)控制指令;⑥為循環(huán)執(zhí)行①~⑤。
3.2 CC2430程序買現(xiàn)
從圖4可知,CC2430通信模塊的主要功能是完成無線數(shù)據(jù)傳輸和處理串口事件。在處理串口事件上,需首先注冊(cè)串口,然后編寫串口處理函數(shù)。串口波特率設(shè)置為57 600波特,以滿足使用11.059 2 MHz晶振的單片機(jī)模塊與CC2430通信模塊通信。串口注冊(cè)由函數(shù)SPIMgr_Regis terTaskID(Car_Dispatch_TaskID)實(shí)現(xiàn)。串口接收處理函數(shù)在協(xié)議棧MT層SPIMgr.c中,由uartConfig.callBackFunc=SPIMgr_ProcessZTool Data指明串口接收回調(diào)函數(shù)。為能接收自定義格式的串口數(shù)據(jù),需修改協(xié)議棧自帶的SPIMgr_ProcessZToolData函數(shù),包括在SPIMgr.h中定義圖3中SOP(#define SOP1_VALUE 0x2A),F(xiàn)CS(#defineEND 0x23),在SPIMgr.c中重構(gòu)數(shù)據(jù)格式,向APP層Car_Dispatch應(yīng)用程序發(fā)送CMD_ SERIAL_MSG消息等。根據(jù)圖3可知,Endpoint上行傳輸需在第6個(gè)字節(jié)發(fā)送數(shù)據(jù)長度LEN-Token,因此在串口數(shù)據(jù)重構(gòu)中需添加SPI_Msg->msg[5]=LEN_Token,然后在Car_Dispatch應(yīng)用程序中的SYS_EVENT_MSG消息處理函數(shù)下面,加入處理串口消息代碼:
通信指揮車(Sink)在收到Endpoint發(fā)來的無線網(wǎng)信息后觸發(fā)AF_INCOMING_MSG_CMD事件,然后執(zhí)行Car_Dispatch_MessageMSGCB(MSGpkt)回調(diào)函數(shù),首先判斷信息類型(探路車、架橋車還足運(yùn)輸車發(fā)送的),然后進(jìn)行分析和下發(fā)指令(例如若是探路車發(fā)來路面遇阻信息,則按圖3向架橋車發(fā)送指令0x2A0x00 0x00 0x6F 0x79 0x02 0x01 0xFF 0x23,啟動(dòng)架橋)。
3.3 51單片機(jī)程序?qū)崿F(xiàn)
51單片機(jī)模塊主要用于小車巡線控制及串口通信。以架橋車為例,工作流程如圖5所示。串口設(shè)置為接收中斷模式,全局變量USART_Re ce_CMD用于控制小車的運(yùn)行狀態(tài),當(dāng)通信指揮車下發(fā)指令后,車載CC2430模塊接收數(shù)據(jù)并進(jìn)行解析,通過串口向51單片機(jī)發(fā)送指令,51單片機(jī)在串口接收中斷函數(shù)中修改USART_Rece_CMD的值,進(jìn)而改變小車的運(yùn)行狀態(tài)。
4 結(jié)語
本系統(tǒng)以51單片機(jī)為小車控制平臺(tái),以CC2430為通信平臺(tái),通過Z-STACK實(shí)現(xiàn)無線網(wǎng)絡(luò)組建,并以串口通信為紐帶,實(shí)現(xiàn)51單片機(jī)和CC2430的通信,由此實(shí)現(xiàn)了簡(jiǎn)易的小車調(diào)度。本系統(tǒng)還可進(jìn)行進(jìn)一步擴(kuò)展,例如開發(fā)上位機(jī)應(yīng)用程序?qū)f(xié)調(diào)器進(jìn)行控制,可實(shí)現(xiàn)人機(jī)交互。本系統(tǒng)綜合運(yùn)用了單片機(jī)、無線傳感器網(wǎng)絡(luò)及傳感器的知識(shí),可應(yīng)用于物聯(lián)網(wǎng)應(yīng)用技術(shù)的專業(yè)實(shí)訓(xùn)。