nongye/STM32F103_App1/HardWare/SENSOR/sensor.h

52 lines
2.2 KiB
C
Raw Permalink Normal View History

#ifndef __SENSOR_H
#define __SENSOR_H
#include "main.h"
#include <stdint.h>
/* <20>ɼ<EFBFBD><C9BC>ն˴<D5B6><CBB4><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD>飺USART2(PA2/PA3) 9600 485 <20><><EFBFBD>ߣ<EFBFBD>Modbus RTU <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* ֧<EFBFBD><EFBFBD> 9 <EFBFBD>ִ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD><EFBFBD>ȡ<EFBFBD>ԡ<EFBFBD>485<EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD>Modbus.c<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><EFBFBD>ն<EFBFBD>/V3.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* 0x01 ˮ<EFBFBD><EFBFBD>PH-EC -> PH, EC
* 0x02 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD>ʪ<EFBFBD><EFBFBD> -> BS_T, BS_RH, BS_DO(<EFBFBD><EFBFBD>ѹkPa)
* 0x03 ˮ<EFBFBD><EFBFBD><EFBFBD>ܽ<EFBFBD><EFBFBD><EFBFBD>DO59 -> DS_T(ˮ<EFBFBD><EFBFBD>), DO
* 0x06 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҷ<EFBFBD><EFBFBD> -> BY_TP, BY_RH, BY_HV, BY_CO2
* 0x07 Ҷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʪ<EFBFBD><EFBFBD> -> YSMD_TP, YSMD_RH
* 0x08 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʪ<EFBFBD><EFBFBD> -> SOIL_TP, SOIL_RH
* 0x09 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׼<EFBFBD> -> SOIL_NV, SOIL_PV, SOIL_KV
* 0x0A <EFBFBD><EFBFBD><EFBFBD><EFBFBD>PH -> SOIL_PH
* 0x0B <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> -> SOIL_RV
* һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߿ɹҶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դӻ<EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD>ϱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>úã<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* ÿ 10s <EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD>ѯˢ<EFBFBD>£<EFBFBD>OLED ʵʱ<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD><EFBFBD><EFBFBD>"OTA <20><>ȷ<EFBFBD><C8B7>"<EFBFBD><EFBFBD> +5s/+30s/+60s <EFBFBD><EFBFBD>һ<EFBFBD>Σ<EFBFBD>
* ֮<EFBFBD><EFBFBD>ÿ 5 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>Σ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD> iot.prop.post <EFBFBD>ϱ<EFBFBD><EFBFBD><EFBFBD> */
/* <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD><CFB4><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> +5s/+30s/+60s ů<><C5AF><EFBFBD><EFBFBD><EFBFBD>Σ<EFBFBD>֮<EFBFBD>󰴴<EFBFBD><F3B0B4B4><EFBFBD><EFBFBD>ڣ<EFBFBD> */
#define SENSOR_CYCLE_MS (5u * 60u * 1000u)
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD>루bit0=PH-EC ... bit8=<3D><><EFBFBD><EFBFBD>EC<45><43>˳<EFBFBD><CBB3>ͬ sensor.c <20><><EFBFBD><EFBFBD> */
extern uint16_t g_sensor_online;
/* <20><>ֵ<EFBFBD><EFBFBD><E6B4A2><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD>ע<EFBFBD>ͣ<EFBFBD> */
typedef struct {
float ph, ec; /* ˮ<><CBAE>PH-EC: PHֵ, <20><EFBFBD><E7B5BC>uS/cm */
float air_t, air_rh, air_press; /* <20><><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9>ʪ<EFBFBD><CAAA>: <20><>, %RH, kPa */
float water_t, do_mgl, do_sat; /* <20>ܽ<EFBFBD><DCBD><EFBFBD>: ˮ<>¡<EFBFBD>, DO mg/L, <20><><EFBFBD>Ͷ<EFBFBD>% */
float by_t, by_rh; /* <20><>Ҷ<EFBFBD><D2B6>: <20><>, %RH */
uint16_t by_hv, by_co2; /* <20><>Ҷ<EFBFBD><D2B6>: <20><><EFBFBD><EFBFBD>Lux, CO2 ppm */
float leaf_t, leaf_rh; /* Ҷ<><D2B6><EFBFBD><EFBFBD>ʪ<EFBFBD><CAAA>: <20><>, %RH */
float soil_t, soil_rh; /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʪ<EFBFBD><CAAA>: <20><>, %RH */
float soil_n, soil_p, soil_k; /* <20><><EFBFBD>׼<EFBFBD>: mg/kg */
float soil_ph; /* <20><><EFBFBD><EFBFBD>PH */
float soil_ec; /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E7B5BC> uS/cm */
} sensor_data_t;
extern sensor_data_t g_sensor;
void sensor_init(void);
void sensor_process(void); /* app_task ѭ<><D1AD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD>10s <20><><EFBFBD>ض<EFBFBD>ȡ + <20>ϴ<EFBFBD><CFB4><EFBFBD><EFBFBD><EFBFBD> */
void sensor_notify_ota_confirmed(void); /* "OTA <20><>ȷ<EFBFBD><C8B7><><CAB1><EFBFBD>ã<EFBFBD>ê<EFBFBD><C3AA><EFBFBD>ϴ<EFBFBD><CFB4>ƻ<EFBFBD> */
/* OLED ժҪ<D5AA><D2AA><EFBFBD><EFBFBD>ҳ<EFBFBD><D2B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD>ݣ<EFBFBD>ÿ 5s <20><>һҳ<D2BB><D2B3>һҳһ·<D2BB><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>l1/l2 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>մ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
int sensor_oled_summary(char *l1, char *l2, int cap);
#endif /* __SENSOR_H */