版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
本文格式為Word版,下載可任意編輯——基于ZigBee的無線數(shù)據(jù)采集系統(tǒng)
無線數(shù)據(jù)采集控制系統(tǒng)的設(shè)計
課程名稱專業(yè)綜合課程設(shè)計課程設(shè)計總評成績學(xué)生姓名、學(xué)號學(xué)生專業(yè)班級指導(dǎo)教師姓名課程設(shè)計起止日期2023.11.7-2023.12.1
無線數(shù)據(jù)采集控制系統(tǒng)的設(shè)計
第1章需求分析
1.1課程設(shè)計題目
無線電子開關(guān)
1.2課程設(shè)計任務(wù)及要求無線電子開關(guān)的設(shè)計
PC端用java編寫程序通過串口給CC2530模塊A發(fā)送開關(guān)等指令,CC2530模塊A通過射頻模塊將指令以無線方式發(fā)送給CC2530模塊B,CC2530模塊B根據(jù)指令開燈或關(guān)燈。
針對給定的任務(wù),結(jié)合專業(yè)課程和專業(yè)知識完成系統(tǒng)的硬件或軟件設(shè)計,對硬件設(shè)計:要求完成系統(tǒng)和接口設(shè)計,并能動手制作和調(diào)試,對測量結(jié)果進行分析處理。設(shè)計須提供實物成果。對軟件設(shè)計:要求能夠熟悉軟件工具,設(shè)計其算法或者是系統(tǒng)結(jié)構(gòu),實現(xiàn)該算法和軟件,能夠?qū)ζ溆嬎氵^程進行推導(dǎo)或者是說明軟件系統(tǒng)結(jié)構(gòu),并能調(diào)試成功,對試驗結(jié)果進行分析處理。
通過專業(yè)綜合的課程設(shè)計,使學(xué)生能夠綜合把握無線傳感網(wǎng)技術(shù)、java語言程序設(shè)計、數(shù)據(jù)庫等課程的專業(yè)知識,要求學(xué)生經(jīng)過課程設(shè)計的教學(xué)環(huán)節(jié)進一步理解無線傳感器網(wǎng)絡(luò)的結(jié)構(gòu)和組成原理,把握數(shù)據(jù)采集節(jié)點,無線傳輸,串口通信等模塊的基本設(shè)計方法,完成系統(tǒng)應(yīng)用程序的設(shè)計。
通過專業(yè)綜合課程設(shè)計,提高學(xué)生電子信息系統(tǒng)綜合設(shè)計能力。把握電子信息系統(tǒng)的基本開發(fā)過程及應(yīng)用方法。要求學(xué)生經(jīng)過課程設(shè)計的教學(xué)環(huán)節(jié)進一步理解電子信息系統(tǒng)的設(shè)計方法,根據(jù)所選擇的對象進行應(yīng)用系統(tǒng)的硬件和軟件設(shè)計,提高學(xué)生專業(yè)的綜合素質(zhì)及專業(yè)能力。
1.3軟硬件運行環(huán)境及開發(fā)工具
軟件開發(fā)環(huán)境為eclipse+IAREmbeddedWorkbench硬件開發(fā)環(huán)境為CC25301.4主要芯片說明
CC2530是ZigBee無線數(shù)據(jù)傳輸其中的一個核心芯片,它能夠以十分低的總材料成本建立強的網(wǎng)絡(luò)節(jié)點。CC2530芯片有四種不同的閃存版本:分別具32/64/128/256KB的閃存。CC2530芯片工作實具有不同的運行模式,使得它特別適應(yīng)超低功耗要求的系統(tǒng)。運行模式之間的轉(zhuǎn)換時間短進一步確保了低能源消耗。在業(yè)界內(nèi),CC2530結(jié)合了德州儀器的業(yè)界領(lǐng)先的黃金單元ZigBee協(xié)議棧,提供了一個強大和完整的ZigBee解決方案。
CC2530芯片共包含了40個引腳,引腳的排布如圖1所示:圖1:cc2530引腳圖
1
CC2530芯片模塊大致可以分為三類:CPU和內(nèi)存相關(guān)的模塊;外設(shè)、時鐘和電源管理相關(guān)的模塊以及無線電相關(guān)的模塊。
(1)CPU和內(nèi)存:CC253x芯片系列中使用的8051CPU內(nèi)核是一個單周期的8051兼容內(nèi)核。
(2)調(diào)試接口:執(zhí)行一個專有的兩線串行接口,用于內(nèi)電路調(diào)試。(3)I/O控制器:負責(zé)所有通用I/O引腳。
(4)五通道DMA控制器:系統(tǒng)可以使用一個多功能的五通道DMA控制器,使用XDATA存儲空間訪問存儲器,因此能夠訪問所有物理存儲器。
(5)定時器1:是一個16位定時器,具有定時器PWM功能。。(6)內(nèi)置MAC定時器:是專門為支持IEEE802.15.4,MAC或軟件中其他時槽的協(xié)議設(shè)計。(7)定時器3和定時器4:是8位定時器,具有定時器/計數(shù)器/PWM功能。
(8)睡眠定時器:是一個超低功耗的定時器,計算32kHz晶振或32kHzRC振蕩器的周期。
(9)看門狗:一個內(nèi)置的看門狗,允許CC2530在固件掛起的狀況下復(fù)位自身。
第2章系統(tǒng)總體設(shè)計
2.1系統(tǒng)組成方案
由eclipse編寫上位機程序,TAR編寫下位機程序,通過無線方式發(fā)送命令。如圖2
light1:1101Blight2:1011串口AC圖2:設(shè)計方案2.2系統(tǒng)工作原理
上位機程序以輪詢方式通過PC串口向ZigBee節(jié)點A發(fā)送命令light:1011,節(jié)點A通過無線方式向節(jié)點B轉(zhuǎn)發(fā)命令light:1011,節(jié)點B接收到命令后點亮藍燈,黃燈和綠燈(1點亮,0熄滅)。
上位機程序以輪詢方式通過PC串口向ZigBee節(jié)點A發(fā)送命令light:1011,節(jié)點A通過無線方式向節(jié)點C轉(zhuǎn)發(fā)命令light:1011,節(jié)點C接收到命令后點亮藍燈,紅燈和綠燈(1點亮,0熄滅)。
2.3系統(tǒng)構(gòu)建
PC端用java編寫程序通過串口給CC2530模塊A發(fā)送開關(guān)等指令,CC2530模塊A通過射頻模塊將指令以無線方式發(fā)送給CC2530模塊B和模塊C,CC2530模塊B和模塊C根據(jù)指令開燈或關(guān)燈。
2
根據(jù)指令(light1或light2)第5位判斷后綴為1或者為2,節(jié)點B和節(jié)點C分別依據(jù)指令開燈或者關(guān)燈
第3章系統(tǒng)硬件設(shè)計
3.1主模塊電路設(shè)計
本系統(tǒng)采用TI公司生產(chǎn)的CC2530為核心器件。CC2530是一個真正的片上系統(tǒng)(SoC)解決方案,它能夠以十分低的材料成本建立強大的網(wǎng)絡(luò)節(jié)點,它結(jié)合了領(lǐng)先的RF收發(fā)器的優(yōu)良性能、業(yè)界標(biāo)準(zhǔn)的加強型8051CPU、系統(tǒng)內(nèi)可編程閃存、8KBRAM、A/D轉(zhuǎn)換器以及大量其他強大的功能,并且其具有不同的運行模式,使得它特別適應(yīng)超低功耗要求的系統(tǒng)。圍圍著CC2530芯片,系統(tǒng)大致可分為三大模塊:CPU和內(nèi)存相關(guān)的模塊,外設(shè)、時鐘和電源管理相關(guān)的模塊以及無線電相關(guān)的模塊。3.2顯示模塊電路設(shè)計
設(shè)計通過A發(fā)送的指令來控制4個LED燈的亮滅,LED模塊電路及燈的引腳圖,如圖3、圖4所示。
圖3:LED模塊電路
圖4:LED燈對應(yīng)引腳
若要點亮LED燈,CC2530的通用IO口需要配置三個寄放器:P1SEL,P1DIR,P1INP,P2INP功能選擇寄放器PxSEL,其中x為端口標(biāo)號0~2,用來設(shè)置端口的每個引腳為通用I/O或外部設(shè)備I/O。默認(rèn)為通用I/O。
方向寄放器PxDIR,其中x為端口標(biāo)號0~2,用來設(shè)置端口的每個引腳為輸入或輸出。默認(rèn)為輸入。
輸入模式寄放器P1INP,用來設(shè)置P1端口用作輸入時為上拉、下拉模式或三態(tài)模式。默認(rèn)為上、下拉模式。具體是上拉還是下拉,由P2INP來設(shè)置。
3
輸入模式寄放器P2INP,用來設(shè)置P0、P1、P2端口用作輸入時為上拉、下拉模式。默認(rèn)為上拉模式。完整配置:
?P1SEL//P1_0、P1_1通用IO?P1DIR|=0x03;//P1_0、P1_1輸出?P1INP//P1_0、P1_1上下拉?P2INP//P1上拉簡化配置:
?P1DIR|=0x03;//P1_0、P1_1輸出3.3通信模塊電路設(shè)計
CC2530是符合802.15.4標(biāo)準(zhǔn)的無線收發(fā)芯片,但是本設(shè)計并沒有遵守802.15.4協(xié)議規(guī)則,在發(fā)送過程中忽略了網(wǎng)絡(luò)ID、源地址和目標(biāo)地址等參數(shù),在接收的過程中阻止了幀過濾。通過發(fā)送和接收過程的處理使得CC2530無線部分的使用完可能的簡單明了,通過最少的代碼說明問題。無線芯片的調(diào)試具有一定的難度,一般存在發(fā)送設(shè)備和接收設(shè)備。為了通過最簡單的代碼說明無線芯片的使用,只編寫一個設(shè)備的代碼同時實現(xiàn)發(fā)送和接收功能。設(shè)備代碼的功能也相對簡單,CC2530從串口接收數(shù)據(jù)并把數(shù)據(jù)通過RF部分原分不動地發(fā)送出去,于此同時CC2530把從RF部分接收的數(shù)據(jù)原分不動的通過串口發(fā)送出去,通過這樣的方式實現(xiàn)無線串口。發(fā)送的數(shù)據(jù)編號以及控制指令,來控制燈的亮度和開關(guān)。
串口數(shù)據(jù)屬于“流〞型數(shù)據(jù)包,RF部分屬于“幀〞型數(shù)據(jù)包。在串口數(shù)據(jù)處理與分析中,一般采用特定的串口頭和長度的方式解析數(shù)據(jù),但是本文采用通過串口時間間隔的方式解析數(shù)據(jù),這種方法等同于modbus-RTU串口數(shù)據(jù)處理的方法。通過這種檢測字節(jié)數(shù)據(jù)時間間隔的方法使得CC2530的串口部分可以接收無特別格式要求的數(shù)據(jù),真正實現(xiàn)無線串口功能。
第4章系統(tǒng)軟件設(shè)計
4.1上位機程序設(shè)計
上位機程序通過兩個類來實現(xiàn),第一個SerialPort類用來實現(xiàn)控制程序面板,其次個DSerialPort類來實現(xiàn)串口通信。圖5所示為Java的兩個類:
圖5:Java的兩個類
SerialPort類中,通過網(wǎng)格布局管理器來實現(xiàn)面板的布局,設(shè)置各個標(biāo)簽以及文本框,復(fù)選框,組合框,窗口的大小位置以及標(biāo)題等。
4個燈的設(shè)置大致一致,通過jcheckbox來表示燈選中以及未選中時的設(shè)置。
jlabel1=newJLabel(\全關(guān)1:\jcheckbox1=newJCheckBox(\綠\jcheckbox2=newJCheckBox(\紅\jcheckbox3=newJCheckBox(\黃\jcheckbox4=newJCheckBox(\藍\jlabel2=newJLabel(\全關(guān)2:\jcheckbox5=newJCheckBox(\綠\jcheckbox6=newJCheckBox(\紅\jcheckbox7=newJCheckBox(\黃\jcheckbox8=newJCheckBox(\藍\
4
//燈一的設(shè)置
jcheckpanel1=newJPanel();
gridbagconstraints.anchor=GridBagConstraints.EAST;gridbagconstraints.gridwidth=1;
gridbaglayout.setConstraints(jlabel1,gridbagconstraints);add(jlabel1);
gridbagconstraints.anchor=GridBagConstraints.WEST;
gridbagconstraints.gridwidth=GridBagConstraints.REMAINDER;
gridbaglayout.setConstraints(jcheckpanel1,gridbagconstraints);add(jcheckpanel1);
jcheckpanel1.add(jcheckbox4);jcheckpanel1.add(jcheckbox3);jcheckpanel1.add(jcheckbox2);jcheckpanel1.add(jcheckbox1);
//燈一開關(guān)的設(shè)置
jcheckbox1.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){if(getLightState1().equals(\jlabel1.setText(\全關(guān)1:\elseif(getLightState1().equals(\jlabel1.setText(\全開1:\elsejlabel1.setText(\開燈1:\}});
通過switch語句,串口開啟后輪番發(fā)送Data的參數(shù)以及設(shè)置參數(shù)異常時的命令:
voidstartRun(){Timertimer=newTimer();TimerTasktask=newTimerTask(){inti=0;
publicvoidrun(){if(com_open){//串口開啟則發(fā)送try{switch(i){case0:{sp.write(lightcommand1+getLightState1());break;}case1:{sp.write(lightcommand2+getLightState2());break;}}if(i==2){i=0;}elsei++;}catch(Exceptione){System.out.println(\發(fā)送異常\}}}};timer.schedule(task,1000,200);//在200毫秒后執(zhí)行此任務(wù),每次間隔2秒執(zhí)行一次,假使傳遞一個Data參數(shù),就可以在某個固定的時間執(zhí)行這個任務(wù).}
串口通信DSerialport類中,通過listport方法,列出了所有可用的串口,并設(shè)置返回值類型為void:
5
publicvoidlistPort(JComboBoxjcombox1){CommPortIdentifiercpid;Enumerationen=CommPortIdentifier.getPortIdentifiers();System.out.println(\:\while(en.hasMoreElements()){cpid=(CommPortIdentifier)en.nextElement();if(cpid.getPortType()==CommPortIdentifier.PORT_SERIAL){jcombox1.addItem(cpid.getName());System.out.println(cpid.getName()+\cpid.getCurrentOwner());}}}
通過selectport方法,選擇一個端口,設(shè)置返回值類型void:
publicvoidselectPort(StringportName,intrate){mPort=null;CommPortIdentifiercpid;Enumerationen=CommPortIdentifier.getPortIdentifiers();while(en.hasMoreElements()){cpid=(CommPortIdentifier)en.nextElement();if(cpid.getPortType()==CommPortIdentifier.PORT_SERIALbreak;}}openPort(rate);}
通過openPort方法,開啟SerialPort,設(shè)置返回值類型void:
privatevoidopenPort(intrate){if(commPort==null)System.out.println(String.format(\無法找到名字為'%1$s'的串口!\commPort.getName()));else{System.out.println(\端口選擇成功,當(dāng)前端口:\現(xiàn)在實例化SerialPort:\try{serialPort=(SerialPort)commPort.open(appName,timeout);System.out.println(\實例SerialPort成功!\}catch(PortInUseExceptione){thrownewRuntimeException(String.format(\端口'%1$s'正在使用中!\commPort.getName()));}try{serialPort.setSerialPortParams(rate,8,1,0);//設(shè)置波特率等參數(shù)}catch(UnsupportedCommOperationExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();
6
}
}}
通過checkport方法檢查端口是否正確連接:
privatevoidcheckPort(){if(commPort==null)thrownewRuntimeException(\沒有選擇端口,請使用\\方法選擇端口\if(serialPort==null){thrownewRuntimeException(\對象無效!\}}
通過write方法向端口發(fā)送數(shù)據(jù),在調(diào)用此方法前需要先選擇端口并確定serialport正常開啟。
publicvoidwrite(Stringmessage){checkPort();try{outputStream=serialPort.getOutputStream();}catch(IOExceptione){thrownewRuntimeException(\獲取端口的OutputStream出錯:\}try{outputStream.write(message.getBytes());System.out.println(\信息發(fā)送成功!\}catch(IOExceptione){thrownewRuntimeException(\向端口發(fā)送信息時出錯:\}finally{try{outputStream.close();}catch(Exceptione){}}}
通過startread開始監(jiān)聽從端口中接受的數(shù)據(jù):
publicvoidstartRead(inttime){checkPort();try{inputStream=serialPort.getInputStream();}catch(IOExceptione){thrownewRuntimeException(\獲取端口的InputStream出錯:\}try{serialPort.addEventList
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度宅基地使用權(quán)轉(zhuǎn)讓及配套基礎(chǔ)設(shè)施建設(shè)合同3篇
- 2024年運動鞋品牌授權(quán)區(qū)域銷售與售后服務(wù)合同3篇
- 交通設(shè)施墻紙更換服務(wù)
- 數(shù)據(jù)中心樓面節(jié)能施工協(xié)議
- 醫(yī)院專業(yè)助產(chǎn)士招聘合同范本
- 薪酬激勵與員工晉升機會
- 水泥制品生產(chǎn)企業(yè)地磅管理辦法
- 非遺項目拍賣師簽約函
- 農(nóng)業(yè)科技項目招投標(biāo)監(jiān)管體系
- 企業(yè)安全生產(chǎn)安全件管理辦法
- 高校人力資源管理系統(tǒng)
- 關(guān)于更換公務(wù)用車的請示
- 國外發(fā)達國家中水回用現(xiàn)狀
- 室分工程施工組織設(shè)計
- 遠洋漁船項目可行性研究報告模板
- 塔塔里尼調(diào)壓器FLBM5介紹.ppt
- 相親相愛一家人簡譜
- CCC例行檢驗和確認(rèn)檢驗程序
- 驗收合格證明(共9頁)
- 蘇強格命名規(guī)則
- 初中物理競賽教程(基礎(chǔ)篇)第16講比熱容
評論
0/150
提交評論