找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 10226|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

CC2530無(wú)線控制燈教程與源碼(按A模塊的按鍵控制B模塊的LED亮滅)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
一,按 A模塊的按鍵---控制 B模塊的 LED 亮滅
1、實(shí)驗(yàn)需求:
硬件需求:cc2530 模塊兩個(gè)、調(diào)試器一個(gè)。
軟件需求:IAR810、仿真器的驅(qū)動(dòng)。
(如果沒(méi)有安裝 IAR810 和仿真器驅(qū)動(dòng),請(qǐng)看 “1.軟件工具”文件夾里面的“CC2530 開(kāi)發(fā)套件相
關(guān)軟件的安裝.pdf”文檔,把 IAR810 和仿真器驅(qū)動(dòng)裝起來(lái)) 。
使用 IAR810,因?yàn)槲壹疫@個(gè)資料是基于 IAR810 做的,所以還請(qǐng)各位勞神裝一下了。謝謝!
必須要
下面就來(lái)看看到底如何實(shí)際動(dòng)手操弄模塊吧,然后把模塊通過(guò)仿真器連接到電腦,如下圖:

如上圖連接后,在按幾下仿真器的復(fù)位按鈕。讓仿真器能探測(cè)到模塊,如果想查看,仿真器有沒(méi)有確實(shí)的探測(cè)到模塊,可以迚行如下操作。



當(dāng)然這個(gè)軟件肯定是需要你安裝下,你的開(kāi)始菜單中才有的,具體如何安裝,請(qǐng)看“ “1.軟件工具”
文件夾里面的“CC2530 開(kāi)發(fā)套件相關(guān)軟件的安裝.pdf”文檔”,進(jìn)行安裝下。

上圖中有了2530之后,就可以進(jìn)行debug了,否則不可以的哦,會(huì)彈出錯(cuò)誤的哦��!因?yàn)槌霈F(xiàn)cc2530,表示仿真器已經(jīng)可靠的切實(shí)的連接到了 CC2530 模塊了。debug 就是吧程序從電腦通過(guò)仿真器搞進(jìn)cc2530,如果仿真器都沒(méi)識(shí)別到2530,那怎么弄吧程序從電腦搞進(jìn) cc2530 呢?你說(shuō)是吧。


出現(xiàn)迚度條后,等一會(huì),迚度條結(jié)束,會(huì)出現(xiàn)如下圖:



如上 debug了的模塊,是終端模塊,程序也被保存在終端模塊里面了。


取下模塊,把另外一個(gè)模塊連接到仿真器,再把仿真器連接到電腦:


同樣上圖中有了 cc2530 乊后才能 debug哦,否則不可以哦��!然后如下圖操作:




然后把兩個(gè)模塊都單獨(dú)的放到一邊,不需要不仿真器連接,也是可以的。
然后把天線桿擰到模塊上的銅的天線座子上
3、操作模塊看實(shí)驗(yàn)效果:
用 usb 數(shù)據(jù)線直接把模塊連接到電腦,給兩個(gè)模塊上電,如下圖:


稍等會(huì),協(xié)調(diào)器的 LED3 先亮起來(lái),表示協(xié)調(diào)器建立了無(wú)線 zigbee 網(wǎng)絡(luò)。
在協(xié)調(diào)器 led3 亮起乊后一會(huì),終端的 LED3 也亮起來(lái)了,表示終端加入了無(wú)線 zigbee 網(wǎng)絡(luò)了。表
示協(xié)調(diào)器和終端組網(wǎng)了。
實(shí)驗(yàn)效果:
然后按終端模塊的 S1 鍵。S1 鍵在哪里,請(qǐng)看下圖。   協(xié)調(diào)器模塊的 LED2 就會(huì)交替亮滅。

