Zigbee采集温度控制风扇

1.测量温湿度 温度过高时打开风扇
实验现象:PC机通过串口连接到CC2530(协调器),打开串口调试助手;接收到终端的
温湿度;温度高于25度时,终端风扇开始散热;
实验详解:
实验基于zstack 协议进行,分为三个部分:协调器,温湿度终端,风扇终端;


协调器:负责接收温湿度数据,通过串口打印出来
温湿度传感器:采集数据,通过点播发送给协调器;通过广播将信息发送给风扇终端
风扇终端:通过寄存器定义为输出,接收数据后 判断后 打开风扇


实验流程:协调器通过转串口数据线连接到PC机 调整好波特率 
          打开温湿度终端以及风扇终端
 通过串口接收数据,改变温度 风扇转动


1.协调器编程
(1) 串口
MT_UartInit();//串口初始化
        MT_RegisterTaskID(task_id)//登记任务号


(2)消息处理函数
void SampleApp_MessageMSGCB( afIncomingMSGPacket_t *pkt )
{
  
unsigned  char buffer[10];
osalmem(buffer,pkt->data,pkt->datalength);   //将数据复制到buffer
  switch ( pkt->clusterId )
  {
    case SAMPLEAPP_POINT_TO_POINT_CLUSTERID:
HalUARTWrite(0,buffer,10);             //串口发送      
  }
}




2.温湿度终端编程
(1)添加DHT11.c DHT11.h到APP文件下 
     采集数据DTH11()函数   
     在SampleApp.c中添加头文件#include DTH11.h
     初始化传感器引脚#define   P0_5
(2)点播发送温湿度信息给协调器
/**将温度复制到strTemp*/
       osal_memcpy(&strTemp[0], "T=", 2);
  osal_memcpy(&strTemp[2], temp, 2); 
   osal_memcpy(&strTemp[4], "H=", 2);
 osal_memcpy(&strTemp[6], humidity, 2);
/**
  if ( AF_DataRequest( &SampleApp_P2P_DstAddr, &SampleApp_epDesc,
                       SAMPLEAPP_P2P_CLUSTERID,
                       8,
                       (uint8 *)strTemp,
                       &SampleApp_TransID,
                       AF_DISCV_ROUTE,
                       AF_DEFAULT_RADIUS ) == afStatus_SUCCESS )
  {   
  }
  else
  {
  }
  HalLedBlink( HAL_LED_4, 4, 50, 100 ); //LED闪烁表示数据正在传输
}                        //放入tmpstr
                              //发送给协调器
(3)广播发送温度信息(经过替换)给风扇终端
     通过if  语句判断温湿度  替换后 通过广播发送出去
 if(t >=25)
    {
        uint8 val[2]="F1";
        if ( AF_DataRequest( &SampleApp_Periodic_DstAddr, &SampleApp_epDesc,
                       SAMPLEAPP_PERIODIC_CLUSTERID,        //通过广播发送数据
                       2,
                       val,
                       &SampleApp_TransID,
                       AF_DISCV_ROUTE,
                       AF_DEFAULT_RADIUS ) == afStatus_SUCCESS )
            {
            }
        else
            {
              // Error occurred in request to send.
            }




    }


3.风扇终端编程
分别烧入两个风扇,如果传入F1 风扇1号打开,如果传入F2 风扇2号打开;温度低于25度传入F0 关闭端口
(1)通过广播接收 消息处理函数
     osal_memcpy(buf, pkt->cmd.Data, 2); //复制数据到缓冲区中
     通过if语句判断温度
     如果温度过高,端口为0时 风扇开
 if(buf[0]=='F' && buf[1]=='1')      //判断收到的数据是否为"F1"      如果温度低于25度,端口为1 风扇关    
       {
           P1_3=0;   //打开风扇
            break;
        }
F0时关闭风扇
     


                      

一、设计的题目: 基于CC2530设计的智能风扇 二、设计目的 一是随着空调降温设备的频繁使用,全球气候不断变暖空调降温设备排放出的物质对环境的影响越来越大。二是人们在熟睡之后经常因为温度太低而感冒或者温度升高而不适,风扇相比空调更加适用于老人儿童和体质较弱的人使用。 通过物联网技术的智能风扇设计可以解决因为睡熟导致降温设备依旧运行工作,实现更加节能更加智能的控制。 二、设计要求 通过温度传感器对环境温度进行数据采集和语音控制模块来调节风速实现对风扇的智能控制,使风扇随温度变化来自动调节风力大小。 1: 实现语音控制,可以识别到语音命令并自动做出相应的工作; 2: 实现温度实时监测; 3: 实现通过实时温度来自动控制风扇转数; 4: 实现通电后可以进行风扇的开光和转数调节: 三、功能总结 采用DHT11温湿度传感器,采集环境温度,根据设置的温度阀值与采集的环境温度做对比,控制风扇的开关,风扇就是5V的散热风扇。 实现的功能总结如下: 1.按下开发板上的按键控制风扇的开关(LED灯的开关) 2.通过语音控制风扇的开关(LED灯的开关) 语音由语音模块进行识别。 3.在主函数里每500ms采集一次DHT11温度,然后通过OLED显示屏显示。 四、硬件介绍 语音识别模块采用: MR-LD3320 温湿度模块采用: DHT11 OLED采用0.96寸的SPI口OLED显示屏,分辨率是128x64。 资料包里包含了项目完整源代码,硬件资料手册、原理图、项目设计完整说明书等。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值