Zigbee的CC2530与烟雾传感器

CC2530与烟雾传感器

众所周知:目前在市面的一些传感器,一般是引脚是(VCC,GND,DO,AO)还有的是(VCC GND,OUT)这些类型的,其中OUT类一般都是用来输出的,今天中在4个引脚的传感器:
大家应该都知道DO:数字量,AO:模拟量,所以有有两种方式去读引脚的值,我个人认为用DO是最简单的一种方式,这一期附上的代码是用ADC转换的也就是AO模拟量的方式:

#include "ioCC2530.h" 
#include "string.h"


typedef unsigned char uchar;
typedef unsigned int  uint;
typedef signed short int16;
typedef unsigned short uint16;

char TxBuf[5];
uint16 GasData;

uint16 ReadGasData( void );

/****************************************************************************
* 名    称: InitUart()
* 功    能: 串口初始化函数
* 入口参数: 无
* 出口参数: 无
****************************************************************************/
void InitUart(void)
{ 
  PERCFG = 0x00;           //外设控制寄存器 USART 0的IO位置:0为P0口位置1 
  P0SEL = 0x0c;            //P0_2,P0_3用作串口(外设功能)
  P2DIR &= ~0XC0;          //P0优先作为UART0
  
  U0CSR |= 0x80;           //设置为UART方式
  U0GCR |= 8;				       
  U0BAUD |= 59;           //波特率设为9600
  UTX0IF = 0;              //UART0 TX中断标志初始置位0
}

/****************************************************************************
* 名    称: UartSendString()
* 功    能: 串口发送函数
* 入口参数: Data:发送缓冲区   len:发送长度
* 出口参数: 无
****************************************************************************/
void UartSendString(char *Data, int len)
{
  uint i;
  
  for(i=0; i<len; i++)
  {
    U0DBUF = *Data++;
    while(UTX0IF == 0);
    UTX0IF = 0;
  }
}

/****************************************************************************
* 名    称: DelayMS()
* 功    能: 以毫秒为单位延时 16M时约为535,32M时要调整,系统时钟不修改默认为16M
* 入口参数: msec 延时参数,值越大延时越久
* 出口参数: 无
****************************************************************************/
void DelayMS(uint msec)
{  
  uint i,j;
  
  for (i=0; i<msec; i++)
    for (j=0; j<1070; j++);
}
/***********************************************************************************************************************************************
传感器的接法:
VCC-3.3v或5V
GND-GND
AO-P06
*/
uint16 ReadGasData( void )
{
  uint16 reading = 0;
  
  /* Enable channel */
  ADCCFG |= 0x40;
  
  /* writing to this register starts the extra conversion */
  ADCCON3 = 0x86;// AVDD5 引脚  00: 64 抽取率(7 位ENOB)  0110: AIN6
  
  /* Wait for the conversion to be done */
  while (!(ADCCON1 & 0x80));
  
  /* Disable channel after done conversion */
  ADCCFG &= (0x40 ^ 0xFF); //按位异或。如1010^1111=0101(二进制)
  
  /* Read the result */
  reading = ADCL;
  reading |= (int16) (ADCH << 8); 
  
  reading >>= 8;
  
  return (reading);
}

void main(void)
{
  CLKCONCMD &= ~0x40;         //设置系统时钟源为32MHZ晶振
  while(CLKCONSTA & 0x40);    //等待晶振稳定为32M
  CLKCONCMD &= ~0x47;         //设置系统主时钟频率为32MHZ  
  
  InitUart();                   //调置串口相关寄存器
  
  while(1)
  {
    GasData = ReadGasData();  //读取烟雾传感器引脚上的ad转换值,并没有换算成能表示烟雾浓度的值
    //演示如何使用2530芯片的AD功能,更具体在组网中给出
    
    //读取到的数值转换成字符串,供串口函数输出
    UartSendString("moniliang :\r\n",sizeof("moniliang :\r\n"));
    TxBuf[0] = GasData / 100 + '0';
    TxBuf[1] = GasData / 10%10 + '0';
    TxBuf[2] = GasData % 10 + '0';
    TxBuf[3] = '\r';
    TxBuf[4] = '\n';
    
    UartSendString(TxBuf, 5); //想串口助手送出数据,波特率是115200      
    DelayMS(2000);            //延时函数
  }
}

结果:(用打火机在传感器的触口放气就可以看到明显的变化)
串口输出的值为:

