这里会显示出您选择的修订版和当前版本之间的差别。
zigbee:zigbee3.0_first_example [2019/08/02 17:24] jaylee |
zigbee:zigbee3.0_first_example [2021/06/22 23:14] |
||
---|---|---|---|
行 1: | 行 1: | ||
- | < | ||
- | # zstack first sample | ||
- | |||
- | `Z-Stack 3.0 Sample Application User's Guide.pdf`-> | ||
- | |||
- | `Z-Stack 3.0 Sample Application User's Guide.pdf`-> | ||
- | |||
- | * 烧写SampleLight 观测网络流程,并且移植按键和和可能的LED指示,通过按键能够翻转LED1; | ||
- | * 烧写SampleSwitch 样例,观察设备加入流程,移植按键远程开关作为协调器的SampleLight的LED1; | ||
- | |||
- | ## porting | ||
- | |||
- | * 为了方便抓包观察,更改SampleLight/ | ||
- | |||
- | ```c | ||
- | // | ||
- | -DDEFAULT_CHANLIST=0x00020000 | ||
- | ``` | ||
- | |||
- | * 运行抓包,编译下载 SampleLight 运行程序; | ||
- | |||
- | 从抓包上来,这里没有任何数据,可能的网络的建立、设备加入网络都需要通过液晶交互吧。 | ||
- | |||
- | * 移植LED/ | ||
- | |||
- | 对比了网蜂`zigbee节点.pdf`和`swru208b_CC2530 Development Kit User’s Guide.pdf` 原理图确定LED指示灯是一一对应的,但是缺少LED4,对于按键smartrf05eb采用的5键摇杆,通过一个io通知按键事件发生,通过adc采样确定按键的值,由于我们底板只有两个按键,所以这里直接模拟5键摇杆的确认和右键。 | ||
- | |||
- | 如下表所示为使用底板的外设接口: | ||
- | |||
- | | item | value | | ||
- | | :--------- | ---------------- | | ||
- | | LED1、2、3 | P1_0、P1_1、P1_4 | | ||
- | | BTN1、2 | ||
- | | ||
- | 增加按键定义 | ||
- | | ||
- | ```c | ||
- | // | ||
- | /* s1 as joy stick enter*/ | ||
- | #define HAL_KEY_BTN_OK_PORT | ||
- | #define HAL_KEY_BTN_OK_BIT | ||
- | #define HAL_KEY_BTN_OK_SEL | ||
- | #define HAL_KEY_BTN_OK_DIR | ||
- | | ||
- | /* s1 as joy stick right*/ | ||
- | #define HAL_KEY_BTN_MOVE_PORT | ||
- | #define HAL_KEY_BTN_MOVE_BIT | ||
- | #define HAL_KEY_BTN_MOVE_SEL | ||
- | #define HAL_KEY_BTN_MOVE_DIR | ||
- | ``` | ||
- | | ||
- | | ||
- | 完成按键初始化 | ||
- | | ||
- | ```c | ||
- | // | ||
- | | ||
- | HAL_KEY_BTN_OK_SEL &= ~(HAL_KEY_BTN_OK_BIT); | ||
- | HAL_KEY_BTN_OK_DIR &= ~(HAL_KEY_BTN_OK_BIT); | ||
- | HAL_KEY_BTN_MOVE_SEL &= ~(HAL_KEY_BTN_MOVE_BIT); | ||
- | HAL_KEY_BTN_MOVE_DIR &= ~(HAL_KEY_BTN_MOVE_BIT); | ||
- | ``` | ||
- | | ||
- | 修改按键功能, | ||
- | | ||
- | | ||
- | ```c | ||
- | // if ((HAL_KEY_JOY_MOVE_PORT & HAL_KEY_JOY_MOVE_BIT)) | ||
- | // { | ||
- | // keys = halGetJoyKeyInput(); | ||
- | // } | ||
- | if (!(HAL_KEY_BTN_OK_PORT & HAL_KEY_BTN_OK_BIT)) { /* Key is active LOW */ | ||
- | keys |= HAL_KEY_SW_5; | ||
- | } else if (!(HAL_KEY_BTN_MOVE_PORT & HAL_KEY_BTN_MOVE_BIT)) { | ||
- | keys |= HAL_KEY_SW_2; | ||
- | } | ||
- | ``` | ||
- | |||
- | |||
- | * 由于默认使能了网络安全功能,为了方便抓包分析,需要预定义网络密钥,否则会随时生成,导致抓包不能完成。 | ||
- | |||
- | ```bash | ||
- | // | ||
- | /* -DDEFAULT_KEY=" | ||
- | -DDEFAULT_KEY=" | ||
- | ``` | ||
- | |||
- | ## test | ||
- | |||
- | 参考如上步骤移植后就可以通过`Z-Stack 3.0 Sample Application User's Guide.pdf`-> | ||
- | |||
- | > **提示**:完整固件保存在files/ | ||
- | |||
- | ### sample light | ||
- | |||
- | * 编译SampleLight CoordinatorEB 并烧写到协调器,连续三次按下右键后(S2),进入界面4—远程LED测试页面,通过确认按键(S1)可以连续开关LED1(红色)指示灯状态。 | ||
- | |||
- | * 复位后,连续两次按下右键后(S2)进入界面3—网络测试页面,通过确认确认按键(S1)进入组网模式。 | ||
- | |||
- | ![协调器建立网络](images/ | ||
- | |||
- | ### sample switch | ||
- | |||
- | - 编译 SampleLight EndDeviceEB 并烧写到终端设备,连续两次(界面)按下右键后(S2),通过确认(S1)按键进入LED测试页面,可以连续按键确认键翻转LED2(红色)指示灯状态。 | ||
- | |||
- | - 复位后,连续两次按下右键后(S2)进入界面3—网络测试页面,通过确认确认按键(S1)进入组网模式。 | ||
- | |||
- | ![终端设备加入网络](images/ | ||
- | |||
- | * 按一次右键,进入界面4—远程LED测试页面,,通过确认按键(S1)可以远程开关协调器LED1(红色)指示灯状态。 | ||
- | |||
- | ![远程开关操作](images/ | ||
- | |||
- | |||
- | |||
- | </ |