这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 有奖活动 » 空气质量检测器设计与实现

共4条 1/1 1 跳转至

空气质量检测器设计与实现

菜鸟
2026-01-28 23:09:25     打赏

伴随着生活质量的提高,人们对空气质量的要求也开始提升,这里就介绍一种空气质量检测器的实现方法。

要进行空气质量检测就离不开相应的检测器配合,这里采用的是一款体积小巧的功能模块,其外观见图1所示。

image.png

1 功能模块外观

该模块共有4个引脚,是以串口通信的方式来工作,其引脚排列如图2所示。

image.png

2 引脚功能

该模块所依照的通信协议要求见图3所示,其检测到数据结构见图4所示。

image.png

3 通信参数

image.png

4 检测值数据结构

需要说明的是:B1B2的内容是模块的固定地址,B9则是检测结果的校验码,其内容等于B1B7的数据之和,只占用一个字节空间。该模块的检测值是以气体浓度为单位,即mg/m3,精度为0.001

为实现空气质量的检测及显示,它以RA6E2 地奇星开发板为控制核心,以1.8TFT显示屏为显示器件,并通过扩展板进行连接。

为此,需要以RASC来配置所涉及的引脚,串口的参数配置见图5所示。

image.png

参数配置

受扩展板引脚排列顺序的制约,其不便以SPI的方式来驱动TFT显示屏,故以软件模拟的方式来驱动。

为输出高低电平,所进行的定义语句为:

#define LCD_CS_CLR   R_IOPORT_PinWrite(&IOPORT_CFG_CTRL, BSP_IO_PORT_00_PIN_13, BSP_IO_LEVEL_LOW)

#define LCD_CS_SET   R_IOPORT_PinWrite(&IOPORT_CFG_CTRL, BSP_IO_PORT_00_PIN_13, BSP_IO_LEVEL_HIGH)

#define LCD_DC_CLR   R_IOPORT_PinWrite(&IOPORT_CFG_CTRL, BSP_IO_PORT_00_PIN_14, BSP_IO_LEVEL_LOW)

#define LCD_DC_SET   R_IOPORT_PinWrite(&IOPORT_CFG_CTRL, BSP_IO_PORT_00_PIN_14, BSP_IO_LEVEL_HIGH)

#define LCD_RST_CLR  R_IOPORT_PinWrite(&IOPORT_CFG_CTRL, BSP_IO_PORT_05_PIN_00, BSP_IO_LEVEL_LOW)

#define LCD_RST_SET  R_IOPORT_PinWrite(&IOPORT_CFG_CTRL, BSP_IO_PORT_05_PIN_00, BSP_IO_LEVEL_HIGH)

#define LCD_SDI_CLR  R_IOPORT_PinWrite(&IOPORT_CFG_CTRL, BSP_IO_PORT_02_PIN_07, BSP_IO_LEVEL_LOW)

#define LCD_SDI_SET  R_IOPORT_PinWrite(&IOPORT_CFG_CTRL, BSP_IO_PORT_02_PIN_07, BSP_IO_LEVEL_HIGH)

#define LCD_SCK_CLR  R_IOPORT_PinWrite(&IOPORT_CFG_CTRL, BSP_IO_PORT_03_PIN_02, BSP_IO_LEVEL_LOW)

#define LCD_SCK_SET  R_IOPORT_PinWrite(&IOPORT_CFG_CTRL, BSP_IO_PORT_03_PIN_02, BSP_IO_LEVEL_HIGH)

对显示屏的初始化函数为:

