basicRF双向灯光控制

Posted yuling520

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了basicRF双向灯光控制相关的知识,希望对你有一定的参考价值。

题目:

实现基于BasicRF无线点对点通信的双向灯光控制,具体要求如下:

1> 节点A 和节点B 的PANID设置为0x1234,通道号设置为17,节点地址自定义。
<2> 按下节点A的SW1按键,松开后,向节点B发送1个字节的无线数据。节点B接收到新的无线数据后,判断该数据如果为0xa2,则切换节点B中D4灯的开关状态。
<3> 按下节点B的SW1按键,松开后,向节点A发送1个字节的无线数据。节点A接收到新的无线数据后,判断该数据如果为0xa2,则切换节点A中D4灯的开关状态。

注:<1> D4灯,连接到CC2530的P1_1引脚。

<2> SW1按键;连接到CC2530的P1_2引脚。

 

配置点对点无线通信的基本参数

#define RF_CHANNEL    17         // 频道 11~26
#define PAN_ID        0x1234     //网络id 

配置节点信息

//节点A的地址信息
#define MY_ADDR       0x000a     //本机模块地址
#define SEND_ADDR     0x000b     //发送地址

//节点B的地址信息
//#define MY_ADDR     0x000b     //本机模块地址
//#define SEND_ADDR   0x000a     //发送地址

 

变量定义与函数声明

#define D4  P1_1
#define SW1 P1_2

unsigned char cmd = 0xa2;       //无线发送的命令字
unsigned char dat = 0;          //无线接收的数据

void Init_Port();               //初始化D4灯与SW1按键
void Delay(unsigned char t);    //普通延时函数
void Scan_Keys();               //按键扫描处理函数
void Recv_RF_Data();            //无线数据接收处理函数

 

端口初始化函数的实现

void Init_Port()
{
  //初始化D4灯和D5灯的端口P1_1
  P1SEL &= ~0x02;     //P1_1为通用I/O端口
  P1DIR |= 0x02;      //P1_1端为输出口
  //初始化SW1按键的端口P1_2
  P1SEL &= ~0x04;     //P1_2为通用I/O端口
  P1DIR &= ~0x04;     //P1_2端为输出口
  P1INP &= ~0x04;     //P1_2设置为上拉/下拉模式
  P2INP &= ~0x40;     //P1_2设置为上拉
  
  D4 = 0;
}

 

延时函数

void Delay(unsigned char t)
{
  while(t--);
}

 

按键扫描函数

void Scan_Keys()
{
  if(SW1 == 0)
  {
    Delay(100);
    if(SW1 == 0)                        //确定SW1按键按下
    {
      while(SW1 == 0);                  //等待SW1按键松开
      basicRfSendPacket(SEND_ADDR, &cmd, 1);
    }
  }
}

 

无线数据接收处理函数的实现

void Recv_RF_Data()
{
  if(TRUE == basicRfPacketIsReady())    //接收到新的无线数据
  {
    basicRfReceive(&dat, 1, NULL);      //读出1个字节数据到dat变量
    if(dat == 0xa2)                     //判断接收数据是否为0xa5
    {
      D4 = ~D4;                         //切换D4灯的开关状态
      dat = 0x00;
    }
  }
}

 

主函数的实现

void main(void)
{
    halBoardInit();//选手不得在此函数内添加代码
    ConfigRf_Init();//选手不得在此函数内添加代码

    Init_Port();      //初始化D4灯和SW1按键的端口
      
    while(1)
    {
    /* user code start */
      Scan_Keys();    //扫描处理按键
      Recv_RF_Data(); //接收处理无线数据
    /* user code end */
    }
}

 

以上是关于basicRF双向灯光控制的主要内容,如果未能解决你的问题,请参考以下文章

通过物联网平台和灯光设备实现灯光的智能控制,主要实现了通过语音控制灯光颜色的变化灯光每种颜色的占比日出日落模式等等,底层封装为

传感网应用开发知识点总结

如何初始化片段中的绑定属性以使双向数据绑定工作

基于51单片机室内灯光控制系统

基于ARM的智能灯光控制系统设备管理

灯光温度控制开关