52 lines
2.2 KiB
C
52 lines
2.2 KiB
C
|
|
#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 */
|