2012年10月1日 星期一

ZigBee CC2530入門-點亮LED

一開始學zigbee,真的是沒有頭緒,研讀了許多文件與論壇的教學之後,總算出了點皮毛來了。在台灣,真的找不到一個像樣的教學論壇,就連代理zigbee的廠商也很少,技術support的部份,就更不用說了。反而大陸的相關應用比較多,難道…這真的是非主流的規格嗎?辜且不論主流與否,反正就當是多學一項工具,我就是要用zigbee來達到目的,那就一點一滴的累積經驗吧!

首先,我認為必需要先讓硬體對我們示出”好感”,有個”好感”之後才能學的下去。就像學c也要先來”hello world”一樣的意思。

所以我初期設定了幾個條件:

第一讓開發板上的LED 1亮起來。表示我能控制它了^^(卓越感)。

第二點對點的2.4G RF無線控制LED亮。表示通訊正常^^(爽度100%)

第三建立組網功能。(未來再說~)

先介紹一下開發環境與使用工具:

作業系統:Windows 7 32bit

開發程式:IAR Assembler for 8051 8.10.1 (8.10.1.40194)

硬體架構:TI SmartRF05 EB 1.8.1 + CC2530F256 EM 1.3.1

clip_image002

IAR Embedded Workbench IDE

clip_image004

Zigbee開發套件所附的組件

實作一:讓開發板上的LED 1亮起來。

開啟iar程式,並且設定好相關參數。

Step….

1. 開啟Iar Embedded Workbench程式

clip_image006

2. 選擇Project à Create New Project…

clip_image008

3. 用預設的空白專案就好。

clip_image010

4. 建造一個新的資料夾,方便之後管理,我取的是test

clip_image012

5. 在左方的文件上按右鍵àOptions…我們要做一些設定。

clip_image014

6. 選擇我們使用的ic型號:我用的是CC2530F256(注意路徑!!!)

clip_image016

7. 第一項:General Options的部份,照著下圖做設定。

clip_image018

8. Linker的設定,注意Override default是不是你的ic型號。

clip_image020

9. Debugger的部份,選擇Driver為Texas Instruments.

clip_image022

10. 接下來要新增一個.c的文件。

clip_image024

11. 將此文後面的程式碼copy貼上。

clip_image026

12. 進行存檔test.c。

clip_image028

13. 在左邊欄位的文字上按右鍵,加入剛剛編好的.c檔

clip_image030

14. 左鍵點擊上方三角型的小圖示。

clip_image032

15. 選擇你要執行的裝置。(開發板電源需打開)

clip_image034

16. 注意滑鼠游標位置。點下去表示全速執行此程式。

clip_image036

執行到這裡,你應該看到你的開發板上的LED在閃礫了吧!沒錯,你可以控制此板子了,不過,這只單純是mcu硬體的控制而已,完全無關zigbee無線的架構,但藉由此實驗,即可稍微解除對zigbee這套開發板的陌生感了。

//*****以下為Test.c程式內容:******

#include <ioCC2530.h>

#define uint unsigned int

#define uchar unsigned char

//定義控制燈的端口

#define RLED P1_0 //定義LED1為P10口控制

#define YLED P1_1 //定義LED2為P11口控制

#define OLED P1_2 //define LED3為P12

//函數聲明

void Delay(uint); //延時函數

void Initial(void); //初始化P0口

/****************************

//延時

*****************************/

void Delay(uint n)

{

uint tt;

for(tt = 0;tt<n;tt++);

for(tt = 0;tt<n;tt++);

for(tt = 0;tt<n;tt++);

for(tt = 0;tt<n;tt++);

for(tt = 0;tt<n;tt++);

}

/****************************

//初始化程序

*****************************/

void Initial(void)

{

P1DIR |= 0x07; //P10、P11定義為輸出+P12

RLED = 1;

YLED = 1; //LED

OLED = 1;

}

/***************************

//主函數

***************************/

void main(void)

{

Initial(); //調用初始化函數

RLED = 0; //LED1

YLED = 0; //LED2

OLED = 0;

while(1)

{

YLED = !YLED;

Delay(10000);

RLED = !RLED;

Delay(10000);

OLED = !RLED;

//RLED = !RLED;

Delay(10000);

YLED = !OLED;

Delay(10000);

}

}

5 意見:

匿名 提到...

很棒的介紹 可惜的是圖太小@@"

匿名 提到...

請問,目前有台灣有哪一家公司,已經在做 zigbee結合LED E27 燈泡? 像philip的hue, http://www.meethue.com/en-US

真原 提到...

去年還在做這的時候,還沒有看到有人在做,因為zigbee太貴了,但現在我不知道,我想應該還是沒有人用吧。而且燈的控制也用不到太複匝的設計。一般2.4G RF就能達成了。當初會用zigbee,是因為要做"連網"的設計,需要很多的演算法,才會考慮zigbee。若只是單純控制個LED燈的話,建議不需要用到zigbee。

匿名 提到...

請問大大有再幫人外包程式嗎?
http://140.124.61.160/TIM/FileUpload/20656/WSN%E8%BB%9F%E9%AB%94%E8%A6%8F%E6%A0%BC.docx
weng-fong@hotmail.com 莊先生

呆呆 提到...

請問大大有建議的開發板套件嗎?小弟不管是在台灣的露天和對岸的淘寶,看到太多的套件,不知道哪一種比較適合新手入門?

張貼留言