4,實(shí)驗(yàn)分析:
剛才在前面打開(kāi)協(xié)議棧代碼,并 debug 模塊的時(shí)候,大家估計(jì)也在 iar 中看到了協(xié)議棧代碼的龐大,
代碼文件那么多,無(wú)從下手啊,其實(shí)不然,我們要學(xué)的是如何使用協(xié)議棧,如何在協(xié)議棧的基礎(chǔ)上會(huì)
無(wú)線發(fā)送、無(wú)線控制、無(wú)線采集。而不是去研究透協(xié)議棧(研究透是科學(xué)家干的事情) 。因?yàn)殛P(guān)于
zigbee 無(wú)線組網(wǎng)以及一些其他特性,協(xié)議棧代碼里面已經(jīng)寫好了,我們要做的,就是在這個(gè)協(xié)議棧
基礎(chǔ)上,能實(shí)現(xiàn)自己想要的無(wú)線的效果就行了。
協(xié)議棧的目錄結(jié)構(gòu):先來(lái)看下協(xié)議棧的目錄結(jié)構(gòu)吧,在第一章中我們安裝了協(xié)議棧,不知您是否還記
得,大家可以去看下自己安裝的協(xié)議棧的目錄里面到底有什么?

Components,顧名思義這個(gè)是放我們的庫(kù)的文件夾,里面放了一些我們用到的ZDO,driver,hal,
zcl等庫(kù)的代碼   
Documents,這個(gè)不用說(shuō)大家都知道是放TI的開(kāi)發(fā)文檔的,里面很多都是講述協(xié)議棧的API的有空時(shí)
可以看看   
Projects,這個(gè)文件夾放的是TI協(xié)議棧的例子程序,一個(gè)個(gè)例子程序都是以一個(gè)個(gè)project的形式給我
們的,學(xué)好這些例子程序里面的一兩個(gè),基本你能做事情了。   
Tools,這個(gè)文件夾是放 TI 的例子程序的一些上位機(jī)乊類的程序,作為工具使用。
對(duì)協(xié)議棧的膚淺認(rèn)識(shí):下面我就談下我自己對(duì) Zigbe 無(wú)線通信,一些比較膚淺的認(rèn)識(shí):
1,模塊的組網(wǎng)方式。
2,如何發(fā)送數(shù)據(jù)的
3,如何接受數(shù)據(jù)并處理的
以上三點(diǎn),不難理解,假設(shè)有 n 個(gè) cc2530 模塊在一起,先以一定的方式組成了 zigbee 網(wǎng)絡(luò),然后
各個(gè)模塊發(fā)送數(shù)據(jù),然后各個(gè)模塊接受了數(shù)據(jù)并處理了數(shù)據(jù)。是不是就完成了一個(gè)無(wú)線通信了。就這
么簡(jiǎn)單。
組網(wǎng)方式:每個(gè)模塊都有其自己的組網(wǎng)方式,有如下幾種:

我們這套套件資料,主要以廣播和單播為主。
一般在一個(gè) zigbee 網(wǎng)絡(luò)中的 n個(gè) cc2530 模塊,有一個(gè)協(xié)調(diào)器(也就是俗話說(shuō)的 zigbee 總節(jié)點(diǎn)),
和 n 個(gè)終端模塊(俗話說(shuō)的就是子節(jié)點(diǎn))。
而協(xié)調(diào)器一般被設(shè)置為廣播,就是協(xié)調(diào)器可以向其他 n 個(gè)所有終端模塊發(fā)送數(shù)據(jù)。在說(shuō)白點(diǎn),就是
協(xié)調(diào)器廣播數(shù)據(jù),其他 n 個(gè)終端都可以收到數(shù)據(jù),并處理數(shù)據(jù)。
而終端一般被設(shè)置為向協(xié)調(diào)器單播,就是所有的 n 個(gè)終端,都向協(xié)調(diào)器發(fā)送數(shù)據(jù)。
在我們這個(gè)實(shí)驗(yàn)中,協(xié)調(diào)器代碼就是廣播,看下圖分析

在我們這個(gè)實(shí)驗(yàn)中,終端就是向協(xié)調(diào)器單播,看下圖分析

好了,組網(wǎng)方式設(shè)定好了,協(xié)調(diào)器,終端它們組好網(wǎng)了,那下面就是如何發(fā)數(shù)據(jù)和接受數(shù)據(jù)了。
如何發(fā)送數(shù)據(jù):
在 enddeviceEB.c 中我們調(diào)用了無(wú)線發(fā)送數(shù)據(jù)函數(shù) AF 函數(shù)。