在这里插入图片描述

  • 14
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
本文首发于DF创客社区,作者:利刃1979 原文链接:http://mc.dfrobot.com.cn/thread-297112-1-1.html 1 作品介绍 1.1 作品功能 本作品借助物联网技术开发了一种烟雾报警系统,用于监控火灾、煤气泄漏等不安全事故的发生。该烟雾报警系统由无线传感器网络节点和监控系统两个部分组成。无线传感器网络节点由多个感知模块组成,用于实时检测多个监控区域的环境参数(如烟雾气体浓度、一氧化碳浓度等),并通过传感器网络将所有数据传输至监控系统。监控系统由下位机、PC上位机、手机APP三个部分组成:下位机安装在用户监控场所,通过无线传感器网络实时接收传感器节点的环境参数,并利用ZigBee网络和WIFI网络将监控数据分别发送至监控中心的PC上位机和用户手机的APP,若被监控的区域发生火灾、煤气泄漏等安全事故,三者将同时报警,从而极大程度地减低了无法获取安全事故发生的问题的风险,能够第一时间对受灾的地点进行抢救。 本作品可用于普通家庭住宅用户安全事故的监控,一旦发生安全事故,家庭住宅的下位机、小区物业部门安装的PC上位机、住户手机的APP三者将同时发出报警信号,能够第一时间对事故地点进行抢救。1.2 作品创新点 本作品的创新点在于: 1、通过下位机、PC上位机、手机APP三种终端报警的方式降低无法第一时间获取安全事故发生的风险,能够第一时间对事故地点进行抢救; 2、利用无线传感器网络的优势,将监控传感器和监控系统分离成独立的模块,实现了增加监控区域只需安装独立的传感器节点的特性,极大程度地提升了系统的可扩展性,同时使得系统具有较低的扩展成本。 救;同时,本作品可用于酒店、办公楼、商业广场、工厂操作间等需要大面积多区域监控的场所。 2 准备事项 2.1 作品原理 如图2.1所示,本作品由无线传感器网络节点和监控系统两个部分组成。 无线传感器网络节点对监控点的环境参数进行采集并处理,通过无线通信模块将处理后的数据发送至下位机。 监控系统由下位机、PC上位机和手机APP三个部分组成。下位机对无线传感器网络节点传输的环境参数进行分析,同时在LCD进行显示,并通过WIFI和ZigBee网络将数据分别发送至手机APP和PC上位机;若接收的环境参数数据满足安全事故发生的条件,下位机将通过语音模块发出报警提醒,同时手机APP和PC上位机也将发出报警信号;若用户发现发出的报警信号为误触信号,用户可通过按键或者语音识别模块关闭报警。 图2.1 作品系统设计框图 2.2 作品设计 2.2.1 主控制器作品传感器节点采用STM32F103C8T6型号的单片机,下位机采用STM32F103RCT6型号的单片机。 2.1.2 传感器 传感器模块选用了市面上常见也是应用较为广泛的两种传感器,分别是烟雾浓度传感器MQ-2和一氧化碳浓度传感器MQ-7。 MQ-2可用于家庭和工厂的气体泄漏监测装置,适宜于液化气、苯、烷、酒精、氢气、烟雾等的探测。故因此,MQ-2可以准确来说是一个多种气体探测器MQ-2的探测范围极其的广泛。它的优点:灵敏度高、响应快、稳定性好、寿命长、驱动电路简单。MQ-2型烟雾传感器属于二氧化锡半导体气敏材料,属于表面离子式N型半导体。处于200至300摄氏度时,二氧化锡吸附空气中的氧,形成氧的负离子吸附,使半导体中的电子密度减少,从而使其电阻值增加。当与烟雾接触时,如果晶粒间界处的势垒收到烟雾的调至而变化,就会引起表面导电率的变化。利用这一点就可以获得这种烟雾存在的信息,烟雾的浓度越大,导电率越大,输出电阻越低,则输出的模拟信号就越大。 MQ-7是一氧化碳气体传感器,所使用的气敏材料是在清洁空气中电导率较低的二氧化锡(SnO2),采用高低温循环检测方式低温(1.5V加热)检测一氧化碳,传感器的电导率随空气中一氧化碳气体浓度增加而增大,高温(5.0V加热)清洗低温时吸附的杂散气体。使用简单的电路即可将电导率的变化,转换为与该气体浓度相对应的输出信号。MQ-7气体传感器对一氧化碳的灵敏度高,这种传感器可检测多种含一氧化碳的气体,是一款适合多种应用的低成本传感器。 MQ-2、MQ-7模块的实物图片如图2.2所示。 图2.2 MQ-2与MQ-7传感器实物图片 2.2.3 无线传输模块 无线传输模块的功能是将传感器采集到的监测数据发送到监控点,本作品采用NRF24L01 2.4GHz无线传输模块。NRF24L01是一款工作在2.4至2.5GHz世界通用ISM频段的单片无线收发器芯片。无线收发器包括:频率发生器、增强型SchockBurstTM模式控制器、功率放大器、晶体振荡器、调制器、解调器。输出功率、频道选择和协议的设置可以通过SPI接口进行设置。极低的电流消耗,当工作在发射模式下发射功率为-6dBm时电流消耗为9mA接收模式
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值