聚丰项目 > 基于zigbee技术的空气质量监控系统

基于zigbee技术的空气质量监控系统

空气质量监控系统基于IDT气体流量传感器ZMOD4410模块而设计。主控芯片采用高性能意法半导体公司Cortex-M4系列微控制器STM32F407ZET6,并采用CC2650模块无线2.4GHz作为zigbee无线传输功能,并根据气体传感器监测数据做出预警。 zigbee技术是一种低功耗、短距离、低成本的无线通信技术,其PHY层和MAC层协议为802.15.4标准协议,网络层由zigbee技术联盟制订,可以提供灵活的组网方式。 本项目采用模块化方案设计,主要构成系统的模块有STM32F407ZET6主控、CC2650模块、底板、传感器模块等。便于扩展各类传感器模块,实现家庭燃气、水、温湿度、空气质量等的实时在线监测功能。软件采用开源嵌入式实时操作系统RT-Thread,具有组件丰富、可靠性高等诸多优点。

大雨淅淅 大雨淅淅

分享
3 喜欢这个项目
团队介绍

大雨淅淅 大雨淅淅

团队成员

严敏 软件工程师

张影影 队长

分享
项目简介
空气质量监控系统基于IDT气体流量传感器ZMOD4410模块而设计。主控芯片采用高性能意法半导体公司Cortex-M4系列微控制器STM32F407ZET6,并采用CC2650模块无线2.4GHz作为zigbee无线传输功能,并根据气体传感器监测数据做出预警。 zigbee技术是一种低功耗、短距离、低成本的无线通信技术,其PHY层和MAC层协议为802.15.4标准协议,网络层由zigbee技术联盟制订,可以提供灵活的组网方式。 本项目采用模块化方案设计,主要构成系统的模块有STM32F407ZET6主控、CC2650模块、底板、传感器模块等。便于扩展各类传感器模块,实现家庭燃气、水、温湿度、空气质量等的实时在线监测功能。软件采用开源嵌入式实时操作系统RT-Thread,具有组件丰富、可靠性高等诸多优点。
硬件说明

1、电源模块

过分析,此项目所需功耗约为2W,电源模块采用宽输入电压,低噪声,总共有3个稳压芯片:U15/U16/U18,DC_IN用于外部直流电源输入,经过U15DC-DC芯片转换为5V电源输出,其中D4是防反接二极管,避免外部直流电源极性搞错的时候,烧坏开发板。K1为开发板的总电源开关,F11000ma自恢复保险丝,用于保护USB

2、STM32F407ZET6主控模块

本项目选择的是STM32F407ZGT6作为MCU,该芯片是STM32F407里面配置非常强大的了,它拥有的资源包括:集成FPUDSP指令,并具有192KB SRAM1024KB FLASH1216位定时器、232位定时器、2DMA控制器(共16个通道)、3SPI2个全双工I2S3IIC6个串口、2USB(支持HOST /SLAVE)、2CAN312ADC212DAC1RTC(带日历功能)、1SDIO接口、1FSMC接口、110/100M以太网MAC控制器、1个摄像头接口、1个硬件随机数生成器、以及112个通用IO口等。该芯片的配置十分强悍,很多功能相对STM32F1来说进行了重大改进,比如FSMC的速度,F4刷屏速度可达3300W像素/秒,而F1的速度则只有500W左右。

STM32F407ZGT6主控模块外接LCD模块、电源模块、3G模块、CC2650模块等,作为整个系统核心处理部分,通过UART外接CC2650模块,将收集到的数据做进一步处理,将收到的实时数据处理后显示在LCD显示屏上,根据eco2、IAQ的值的变化,如果超过预警值将进行报警,提醒用户做出反应,并可以通过3G模块将告警信息传输到手机上。

22.jpg

3、CC2650模块

33.jpg

4、LCD模块

LCD接口连接在STM32F407ZGT6FSMC总线上面,可以显著提高LCD的刷屏速度。LCD模块主要用于显示气体传感器传输过来的eco2数值和IAQ,便于直观反映。

44.jpg

5ZMOD4410模块

气体传感器模块采用IDT 公司高性能ZMOD4410模块,实现对气体流量的采样,工作电流仅为30mA(5V 电压),其精度达到2%,具有数字I2C 接口和模拟输出接口,是实现气体流量检测的最佳选择。本项目采用排线外接CC2650模块的IIC接口,将监测数据传给cc2650,然后通过无线方式传输到与STM32连接的CC2650模块上,从而达到远程监控的功能

55.jpg


软件说明