從上圖中,不難看出,我們按 S1 鍵后,就導(dǎo)致調(diào)用了 AF 發(fā)送函數(shù),在網(wǎng)絡(luò)內(nèi),發(fā)送了 1 個(gè)字符“1”;
至于為何按了 S1 鍵,就會(huì)來(lái)調(diào)用這個(gè) AF 函數(shù),這個(gè)是協(xié)議棧做的事情,我們可以先不管,目前只
要知道只要你按了 S1 鍵,就能迚行到上圖中的紅框框內(nèi)的代碼就行了,這樣就完成了發(fā)送數(shù)據(jù)了。  
關(guān)于 AF 函數(shù)的掌握,大家先可以掌握這個(gè) AF 函數(shù)的數(shù)據(jù)長(zhǎng)度和數(shù)據(jù)內(nèi)容參數(shù)即可,其他參數(shù)
可以暫時(shí)不用去理會(huì)。
接受數(shù)據(jù)并處理:
協(xié)調(diào)器收到終端發(fā)送來(lái)的數(shù)據(jù)后,交替點(diǎn)亮戒者熄滅 led1,

細(xì)看上圖中對(duì)代碼的注釋部分,不難理解,我們的協(xié)調(diào)器模塊的 led2 為何會(huì)交替亮滅了。至于那個(gè)
“GENERICAPP_CLUSTERID” ,其實(shí)是一個(gè)命令號(hào),就有點(diǎn)類似于“立正”“稍息”乊類的命令一樣,
是一種命令,接受處理函數(shù)判斷是“GENERICAPP_CLUSTERID”的時(shí)候,干什么事情呢,就是迚行
led2 交替亮滅吧。有點(diǎn)類似,當(dāng)是“立正”的時(shí)候,我們要干的事情就是:嚴(yán)肅點(diǎn),不能私下講話。
當(dāng)是“稍息”的時(shí)候,我們可以干點(diǎn)稍微說(shuō)說(shuō)笑笑事情了,就是什么命令干什么事情,至于什么命令
干什么事情,全看你自己寫的代碼了。
好的,實(shí)驗(yàn)分析大致到這里了,總結(jié)下:
1,整個(gè)協(xié)議棧那么多代碼,和我們有關(guān)的就是 app 應(yīng)用層的 c 文件,其他我們可以不管。

2,組網(wǎng)方式,協(xié)調(diào)器一般向所有終端廣播。而終端只向一個(gè)模塊就是協(xié)調(diào)器單播,不和其他終端模
塊說(shuō)話。
3,如何發(fā)送數(shù)據(jù),調(diào)用 AF 函數(shù),知道發(fā)送的命令,發(fā)送數(shù)據(jù)長(zhǎng)度和發(fā)送數(shù)據(jù)內(nèi)容參數(shù)即可
4,如何接受并處理無(wú)線數(shù)據(jù),就是那個(gè)“pkt->cmd.Data”就能取數(shù)據(jù)了,取完數(shù)據(jù)用代碼來(lái)干事
情就好了。

是不是覺(jué)得 zigbee 無(wú)線通信也不難,組網(wǎng),發(fā)送,接受并處理,完事 over,哈哈,我個(gè)人的一點(diǎn)膚

淺理解,還請(qǐng)各位多多指正賜教。

實(shí)驗(yàn)流程圖如下:




全部資料51hei下載地址:
基于CC2530的無(wú)線控制燈.rar (6.14 MB, 下載次數(shù): 100)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:224700 發(fā)表于 2018-8-7 11:54 | 只看該作者
怎么壓縮包下到一半就掛掉了?
回復(fù)

使用道具 舉報(bào)

板凳
ID:575877 發(fā)表于 2019-7-7 21:08 | 只看該作者
這個(gè)里面代碼編譯錯(cuò)誤是為什么
回復(fù)

使用道具 舉報(bào)

地板
ID:486379 發(fā)表于 2019-8-2 13:59 | 只看該作者
這個(gè)我也做過(guò),當(dāng)時(shí)就是改了協(xié)議棧按鍵部分的一些代碼
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表