系統關鍵技術分析 在路燈控制系統所使用的關鍵技術,主要包括ZigBee技術、嵌入式操作系統FreeRTOS和微波多普勒原理。
1.1 ZigBee技術Zigbee是基于IEEE802.15.4標準的低功耗個域網協議。IEEE802.15.4 是針對低速的無線個人區域網絡(low-rate wireless personal area network, LR-WPAN)而制定的標準[4]。該標準把能量消耗低、傳輸速率低、成本低作為目標,旨在為個人或者家庭范圍內的設備的低速互連提供統一標準。 IEEE 802.15.4標準定義的LR-WPAN網絡具有如下特點: - 提供20kbps、40kbps和250kbps三種不同的傳輸速率;
- 兩種網絡拓撲結構:星型、點對點;
- 兩種地址格式:16位、64位,64位地址是全球惟一的擴展地址;
- 采用載波多路偵聽技術(carrier sense multiple access with collision avoidance, CSMA-CA)避免沖突;
- 采用確認(ACK)機制以保證可靠傳輸。
而ZigBee協議規定的技術是一種短距離、低功耗的無線通信技術。其特點是距離短、復雜度低、自動組織、功耗低、數據速率低、成本低[6]。適合用于自動控制和遠程控制領域,可以嵌入各種設備。 ZigBee協議棧是在IEEE 802.15.4標準基礎上建立的,定義了協議的MAC和PHY層。ZigBee設備應該包括IEEE802.15.4(定義了RF射頻以及與相鄰設備之間通信)的PHY和MAC層,以及ZigBee堆棧層:網絡層(NWK)、應用層和安全服務提供層。 圖2.1 ZigBee協議棧結構[4] 1.1.1 物理層規范[4]ZigBee的物理層是基于IEEE 802.15.4標準的。IEEE802.15.4標準定義了兩個物理層:2.4GHz和868/915MHz的物理層。物理層主要任務如下: - 開啟和關閉無線收發信機;
- 能量檢測(ED);
- 鏈路質量指示(LQI);
- 空閑信道評估(CCA);
- 信道選擇;
- 數據發送和接收。
物理層提供了兩種服務:通過物理層數據服務接入點(PHY Data Server Acess Point,PD-SAP)提供物理層的數據服務;通過PLME的服務接入點(PLME Service Acess Point,PLME-SAP)提供物理層的管理服務[1]。如下圖: 圖2.2 物理層參考模型 IEEE802.15.4 物理層協議數據單元(PPDU)格式如下: 表2.1物理層協議數據單元[1] 引導序列由32位全0字段組成,用于收發器進行碼片或者符號的同步。SFD域由8位組成,表示引導序列結束,數據包開始傳輸,是8位二進制序列11100101。SFD與前導碼構成同步頭(SHR)。幀長度由7位組成,表示物理層的有效載荷PSDU的字節數,范圍是0到aMaxPHYPacketSize。幀長度域和1位的保留位構成了物理頭。PSDU域是變長的,是物理層要發送的數據包,是物理層的載荷。 1.1.2 MAC層規范ZigBee的MAC層同樣是基于IEEE 802.15.4標準的。MAC層為特定服務匯聚子層(SSCS)和PHY提供了接口[1]。IEEE802.15.4的MAC層使用PD-SAP和PLME-SAP接口。MAC層通過MAC公共部分子層(MCPS)的數據SAP(MCPS-SAP)提供MAC層數據服務;通過MLME-SAP提供管理服務[7]。MAC層內部MLME和MCPS之間存在一個隱藏接口,MLME可以通過它調用MAC數據服務。MLME還負責維護屬于MAC層的管理對象數據庫,該數據庫被稱為“MAC層的個域網信息庫”(PAN Information Base,PIB)。如下圖所示: 圖2.3 MAC層組件接口模型 MAC層的數據服務通過兩類服務原語MCPS-DATA和MCPS-PURGE實現的。而其管理功能通過使用15條服務原語來實現。 MAC層主要有四種類型的幀:信標幀、數據幀、確認幀以及MAC命令幀。幀的基本組成部分有:MAC頭、MAC有效載荷、MAC尾。MAC頭由幀的控制字段、序號字段和地址信息域組成;MAC有效載荷部分的長度與幀類型相關,確認幀的有效載荷長度為0;MAC尾是幀校驗序列(FCS)。 表2.2通用MAC幀結構[1] 1.1.3 網絡層規范[4]網絡層提供保證MAC層正確工作的能力并為應用層提供合適的服務接口。主要功能有: - 網絡和設備維護;
- 發送和接收;
- 路由功能;
- 信標發送時序;
- 廣播通信;
- MAC信標中的網絡層信息;
網絡層提供兩個服務實體:數據實體和管理實體。數據實體提供的服務允許同一網絡中兩個或多個節點之間傳輸數據;管理實體允許應用與協議棧之間交互,包括配置新節點、創建網絡、節點請求加入/離開網絡、尋址、近鄰發現、路由發現、接收控制等服務。 圖2.4 網絡層參考模型 1.1.4 應用層規范[4]ZigBee應用層包括應用支持子層(APS)ZigBee設備對象(ZDO)和廠商定義的應用對象。 應用支持子層(APS)提供了網絡層(NWK)和應用層 (APL)之間的接口,功能是通過ZDO和廠商定義的應用對象都可以使用的一組服務來實現。數據和管理實體分別由APSDE-SAP和APSME-SAP 提供。APSDE提供的數據傳輸服務在同一網絡的兩個或多個設備之間傳輸應用層PDU;APSME提供設備發現和綁定服務,并維護管理對象數據庫——APS信息庫(AIB)。 ZDO描述了一個基本的功能函數,這個功能在應用對象、設備配置文件和APS之間的提供了一個接口。它滿足所有在ZigBee協議棧中應用操作的一般需要。ZDO還有以下功能: - 初始化APS、網絡層和安全服務規范;
- 集合節點配置信息來確定和執行發現、安全管理、網絡管理和綁定管理;
1.2 嵌入式實時操作系統FreeRTOS在嵌入式領域中,嵌入式實時操作系統正得到越來越廣泛的應用。采用嵌入式實時操作系統(RTOS)可以更合理、更有效地利用CPU的資源,簡化應用軟件的設計,縮短系統開發時間,更好地保證系統的實時性和可靠性。FreeRTOS操作系統是一個完全免費的嵌入式操作系統,具有公開源碼、可移植、可裁減、多種調度策略等特點。包括的功能有:任務管理、信號量、消息隊列、時間管理、內存管理、記錄功能等。 FreeRTOS內核支持優先級調度算法,即根據重要程度,給每個任務賦予一個優先級,而處于就緒態的、優先級最高的任務總是先得到運行。同時,FreeRT0S允許在同一優先級中存在多個不同的系統任務。在優先級相同的情況下,同一優先級的任務采用輪換調度的方法共享CPU的使用時間。 用戶可根據需要設置FreeRTOS的內核為可剝奪型的內核或不可剝奪型的內核。為滿足系統實時性的要求,可設置FreeRTOS為可剝奪型的內核,這樣當高優先級任務就緒時系統就會強制低優先級任務讓出對CPU的使用權,而使就緒的高優先級任務運行;設置FreeRTOS為不可剝奪型的內核時,系統不能剝奪當前任務對CPU的使用權,就緒的高優先級任務只有任務主動讓出CPU之后才能運行,這樣提高了CPU的運行效率。 1.2.1 任務調度在嵌入式實時操作系統中,任務調度機制是一個重要的概念,也是核心的技術。在可剝奪型的內核中,高優先級任務一旦就緒就會在下一個時鐘節拍時迫使低優先級較任務讓出CPU的使用權,運行高優先級任務。FreeRTOS的系統任務的數量是無限制,同時支持優先級調度算法和輪換調度算法,它采用雙向的鏈表結構而不是采用輪詢任務就緒表的方法來進行任務調度。FreeRTOS任務鏈表結構如下: 圖2.5 任務調度 1.2.2 任務管理[3]多任務管理是操作系統的主要功能。FreeRTOS中的任務管理功能有創建任務、刪除任務、掛起任務、恢復任務、設定任務優先級、獲得任務相關信息等。FreeRTOS系統任務的創建使用xTaskCreate()函數。調用xTaskCreate()時,FreeRTOS會分配內存給任務。內存成功分配之后,系統會初始化任務控制塊中的任務名稱、堆棧深度和任務優先級,然后根據CPU堆棧的增長方向初始化任務控制塊的堆棧。接著,FreeRTOS把當前創建的任務加入到就緒任務鏈表,等待系統調度。 FreeRTOS系統任務的刪除分兩步完成。調用vTaskDelete()函數后,開始任務刪除的第一步:先從就緒任務鏈表和事件等待鏈表中刪除任務信息,然后把任務移動到任務刪除鏈表,當正在執行刪除的任務時,系統會進行一次任務調度,以切換任務。在系統空閑任務運行時,如果任務刪除鏈表中有需要刪除的任務存在,則開始刪除任務的第二步:釋放任務所使用的內存,并從任務刪除鏈表中移除任務,這樣任務就被徹底刪除了。 1.2.3 時間管理FreeRTOS中典型的時間管理函數是vTaskDelay()。此函數可以將任務延時一段特定的時間。系統存在一個時鐘記錄系統已運行時間。延時任務時,將延時時間與系統時鐘相加并存入任務信息中,然后根據延時將任務加入等待列表中。每過一個系統時鐘,系統查找等待列表,比較任務信息中的時鐘和系統時鐘,若相等則將任務移出等待列表,加入任務就緒列表,等待調度運行。 1.2.4 內存分配策略當任務、隊列和信號量創建的時候,會向系統申請一定的內存。FreeRTOS提供了兩種內存分配的策略,用戶可以根據實際需要選擇不同的內存分配策略。 第1種方法是,系統將內存簡單的按照任務所申請的大小分成若干塊,這樣就可以滿足任務的需求。這種做法簡單方便,執行時間可以確定,但是這樣做會使內存釋放后再分配很困難,內存不能得到有效的釋放,不能實現任務或隊列的刪除。 第2種方法是,使用鏈表來分配內存。系統為空閑的內存塊建立鏈表,并根據塊的大小進行排序。當任務申請內存時,系統查找鏈表,選出最小的能滿足任務需求的內存塊。若內存塊較大,則將內存塊一分為二,一個分配給任務,另一個作為新的內存塊插入到鏈表中。 1.3 微波多普勒原理微波是指頻率在300MHz~300GHz 范圍內,是無線電波中一個有限頻帶的簡稱,即波長在100cm~1mm范圍內的電磁波,是分米波、厘米波、毫米波和亞毫米波的統稱。其中包括甚高頻(VHF)、特高頻 (UHF)、超高頻(SHF)、極高頻(EHF)4個波段。微波具有直線(視距)傳播,抗干擾性強,頻帶寬等特點,廣泛用于各種無線通訊和目標探測的場合。微波波段中,波長在1~25cm的波段專門用于雷達(RADAR,Radio Detection And Ranging),其余部分用于電訊傳輸。 多普勒雷達是利用多普勒效應進行定位、測速、測距等工作的雷達。多普勒效應是當聲音、光和無線電波等振動源與觀測者以相對速度V相對運動時,觀測者所收到的振動頻率與振動源所發出的頻率有所不同[13]。多普勒效應的示意圖如下: 圖2.6多普勒效應 多普勒雷達測速的原理,是檢測發射出去的無線電波與遇到運動物體反射回來的無線電波之間的頻率變化和相位變化,根據頻率的變化計算出物體的速度,由發射波和回波信號的相位關系,判斷運動物體是朝著無線電波的發射方向還是其反方向移動的。設聲波或電磁波的波長為λ,頻率為f0,速度為c,運動物體的徑向速度為v,回波多普勒頻移為fd,則: 1.4 本章小結本章介紹了項目中所使用到的關鍵技術,講述了IEEE 802.15.4標準、ZigBee技術、嵌入式操作系統FreeRTOS的移植和微波多普勒原理。在項目中將使用無線通信技術實現各個路燈節點的通信,而在主控節點將使用FreeRTOS嵌入式操作系統對各節點的信息進行處理,并對各節點進行控制,各節點對車輛人流的檢測將使用微波多普勒原理來實現。
1
第三章 Zigbee智能路燈控制系統方案設計 Zigbee智能路燈控制系統方案設計本章主要根據路燈系統的功能需求,對系統進行的整體設計,介紹了整體設計方案以及所使用的關鍵器件的型號。 2.1 系統整體方案設計本節將介紹系統整體設計方案。系統包括一個主控節點和多個路燈節點,其中主控節點用于接收和處理路燈節點發送過來的信息以及向路燈節點發送控制信息,系統框圖如下: 圖3.1 系統結構框圖 2.1.1 主控節點功能主控節點的功能主要是對路燈節點的監控以及和上位機的通信。因此需要無線通信模塊和路燈節點進行通信,需要單片機來處理路燈節點發送過來的信息,同時單片機還需要具備和上位機通信的能力。主控節點系統框圖如下: 圖3.2 主控節點模塊圖 2.1.2 路燈節點功能路燈節點具有檢測當前交通狀況及光線強度的功能,同時還控制路燈的點亮和熄滅,還可以將當前檢測到的信息顯示出來。因此,路燈節點需要車輛人流的檢測模塊以及光感應模塊,一個主控芯片對采集的數據進行處理以及控制路燈的亮滅和信息的顯示,同時,主控芯片還具備無線通信的能力。路燈節點設計如下圖所示: 圖3.3 路燈節點模塊圖 2.2 系統關鍵器件選型本節介紹系統所示用的關鍵器件的型號,其中主控節點所使用的器件有英飛凌單片機XC167CI和無線收發器CC2420,路燈節點使用的器件主要是無線SOC芯片CC2430和微波模塊HB100。 2.2.1 英飛凌單片機XC167CIXC167CI英飛凌公司開發的基于C166SV2內核的16位單片機,也是目前廣泛使用的C166微控制器系列的全新衍生產品。它是英飛凌16位單片機CMOS微控制器系列的增強型產品,具有如下特性[15]: - 5級流水線高性能16位CPU和MAC單元;
- 高效的控制指令集;
- 智能的片上外設子系統;
- 16級優先級中斷系統;
- 片上調試支持;
- 多達103個具有獨立位尋址功能的I/O引腳;
XC167功能框圖如下: 圖3.4 XC167功能框圖[15] 本系統主要使用XC167的通用I/O功能用于模擬SPI總線與CC2420通信以及串口功能用于和PC通信。 2.2.2 無線收發器CC2420[4]CC2420是Chipcon As公司推出的首款符合2.4GHz IEEE802.15.4標準的射頻收發器。該器件包括眾多額外功能,是第一款適用于ZigBee產品的RF器件。使用此芯片組成的網線通信網絡,數據傳輸率高達250kbps,可以實現多對多的通信。芯片開發的短距離射頻傳輸系統成本低、功耗小,適于電池長期供電。具有硬件加密、安全可靠、組網靈活、抗毀性強等特點。 CC2420使用SPI總線與微控制器通信。微控制器向CC2420發送命令,然后可以向CC2420寫入數據或從其中讀出數據,實現無線收發信息的功能。 圖3.5 CC2420簡化功能圖[8] 2.2.3 無線SOC芯片CC2430CC2430由德洲儀器(Texax Instruments,TI)旗下的Chipcon公司設計生產,它是一款真正為IEEE 802.15.4和ZigBee而設計的SOC系統芯片。CC2430集成了高性能的無線收發器CC2420和增強型的工業級8051微處理器內核,提供32/64/128KB的Flash程序存儲器,8K的SRAM以及其它功能強大的特性。其主要特性有[4]: - 高性能低功耗的增強型8051內核;
- 適應2.4GHz符合IEEE 802.15.4標準的無線收發器;
- 電流消耗。ㄎ⑻幚砥鬟\行于32MHz時鐘,RX:27mA,TX:25mA);
- 掉電模式下僅0.9uA的電流消耗,可由外部中斷或實時時鐘(RTC)喚醒;
- 掛起模式下耗電低于0.6uA,可由外部中斷喚醒;
- 有8個8—14位AD轉換器;
- AES加密協處理器;
- 1個符合IEEE 802.15.4 MAC定時器;
- 支持硬件調試;
CC2430結構框圖如下: 圖3.6 CC2430結構框圖[9] 本項目中主要用到的模塊有I/O模塊,中斷模塊,ADC模塊,RF模塊。各模塊介紹如下: I/O:CC2430有21個數字輸入/輸出引腳,可以配置為通用的數字I/O或者是復用為外圍設備管腳與ADC、定時器或USART等相連。這些I/O口的使用可以通過一組配置寄存器完全由用戶軟件來設置。 中斷:CC2430的CPU有18個中斷源,每個中斷源有它自己的、位于一系列SFR中的中斷請求。 ADC:CC2430支持14位的ADC,包括1個參考電壓發生器、8個獨立可配置通道、電壓發生器和通過DMA模式把轉換結果寫入內存的控制器。 RF:CC2430無線通信的核心部分是CC2420射頻收發器。 2.2.4 微波模塊HB100[13]HB100多普勒微波傳感器是Agilis通信技術公司開發成功的多譜勒移動傳感模塊,內部由GAS FET介質諧振振動器(DRO)微波振蕩源(10.525GHz)、功率分配器、發射天線、接收天線、混頻器、檢波器等電路組成。 在HB100的輸出端(IF)會有三種類型的信號輸出: 當有物體在微波檢測信號的覆蓋范圍內移動時,在IF端有多普勒信號輸出,該信號為低頻信號,強度很弱,一般在毫伏級。由多普勒頻移公式 Fd = 2v/λ= 2vf/c 可知,當f=10.525GHz時,回波信號的多普勒頻率為 Fd=19.49v,其中v的單位為km/h。實際測試,HB100的輸出頻率為70Hz/m.s。低頻信號經過低通放大器選頻放大,即可得到目標物體移動信號。 傳感器模塊的內部電路以及周圍環境會產生一些噪聲?赡艿脑肼晛碓从须娫醇盁犭娫肼、振蕩器諧波混頻干擾、微帶雷達的固有干擾等。 IF輸出端會產生電壓為0.1V左右的直流信號,該信號的極性可以是正的也可以是負的。因此在IF信號輸出和低頻放大器之間采用交流耦合的方式進行連接,以濾除直流的干擾信號。 IF信號的輸出幅度與運動物體的大小、距離有關,輸出幅度與距離的平方近似成反比例關系。物體相對于傳感器模塊的徑向運動速度越快,IF的輸出信號頻率越高,而且基本滿足多普勒頻移公式。 利用多普勒原理,通過對回波信號進行混頻,檢波等信號處理得到多普勒頻移。由多普勒傳感器輸出的IF信號,其中的多普勒頻移信號需要做進一步的處理,才能夠實現對目標速度的估計,F在已有的多普勒信號的處理技術主要有頻率跟蹤法、計數法、快速傅里葉變換法、濾波器組法、頻譜分析法等方法[7]。本項目主要是檢測公路上車輛的有無和速度的范圍,對速度測量的精度以及噪聲的要求相對較低,要測量的頻率也比較低;而且裝置要求簡單、低成本,因此系統選用比較經濟實用的計數法進行運動目標速度的測量。 IF輸出的脈動信號是電壓值非常低且連續變化的模擬信號,該信號需要經過放大才能做進一步的處理。而且在放大的同時,必須對信號進行濾波,去掉高頻和甚低頻的干擾信號。經過放大和濾波后的經過放大處理后的信號與比較器的門限電平相比較,將幅值連續的模擬信號轉化成“0” 、“1” 信號,然后才能送到單片機進行計數處理。 2.3 本章小結本章中主要介紹了項目的整體設計方案,包括對主控節點和路燈節點的設計,給出了系統、主控節點以及路燈節點框架圖,同時還介紹了系統所使用的主要器件,包括主控節點的XC167CI和CC2420以及路燈節點的CC2430和HB100模塊,說明了各個器件的主要功能。
第三章 Zigbee智能路燈控制系統方案設計
第四章 路燈控制系統軟硬件設計 路燈控制系統軟硬件設計本章主要講述路燈系統的軟硬件系統的設計實現,包括主控節點和路燈節點的硬件電路以及軟件系統設計。 3.1 主控節點硬件電路設計根據上一章中設計的主控節點的功能框圖和器件的選型,主控節點使用CC2420和路燈節點通信,使用XC167CI從CC2420中讀取接收到的信息并進行處理然后發送給上位機,同時XC167CI可以接收上位機的命令并寫入到CC2420中發送給路燈節點。主控節點的電路設計如下: 圖4.1 XC167與CC2420連接圖 XC167CI和CC2420之間的通信是使用SPI總線進行的,此外,CC2420還有一些狀態引腳需要連接到XC167CI引腳上,供XC167CI查詢CC2420當前的狀態。XC167CI和PC的通信是使用串口進行的,串口是XC167CI內部集成的異步/同步串行接口ASC模塊。 3.2 路燈節點硬件電路設計根據路燈節點的功能框圖,路燈節點用到的器件有CC2430、HB100、光敏電阻等,其中CC2430是節點的主控芯片,HB100用于車輛人流的檢測,光敏電阻用于光線強度的檢測。 3.2.1 CC2430模塊電路CC2430模塊用于控制整個路燈節點系統,負責對外界數據的采集、和其他節點進行通信以及控制路燈的點亮和熄滅。與外設的連接的引腳主要有:電源引腳,復位引腳,在線調試支持引腳,用于接收微波模塊數據的P0_5引腳,用于模擬SPI與LCD通信的P1_0、P0_0、P0_2、P0_4和P0_6引腳,以及用于光感應模塊ADC的P0_7引腳。CC2430模塊實際應用電路圖如下: 圖4.2 CC2430應用電路 3.2.2 微波檢測電路由于HB100的輸出信號過于微弱,需要對信號進行放大,系統對HB100輸出的信號進行了三級放大,并對高頻和低頻進行濾波,只留下頻率合適的中頻信號,而且由于單片機只能處理數字信號,因此在放大信號之后添加了電壓比較電路,進行電壓比較,使最終輸入到單片機上數據成為數字信號。詳細電路設計如下圖所示: 圖4.3 微波模塊電路 3.2.3 光感應模塊光敏電阻器是利用半導體的光電效應制成的一種電阻值隨照射光的強弱而改變的電阻器;照射光強,其電阻值減小,照射光弱,則電阻值增大。系統使用CC2430的ADC模塊對光敏電阻的輸入值進行采樣,然后進行數據處理。模塊電路如下圖: 圖4.4 光感應電路 3.2.4 路燈控制路燈的控制使用CC2430的一個通用I/O引腳控制一個三極管的基級,從而實現控制路燈點亮和熄滅的控制。其電路圖如下: 圖4.5 路燈控制電路 3.2.5 信息顯示模塊信息顯示使用Nokia5110LCD,通過SPI總線與CC2430模塊相連,主要用于顯示節點當前信息,包括節點編號、光線強弱等。詳細電路如下: 圖4.6 LCD連接圖 3.2.6 其他電路設計除了以上各模塊電路,路燈節點還需其他電路支持,有電源模塊,SoCDebuger。 電源模塊如下圖,圖中采用LM1117-3.3和LM1117-5分別實現從外輸入電壓到3.3V和5V的板上電壓輸出。同時有兩個LED燈顯示電源狀態。 圖4.7 電源模塊電路 SoCDebuger模塊如下圖,此模塊用于CC2430模塊的在線仿真和程序下載。 圖4.8 SoCDebuger模塊 3.3 主控節點軟件系統設計主控節點主要用于和上位機通信、接收節點發送過來的信息以及發送對路燈的控制信息。主控節點使用XC167CI微控制器和CC2420無線收發器,在XC167CI上運行嵌入式操作系統FreeRTOS對系統進行任務、時間和內存的管理。 3.3.1 軟件系統整體流程主控節點的軟件系統采用FreeRTOS嵌入式操作系統。在操作系統開始運行之前,需要對硬件和軟件進行初始化,流程如下: 圖4.9 主控節點軟件系統整體流程圖 FreeRTOS操作系統開始運行前,首先初始化單片機,完成對各引腳的定義,然后對CC2420進行初始化配置,創建系統任務CC2420_Send、CC2420_Receive、UART_Send,分別用于發送無線信息、接收無線信息、向PC發送信息。系統開始運行后,由操作系統進行多任務管理,根據各個任務的優先級進行任務切換。此外,系統中存在串口中斷用于接收PC的控制信息。 3.3.2 FreeRTOS內核運行過程[14]在嵌入式操作系統中,必須依賴硬件定時器產生固定時間間隔的時鐘中斷以產生系統時鐘節拍,時鐘節拍是系統心臟的脈動。系統時鐘節拍使得內核可以以時鐘節拍為單位延時任務,以及當任務等待某個事件時,提供等待超時的依據。 在系統開始運行前需要對硬件進行初始化,之后使用xTaskCreate函數建立系統任務。創建任務時系統為任務分配一塊內存,用來保存CPU寄存器和任務程序的地址,然后將堆棧的地址存入任務控制塊,這樣任務程序代碼、任務堆棧和任務控制塊就聯系成一個整體了。操作系統內核可以通過任務控制塊找到任務堆棧,從任務堆棧中取得任務代碼地址。其基本的結構如下圖所示: 圖4.10 任務的內存結構[2] 任務建立完成之后調用vTaskStartScheduler函數開始系統的運行。vTaskStartScheduler函數會首先建立空閑任務,然后對系統一些變量進行初始化。之后調用xPortStartScheduler函數,開始系統任務的調度,系統開始運行。 系統運行過程中,任務的切換有兩種情況:一種是任務級切換,另一種是中斷級切換。任務級切換是指當前任務運行完畢,即切換到下一個準備就緒的最高優先級任務。任務級切換的大致流程如下: - 當前任務完成,調用vTaskDelay函數進行延時;
- vTaskDelay函數將當前任務移出就緒隊列,并修改當前任務的參數;
- 最終調用vPortYield函數將任務的各種參數和寄存器壓入堆棧,函數中再調用vTaskSwitchContext函數進行任務調度, 選出高優先級就緒任務,vPortYield函數從新任務的堆棧中恢復寄存器;
- 運行高優先級任務。
任務級切換過程如下圖所示: 圖4.11 任務級切換過程 中斷級切換是指在中斷處理程序運行過程中,有一些任務進入就緒狀態,因而需要重新進行任務調度,找到最高優先級任務并進行切換。中斷處理函數的結構如下: - 調用函數vTaskSuspendAll, 掛起所有任務;
- 用戶中斷處理代碼;
- 調用函數xTaskResumeAll退出中斷處理。
函數xTaskResumeAll過程如下圖所示: 圖4.12 函數xTaskResumeAll過程 3.3.3 FreeTRTOS移植[14]操作系統的移植,就是使一個操作系統內核能在某個微處理器或微控制器上運行。操作系統的移植需要滿足以下條件: - 目標平臺支持堆棧操作,有CPU內部寄存器入棧、出棧指令;
- 使用的C編譯器支持內嵌匯編或者C語言可擴展連接匯編模塊,使得開關系統中斷能在C語言中實現,從而可以通過使用C調用進入和退出臨界區代碼;
- 目標平臺的C編譯器可以產生可重入代碼;
- 目標平臺必須支持硬件定時中斷。
移植需要使用C和匯編語言寫一些與處理器相關代碼,這是因為嵌入式操作系統在處理CPU內部寄存器時只能通過匯編語言來實現。FreeRTOS在XC167上的移植大致由3個文件實現:一個.h文件定義編譯器相關的數據類型和中斷處理的宏定義;一個.c文件實現任務的堆棧初始化的請求;一個.asm匯編文件實現具體的任務切換、系統心跳的管理。 PORTMACRO.H文件包括數據類型的定義,堆棧單位定義,堆棧增長方向定義,臨界段代碼的聲明,開關中斷的宏定義以及進行任務切換的宏定義等。 PORT.C文件主要包含任務堆棧初始化函數pxPortInitialiseStack、進入臨界段的函數portEXIT_CRITICAL和退出臨界段的函數portENTER_CRITICAL。 PORTEXT.ASM文件是對處理器的寄存器進行操作,所以必須使用匯編語言來編寫,主要包含3個子函數: - 系統啟動函數xPortStartScheduler
vTaskStartScheduler函數通過調用xPortStartScheduler函數來使系統開始運行。其功能是:對系統節拍定時器、臨界段計數器usCriticalNesting進行初始化;從就緒表中選出優先級最高的任務,將任務的堆棧指針裝載到SP中,并強制中斷返回。這樣就緒的最高優先級任務就如同從中斷中返回到運行態一樣,系統開始運行。 - 任務級切換函數vPortYield
- 時鐘節拍服務函數vTickISR,程序流程如下:
圖4.13 函數vTickISR的流程圖 - 保存當前CPU寄存器的值到當前最高優先級的任務堆棧中;
- 先調用函數vTaskIncrementTick進行任務時間管理,使延時的任務進入就緒或者任務的等待時間-1;
- 再調用函數vTaskSwitchContext選出已就緒的最高優先級任務;
- 從最高優先級的堆棧中恢復CPU寄存器,完成任務切換;
- 運行高優先級任務。
操作系統核心功能就是完成任務的切換,而任務的切換需要用到堆棧。堆棧分為兩種:系統堆棧和用戶堆棧。在XC167CI32F微控制器中,發生函數調用時,使用系統堆棧來保存調用函數的PSW(程序狀態字),CSP(堆棧段指針)和IP(指令指針)。指針SP用于指示當前系統堆棧的棧頂。用戶堆棧用于保存任務被打斷時的微控制器狀態,這些狀態包含系統堆棧的信息以及R1~R15、CP、DPP3、DPP2、DPP0、MDC、MDH、MDL、PSW.MULIP等寄存器的值。用戶堆棧由(DPP1:R0)來指示。 任務切換是將當前任務的運行狀態保存到任務堆棧,而從當前就緒的最高優先級任務的任務堆棧中恢復系統堆棧以及對應的寄存器,然后進行中斷返回。當前任務的狀態存在于寄存器R1~R15,CP,DPP3,DPP2,DPP0,MDC,MDH,MDL,PSW.MULIP,PSW,CSP,IP寄存器中;其中用戶堆棧的頁指針保存在DPP1中,而頁偏移指針保存在R0中。任務切換時XC167CI的堆棧操作[2]示意圖如下圖所示: 圖4.14 任務切換時的堆棧操作示意圖 在進行任務切換時,首先將當前運行的任務的各個狀態寄存器以及系統堆棧的內容壓入到用戶堆棧中,然后改變用戶堆棧指針,使其指向將要運行的任務的用戶堆棧,再從用戶堆棧中恢復各個寄存器的狀態以及系統堆棧中PSW、CSP、IP的內容,之后進行中斷返回,這樣就完成了任務的切換。 3.4 Zigbee路燈節點無線通信設計根據路燈節點的功能,路燈節點的軟件系統劃分為以下幾個模塊:無線通信模塊、信息顯示模塊、光感應模塊、車輛人流檢測模塊,如下圖所示: 圖4.15路燈節點簡化模塊圖 在路燈節點軟件系統中,接收無線信息使用中斷方式,而其他模塊的使用輪詢的方式,詳細邏輯設計如下圖所示。 圖4.16路燈節點軟件系統邏輯 在系統開始上電之后,開始硬件的初始化,之后開始循環檢測各個模塊采集到的數據,并對數據進行處理,設置相應的標志位。在系統的最后,檢測系統當前模式,處于自主控制模式時,系統根據當前系統的信息點亮或熄滅路燈;處于PC控制模式時,若需要點亮路燈則向PC控制端發送請求信息,否則結束循環,進入下一次輪詢。 對于無線信息的接收,系統采用中斷的方式,并在中斷中做信息處理,中斷過程如下圖: 圖4.17中斷接收信息 系統發送或接收信息之后都會觸發中斷。對于發送中斷,將閃爍LED燈提醒用戶。而發生接收中斷時,首先將信息讀出,然后如果CRC正確,則進行地址識別,若正確則根據接收到的信息修改系統信息,否則中斷結束。 3.5 本章小結本章詳細介紹了主控節點和路燈節點的軟硬件系統的設計,給出了具體的硬件電路設計,同時對軟件系統的程序流程進行了詳細的分析。在主控節點,使用微控制器XC167CI和無線收發器CC2420組成了硬件系統,使用FreeRTOS對系統的多任務進行管理,完成了軟件系統的設計。在路燈節點,使用CC2430和HB100等器件設計了硬件電路,同時分析完成了軟件系統的程序流程.
第四章 路燈控制系統軟硬件設計
第五章 系統軟硬件綜合調試 系統軟硬件綜合調試在完成了軟件和硬件系統的設計之后,本章主要講述軟硬件系統的綜合調試過程及結果。 4.1 軟件開發環境介紹主控節點的單片機XC167CI的開發環境是Keil uVision3以及DAvE。Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個功能強大的仿真調試器等在內的完整開發方案,通過一個集成開發環境(uVision)將這些部分組合在一起。DAvE包含基于DAVE™Apps的自動代碼生成器、免費GNU編譯器、免費調試器以及Flash加載器等。DAvE主要用于自動生成XC167CI的配置代碼,方便工程的創建。DAvE軟件視圖如下: 圖5.1 DAvE軟件 我們只需要完成各個模塊參數的設置,單片機XC167CI的初始化配置代碼就可由DAvE自動生成。在配置代碼生成之后,使用Keil uVision3開始應用開發。 安裝DAS后,可以使用Keil uVision3對XC167CI進行在線調試,支持斷點設置和變量寄存器的讀取。 路燈節點的芯片CC2430的集成開發環境為IAR Embedded Wordbench for MCS-51。IAR Embedded Workbench是一個高效的C/C++編譯器,也是多種8位、16位、32位的微控制器的調試工具。 圖5.2 IAR軟件 IAR Embedded Workbench為CC2430提供了在線調試的功能,同樣允許在程序的運行過程中設置斷點,并且可以在斷點處讀取芯片中各個變量及寄存器的值。 4.2 Zigbee路燈節點調試路燈節點的主要功能有無線通信、車輛人流檢測、光感應、信息顯示。 無線通信功能的測試使用兩個節點,節點間相互發送信息,在IAR Embedded Workbench中設置斷點并讀取數據,對數據加以驗證。經驗證,路燈節點無線通信功能正常,通信距離達到50m,能滿足系統對無線通信功能的需求。 車輛人流的檢測使用HB100模塊,主要檢查多普勒模塊能否正確接收回波信號并輸出多普勒信號,經放大調整能否得到正確的數字信號。通過測試模塊輸出引腳的波形圖,可以知道模塊是否正常工作。經測試,模塊輸出的波形圖和輸入到CC2430引腳的波形圖均正確無誤,對車輛人流的檢測距離達到15m,可以滿足系統的需求。 光感應模塊是根據光敏電阻的工作原理設計的,然后使用CC2430芯片的ADC功能讀出電壓。光敏電阻和一個普通電阻串聯組成了電路,通過測試光敏電阻兩端的電壓即可知道模塊是否正常工作。經測試,當光照強度小于100Lux時,通過CC2430的ADC轉換之后可以判斷當前光照不足,此模塊正常工作。 信息顯示模塊使用Nokia5110LCD,通過SPI總線和CC2430通信。CC2430控制LCD的顯示信息。經測試,模塊可以顯示路燈節點編號和當前光照強度,正常工作,能滿足節點信息顯示功能。 各模塊組合實物圖如下所示,將根據功能編寫的程序經過IAR Embedded Workbench編譯下載到CC2430中之后,經過調試,路燈節點正常工作。至此,路燈節點的設計完成。 圖5.3 路燈節點模塊組合圖 圖5.4 路燈節點整體實物圖 4.3 主控節點功能調試主控節點的功能包括無線通信、串口通信。無線通信部分是使用CC2420芯片。芯片使用SPI總線和單片機XC167CI通信,XC167CI可以從CC2420中讀取FIFO和配置寄存器的內容。在初始化配置CC2420時,可以通過XC167CI的在線調試功能讀出寫入CC2420的數據,以驗證XC167CI和CC2420的通信是否正確。驗證CC2420的通信功能時,使用一個路燈節點不斷發送信息,用XC167CI的在線調試功能讀取CC2420的接收FIFO,驗證模塊信息接收是否正確;用XC168CI控制CC2420不斷發送信息,使用路燈節點接收信息,在路燈節點中對接收到的信息進行驗證,可以判斷模塊信息發送是否正常。經過一系列的調試驗證,模塊工作正常,能滿足系統接收發送信息的功能要求。 串口通信功能使用單片機XC167CI的片上異步/同步串行接口模塊ASC0。模塊支持全雙工異步通信和半雙工同步通信,系統使用全雙工異步通信方式和PC進行通信。模塊的測試使用PC通過串口向XC167CI發送信息,XC167CI接收到信息后經處理后在回發給PC。經驗證,模塊工作正常,PC接受的數據如下所示,可以使用。 圖5.5 主控節點收到的數據 系統的整體組合如下圖,使用Keil uVision3將編寫的程序編譯下載到XC167CI中之后,再經過調試,系統正常工作,滿足設計時的功能需求。 圖5.6 主控節點整體實物圖 4.4 系統聯合調試一個完整的路燈控制系統模型由3個路燈節點和1個PC控制端組成。系統網絡通信圖如下所示,PC控制端用于接收路燈節點發送的路燈信息和發送對路燈的控制信息。路燈節點對路燈周圍的環境數據進行采樣之后根據需要點亮或熄滅路燈,并將信息發送給相鄰路燈節點和主控節點。 圖5.7 系統調試通信圖 針對系統的功能,設計調試方案流程,如下圖所示。首先當系統開始運行時,路燈節點不斷向PC控制端發送路燈信息,PC控制端負責將信息顯示在PC上,以供監測路燈的狀況。由于路燈同時也在向相鄰節點發送信息,可以驗證路燈節點之間的通信是否正確。最后使用PC控制端向各個節點發送信息,通過觀察各個節點的狀態可以驗證PC控制端的功能是否正常。 圖5.8 系統整體調試流程圖 將系統整體組合,經過以上流程的測試驗證,各個節點的功能模塊正常工作,節點間的通信距離達到50m,每個節點對車輛人流的檢測達到15m,對光線的檢測是100Lux,各項功能滿足系統對路燈節點的要求;主控節點工作正常,能夠與各個節點進行通信,可以通過串口接收路燈節點的信息以及設置路燈節點的狀態,各項功能滿足系統的設計要求。至此,智能路燈控制系統設計完成。 4.5 本章小結本章主要講述了軟硬件系統的調試以及系統的整體調試。經過對各個系統模塊的調試驗證,以及對系統的整體調試測試,同時給出了測試結果,驗證了系統各個功能模塊正常工作,滿足系統的設計要求.
第五章 系統軟硬件綜合調試
第六章 結束語 結束語本次論文工作主要完成了智能路燈控制系統的設計。在系統的設計過程中,學習使用了無線通信、ADC、SPI總線、信號放大等技術,并且完成了嵌入式操作系統FreeRTOS在XC167上的移植。 在本次論文工作中,設計了路燈系統的主控節點和路燈節點的電路圖。主控節點使用XC167CI和CC2420等器件,設計實現了CC2420和XC167CI的通信電路,軟件方面移植了FreeRTOS到XC167CI上對系統的多任務進行管理。路燈節點主要使用了CC2430、HB100和LCD等器件,完成了CC2430與外設的連接電路以及HB100、LCD、光敏電阻等器件的驅動電路,軟件方面實現了各個模塊的數據采集和處理。 論文工作基本完成了路燈智能控制功能,但是仍有一些問題需要解決,如節點之間的組網問題,節點之間的地址識別使用軟件方式,缺乏上位機操作軟件等。在接下來的工作中,將努力完善系統,對系統不合理不完善之處進行修改。 在系統的實現過程中,遇到了很多問題,主要是自己對模擬電路知識學習的不夠,例如信號的放大電路,對于一些原理只是限于書本理論,不能很好的應用于實踐中,需要多學習在實踐中使用理論知識。
完整的Word格式文檔51黑下載地址:
基于zigbee的智能路燈控制系統.doc
(2.96 MB, 下載次數: 112)
2018-5-9 21:47 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|