start of O3 code
This commit is contained in:
parent
4bf6dcb620
commit
411db1b7d4
|
@ -52,6 +52,7 @@ extern "C" {
|
||||||
#define H2S_USART USART5
|
#define H2S_USART USART5
|
||||||
#define CO2_USART USART6
|
#define CO2_USART USART6
|
||||||
#define LORA_USART USART8
|
#define LORA_USART USART8
|
||||||
|
#define O3_USART USART6
|
||||||
|
|
||||||
#define NH3_BIT (1 << 0)
|
#define NH3_BIT (1 << 0)
|
||||||
#define H2S_BIT (1 << 1)
|
#define H2S_BIT (1 << 1)
|
||||||
|
@ -59,7 +60,9 @@ extern "C" {
|
||||||
#define CH2O_BIT (1 << 3)
|
#define CH2O_BIT (1 << 3)
|
||||||
#define CO2_BIT (1 << 4)
|
#define CO2_BIT (1 << 4)
|
||||||
#define LORA_BIT (1 << 5)
|
#define LORA_BIT (1 << 5)
|
||||||
#define BIT_ALL (NH3_BIT | H2S_BIT | PM25_BIT | CH2O_BIT | CO2_BIT | LORA_BIT )
|
#define O3_BIT (1 << 6)
|
||||||
|
|
||||||
|
#define BIT_ALL (NH3_BIT | H2S_BIT | PM25_BIT | CH2O_BIT | CO2_BIT | LORA_BIT | O3_BIT)
|
||||||
|
|
||||||
extern volatile uint8_t SENSOR_CTRL;
|
extern volatile uint8_t SENSOR_CTRL;
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
#define PM2D5_DATA_LENGTH 32
|
#define PM2D5_DATA_LENGTH 32
|
||||||
#define CH2O_DATA_LENGTH 9
|
#define CH2O_DATA_LENGTH 9
|
||||||
#define CO2_DATA_LENGTH 9
|
#define CO2_DATA_LENGTH 9
|
||||||
|
#define O3_DATA_LENGTH 9
|
||||||
|
|
||||||
|
|
||||||
enum DEVICE_TYPE
|
enum DEVICE_TYPE
|
||||||
|
@ -21,6 +22,7 @@ enum DEVICE_TYPE
|
||||||
PM25_TYPE,
|
PM25_TYPE,
|
||||||
CH2O_TYPE,
|
CH2O_TYPE,
|
||||||
CO2_TYPE,
|
CO2_TYPE,
|
||||||
|
O3_TYPE
|
||||||
};
|
};
|
||||||
typedef struct sensor_parse_control_st{
|
typedef struct sensor_parse_control_st{
|
||||||
//osSemaphoreId recvBinarySemHandle;
|
//osSemaphoreId recvBinarySemHandle;
|
||||||
|
@ -41,6 +43,7 @@ typedef struct
|
||||||
float nh3;
|
float nh3;
|
||||||
float h2s;
|
float h2s;
|
||||||
float ch2o;
|
float ch2o;
|
||||||
|
int o3;
|
||||||
int co2;
|
int co2;
|
||||||
int tvoc;
|
int tvoc;
|
||||||
int pm25;
|
int pm25;
|
||||||
|
@ -60,6 +63,9 @@ typedef struct
|
||||||
|
|
||||||
uint8_t co21;
|
uint8_t co21;
|
||||||
uint8_t co22;
|
uint8_t co22;
|
||||||
|
|
||||||
|
uint8_t o31;
|
||||||
|
uint8_t o32;
|
||||||
|
|
||||||
uint8_t tvoca;
|
uint8_t tvoca;
|
||||||
uint8_t tvocb;
|
uint8_t tvocb;
|
||||||
|
@ -80,6 +86,7 @@ extern sensor_parse_ctrl_t h2s;
|
||||||
extern sensor_parse_ctrl_t co2;
|
extern sensor_parse_ctrl_t co2;
|
||||||
extern sensor_parse_ctrl_t pm25;
|
extern sensor_parse_ctrl_t pm25;
|
||||||
extern sensor_parse_ctrl_t ch2o;
|
extern sensor_parse_ctrl_t ch2o;
|
||||||
|
extern sensor_parse_ctrl_t o3;
|
||||||
|
|
||||||
extern SensorDataTypeDef sensorData;
|
extern SensorDataTypeDef sensorData;
|
||||||
|
|
||||||
|
|
|
@ -49,7 +49,7 @@
|
||||||
<InvalidFlash>1</InvalidFlash>
|
<InvalidFlash>1</InvalidFlash>
|
||||||
</TargetStatus>
|
</TargetStatus>
|
||||||
<OutputDirectory>AirQuality\</OutputDirectory>
|
<OutputDirectory>AirQuality\</OutputDirectory>
|
||||||
<OutputName>AirQuality</OutputName>
|
<OutputName>STS_E2_9IN1</OutputName>
|
||||||
<CreateExecutable>1</CreateExecutable>
|
<CreateExecutable>1</CreateExecutable>
|
||||||
<CreateLib>0</CreateLib>
|
<CreateLib>0</CreateLib>
|
||||||
<CreateHexFile>1</CreateHexFile>
|
<CreateHexFile>1</CreateHexFile>
|
||||||
|
|
|
@ -142,6 +142,7 @@ int main(void)
|
||||||
InitSonsorCtrlData(&ch2o, CH2O_DATA_LENGTH, CH2O_TYPE);
|
InitSonsorCtrlData(&ch2o, CH2O_DATA_LENGTH, CH2O_TYPE);
|
||||||
InitSonsorCtrlData(&nh3, NH3_DATA_LENGTH, NH3_TYPE);
|
InitSonsorCtrlData(&nh3, NH3_DATA_LENGTH, NH3_TYPE);
|
||||||
InitSonsorCtrlData(&h2s, H2S_DATA_LENGTH, H2S_TYPE);
|
InitSonsorCtrlData(&h2s, H2S_DATA_LENGTH, H2S_TYPE);
|
||||||
|
InitSonsorCtrlData(&o3, O3_DATA_LENGTH, O3_TYPE);
|
||||||
|
|
||||||
UsartUserConfig();
|
UsartUserConfig();
|
||||||
|
|
||||||
|
@ -204,6 +205,14 @@ int main(void)
|
||||||
AnalysisSensorData(&pm25);
|
AnalysisSensorData(&pm25);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(SENSOR_CTRL & O3_BIT)
|
||||||
|
{
|
||||||
|
SENSOR_CTRL &= ~O3_BIT;
|
||||||
|
ReadSensorData(&o3);
|
||||||
|
AnalysisSensorData(&o3);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if(SENSOR_CTRL & LORA_BIT)
|
if(SENSOR_CTRL & LORA_BIT)
|
||||||
{
|
{
|
||||||
SENSOR_CTRL &= ~LORA_BIT;
|
SENSOR_CTRL &= ~LORA_BIT;
|
||||||
|
|
|
@ -27,11 +27,18 @@ const uint8_t cmd_CH2O_duqu[9] = {0xFF,0x01,0x86,0x00,0x00,0x00,0x00,0x00
|
||||||
const uint8_t cmd_CH2O_beidong[9] = {0xFF,0x01,0x78,0x41,0x00,0x00,0x00,0x00,0x46};//设置传感器为应答模式
|
const uint8_t cmd_CH2O_beidong[9] = {0xFF,0x01,0x78,0x41,0x00,0x00,0x00,0x00,0x46};//设置传感器为应答模式
|
||||||
const uint8_t cmd_CH2O_zhudong[9] = {0xFF,0x01,0x78,0x40,0x00,0x00,0x00,0x00,0x47};//设置传感器为主动上传模式
|
const uint8_t cmd_CH2O_zhudong[9] = {0xFF,0x01,0x78,0x40,0x00,0x00,0x00,0x00,0x47};//设置传感器为主动上传模式
|
||||||
|
|
||||||
|
//O3命令
|
||||||
|
const uint8_t cmd_O3_duqu[9] = {0xFF,0x01,0x86,0x00,0x00,0x00,0x00,0x00,0x79};//主动读取数据
|
||||||
|
const uint8_t cmd_O3_beidong[9] = {0xFF,0x01,0x78,0x41,0x00,0x00,0x00,0x00,0x46};//设置传感器为应答模式
|
||||||
|
const uint8_t cmd_O3_zhudong[9] = {0xFF,0x01,0x78,0x40,0x00,0x00,0x00,0x00,0x47};//设置传感器为主动上传模式
|
||||||
|
|
||||||
|
|
||||||
sensor_parse_ctrl_t nh3;
|
sensor_parse_ctrl_t nh3;
|
||||||
sensor_parse_ctrl_t h2s;
|
sensor_parse_ctrl_t h2s;
|
||||||
sensor_parse_ctrl_t co2;
|
sensor_parse_ctrl_t co2;
|
||||||
sensor_parse_ctrl_t pm25;
|
sensor_parse_ctrl_t pm25;
|
||||||
sensor_parse_ctrl_t ch2o;
|
sensor_parse_ctrl_t ch2o;
|
||||||
|
sensor_parse_ctrl_t o3;
|
||||||
|
|
||||||
SensorDataTypeDef sensorData;
|
SensorDataTypeDef sensorData;
|
||||||
|
|
||||||
|
@ -60,6 +67,9 @@ void InitSonsorData(SensorDataTypeDef *sensorData)
|
||||||
|
|
||||||
sensorData->co21 = 4;
|
sensorData->co21 = 4;
|
||||||
sensorData->co22 = 112;
|
sensorData->co22 = 112;
|
||||||
|
|
||||||
|
sensorData->o31 = 0;
|
||||||
|
sensorData->o32 = 0;
|
||||||
|
|
||||||
sensorData->tvoca = 1;
|
sensorData->tvoca = 1;
|
||||||
sensorData->tvocb = 1;
|
sensorData->tvocb = 1;
|
||||||
|
@ -105,6 +115,11 @@ void SensorModeInitSet(void)
|
||||||
LL_mDelay(50);
|
LL_mDelay(50);
|
||||||
UsartxSendDataStr(CO2_USART,cmd_co2_liangcheng2,sizeof(cmd_co2_liangcheng2));
|
UsartxSendDataStr(CO2_USART,cmd_co2_liangcheng2,sizeof(cmd_co2_liangcheng2));
|
||||||
|
|
||||||
|
|
||||||
|
//O3设置为应答模式
|
||||||
|
LL_mDelay(50);
|
||||||
|
UsartxSendDataStr(O3_USART,cmd_O3_beidong,sizeof(cmd_O3_beidong));
|
||||||
|
|
||||||
//init sht3x sensor
|
//init sht3x sensor
|
||||||
LL_mDelay(50);
|
LL_mDelay(50);
|
||||||
SHT3X_Init(0x44);
|
SHT3X_Init(0x44);
|
||||||
|
@ -122,6 +137,10 @@ void GetSensorData(void)
|
||||||
LL_mDelay(50);
|
LL_mDelay(50);
|
||||||
UsartxSendDataStr(CO2_USART, cmd_co2_duqu, sizeof(cmd_co2_duqu));
|
UsartxSendDataStr(CO2_USART, cmd_co2_duqu, sizeof(cmd_co2_duqu));
|
||||||
|
|
||||||
|
//O3发送获取数据命令
|
||||||
|
LL_mDelay(50);
|
||||||
|
UsartxSendDataStr(O3_USART, cmd_O3_duqu, sizeof(cmd_O3_duqu));
|
||||||
|
|
||||||
//CH2O发送获取数据命令
|
//CH2O发送获取数据命令
|
||||||
LL_mDelay(50);
|
LL_mDelay(50);
|
||||||
UsartxSendDataStr(CH2O_USART,cmd_CH2O_duqu,sizeof(cmd_CH2O_duqu));
|
UsartxSendDataStr(CH2O_USART,cmd_CH2O_duqu,sizeof(cmd_CH2O_duqu));
|
||||||
|
@ -213,6 +232,12 @@ static void general_data_check(sensor_parse_ctrl_t *sensor_parse_ctrl)
|
||||||
sensorData.co21 = ((sensorData.co2)>>8)&0xFF;
|
sensorData.co21 = ((sensorData.co2)>>8)&0xFF;
|
||||||
sensorData.co22 = (sensorData.co2)&0xFF;
|
sensorData.co22 = (sensorData.co2)&0xFF;
|
||||||
break;
|
break;
|
||||||
|
case O3_TYPE:
|
||||||
|
sensorData.o3 = (sensor_parse_ctrl->sensorData[2]*256+sensor_parse_ctrl->sensorData[3]);
|
||||||
|
sensorData.o31 = ((sensorData.o3)>>8)&0xFF;
|
||||||
|
sensorData.o32 = (sensorData.o3)&0xFF;
|
||||||
|
break;
|
||||||
|
|
||||||
case CH2O_TYPE:
|
case CH2O_TYPE:
|
||||||
sensorData.ch2o = (sensor_parse_ctrl->sensorData[6]*256+sensor_parse_ctrl->sensorData[7])/1000.00;
|
sensorData.ch2o = (sensor_parse_ctrl->sensorData[6]*256+sensor_parse_ctrl->sensorData[7])/1000.00;
|
||||||
sensorData.ch2o1 = ((int)sensorData.ch2o)&0xFF;
|
sensorData.ch2o1 = ((int)sensorData.ch2o)&0xFF;
|
||||||
|
@ -273,6 +298,7 @@ void AnalysisSensorData(sensor_parse_ctrl_t *sensor_parse_ctrl)
|
||||||
{
|
{
|
||||||
case H2S_TYPE:
|
case H2S_TYPE:
|
||||||
case CO2_TYPE:
|
case CO2_TYPE:
|
||||||
|
case O3_TYPE:
|
||||||
case NH3_TYPE:
|
case NH3_TYPE:
|
||||||
case CH2O_TYPE:
|
case CH2O_TYPE:
|
||||||
general_data_check(sensor_parse_ctrl);
|
general_data_check(sensor_parse_ctrl);
|
||||||
|
|
|
@ -301,6 +301,21 @@ void USART3_8_IRQHandler(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if(LL_USART_IsActiveFlag_ORE(O3_USART))
|
||||||
|
{
|
||||||
|
LL_USART_ClearFlag_ORE(O3_USART);
|
||||||
|
}
|
||||||
|
if(LL_USART_IsActiveFlag_RXNE(O3_USART))
|
||||||
|
{
|
||||||
|
Write_RingBuff(&o3.recvRingBuff,LL_USART_ReceiveData8(O3_USART));
|
||||||
|
}
|
||||||
|
if(LL_USART_IsActiveFlag_IDLE(O3_USART))
|
||||||
|
{
|
||||||
|
LL_USART_ClearFlag_IDLE(O3_USART);
|
||||||
|
SENSOR_CTRL |= O3_BIT;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if(LL_USART_IsActiveFlag_ORE(H2S_USART))
|
if(LL_USART_IsActiveFlag_ORE(H2S_USART))
|
||||||
{
|
{
|
||||||
LL_USART_ClearFlag_ORE(H2S_USART);
|
LL_USART_ClearFlag_ORE(H2S_USART);
|
||||||
|
|
|
@ -52,10 +52,10 @@ void SendDate_Lora(SensorDataTypeDef *sensorData)
|
||||||
char sendBuffer[64];
|
char sendBuffer[64];
|
||||||
uint8_t length = 0;
|
uint8_t length = 0;
|
||||||
memset(sendBuffer, 0, sizeof(sendBuffer));
|
memset(sendBuffer, 0, sizeof(sendBuffer));
|
||||||
length = snprintf(sendBuffer, sizeof(sendBuffer), "AT+LRSEND=101,0,18,<%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x\r\n",
|
length = snprintf(sendBuffer, sizeof(sendBuffer), "AT+LRSEND=101,0,18,<%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x\r\n",
|
||||||
sensorData->symbol,sensorData->temperature1,sensorData->temperature2,sensorData->humidity1,sensorData->humidity2,sensorData->nh31,
|
sensorData->symbol,sensorData->temperature1,sensorData->temperature2,sensorData->humidity1,sensorData->humidity2,sensorData->nh31,
|
||||||
sensorData->nh32,sensorData->h2s1,sensorData->h2s2,sensorData->ch2o1,sensorData->ch2o2,sensorData->co21,sensorData->co22,
|
sensorData->nh32,sensorData->h2s1,sensorData->h2s2,sensorData->ch2o1,sensorData->ch2o2,sensorData->co21,sensorData->co22,
|
||||||
sensorData->tvoc,sensorData->pm251,sensorData->pm252,sensorData->pm101,sensorData->pm102);
|
sensorData->tvoc,sensorData->pm251,sensorData->pm252,sensorData->pm101,sensorData->pm102, sensorData->o31,sensorData->o32);
|
||||||
UsartxSendDataStr(LORA_USART, (uint8_t *)sendBuffer, length);
|
UsartxSendDataStr(LORA_USART, (uint8_t *)sendBuffer, length);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue