ZIGBEE:第一个实验:无线温度传感器实验

     看了大概有一周,做一个温度传感器实验试试手。

   传感器采用18b20,十分常见,网上模块化的程序很多,就不做介绍了。

   主要是目的是记录下怎么加入ZIGBEE工程的过程。

   

   1、将12b20函数文件和头文件放入SampApp/source文件下

   2、在工程里添加这两个文件入APP目录下

  ZIGBEE:第一个实验:无线温度传感器实验_第1张图片

   3、在SampleApp文件下,添加#include "ds18b20.h"

   4、添加管脚初始化语句

void SampleApp_Init( uint8 task_id )
{
  SampleApp_TaskID = task_id;
  SampleApp_NwkState = DEV_INIT;
  SampleApp_TransID = 0;
  
  P0SEL & =0X7F;  //18b20管脚


   5、添加协调器程序  添加到SampleApp.c中,这个函数需要自行添加并申明。

void SampleApp_Send_P2P_Message(void)
{
  byte str[5]
  char strTemp[10]
  byte temp;
  
  temp=ReadDs18b20();
  
  str[0]=temp/10+48;
  str[1]=temp%10+48;
  str[0]='';
  str[0]='c';
  str[0]='/0';


  osal_memcpy(strTemp,"TEMP:",5);
  osal_memcpy(&strTemp[5],str,5);
  HalLcdWriteString(strTemp,HAL_LCD_LINE_3);//LCD显示数据
  
  //将无线数据发送给协调器(插有18b20的主机)
  if(AF_DataRequest(&SampleApp_P2P_DstAddr,
                    &SampleApp_epDesc,
                    SAMPLEAPP_P2P_CLUSTERID,
                    4,
                    str,
                    &SampleApp_TransID,
                    AF_DISCV_ROUTE,
                    AF_DEFAULT_RADIUS)==afStatus_SUCCESS)
  {
    
  }
  else
  {
    
  }
}

     6、添加从机接受程序,在SampleApp_MessageMSGCB进行修改即可

void SampleApp_SendFlashMessage( uint16 flashTime )
{
  uint8 buffer[3];
  buffer[0] = (uint8)(SampleAppFlashCounter++);
  buffer[1] = LO_UINT16( flashTime );
  buffer[2] = HI_UINT16( flashTime );


  if ( AF_DataRequest( &SampleApp_Flash_DstAddr, &SampleApp_epDesc,
                       SAMPLEAPP_FLASH_CLUSTERID,
                       3,
                       buffer,
                       &SampleApp_TransID,
                       AF_DISCV_ROUTE,
                       AF_DEFAULT_RADIUS ) == afStatus_SUCCESS )
  {
  }
  else
  {
    // Error occurred in request to send.
  }
}

  7、因为传感器延时要求比较高,所以,移植过来的传感器驱动,需要把延时都改为系统的精确延时。

   asm("nop");

  8、分别烧入协调器和从机。

你可能感兴趣的:(zigbee)