void Lcd_Init(void)
{ 
unsigned int i; 
Lcd_Reset(); .
Lcd_WriteIndex(0x11); 
R_BSP_SoftwareDelay(120, BSP_DELAY_UNITS_MILLISECONDS);
Lcd_WriteIndex(0xB1); 
Lcd_WriteData(0x01); 
Lcd_WriteData(0x2C); 
Lcd_WriteData(0x2D); 
Lcd_WriteIndex(0xB2); 
Lcd_WriteData(0x01); 
Lcd_WriteData(0x2C); 
Lcd_WriteData(0x2D); 
Lcd_WriteIndex(0xB3); 
Lcd_WriteData(0x01); 
Lcd_WriteData(0x2C); 
Lcd_WriteData(0x2D); 
Lcd_WriteData(0x01); 
Lcd_WriteData(0x2C); 
Lcd_WriteData(0x2D); 
Lcd_WriteIndex(0xB4);  
Lcd_WriteData(0x07); 
Lcd_WriteIndex(0xC0); 
Lcd_WriteData(0xA2); 
Lcd_WriteData(0x02); 
Lcd_WriteData(0x84); 
Lcd_WriteIndex(0xC1); 
Lcd_WriteData(0xC5); 
Lcd_WriteIndex(0xC2); 
Lcd_WriteData(0x0A); 
Lcd_WriteData(0x00); 
Lcd_WriteIndex(0xC3); 
Lcd_WriteData(0x8A); 
Lcd_WriteData(0x2A); 
Lcd_WriteIndex(0xC4); 
Lcd_WriteData(0x8A); 
Lcd_WriteData(0xEE);  
Lcd_WriteIndex(0xC5); 
Lcd_WriteData(0x0E);  
Lcd_WriteIndex(0x36);  
Lcd_WriteData(0xC0); 
Lcd_WriteIndex(0xe0); 
Lcd_WriteData(0x0f); 
Lcd_WriteData(0x1a); 
Lcd_WriteData(0x0f); 
Lcd_WriteData(0x18); 
Lcd_WriteData(0x2f); 
Lcd_WriteData(0x28); 
Lcd_WriteData(0x20); 
Lcd_WriteData(0x22); 
Lcd_WriteData(0x1f); 
Lcd_WriteData(0x1b); 
Lcd_WriteData(0x23); 
Lcd_WriteData(0x37); 
Lcd_WriteData(0x00);  
Lcd_WriteData(0x07); 
Lcd_WriteData(0x02); 
Lcd_WriteData(0x10); 
Lcd_WriteIndex(0xe1); 
Lcd_WriteData(0x0f); 
Lcd_WriteData(0x1b); 
Lcd_WriteData(0x0f); 
Lcd_WriteData(0x17); 
Lcd_WriteData(0x33); 
Lcd_WriteData(0x2c); 
Lcd_WriteData(0x29); 
Lcd_WriteData(0x2e); 
Lcd_WriteData(0x30); 
Lcd_WriteData(0x30); 
Lcd_WriteData(0x39); 
Lcd_WriteData(0x3f); 
Lcd_WriteData(0x00); 
Lcd_WriteData(0x07); 
Lcd_WriteData(0x03); 
Lcd_WriteData(0x10);  
Lcd_WriteIndex(0x2a);
Lcd_WriteData(0x00);
Lcd_WriteData(0x00);
Lcd_WriteData(0x00);
Lcd_WriteData(0x7f);
Lcd_WriteIndex(0x2b);
Lcd_WriteData(0x00);
Lcd_WriteData(0x00);
Lcd_WriteData(0x00);
Lcd_WriteData(0x9f); 
Lcd_WriteIndex(0xF0);   
Lcd_WriteData(0x01); 
Lcd_WriteIndex(0xF6); 
Lcd_WriteData(0x00);  
Lcd_WriteIndex(0x3A); 
Lcd_WriteData(0x05);   
Lcd_WriteIndex(0x29);  
}

为进行汉字显示,其提取字模时的方式如图6所示。

image.png

图6 字模提取方式

针对所提取的字模,相应的显示函数为:

image.png

在此基础上,实现空气质量检测与显示的主程序为:

image.png

经程序的编译及下载,其测试效果如图7所示,说明效果符合预期要求。

image.png

7  检测效果

演示视频:

https://www.bilibili.com/video/BV1YXzXBNE6H/?vd_source=f302fc0cc3a0425328db53a3b92082ca





  






关键词: 空气质量检测    

高工
2026-01-31 23:06:00     打赏
2楼

界面用的LKD_GUI?

还有,个人建议,视频可以做一些差异化,现在只能看出读到了数据,至于数据准不准,或者说在环境明显变化时能不能准确或者快速地识别,完全看不出


专家
2026-02-02 22:27:21     打赏
3楼

这个传感器是主动、连续发送数据的吗?


菜鸟
2026-02-03 00:51:17     打赏
4楼

它确是以主动的方式连续发送数据的,无发送请求指令的需求。


共4条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]