一、实验效果:
二、实验要求:
请选手通过编程实现两块 ZigBee 板直间通讯的功能,具体任务要求如下。 任务要求:
- 使用两块黑色 ZigBee 开发板,分别命名为 A、 B 并用标签纸贴上。
- 使用串口连接线将板 B 连接到工作站的 COM1 口。
- 板 B 可以根据外部条件通过 RS232 口向外输出指定格式的数据。具体格
式为: FA 00 FB 。其中 FA 表示数据头, FB 表示数据结尾, 00 表示要 发送的数据值。 - 点击板 A 的 SW1 按键可以控制板 B 向 RS232 口发送的数据值自动加一。
例如 FA 01 FB, FA 02 FB 等。 - 使用串口调试助手可以验证以上要求开发的功能。
完成以上任务后请做以下步骤:
- 在板 A 的小辣椒天线贴上“E-4-A”标签纸,板 B 的小辣椒天线贴上
“E-4-B”标签纸。 - 开发完成后将可以运行此要求的板 A 安装到物联网设备搭建平台中标注
的安装区域。将可以运行此要求的板 B 摆放在工作站计算机桌面上。板 B 的 RS232 口连接到工作站计算机串口 COM1。板 A、 B 都通上电等待裁 判验证评分。
三、实验代码与简单分析
1、ZigBee板(黑色)A模块
- 添加宏定义
#define SW1 P1_2
- 单击SW1给模块B发送数据
void Sw1_send(void)
{
if(!SW1)
{
halMcuWaitMs(100);
if(!SW1)
{
while(!SW1);
basicRfSendPacket(SEND_ADDR, "0", 1);
}
}
}
给模块B发送一个标志位数据; 3. 主函数main
void main(void)
{
halBoardInit();
ConfigRf_Init();
while(1)
{
Sw1_send();
}
}
2、ZigBee板(黑色)B 模块
- 模块B的主函数main()
********************MAIN************************/
void main(void)
{
halBoardInit();
ConfigRf_Init();
uint8 uartBuf[3]={0xFA,0x00,0xFB};
uint8 *rfRxBuf=0;
while(1)
{
while(!basicRfPacketIsReady());
if(basicRfReceive(rfRxBuf, 1, NULL)>0)
{
if(*rfRxBuf ==48)
uartBuf[1] +=0x01;
}
halUartWrite(uartBuf, 3);
}
}
通过模块A发送的数据,模块B数据加1,并按特定的消息帧打印
三、实验项目
使用basicRfReceive()接收无线数据,其返回值为接收到数据的长度,串口打印可使用两个函数 本个项目源码:ZigBee设备无线通讯&串口功能开发
|