start of O3 code
This commit is contained in:
parent
4bf6dcb620
commit
411db1b7d4
AirQuality
|
@ -52,6 +52,7 @@ extern "C" {
|
|||
#define H2S_USART USART5
|
||||
#define CO2_USART USART6
|
||||
#define LORA_USART USART8
|
||||
#define O3_USART USART6
|
||||
|
||||
#define NH3_BIT (1 << 0)
|
||||
#define H2S_BIT (1 << 1)
|
||||
|
@ -59,7 +60,9 @@ extern "C" {
|
|||
#define CH2O_BIT (1 << 3)
|
||||
#define CO2_BIT (1 << 4)
|
||||
#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;
|
||||
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
#define PM2D5_DATA_LENGTH 32
|
||||
#define CH2O_DATA_LENGTH 9
|
||||
#define CO2_DATA_LENGTH 9
|
||||
#define O3_DATA_LENGTH 9
|
||||
|
||||
|
||||
enum DEVICE_TYPE
|
||||
|
@ -21,6 +22,7 @@ enum DEVICE_TYPE
|
|||
PM25_TYPE,
|
||||
CH2O_TYPE,
|
||||
CO2_TYPE,
|
||||
O3_TYPE
|
||||
};
|
||||
typedef struct sensor_parse_control_st{
|
||||
//osSemaphoreId recvBinarySemHandle;
|
||||
|
@ -41,6 +43,7 @@ typedef struct
|
|||
float nh3;
|
||||
float h2s;
|
||||
float ch2o;
|
||||
int o3;
|
||||
int co2;
|
||||
int tvoc;
|
||||
int pm25;
|
||||
|
@ -60,6 +63,9 @@ typedef struct
|
|||
|
||||
uint8_t co21;
|
||||
uint8_t co22;
|
||||
|
||||
uint8_t o31;
|
||||
uint8_t o32;
|
||||
|
||||
uint8_t tvoca;
|
||||
uint8_t tvocb;
|
||||
|
@ -80,6 +86,7 @@ extern sensor_parse_ctrl_t h2s;
|
|||
extern sensor_parse_ctrl_t co2;
|
||||
extern sensor_parse_ctrl_t pm25;
|
||||
extern sensor_parse_ctrl_t ch2o;
|
||||
extern sensor_parse_ctrl_t o3;
|
||||
|
||||
extern SensorDataTypeDef sensorData;
|
||||
|
||||
|
|
|
@ -49,7 +49,7 @@
|
|||
<InvalidFlash>1</InvalidFlash>
|
||||
</TargetStatus>
|
||||
<OutputDirectory>AirQuality\</OutputDirectory>
|
||||
<OutputName>AirQuality</OutputName>
|
||||
<OutputName>STS_E2_9IN1</OutputName>
|
||||
<CreateExecutable>1</CreateExecutable>
|
||||
<CreateLib>0</CreateLib>
|
||||
<CreateHexFile>1</CreateHexFile>
|
||||
|
|
|
@ -142,6 +142,7 @@ int main(void)
|
|||
InitSonsorCtrlData(&ch2o, CH2O_DATA_LENGTH, CH2O_TYPE);
|
||||
InitSonsorCtrlData(&nh3, NH3_DATA_LENGTH, NH3_TYPE);
|
||||
InitSonsorCtrlData(&h2s, H2S_DATA_LENGTH, H2S_TYPE);
|
||||
InitSonsorCtrlData(&o3, O3_DATA_LENGTH, O3_TYPE);
|
||||
|
||||
UsartUserConfig();
|
||||
|
||||
|
@ -204,6 +205,14 @@ int main(void)
|
|||
AnalysisSensorData(&pm25);
|
||||
}
|
||||
|
||||
if(SENSOR_CTRL & O3_BIT)
|
||||
{
|
||||
SENSOR_CTRL &= ~O3_BIT;
|
||||
ReadSensorData(&o3);
|
||||
AnalysisSensorData(&o3);
|
||||
}
|
||||
|
||||
|
||||
if(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_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 h2s;
|
||||
sensor_parse_ctrl_t co2;
|
||||
sensor_parse_ctrl_t pm25;
|
||||
sensor_parse_ctrl_t ch2o;
|
||||
sensor_parse_ctrl_t o3;
|
||||
|
||||
SensorDataTypeDef sensorData;
|
||||
|
||||
|
@ -60,6 +67,9 @@ void InitSonsorData(SensorDataTypeDef *sensorData)
|
|||
|
||||
sensorData->co21 = 4;
|
||||
sensorData->co22 = 112;
|
||||
|
||||
sensorData->o31 = 0;
|
||||
sensorData->o32 = 0;
|
||||
|
||||
sensorData->tvoca = 1;
|
||||
sensorData->tvocb = 1;
|
||||
|
@ -105,6 +115,11 @@ void SensorModeInitSet(void)
|
|||
LL_mDelay(50);
|
||||
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
|
||||
LL_mDelay(50);
|
||||
SHT3X_Init(0x44);
|
||||
|
@ -122,6 +137,10 @@ void GetSensorData(void)
|
|||
LL_mDelay(50);
|
||||
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发送获取数据命令
|
||||
LL_mDelay(50);
|
||||
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.co22 = (sensorData.co2)&0xFF;
|
||||
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:
|
||||
sensorData.ch2o = (sensor_parse_ctrl->sensorData[6]*256+sensor_parse_ctrl->sensorData[7])/1000.00;
|
||||
sensorData.ch2o1 = ((int)sensorData.ch2o)&0xFF;
|
||||
|
@ -273,6 +298,7 @@ void AnalysisSensorData(sensor_parse_ctrl_t *sensor_parse_ctrl)
|
|||
{
|
||||
case H2S_TYPE:
|
||||
case CO2_TYPE:
|
||||
case O3_TYPE:
|
||||
case NH3_TYPE:
|
||||
case CH2O_TYPE:
|
||||
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))
|
||||
{
|
||||
LL_USART_ClearFlag_ORE(H2S_USART);
|
||||
|
|
|
@ -52,10 +52,10 @@ void SendDate_Lora(SensorDataTypeDef *sensorData)
|
|||
char sendBuffer[64];
|
||||
uint8_t length = 0;
|
||||
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->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);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue