物联网传感器检测实验
/*------------------------------------------------------------------------------
* @文件名 : handle
* @描述 : 用户处理函数
* @作者 : 物联网项目组
* @日期 : 2023/04/01
* @版本 : V0.0.2
*******************************************************************************
功能介绍:
1、显示屏初始化显示;
2、检测光强值并显示
******************************************************************************/
#include "handle.h"
#include "gpio_api.h"
#include "lcd.h"
#include "stdio.h"
#include "string.h"
#include "icon_farm_co2_on.h"
/********************************************************************************
* 名 称:LCD_Display_Init
* 功 能:显示屏上电初始化显示
* 入口参数:无
* 返 回 值:无
* 说 明:无
* 调用方法:外部函数
********************************************************************************/
void LCD_Display_Init(void)
{
/*显示屏初始化界面*/
LCD_Init();
LCD_Fill(0,lcddev.height-20,lcddev.width,lcddev.height,BLUE);
LCD_Fill(0,0,lcddev.width,20,BLUE);
Gui_StrCenter(0,2,BLUE,BLUE," ",16,0);
Gui_StrCenter(0,40,BLUE,WHITE,"检测实验",24,1);
Gui_StrCenter(0,lcddev.height-18,BLUE,BLUE," ",16,0);
LCD_draw_bmp(96,120,48,gImage_icon_farm_co2_on); //光强图标显示
}
/********************************************************************************
* 名 称:CO2_Handle
* 功 能:二氧化碳检测处理函数
* 入口参数:无
* 返 回 值:无
* 说 明:无
* 调用方法:外部函数
********************************************************************************/
void CO2_Handle(void)
{
uint16_t CO2_value = 0; //二氧化碳值
uint16_t TVOC_value = 0;
float TVOC =0.0f;
char str[20]; //显示屏显示缓冲数组
static uint32_t tickstart;
if((HAL_GetTick() - tickstart) >= 1000) //1000ms检测一次
{
tickstart = HAL_GetTick();
memset(str,0,sizeof(str));
SGP30_Handle(&CO2_value,&TVOC_value);
TVOC=TVOC_value;
sprintf(str,"TVOC:%.2f ppb\r\n\r\n",TVOC);
printf("** TVOC:%.2f ppb\r\n\r\n",TVOC);
if(CO2_value > 300 && (CO2_value < 500))
{
sprintf(str,"二氧化碳浓度: %d",CO2_value);
// printf("** 读取二氧化碳传感器数据\r\n");
printf("** 二氧化碳浓度:%d ppm\r\n\r\n", CO2_value);
}
else
{
sprintf(str,"二氧化碳:---");
}
LCD_Fill(90,182,230,198,WHITE); //刷新显示
Show_Str(90,182,BLUE,WHITE,(uint8_t *)str,16,1); //显示CO2数值
led_toggle(LED1_PORT);
}
}
void Temp_Hum_Handle(void)
{
static float temp = 0; //温度值
static float hum = 0; //湿度值
static char str[20]; //显示屏显示缓冲数组
static uint32_t tickstart;
if((HAL_GetTick() - tickstart) >= 1000) //1000ms检测一次
{
tickstart = HAL_GetTick();
SHT30_read_result(&temp,&hum); //获取温湿度值
temp=(temp*9/5)+32;
LCD_Fill(90,182,200,182+16*2,WHITE); //刷新显示
printf(str,"Temperature:%0.1f华氏度",temp);
// /*SHT30温度测量范围以内才显示*/
// if(temp < 0.0f || temp > 55.0f)
// {
// sprintf(str,"Temperature:");
// }
// else
// {
// sprintf(str,"Temperature:%0.1f℃",temp);
// }
// Show_Str(75,182,BLUE,WHITE,(uint8_t *)str,16,1); //显示温度
/*SHT30湿度测量范围以内才显示*/
if(hum < 20.0f || hum > 90.0f)
{
sprintf(str,"Humidity:");
}
else
{
sprintf(str,"Humidity:%0.1f%%",hum);
}
Show_Str(90,198,BLUE,WHITE,(uint8_t *)str,16,1); //显示湿度
printf("** 读取温湿度传感器数据\r\n");
printf("** Temperature:%.1f华氏度\r\n", temp);
printf("** Humidity:%.1f%%\r\n\r\n", hum);
led_toggle(LED1_PORT);
}
}
/*******************************************************************************
* @文件名 : main
* @描述 : 光强传感器实验
* @作者 : 物联网项目组
* @日期 : 2020/01/15
* @版本 : V2.0.0
--------------------------------------------------------------------------------
功能介绍:
1. 检测BH1750光强
1、显示屏实时显示光强:xxlx
2、串口输出光强Illumination:xxlx
*******************************************************************************/
#include "main.h"
#include "usart_api.h"
#include "stm32l4xx_hal.h"
#include "gpio_api.h"
#include "handle.h"
/*****************************内部函数定义**************************************/
void SystemClock_Config(void);