From 995584eff264d40cfe24bc948998df7496f0e591 Mon Sep 17 00:00:00 2001 From: YunHorn Technology Date: Mon, 19 Jun 2023 11:05:11 +0800 Subject: [PATCH] compact, remove i2c2, ssd1306, update version to 2023-06-20 --- Core/Inc/main.h | 2 +- Core/Inc/yunhorn_sts_prd_conf.h | 169 +------------------ Core/Inc/yunhorn_sts_sensors.h | 235 +-------------------------- Core/Src/main.c | 45 +---- Core/Src/stm32wlxx_hal_msp.c | 85 ---------- Core/Src/yunhorn_sts_motion_sensor.c | 113 +------------ LoRaWAN/App/lora_app.c | 13 +- 7 files changed, 15 insertions(+), 647 deletions(-) diff --git a/Core/Inc/main.h b/Core/Inc/main.h index 2a6afca..351ac6a 100644 --- a/Core/Inc/main.h +++ b/Core/Inc/main.h @@ -72,7 +72,7 @@ void Error_Handler(void); /* USER CODE BEGIN EFP */ void SystemClock_Config(void); -void MX_I2C2_Init(void); +//void MX_I2C2_Init(void); void MX_I2C1_Init(void); void MX_TIM2_Init(void); /* USER CODE END EFP */ diff --git a/Core/Inc/yunhorn_sts_prd_conf.h b/Core/Inc/yunhorn_sts_prd_conf.h index d68b3ef..5834cd0 100644 --- a/Core/Inc/yunhorn_sts_prd_conf.h +++ b/Core/Inc/yunhorn_sts_prd_conf.h @@ -39,7 +39,7 @@ * MODULE SELECTION */ //#define USE_OLED_SSD1306 -//#define USE_TOF_VL53LXX + #define USE_MEMS_ADXL345 /* ########################## Product Selection ############################## */ @@ -47,94 +47,9 @@ * @brief This is the list of Yunhorn STS products to be used in ALL product config */ -/** YUNHORN SMARTOILETS OCCUPANCY PRODUCTS **/ -/*#define YUNHORN_STS_O1_ENABLED */ -/*#define YUNHORN_STS_O2_ENABLED */ -/*#define YUNHORN_STS_O3_ENABLED */ -/*#define YUNHORN_STS_O4_ENABLED */ -/*#define YUNHORN_STS_O5_ENABLED */ -/*#define YUNHORN_STS_O6_ENABLED */ -/*#define YUNHORN_STS_O7_ENABLED */ -/*#define YUNHORN_STS_O8_ENABLED */ -/*#define YUNHORN_STS_O9_ENABLED */ -/*#define YUNHORN_STS_O10_ENABLED */ - -/** YUNHORN SMARTOILETS ENVIRONMENT PRODUCTS **/ -/*#define YUNHORN_STS_E1_ENABLED */ -/*#define YUNHORN_STS_E2_ENABLED */ -/*#define YUNHORN_STS_E3_ENABLED */ -/*#define YUNHORN_STS_E4_ENABLED */ -/*#define YUNHORN_STS_E5_ENABLED */ -/*#define YUNHORN_STS_E6_ENABLED */ - - -/** YUNHORN SMARTOILETS PEOPLE COUNTING PRODUCTS **/ -/*#define YUNHORN_STS_P1_ENABLED */ -/*#define YUNHORN_STS_P2_ENABLED */ -/*#define YUNHORN_STS_P3_ENABLED */ -/*#define YUNHORN_STS_P4_ENABLED */ -/*#define YUNHORN_STS_P5_ENABLED */ -/*#define YUNHORN_STS_P6_ENABLED */ - -/** YUNHORN SMARTOILETS CLEANSING RESOUCES LEVEL PRODUCTS **/ -/*#define YUNHORN_STS_R1_ENABLED */ -/*#define YUNHORN_STS_R2_ENABLED */ -/*#define YUNHORN_STS_R3_ENABLED */ -/*#define YUNHORN_STS_R4_ENABLED */ -/*#define YUNHORN_STS_R5_ENABLED */ -/*#define YUNHORN_STS_R6_ENABLED */ -/*#define YUNHORN_STS_R7_ENABLED */ -/*#define YUNHORN_STS_R8_ENABLED */ - - -/** YUNHORN SMARTOILETS MECHNICAL REACTURAL PRODUCTS **/ -/*#define YUNHORN_STS_M1_ENABLED */ -/*#define YUNHORN_STS_M2_ENABLED */ -/*#define YUNHORN_STS_M3_ENABLED */ -/*#define YUNHORN_STS_M4_ENABLED */ -/*#define YUNHORN_STS_M5_ENABLED */ -/*#define YUNHORN_STS_M6_ENABLED */ #define YUNHORN_STS_M7_ENABLED -/*#define YUNHORN_STS_M8_ENABLED */ -/*#define YUNHORN_STS_M9_ENABLED */ -//#define YUNHORN_STS_M10_ENABLED - -/** YUNHORN SMARTOILETS DIPLAY AND SMART PANEL PRODUCTS **/ -/*#define YUNHORN_STS_D1_ENABLED */ -/*#define YUNHORN_STS_D2_ENABLED */ -/*#define YUNHORN_STS_D3_ENABLED */ -/*#define YUNHORN_STS_D4_ENABLED */ -/*#define YUNHORN_STS_D5_ENABLED */ -/*#define YUNHORN_STS_D6_ENABLED */ -/*#define YUNHORN_STS_D7_ENABLED */ -/*#define YUNHORN_STS_D8_ENABLED */ - - - -/** YUNHORN SMARTOILETS DIGITAL SIGNAGE PRODUCTS **/ -/*#define YUNHORN_STS_F1_ENABLED */ -/*#define YUNHORN_STS_F2_ENABLED */ -/*#define YUNHORN_STS_F3_ENABLED */ -/*#define YUNHORN_STS_F4_ENABLED */ -/*#define YUNHORN_STS_F5_ENABLED */ -/*#define YUNHORN_STS_F6_ENABLED */ -/*#define YUNHORN_STS_F7_ENABLED */ -/*#define YUNHORN_STS_F8_ENABLED */ -/*#define YUNHORN_STS_F9_ENABLED */ -/*#define YUNHORN_STS_F10_ENABLED */ - - -/** YUNHORN SMARTOILETS CONNECTIVITY AND GATEWAY PRODUCTS **/ -/*#define YUNHORN_STS_N1_ENABLED */ -/*#define YUNHORN_STS_N2_ENABLED */ -/*#define YUNHORN_STS_N3_ENABLED */ -/*#define YUNHORN_STS_N4_ENABLED */ -/*#define YUNHORN_STS_N5_ENABLED */ -/*#define YUNHORN_STS_N6_ENABLED */ -/*#define YUNHORN_STS_N7_ENABLED */ -/*#define YUNHORN_STS_N8_ENABLED */ /** Includes --------------------------------------------------------- @@ -142,78 +57,11 @@ * LORA-WAN MESSAGE UPLINK DATA PORTS AND HEARTBEAT PORTS DEFINATION */ -//#define YUNHORN_STS_O1_LORA_APP_DATA_PORT 4U -//#define YUNHORN_STS_O1_LORA_APP_HTBT_PORT 5U -//#define YUNHORN_STS_O2_LORA_APP_DATA_PORT 4U -//#define YUNHORN_STS_O2_LORA_APP_HTBT_PORT 5U -//#define YUNHORN_STS_O3_LORA_APP_DATA_PORT 4U -//#define YUNHORN_STS_O3_LORA_APP_HTBT_PORT 5U -//#define YUNHORN_STS_O4_LORA_APP_DATA_PORT 56U -//#define YUNHORN_STS_O4_LORA_APP_HTBT_PORT 57U -//#define YUNHORN_STS_O5_LORA_APP_DATA_PORT 4U -//#define YUNHORN_STS_O5_LORA_APP_HTBT_PORT 5U -//#define YUNHORN_STS_E1_LORA_APP_DATA_PORT 102U -//#define YUNHORN_STS_E1_LORA_APP_HTBT_PORT 103U -//#define YUNHORN_STS_E2_LORA_APP_DATA_PORT 101U -//#define YUNHORN_STS_E2_LORA_APP_HTBT_PORT 108U -//#define YUNHORN_STS_E3_LORA_APP_DATA_PORT 00U -//#define YUNHORN_STS_E3_LORA_APP_HTBT_PORT 00U - -//#define YUNHORN_STS_E4_LORA_APP_DATA_PORT 70U -//#define YUNHORN_STS_E4_LORA_APP_HTBT_PORT 71U - -//#define YUNHORN_STS_R0_LORA_APP_DATA_PORT 11U -//#define YUNHORN_STS_R0_LORA_APP_HTBT_PORT 11U - -//#define YUNHORN_STS_R1_LORA_APP_DATA_PORT 57U -//#define YUNHORN_STS_R1_LORA_APP_HTBT_PORT 57U -//#define YUNHORN_STS_R2_LORA_APP_DATA_PORT 58U -//#define YUNHORN_STS_R2_LORA_APP_HTBT_PORT 58U -//#define YUNHORN_STS_R3_LORA_APP_DATA_PORT 7U -//#define YUNHORN_STS_R3_LORA_APP_HTBT_PORT 8U -//#define YUNHORN_STS_R4_LORA_APP_DATA_PORT 8U -//#define YUNHORN_STS_R4_LORA_APP_HTBT_PORT 8U -//#define YUNHORN_STS_R5_LORA_APP_DATA_PORT 11U -//#define YUNHORN_STS_R5_LORA_APP_HTBT_PORT 11U - -//#define YUNHORN_STS_M1_LORA_APP_DATA_PORT 6U -//#define YUNHORN_STS_M1_LORA_APP_HTBT_PORT 6U -//#define YUNHORN_STS_M2_LORA_APP_DATA_PORT 59U -//#define YUNHORN_STS_M2_LORA_APP_HTBT_PORT 219U -//#define YUNHORN_STS_M3_LORA_APP_DATA_PORT 9U -//#define YUNHORN_STS_M3_LORA_APP_HTBT_PORT 9U -//#define YUNHORN_STS_M4_LORA_APP_DATA_PORT 12U -//#define YUNHORN_STS_M4_LORA_APP_HTBT_PORT 12U -//#define YUNHORN_STS_M5_LORA_APP_DATA_PORT 8U -//#define YUNHORN_STS_M5_LORA_APP_HTBT_PORT 8U -//#define YUNHORN_STS_M6_LORA_APP_DATA_PORT 219U -//#define YUNHORN_STS_M6_LORA_APP_HTBT_PORT 219U - -//#define YUNHORN_STS_M8_LORA_APP_DATA_PORT 55U -//#define YUNHORN_STS_M8_LORA_APP_HTBT_PORT 55U -//#define YUNHORN_STS_M9_LORA_APP_DATA_PORT 16U -//#define YUNHORN_STS_M9_LORA_APP_HTBT_PORT 16U -//#define YUNHORN_STS_M10_LORA_APP_DATA_PORT 9U -//#define YUNHORN_STS_M10_LORA_APP_HTBT_PORT 9U - - - -#ifdef YUNHORN_STS_E4_ENABLED -//#include "yunhorn_sts_e4_conf.h" -#define senddataport YUNHORN_STS_E4_LORA_APP_DATA_PORT -#define sendhtbtport YUNHORN_STS_E4_LORA_APP_HTBT_PORT -#endif /* YUNHORN_STS_E4_ENABLED */ - -#ifdef YUNHORN_STS_R0_ENABLED -//#include "yunhorn_sts_e4_conf.h" -#define senddataport YUNHORN_STS_R0_LORA_APP_DATA_PORT -#define sendhtbtport YUNHORN_STS_R0_LORA_APP_HTBT_PORT -#endif /* YUNHORN_STS_R0_ENABLED */ #ifdef YUNHORN_STS_M7_ENABLED #define MajorVer 23U -#define MinorVer 02U -#define SubMinorVer 23U +#define MinorVer 06U +#define SubMinorVer 20U #define FirmwareVersion 3U #define YUNHORN_STS_M7_NVM_CFG_SIZE 3U #define YUNHORN_STS_M7_CFG_CMD_SIZE 9U @@ -244,17 +92,6 @@ #define MOTION_SENSOR_TIM_HANDLE htim2 #define MOTION_SENSOR_I2C_HANDLE hi2c1 -#ifdef USE_OLED_SSD1306 -#define SSD1306_I2C_HANDLE hi2c2 -#include "ssd1306.h" -#include "ssd1306_tests.h" -#endif - -#ifdef USE_TOF_VL53LXX // RETIRED TODO -#define I2C_TIMING_TOF250 0x20303E5D -#define I2C_TIMING 0x20303E5D //DEFAULT FOR I2C TOF -#include "yunhorn_tof.h" -#endif #ifdef USE_STM32WLE5 #define I2C_TIMING_STANDARD_MODE 0x2000090E //STANDARD MODE 100Khz diff --git a/Core/Inc/yunhorn_sts_sensors.h b/Core/Inc/yunhorn_sts_sensors.h index e366ba7..23d3a6f 100644 --- a/Core/Inc/yunhorn_sts_sensors.h +++ b/Core/Inc/yunhorn_sts_sensors.h @@ -53,117 +53,6 @@ enum { P_MEM_CFG // #3 }; #endif -/* - // LEN= 3 - YUNHORN_STS_PRD_BOARD_SOFT_RESET=0, //BOARD LEVEL RE_BOOT, REVIVE, 'YZH' : HARDWARE REBOOT - YUNHORN_STS_PRD_SENSOR_SELF_TEST, //BOARD LEVEL REPORT VERSION, 'YZS' : SELFT TEST - YUNHORN_STS_PRD_LORAWAN_CLASS, //BOARD LEVEL REPORT VERSION, 'YZC' : LORA-WAN CLASS A/B/C - - YUNHORN_STS_PRD_VERSION_REPORT, //BOARD LEVEL REPORT VERSION, 'YVH' : VERSION: FW, HW, SW - YUNHORN_STS_PRD_CONFIG_REPORT, //BOARD LEVEL REPORT VERSION, 'YVC' : NVM STORED CONFIG PARAMETER - - STS_SENSOR_CMD_MEMS_POWER_ON_OFF, //Num # MEMS LEVEL POWER ENABLE, 'YO#' : #={1}{2,3..9} POWER ON - STS_SENSOR_CMD_MEMS_POWER_ON_OFF, //Num # MEMS LEVEL POWER ENABLE, 'YF#' : #={1}{2,3..9} POWER OFF - STS_SENSOR_CMD_MEMS_SOFT_RESET, //Num # MEMS LEVEL SOFT_RESET, 'YH#' : #={1}{,2,3..9} SOFT-RESET - - // LEN = 5 - YUNHORN_STS_PRD_PERIODICITY_CHANGE, //BOARD LEVEL PERIODICTY CHANGE, 'YD##@' #={0-9} @={S,M,H} - - // LEN >=6 - YUNHORN_STS_PRD_PERIODICITY_CHANGE, //BOARD LEVEL PERIODICTY CHANGE, 'YP###@' #={0-9} @={S,M,H} - // Y P # # # @ - // # MTM code - // # MTM ver - // # No. of MEMS - // @ Parameter - - // MEMS sensor_control_type -*/ -//"P 0 0 "+"1 2 3 1 2 3 1 2 3 1 2" -// P -// P 1 SENSOR HEAD 0 -// P 1 0 SENSOR HEAD 0, VERSION 0 -// P 1 0 1 2 SENSOR HEAD 0, VERSION 0, VALUE 12, 1*10+2 - -#ifdef YUNHORN_STS_O1_ENABLED -enum { - STS_CTRL_CMD_TYPE_DUTYCYCLE_LEVEL_CHANGE, - STS_CTRL_CMD_MEMS_TUNE_TOF_VL53L0X=0x00, - STS_CTRL_CMD_MEMS_TUNE_TOF_VL53L1X, //0X01 - STS_CTRL_CMD_MEMS_TUNE_TOF_VL53L2X, //0X02 - STS_CTRL_CMD_MEMS_TUNE_TOF_VL53L3X, //0X03 - STS_CTRL_CMD_MEMS_TUNE_TOF_VL53L4X, //0X04 - STS_CTRL_CMD_MEMS_TUNE_TOF_VL53L5X, //0X05 - - STS_CTRL_CMD_MEMS_TUNE_MV_ADXL345, //0X06 - STS_CTRL_CMD_MEMS_TUNE_MV_ADXL365, //0X07 - STS_CTRL_CMD_MEMS_TUNE_MV_ADXL362, //0X08 - STS_CTRL_CMD_MEMS_TUNE_MV_ADXL110X, //0X09 - - STS_CTRL_CMD_MEMS_TUNE_FMCW_TI16X, - STS_CTRL_CMD_MEMS_TUNE_FMCW_TI68X, - - STS_CTRL_CMD_MEMS_TUNE_PCR_A11X, - STS_CTRL_CMD_MEMS_TUNE_PCR_A12X, - - STS_CTRL_CMD_PRESENCE_SETTING, - STS_CTRL_CMD_PRESENCE_TUNE_LED_COLOR, - STS_CTRL_CMD_PRESENCE_TUNE_WORK_MODE, - - STS_CTRL_CMD_MEMS_TUNE_SMOKING_MUSIC, - STS_CTRL_CMD_MEMS_TUNE_SMOKING_ENABLE, - - STS_CTRL_CMD_MEMS_TUNE_WATER_FLOW_DN, - - STS_CTRL_CMD_MEMS_TUNE_DIGITAL_RELAY, - - STS_CTRL_CMD_MEMS_TUNE_FAN_CONTROL, - STS_CTRL_CMD_MEMS_TUNE_VENTILATION_FAN_SPEED, - STS_CTRL_CMD_MEMS_TUNE_VENTILATION_FAN_SWING, - - - STS_CTRL_CMD_MEMS_TUNE_DEVICE_COMPONENT -}; // sensor_mems_type - -enum { - STS_CTRL_CMD_MEMS_TUNE_TOF_RANGE_START=0, - STS_CTRL_CMD_MEMS_TUNE_TOF_RANGE_END, - STS_CTRL_CMD_MEMS_TUNE_TOF_THRESHOLD, - STS_CTRL_CMD_MEMS_TUNE_TOF_GAIN, - STS_CTRL_CMD_MEMS_TUNE_TOF_MAX_DISTANCE -}; // sensor_mems_tof_tune_type -#endif - -#if (defined(YUNHORN_STS_R0_ENABLED) || defined(YUNHORN_STS_R1_ENABLED) || defined(YUNHORN_STS_R2_ENABLED) || defined(YUNHORN_STS_R5_ENABLED)) -typedef struct -{ - uint16_t distance_mm; /*measured distance in mm, min=0mm, max=2500mm. */ - uint16_t battery_mV; /*mV, 1000mv-5000mv, regular 3300mV - 3600mV --4200mV */ - - uint8_t on_off_event; /* 1: liquid sensed, 0: no liquid sensed */ - uint8_t measure_tech; /* 0: capacit, 1:dTof, 2: ultrasonic */ - - uint8_t distance_mm_h; /*MSB */ - uint8_t distance_mm_l; /*LSB max=255 mm for short range measure */ - uint8_t battery_Pct; /* % of battery two digits, 88% (00-99)% */ - uint8_t dutycycletimelevel; /* level=0,255 */ -} STS_R0_SensorDataTypeDef; -#endif - -#if (defined(YUNHORN_STS_O0_ENABLED) || defined(YUNHORN_STS_O1_ENABLED) || defined(YUNHORN_STS_O2_ENABLED) || defined(YUNHORN_STS_O3_ENABLED) || defined(YUNHORN_STS_O4_ENABLED) || defined(YUNHORN_STS_O5_ENABLED)|| defined(YUNHORN_STS_O6_ENABLED)) -typedef struct -{ - uint8_t color_LED_num; /*measured color ID, 0,1,2,3,4,5,6,7,8,9 */ - uint8_t workmode_id; /*work mode, 0,1,2,3,4*/ - uint8_t state_sensor1_on_off; /* reedswitch or hall element 0: open, 1: closed */ - uint8_t state_sensor2_on_off; /* pcr_sensor_on_off; 1: occupancy, 0: no occupancy */ - uint8_t state_sensor3_on_off; /* urinal_sensor_on_off urinal sensor state */ - uint8_t state_sensor4_on_off; /* reserved_sensor_on_off sensor state */ - - uint8_t battery_Pct; /* % of battery two digits, 88% (00-99)% */ - uint8_t dutycycletimelevel; /* level=0,255 */ -} STS_O0_SensorDataTypeDef; -#endif #if (defined(YUNHORN_STS_M0_ENABLED) || defined(YUNHORN_STS_M1_ENABLED) || defined(YUNHORN_STS_M2_ENABLED) || defined(YUNHORN_STS_M5_ENABLED)) @@ -214,136 +103,14 @@ typedef struct uint8_t distance_mm_h; /*MSB */ + uint8_t distance_mm_l; /*LSB max=255 mm for short range measure */ uint8_t battery_Pct; /* % of battery two digits, 88% (00-99)% */ uint8_t dutycycletimelevel; /* level=0,255 */ } STS_M0_SensorDataTypeDef; #endif -#ifdef YUNHORN_STS_O1_ENABLED -typedef enum -{ - REED_SWITCH_PIN_RESET = 0U, - REED_SWITCH_PIN_SET -} REED_SWITCH_State; -typedef enum -{ - DOOR_CONTACT_PIN_RESET = 0U, - DOOR_CONTACT_PIN_SET -} DOOR_CONTACT_State; - -typedef enum -{ - DRY_CONTACT_PIN_RESET = 0U, - DRY_CONTACT_PIN_SET -} DRY_CONTACT_State; -#endif -#ifdef YUNHORN_STS_M1_ENABLED -typedef enum -{ - WATER_LEAKAGE_PIN_RESET = 0U, - WATER_LEAKAGE_PIN_SET -} WATER_LEAKAGE_State; - -typedef enum -{ - HALL_ELEMENT_PIN_RESET = 0U, - HALL_ELEMENT_PIN_SET -} HALL_ELEMENT_State; -#endif - -#if (defined(YUNHORN_STS_E0_ENABLED) || defined(YUNHORN_STS_E1_ENABLED) || defined(YUNHORN_STS_E2_ENABLED) || defined(YUNHORN_STS_E3_ENABLED) || defined(YUNHORN_STS_E4_ENABLED) || defined(YUNHORN_STS_E5_ENABLED) || defined(YUNHORN_STS_E6_ENABLED) || defined(YUNHORN_STS_E7_ENABLED)) - -typedef struct -{ - float pressure; /*!< in mbar */ - float temperature; /*!< in degC - 40C ~ 125C , 0.05 C */ - float humidity; /*!< in % 0-100 RH% */ - float distance; /*!< in mm */ - int16_t co2_ppm; /*!< 400 - 5200 ppm */ - int16_t tvoc_ppb; /*!< 0 - 60000 ppb */ - uint32_t latitude; /*!< latitude converted to binary */ - uint32_t longitude ; /*!< longitude converted to binary */ - uint16_t altitudeGps; /*!< in m */ - uint16_t altitudeBar ; /*!< in m * 10 */ - - float nh3_ppb; /* NH3 */ - float h2s_ppb; /* H2S */ - float ch2o_ppb; /* CH2O */ - float no2_ppb; /* NO2 */ - float o3_ugm3; /* O3 ug/m3 */ - float battery; - uint16_t co2_ugm3; /* ug/m3 */ - uint16_t tvoc_ppb2; /* TVOC */ - uint16_t pm_dot5_ugm3; - uint16_t pm_1_ugm3; - uint16_t pm_2dot5_ugm3; - uint16_t pm_10_ugm3; - /* FOR CIGGARATE SMOKING DETECTION */ - uint16_t mq2; /* combined smoking sensor */ - uint16_t co; /* CO */ - uint8_t iaq; /* IAQ index following EPD standards, HKSAR */ - - uint8_t symbol; - uint8_t temperature1; - uint8_t temperature2; - uint8_t humidity1; - uint8_t humidity2; - uint8_t nh31; - uint8_t nh32; - uint8_t h2s1; - uint8_t h2s2; - uint8_t battery1; - uint8_t battery2; - uint8_t ch2o1; - uint8_t ch2o2; - - uint8_t co21; - uint8_t co22; - - uint8_t tvoc1; - uint8_t tvoc2; - - uint8_t pm251; - uint8_t pm252; - - uint8_t pm101; - uint8_t pm102; - - - uint8_t battery_Pct; /* % of battery two digits, 88% (00-99)% */ - uint8_t dutycycletimelevel; /* level=0,255 */ -} STS_E0_SensorDataTypeDef; -#endif - -#if (defined(YUNHORN_STS_P0_ENABLED) || defined(YUNHORN_STS_P1_ENABLED) || defined(YUNHORN_STS_P2_ENABLED) || defined(YUNHORN_STS_P3_ENABLED)) -typedef struct -{ - uint8_t people_count_num; /*measured people number in area, max 30 */ - - /* bi-direction */ - uint16_t people_in_num; /* people in out count in given duration */ - uint16_t people_out_num; /* people in out count in given duration */ - uint16_t people_in_out_interval; /* people in out count interval level */ - - /* occupancy */ - uint8_t people_in_out_state_; /* people in or leave state 0: leave, 1: stay */ - - /* queueing */ - uint8_t workmode; /* 0-5, 0:tst, 1:sensor reset, 2:power on, 3: power off */ - uint8_t tune_param1_left_x_m; /* left range in meter 0.5 - 9.9, 1.5 */ - uint8_t tune_param2_right_x_m; /* right range in meter 0.5 - 9.9 , 1.5 */ - uint8_t tune_param1_far_y_m; /* far range in meter 2.5 - 9.9, 6.0*/ - uint8_t tune_param1_top_z_m; /* top range in meter 0.5 - 9.9, 3.0 */ - uint8_t tune_param1_height_m; /* installation height in meter 0.5 - 9.9, 2.0 */ - uint8_t tune_param1_tilt_degree; /* tilt up/down in degree 0 - 45, 15 */ - - uint8_t battery_Pct; /* % of battery two digits, 88% (00-99)% */ - uint8_t dutycycletimelevel; /* level=0,255 */ -} STS_P0_SensorDataTypeDef; - -#endif /* USER CODE BEGIN ET */ diff --git a/Core/Src/main.c b/Core/Src/main.c index d383439..fc9056c 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -45,14 +45,14 @@ /* USER CODE BEGIN PV */ volatile uint16_t TIM2_Counter=0; -I2C_HandleTypeDef hi2c2, hi2c1; +I2C_HandleTypeDef hi2c1; TIM_HandleTypeDef htim2; /* USER CODE END PV */ /* Private function prototypes -----------------------------------------------*/ void SystemClock_Config(void); /* USER CODE BEGIN PFP */ -void MX_I2C2_Init(void); +//void MX_I2C2_Init(void); void MX_I2C1_Init(void); void MX_TIM2_Init(void); /* USER CODE END PFP */ @@ -212,47 +212,6 @@ void MX_I2C1_Init(void) * @param None * @retval None */ -void MX_I2C2_Init(void) -{ - - /* USER CODE BEGIN I2C2_Init 0 */ - - /* USER CODE END I2C2_Init 0 */ - - /* USER CODE BEGIN I2C2_Init 1 */ - - /* USER CODE END I2C2_Init 1 */ - hi2c2.Instance = I2C2; - hi2c2.Init.Timing = I2C_TIMING_FAST_MODE; //I2C_TIMING; - hi2c2.Init.OwnAddress1 = 0; //I2C_SLAVE_ADDRESS1; - hi2c2.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; - hi2c2.Init.DualAddressMode = I2C_DUALADDRESS_ENABLE; - hi2c2.Init.OwnAddress2 = 0; //I2C_SLAVE_ADDRESS2; - hi2c2.Init.OwnAddress2Masks = I2C_OA2_NOMASK; - hi2c2.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; - hi2c2.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; - if (HAL_I2C_Init(&hi2c2) != HAL_OK) - { - Error_Handler(); - } - - /** Configure Analogue filter - */ - if (HAL_I2CEx_ConfigAnalogFilter(&hi2c2, I2C_ANALOGFILTER_ENABLE) != HAL_OK) - { - Error_Handler(); - } - /** Configure Digital filter - */ - if (HAL_I2CEx_ConfigDigitalFilter(&hi2c2, 0) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN I2C2_Init 2 */ - - /* USER CODE END I2C2_Init 2 */ - -} /** * @brief TIM2 Initialization Function diff --git a/Core/Src/stm32wlxx_hal_msp.c b/Core/Src/stm32wlxx_hal_msp.c index 1e2554b..9057e63 100644 --- a/Core/Src/stm32wlxx_hal_msp.c +++ b/Core/Src/stm32wlxx_hal_msp.c @@ -147,59 +147,7 @@ void HAL_I2C_MspInit(I2C_HandleTypeDef* hi2c) HAL_NVIC_EnableIRQ(I2Cx_MASTER_EV_IRQn); /* USER CODE END I2C1_MspInit 1 */ } - else if(hi2c->Instance==I2C2) - { - /* USER CODE BEGIN I2C2_MspInit 0 */ - /* USER CODE END I2C2_MspInit 0 */ - - /** Initializes the peripherals clocks - */ - PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_I2C2; - PeriphClkInitStruct.I2c2ClockSelection = RCC_I2C2CLKSOURCE_PCLK1; - if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) - { - Error_Handler(); - } - - __HAL_RCC_GPIOA_CLK_ENABLE(); - - /**I2C2 GPIO Configuration //STM32WL55 - PA12 ------> I2C2_SCL - PA15 ------> I2C2_SDA - */ -#ifdef USE_STM32WL55 - GPIO_InitStruct.Pin = GPIO_PIN_12|GPIO_PIN_15; - GPIO_InitStruct.Mode = GPIO_MODE_AF_OD; - GPIO_InitStruct.Pull = GPIO_PULLUP; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - GPIO_InitStruct.Alternate = GPIO_AF4_I2C2; - HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); -#endif - - /**I2C2 GPIO Configuration //STM32WLE5 - PA12 ------> I2C2_SCL - PA11 ------> I2C2_SDA - */ -#ifdef USE_STM32WLE5 - GPIO_InitStruct.Pin = GPIO_PIN_12|GPIO_PIN_11; - GPIO_InitStruct.Mode = GPIO_MODE_AF_OD; - GPIO_InitStruct.Pull = GPIO_PULLUP; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - GPIO_InitStruct.Alternate = GPIO_AF4_I2C2; - HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); -#endif - - /* Peripheral clock enable */ - __HAL_RCC_I2C2_CLK_ENABLE(); - /* USER CODE BEGIN I2C2_MspInit 1 */ - /* NVIC for I2Cx_SLAVE */ - HAL_NVIC_SetPriority(I2Cx_SLAVE_ER_IRQn, 1, 0); - HAL_NVIC_EnableIRQ(I2Cx_SLAVE_ER_IRQn); - HAL_NVIC_SetPriority(I2Cx_SLAVE_EV_IRQn, 2, 0); - HAL_NVIC_EnableIRQ(I2Cx_SLAVE_EV_IRQn); - /* USER CODE END I2C2_MspInit 1 */ - } } @@ -243,40 +191,7 @@ void HAL_I2C_MspDeInit(I2C_HandleTypeDef* hi2c) HAL_NVIC_DisableIRQ(I2Cx_MASTER_EV_IRQn); /* USER CODE END I2C1_MspDeInit 1 */ } - else if(hi2c->Instance==I2C2) - { - /* USER CODE BEGIN I2C2_MspDeInit 0 */ - /* USER CODE END I2C2_MspDeInit 0 */ - /* Peripheral clock disable */ - __HAL_RCC_I2C2_CLK_DISABLE(); - - /**I2C2 GPIO Configuration //STM32WL55 - PA12 ------> I2C2_SCL - PA15 ------> I2C2_SDA - */ - -#ifdef USE_STM32WL55 - HAL_GPIO_DeInit(GPIOA, GPIO_PIN_12); - HAL_GPIO_DeInit(GPIOA, GPIO_PIN_15); -#endif - - /**I2C2 GPIO Configuration //STM32WLE5 - PA12 ------> I2C2_SCL - PA11 ------> I2C2_SDA - */ - -#ifdef USE_STM32WLE5 - HAL_GPIO_DeInit(GPIOA, GPIO_PIN_12); - HAL_GPIO_DeInit(GPIOA, GPIO_PIN_11); -#endif - - /* USER CODE BEGIN I2C2_MspDeInit 1 */ - - HAL_NVIC_DisableIRQ(I2Cx_SLAVE_ER_IRQn); - HAL_NVIC_DisableIRQ(I2Cx_SLAVE_EV_IRQn); - /* USER CODE END I2C2_MspDeInit 1 */ - } } /** diff --git a/Core/Src/yunhorn_sts_motion_sensor.c b/Core/Src/yunhorn_sts_motion_sensor.c index 98fca47..0b679bf 100644 --- a/Core/Src/yunhorn_sts_motion_sensor.c +++ b/Core/Src/yunhorn_sts_motion_sensor.c @@ -32,9 +32,6 @@ #include "LmHandler.h" /* USER CODE BEGIN Includes */ -#ifdef USE_OLED_SSD1306 -extern I2C_HandleTypeDef SSD1306_I2C_HANDLE; -#endif #if (defined(YUNHORN_STS_M7_ENABLED) && defined(USE_MEMS_ADXL345)) #include "yunhorn_sts_motion_sensor.h" #include "yunhorn_sts_motion_adxl345.h" @@ -78,10 +75,7 @@ volatile uint32_t event_start_time, event_stop_time, vibration_duration, sensor_ /* Private function prototypes -----------------------------------------------*/ /* USER CODE BEGIN PFP */ -#ifdef USE_OLED_SSD1306 -void Display_Chart(float *px,float *py, float *pz, SSD1306_COLOR color, char *title); -void STS_M7_SineWaveTest(uint16_t cycles); -#endif + #if (defined(YUNHORN_STS_M7_ENABLED) && defined(USE_MEMS_ADXL345)) extern float acc_x[FFT_LEN*2],acc_y[FFT_LEN*2],acc_z[FFT_LEN*2], fft_x[FFT_LEN], fft_y[FFT_LEN], fft_z[FFT_LEN]; float spectrumPeak_x, spectrumPeak_y, spectrumPeak_z, sp_x,sp_y,sp_z; @@ -300,9 +294,7 @@ void STS_MOTION_SENSOR_Get_Event_Status(STS_MOTION_SENSOR_Event_Status_t *Status void STS_MOTION_SENSOR_Function_Test_Process(int16_t *self_test_result, uint8_t count) { - #ifdef USE_OLED_SSD1306 - char buf_col[30]="_YUNHORN_", buf_xyz[30]="Vibration", buf_level[30]="STS-M7"; - #endif + // for wakeup from stop2 mode ################################################## STS_SENSOR_Power_ON(0); HAL_Init(); @@ -311,37 +303,14 @@ void STS_MOTION_SENSOR_Function_Test_Process(int16_t *self_test_result, uint8_t MX_I2C1_Init(); MX_TIM2_Init(); // for wakeup from stop2 mode ################################################## + - #ifdef USE_OLED_SSD1306 - //HAL_I2C_Init(&SSD1306_I2C_HANDLE); - if (HAL_I2C_GetState(&SSD1306_I2C_HANDLE) != HAL_I2C_STATE_READY) - { - APP_LOG(TS_ON, VLEVEL_M, "\r\n..OLED I2C INITIALIZING ERROR \r\n"); - } - #endif - if (HAL_I2C_GetState(&MOTION_SENSOR_I2C_HANDLE) != HAL_I2C_STATE_READY) { APP_LOG(TS_ON, VLEVEL_L, "\r\n .... MOTION SENSOR I2C Not Ready .... \r\n"); } STS_MOTION_SENSOR_Init_Send_Data(); - -#ifdef USE_OLED_SSD1306 - APP_LOG(TS_ON, VLEVEL_M, "\r\n.Start Init SSD1306 ......... \r\n"); - ssd1306_Init(); - ssd1306_SetCursor(10,0); - ssd1306_WriteString(buf_col, Font_11x18, White); - ssd1306_SetCursor(10,25); - ssd1306_WriteString(buf_xyz, Font_7x10, White); - ssd1306_SetCursor(10,45); - ssd1306_WriteString(buf_level, Font_7x10, White); - ssd1306_UpdateScreen(); - - Sine_waveGenerate(); - Process_FFT_and_Amplitude(); - Display_Chart(acc_x, acc_y, acc_z, White, "Sine-"); -#endif ADXL345_Init_Prepare_Measure(); HAL_Delay(50); //wait for sensor ready @@ -360,12 +329,7 @@ void STS_MOTION_SENSOR_Function_Test_Process(int16_t *self_test_result, uint8_t self_test_result[6] += (int16_t)raw_x; self_test_result[7] += (int16_t)raw_y; - self_test_result[8] += (int16_t)raw_z; - - -#ifdef USE_OLED_SSD1306 - Display_Chart(fft_x, fft_y, fft_z, White, "V."); -#endif + self_test_result[8] += (int16_t)raw_z; } self_test_result[0] /= count; @@ -378,12 +342,6 @@ void STS_MOTION_SENSOR_Function_Test_Process(int16_t *self_test_result, uint8_t self_test_result[7] /= count; self_test_result[8] /= count; - - -#ifdef USE_OLED_SSD1306 - Display_Chart(fft_x, fft_y, fft_z, White, "V."); - ssd1306_SetDisplayOn(0); -#endif //reset to normal mode ADXL345_Init_Motion_Detection(); mems_int1_detected=0; @@ -476,70 +434,7 @@ void STS_SENSOR_MEMS_Reset(uint8_t cnt) } -#ifdef USE_OLED_SSD1306 -static void Display_Axis(SSD1306_COLOR color) -{ - char dispbuf[128]=""; - for (int i=1; i<=4; i++) { - //ssd1306_Line(i*32,0, i*32,SSD1306_HEIGHT,color); - ssd1306_Line(i*32-1,10, i*32-1,SSD1306_HEIGHT/4,color); - ssd1306_SetCursor(i*SSD1306_WIDTH/4-4*6,1); - sprintf(dispbuf,"%4d", (i*Freq_Res_Screen*32)); - ssd1306_WriteString(dispbuf, Font_6x8, color); - } - ssd1306_UpdateScreen(); -} - -void Display_Line_Chart(float *psrc, float ampPeak, uint32_t freqBin, SSD1306_COLOR color, char *title) -{ - - char dispbuf[128]=""; - uint8_t nrf; - float psrcSpectrumPeak = ampPeak; - uint16_t Freq_at_Spectrum_Peak=freqBin; - - ssd1306_Fill(Black); - ssd1306_UpdateScreen(); - nrf=2; //Freq_Res_Screen; //SAMPLE_NUM/SSD1306_WIDTH; - //nrf=SAMPLE_NUM/SSD1306_WIDTH; - - for (uint16_t i=0; i< FFT_LEN; i++) { - ssd1306_Line((uint16_t)(i/nrf),16,(uint16_t)(i/nrf),((uint16_t)(16+(SSD1306_HEIGHT-16)*(psrc[i]/psrcSpectrumPeak))), color); - } - //ssd1306_UpdateScreen(); - sprintf(dispbuf,"%s= %3d Hz", title, Freq_at_Spectrum_Peak); - ssd1306_SetCursor(SSD1306_WIDTH/3,SSD1306_HEIGHT-8); - ssd1306_WriteString(dispbuf, Font_6x8, color); - -// sprintf(dispbuf,"%s= %.2f", "A. ", psrcSpectrumPeak); -// ssd1306_SetCursor(SSD1306_WIDTH/3,SSD1306_HEIGHT-24); -// ssd1306_WriteString(dispbuf, Font_6x8, color); - - Display_Axis(color); - ssd1306_UpdateScreen(); - - -} - -void Display_Chart(float *px,float *py, float *pz, SSD1306_COLOR color, char *title) -{ - char t[128]=""; - ssd1306_SetDisplayOn(1); - sprintf(t,"%s%s",title,"X"); - Display_Line_Chart(px, spectrumPeak_x, freq_at_spectrumPeak_x,White,t); - HAL_Delay(500); - - sprintf(t,"%s%s",title,"Y"); - Display_Line_Chart(py, spectrumPeak_y, freq_at_spectrumPeak_y,White,t); - HAL_Delay(500); - sprintf(t,"%s%s",title,"Z"); - Display_Line_Chart(pz, spectrumPeak_z, freq_at_spectrumPeak_z,White,t); - HAL_Delay(500); - //ssd1306_SetDisplayOn(0); -} -#endif - /* USER CODE BEGIN EF */ diff --git a/LoRaWAN/App/lora_app.c b/LoRaWAN/App/lora_app.c index 4c47de9..4e81078 100644 --- a/LoRaWAN/App/lora_app.c +++ b/LoRaWAN/App/lora_app.c @@ -449,12 +449,7 @@ void LoRaWAN_Init(void) void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { switch (GPIO_Pin) - { - -#if defined(USE_STM32WLE5) - case MEMS_EXTI2_Pin: - break; -#endif + { #if defined(USE_STM32WL55) HAL_Delay(150); //for de-bouncing eliminate @@ -469,9 +464,7 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) } break; -#endif - -#if defined(USE_STM32WL55) + case BUT3_Pin: UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaStopJoinEvent), CFG_SEQ_Prio_0); //mems_int1_detected=1; @@ -481,6 +474,8 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) break; #endif #if defined(USE_STM32WLE5) + case MEMS_EXTI2_Pin: + break; case MEMS_EXTI1_Pin: //APP_LOG(TS_OFF, VLEVEL_L, "\r\n(3) Vibration Sensor EXTI Event BUT3 3 3 3 \r\n"); //YUNHORN_STS_TODO mems_int1_detected=1;