本项目用到的模块比较多,软件功能主要集中在是STM32407处理模块、CC2650无线传输模块、ZMOD4410气体监测模块上。其中ZMOD4410气体监测模块由IDT厂家给出了API开发包,将给出的.a文件加入到STM32407处理模块程序的编译中,多收到的气体传感器数据进行处理,经过转换获取可显示ECO2、IAQ值,若使用裸机程序编写,将花费大量时间安排各模块工作流程,以保证各模块之间无缝配合。因此本项目采用嵌入式RTOS 进行程序设计,各个软件功能采用模块化、多任务设计。

1、    软件整体设计方案

  设计采用开源嵌入式系统RT-Thread 作为运行基本系统。在此基础上增加各模块使用的驱动和线程函数,系统每10ms 进行一次进行线程调度,保证系统实时性。软件整体设计流程如下图。


新建 Microsoft Visio 绘图 (3).jpg

2、    CC2650无线传输模块软件设计方案


新建 Microsoft Visio 绘图 (4).jpg

// 初始化GAS

void Init_GAS(void)

{

  P1SEL &= ~0xc0; //作为普通 IO 口

  SDA_OUT();

  SCL_OUT(); 

  Write_GAS(PWR_MGMT_1, 0x00);//电源管理,典型值:0x00(正常启用)

  Write_GAS (SMPLRT_DIV, 0x07);

  Write_GAS (CONFIG, 0x06);

  Write_GAS (GYRO_CONFIG, 0x18);

  Write_GAS (ACCEL_CONFIG, 0x01); 

}

 

//连续读出GAS内部数据

void Multiple_read_GAS(void)

{   

  char BUF[12]; //接收数据缓存区  

  BUF[0]= ead_GAS(ACCEL_XOUT_H);

  BUF[1]= Read_GAS (ACCEL_XOUT_L);

  BUF[2]= Read_GAS (ACCEL_YOUT_H);

  BUF[3]= Read_GAS (ACCEL_YOUT_L);

  BUF[4]= Read_GAS (ACCEL_ZOUT_H);

  BUF[5]= Read_GAS (ACCEL_ZOUT_L);

  

  BUF[6]= Read_GAS (GYRO_XOUT_H);

  BUF[7]= Read_GAS (GYRO_XOUT_L);

  BUF[8]= Read_GAS (GYRO_YOUT_H);

  BUF[9]= Read_GAS (GYRO_YOUT_L);

  BUF[10]= Read_GAS (GYRO_ZOUT_H);

  BUF[11]= Read_GAS (GYRO_ZOUT_L);

  

  accX=(BUF[0]<<8)|BUF[1]; 

  accY=(BUF[2]<<8)|BUF[3]; 

  accZ=(BUF[4]<<8)|BUF[5]; 

  graX=(BUF[6]<<8)|BUF[7];

  graY=(BUF[8]<<8)|BUF[9];

  graZ=(BUF[10]<<8)|BUF[11];

}

 


               zigbee终端设备软件方案

3、    系统初始化

board_init(); //开发板初始化

uart_init(115200);   //初始化串口波特率115200

LCD_Init(); //LCD显示初始化

alarm_init();//警报初始化

4、    LCD显示

void LCD_ShowString(u16 x,u16 y,u16 width,u16 height,u8 size,u8 *p)

{        

    u8 x0=x;

    width+=x;

    height+=y;

    while((*p<='~')&&(*p>=' '))//ÅжÏÊDz»ÊÇ·Ç·¨×Ö·û!

    {      

        if(x>=width){x=x0;y+=size;}

        if(y>=height)break;//Í˳ö

        LCD_ShowChar(x,y,*p,size,0);

        x+=size/2;

        p++;

    } 

}

66.jpg

5、    预警模块

void alarm(void)

{

GPIO_ResetBits(GPIOF,GPIO_Pin_9);

GPIO_ResetBits(GPIOF,GPIO_Pin_8);

delay_ms(300);                

GPIO_SetBits(GPIOF,GPIO_Pin_9);

GPIO_SetBits(GPIOF,GPIO_Pin_8);

delay_ms(300);            

}                   

   由于条件限制,没能将风机等加上去,只是通过板子上的蜂鸣器报警达到预警效果,如果室内环境变差,可以通过打开风机进行环境空气流转,达到M2M的效果


演示效果

气体传感器收集数据通过IIC上传到zigbee终端模块,zigbee终端模块将数据通过2.4G发送到zigebee协调器,zigbee协调器通过UART将数据上传到主控模块,主控将数据进行转换,通过LCD显示ECO2、IAQ值,如果值不正常说明空气质量问题,通过蜂鸣器发出警报,并通过3G模块将数据发送到个人手机上

附件

(0.75 MB)下载

评论区(0 )