<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 一款基于ZigBee的智能路燈控制系統(tǒng)設(shè)計(jì)

          一款基于ZigBee的智能路燈控制系統(tǒng)設(shè)計(jì)

          作者: 時(shí)間:2014-04-10 來源:網(wǎng)絡(luò) 收藏

          2.3.3 LED路燈控制模塊

          本文引用地址:http://www.ex-cimer.com/article/236359.htm

          LED 路燈控制電路如圖7 所示,路燈由兩部分控制。當(dāng)定時(shí)時(shí)間到時(shí)開啟路燈,開啟模式為全亮;進(jìn)入雷達(dá)檢測(cè)模式后,有移動(dòng)物體出現(xiàn)在檢測(cè)范圍內(nèi),開啟全亮模式;兩種控制用與門連接,有一個(gè)輸出為低電平就開啟路燈。沒有移動(dòng)物體在雷達(dá)檢測(cè)范圍之內(nèi)時(shí)路燈處于半亮模式,接入的電壓為全亮模式的一半用。為了使其控制端間互不影響,在各控制末端加入光電耦合器進(jìn)行隔離。

           

           

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

          系統(tǒng)上電后進(jìn)行初始化,檢測(cè)系統(tǒng)是否正常工作,如果正常則按照路燈控制界面進(jìn)行狀態(tài)檢測(cè)并對(duì)路燈進(jìn)行輸出控制,使路燈按照既定程序?qū)崿F(xiàn)開/關(guān)狀態(tài)。

          主機(jī)系統(tǒng)顯示相應(yīng)的控制信息;協(xié)調(diào)器不斷檢測(cè)主機(jī)數(shù)據(jù)輸出口狀態(tài)判斷發(fā)送數(shù)據(jù)與否;終端等待協(xié)調(diào)器的數(shù)據(jù)進(jìn)行。系統(tǒng)軟件設(shè)計(jì)主要包括主機(jī)軟件設(shè)計(jì)、協(xié)調(diào)器軟件設(shè)計(jì)、路由器和終端軟件設(shè)計(jì)等三大部分。其中在協(xié)調(diào)器軟件設(shè)計(jì)、路由器和終端軟件設(shè)計(jì)上協(xié)議棧尤為重要,不同廠家出品的不同產(chǎn)品有不同協(xié)議棧。本文使用的芯片為TI公司生產(chǎn)的芯片,使用的協(xié)議棧是由TI公司出品的Z-Stack協(xié)議棧。

          3.1 主機(jī)系統(tǒng)軟件設(shè)計(jì)

          根據(jù)智能路燈系統(tǒng)實(shí)現(xiàn)功能的需要,主機(jī)系統(tǒng)軟件劃分為以下幾個(gè)部分:監(jiān)控主程序、日歷時(shí)鐘子程序、LCD顯示子程序、鍵盤掃描子程序、光線明暗檢測(cè)子程序。監(jiān)控主程序通過對(duì)時(shí)間、鍵盤、光線情況的循環(huán)判斷,決定是否執(zhí)行相應(yīng)的功能程序。主機(jī)軟件設(shè)計(jì)流程圖如圖8所示。主機(jī)根據(jù)時(shí)間與外界光線狀態(tài)發(fā)出控制命令如表1所示。

           

           

           

           

          3.2 協(xié)調(diào)器系統(tǒng)軟件設(shè)計(jì)

          根據(jù)協(xié)議棧對(duì)協(xié)調(diào)器系統(tǒng)進(jìn)行軟件編程。實(shí)現(xiàn)此項(xiàng)目要求只需修改協(xié)議棧的應(yīng)用層和硬件層。應(yīng)用層執(zhí)行查詢?nèi)蝿?wù)工作,修改硬件層使整個(gè)系統(tǒng)與所擴(kuò)展的硬件匹配。

          3.2.1 硬件層的修改

          定義協(xié)調(diào)器的P2.0、P2.1為數(shù)據(jù)的輸入端口。協(xié)調(diào)器上有顯示故障信息的12864顯示模塊,首先建立一個(gè)lcd.h 文件,在內(nèi)部定義所應(yīng)用的管腳定義及相應(yīng)的宏定義。之后按照12864 的時(shí)序編寫12864 的讀寫程序lcd.c,建立出數(shù)據(jù)與寫數(shù)據(jù)位置的接口函數(shù)。在協(xié)議棧中 聯(lián)盟已經(jīng)將LCD 的顯示程序封裝在硬件層,如果應(yīng)用另外的顯示硬件只需將原有的lcd.h文件覆蓋即可。

          3.2.2 應(yīng)用層修改

          系統(tǒng)不斷的采集主機(jī)數(shù)據(jù)輸出端口發(fā)來的數(shù)據(jù),根據(jù)數(shù)據(jù)的不同而執(zhí)行相應(yīng)的操作。首先將讀取主機(jī)數(shù)據(jù)任務(wù)ID 號(hào)加入到任務(wù)中,這樣在任務(wù)循環(huán)執(zhí)行時(shí)方可執(zhí)行到,否則永遠(yuǎn)執(zhí)行不到這個(gè)任務(wù)。協(xié)調(diào)器讀取任務(wù)流程如圖9所示。

           

           

          3.3 路由器和終端節(jié)點(diǎn)系統(tǒng)軟件設(shè)計(jì)

          根據(jù)協(xié)議棧對(duì)路由器和終端節(jié)點(diǎn)系統(tǒng)進(jìn)行軟件編程。同樣只需修改協(xié)議棧的應(yīng)用層和硬件層。應(yīng)用層執(zhí)行查詢?nèi)蝿?wù)工作,修改硬件層使整個(gè)系統(tǒng)與所擴(kuò)展的硬件匹配。路由器和終端節(jié)點(diǎn)系統(tǒng)中開關(guān)燈、開關(guān)雷達(dá)端口用協(xié)議棧內(nèi)部定義好的兩個(gè)LED燈端口。用控制兩個(gè)LED燈的開/關(guān)分別控制路燈開/關(guān)、雷達(dá)控制開/關(guān)。路由器和終端節(jié)點(diǎn)系統(tǒng)接收來自協(xié)調(diào)器的字符控制信號(hào),不同字符執(zhí)行不同操作。利用中斷查詢方式采集亮燈狀態(tài)下燈泡的光照強(qiáng)度進(jìn)而判斷是否出現(xiàn)故障,出現(xiàn)故障進(jìn)入故障處理函數(shù),編輯路燈地址并發(fā)送到協(xié)調(diào)器。

          4 總結(jié)

          本方案從應(yīng)用方面著手對(duì)技術(shù)的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)進(jìn)行研究,采用TI公司的Z-Stask協(xié)議棧和IAR 開發(fā)環(huán)境,以芯片為核心構(gòu)建了一個(gè)基于通信網(wǎng)絡(luò)的路燈控制系統(tǒng)。該路燈控制系統(tǒng)的設(shè)計(jì)與傳統(tǒng)的路燈控制系統(tǒng)設(shè)計(jì)相比,一方面減少了“ 全夜燈”、“后夜燈”,有效的節(jié)約了電能資源,并且還保護(hù)了電燈,延長(zhǎng)了其使用壽命;另一方面智能路燈控制系統(tǒng)可對(duì)全部路燈進(jìn)行實(shí)時(shí)監(jiān)控和管理,集中控制、監(jiān)視、檢查,大大減少了后期人力、物力、財(cái)力的投入,同時(shí)提高了巡查設(shè)備和路燈的工作效率。

          光控開關(guān)相關(guān)文章:光控開關(guān)原理
          聲光控開關(guān)相關(guān)文章:聲光控開關(guān)原理

          上一頁 1 2 下一頁

          關(guān)鍵詞: ZigBee CC2530

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();