2024-12-01 13:49:43 +08:00
|
|
|
|
/***
|
|
|
|
|
* @Author: mbw
|
|
|
|
|
* @Date: 2024-11-30 16:46:31
|
|
|
|
|
* @LastEditors: mbw && 1600520629@qq.com
|
2024-12-04 18:55:59 +08:00
|
|
|
|
* @LastEditTime: 2024-12-04 16:18:21
|
2024-12-01 13:49:43 +08:00
|
|
|
|
* @FilePath: \ble_bjq_ch303rct6_ml307\bsp\inc\bsp_mq.h
|
|
|
|
|
* @Description:
|
|
|
|
|
* @
|
|
|
|
|
* @Copyright (c) 2024 by ${git_name_email}, All Rights Reserved.
|
|
|
|
|
*/
|
|
|
|
|
/*
|
|
|
|
|
* @Author : stark1898y 1658608470@qq.com
|
|
|
|
|
* @Date : 2023-08-02 11:49:34
|
|
|
|
|
* @LastEditors : stark1898y 1658608470@qq.com
|
|
|
|
|
* @LastEditTime : 2024-06-19 09:42:35
|
|
|
|
|
* @FilePath : \wuxi_alarm_ch32v303rct6_rtt\bsp\inc\bsp_mq.h
|
|
|
|
|
* @Description :
|
|
|
|
|
*
|
|
|
|
|
* Copyright (c) 2023 by yzy, All Rights Reserved.
|
|
|
|
|
*/
|
|
|
|
|
#ifndef __BSP_MQ_H__
|
|
|
|
|
#define __BSP_MQ_H__
|
|
|
|
|
|
|
|
|
|
#include "board.h"
|
|
|
|
|
|
|
|
|
|
// MQ采样间隔
|
|
|
|
|
#define MQ_SAMPLING_INTERVAL_MS (100U)
|
|
|
|
|
|
|
|
|
|
#define SENSOR_SAMPLING_TIMS (5U)
|
|
|
|
|
|
|
|
|
|
// MQ采样时间窗口
|
|
|
|
|
#define MQ_SAMPLING_S (uint8_t)(3U)
|
|
|
|
|
|
|
|
|
|
// 5s 50个点 采样次数
|
|
|
|
|
#define MQ_SAMPLING_TIMS (uint16_t)((1000 / MQ_SAMPLING_INTERVAL_MS) * MQ_SAMPLING_S)
|
|
|
|
|
|
|
|
|
|
// MQ_SAMPLING_TIMS
|
|
|
|
|
#define MQ_THRESHOLD_NORMAL_TIMS (uint16_t)((MQ_SAMPLING_TIMS / MQ_SAMPLING_S) * (MQ_SAMPLING_S * 0.7))
|
|
|
|
|
#define MQ_THRESHOLD_ALARM_TIMS (uint16_t)((MQ_SAMPLING_TIMS / MQ_SAMPLING_S) * (MQ_SAMPLING_S * 0.7))
|
|
|
|
|
#define MQ_THRESHOLD_FAULT_TIMS (uint16_t)((MQ_SAMPLING_TIMS / MQ_SAMPLING_S) * (MQ_SAMPLING_S * 0.7))
|
|
|
|
|
|
|
|
|
|
// MQ传感器实际电压要放大
|
|
|
|
|
#define MQ_VOLTAGE_RATIO (1.74F)
|
|
|
|
|
|
|
|
|
|
// adc voltage 1000x
|
2024-12-05 16:57:19 +08:00
|
|
|
|
#define MQ_VOLTAGE_HIGH_LIMIT (4095U)
|
2024-12-01 13:49:43 +08:00
|
|
|
|
#define MQ_VOLTAGE_LOW_LIMIT (100U)
|
|
|
|
|
|
|
|
|
|
#define MQ_VOLTAGE_ALARM_DEFAULT (uint16_t)(2500U)
|
|
|
|
|
// 甲烷 5 VOL% = 50,000 ppm = 100 LEL; 1 LEL = 500 ppm
|
|
|
|
|
// 丙烷 2.2 VOL% = 22,000 ppm = 100 %LEL; 1 LEL = 220 ppm; 8 LEL = 1760 ppm; 10 LEL = 2200 ppm;
|
|
|
|
|
|
|
|
|
|
#define MQ_END_OF_LIFE_TIMS_DAYS (uint16_t)(365 * 5 + 30 * 3)
|
|
|
|
|
|
2024-12-04 18:55:59 +08:00
|
|
|
|
#define GAS_SNESOR_THREAD_STACK_SIZE (1024)
|
2024-12-01 13:49:43 +08:00
|
|
|
|
#define GAS_SENSOR_THREAD_PRIORITY 9
|
|
|
|
|
#define GAS_SENSOR_THREAD_TIMESLICE 5
|
|
|
|
|
|
|
|
|
|
#define MQ_EVENT_NORMAL_FLAG (1 << 0)
|
|
|
|
|
#define MQ_EVENT_ALARM_FLAG (1 << 1)
|
|
|
|
|
#define MQ_EVENT_END_OF_LIFE_FLAG (1 << 2)
|
|
|
|
|
#define MQ_EVENT_OPEN_CIRCUIT_FLAG (1 << 3)
|
|
|
|
|
#define MQ_EVENT_SHORT_CIRCUIT_FLAG (1 << 4)
|
|
|
|
|
#define MQ_EVENT_CALIBRATION_FLAG (1 << 5)
|
|
|
|
|
#define MQ_EVENT_FAULT_FLAG (1 << 6)
|
|
|
|
|
|
|
|
|
|
#define MQ_EVENT_TO_BE_CALIB_FLAG (1 << 7)
|
|
|
|
|
|
|
|
|
|
extern struct rt_event mq_event;
|
|
|
|
|
|
|
|
|
|
typedef struct __attribute__((packed))
|
|
|
|
|
{
|
|
|
|
|
uint32_t expiration_seconds; // 传感器到期时间,s
|
|
|
|
|
uint16_t alarm_value; // 报警器阈值
|
|
|
|
|
|
|
|
|
|
uint8_t status_buffer[MQ_SAMPLING_TIMS]; // 采样缓存数组
|
|
|
|
|
|
|
|
|
|
uint8_t detection_flag; // 实时检测的标志
|
|
|
|
|
|
|
|
|
|
uint8_t end_of_life; // 寿命到期
|
|
|
|
|
uint8_t last_life; // 上次状态
|
|
|
|
|
uint8_t to_be_calib; // 待标定
|
|
|
|
|
}TsSensor_t;
|
|
|
|
|
extern TsSensor_t Sensor_device;
|
|
|
|
|
|
|
|
|
|
typedef enum
|
|
|
|
|
{
|
|
|
|
|
kSensorNormal = 0,
|
|
|
|
|
kSensorAlarm = 1,
|
|
|
|
|
kSensorFault,
|
|
|
|
|
kSensorEndOfLife,
|
|
|
|
|
kSensorAbnormal,
|
|
|
|
|
} TeH308Status;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int BSP_MQ_Init(void);
|
|
|
|
|
uint16_t Get_Gas_VoltageInt1000x(void);
|
|
|
|
|
uint8_t IS_EndOfLife(void);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endif // !__BSP_MQ_H__
|