Compare commits
2 Commits
Author | SHA1 | Date |
---|---|---|
|
741958d525 | |
|
de31f9afc7 |
|
@ -0,0 +1,6 @@
|
|||
[ProjectFiles]
|
||||
HeaderPath=..\..\..\..\..\..\Drivers\BSP\STM32WLxx_Nucleo
|
||||
[Others]
|
||||
[Groups]
|
||||
Drivers/BSP/STM32WLxx_Nucleo=../../../../../../Drivers/BSP/STM32WLxx_Nucleo/stm32wlxx_nucleo.c; ../../../../../../Drivers/BSP/STM32WLxx_Nucleo/stm32wlxx_nucleo_radio.c
|
||||
Doc=../readme.txt;
|
|
@ -0,0 +1,86 @@
|
|||
# ---> C
|
||||
# Prerequisites
|
||||
*.d
|
||||
|
||||
# Object files
|
||||
*.o
|
||||
*.ko
|
||||
*.obj
|
||||
*.elf
|
||||
*.e1f
|
||||
*.axf
|
||||
*.de
|
||||
*.cyclo
|
||||
*.list
|
||||
*.mk
|
||||
|
||||
# Linker output
|
||||
*.ilk
|
||||
*.map
|
||||
*.exp
|
||||
*.list
|
||||
*.su
|
||||
|
||||
# Precompiled Headers
|
||||
*.gch
|
||||
*.pch
|
||||
|
||||
# Libraries
|
||||
*.lib
|
||||
*.a
|
||||
*.la
|
||||
*.lo
|
||||
|
||||
# Shared objects (inc. Windows DLLs)
|
||||
*.dll
|
||||
*.so
|
||||
*.so.*
|
||||
*.dylib
|
||||
|
||||
|
||||
# Executables
|
||||
*.exe
|
||||
*.out
|
||||
*.app
|
||||
*.i*86
|
||||
*.x86_64
|
||||
*.hex
|
||||
*.axf
|
||||
*.dep
|
||||
*.d
|
||||
*.o
|
||||
*.dp
|
||||
*.lst
|
||||
*.build_log
|
||||
*.build_log.htm
|
||||
|
||||
|
||||
# Debug files
|
||||
*.dSYM/
|
||||
*.su
|
||||
*.idb
|
||||
*.pdb
|
||||
*.dbgconf
|
||||
*.uvguix.lenovo
|
||||
*.uvoptx
|
||||
*.uvprojx
|
||||
*.build_log.htm
|
||||
*.htm
|
||||
*.map
|
||||
*.lnp
|
||||
*.sct
|
||||
*.crf
|
||||
*.lst
|
||||
|
||||
|
||||
# Kernel Module Compile Results
|
||||
*.mod*
|
||||
*.cmd
|
||||
*.htm
|
||||
*.html
|
||||
.tmp_versions/
|
||||
modules.order
|
||||
Module.symvers
|
||||
Mkfile.old
|
||||
dkms.conf
|
||||
|
|
@ -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 */
|
||||
|
|
|
@ -98,7 +98,7 @@ void GetUniqueId(uint8_t *id);
|
|||
|
||||
/**
|
||||
* @brief callback to get the board 32 bits unique ID (LSB)
|
||||
* @param devAddr Device Address
|
||||
* @retval devAddr Device Address
|
||||
*/
|
||||
void GetDevAddr(uint32_t *devAddr);
|
||||
|
||||
|
|
|
@ -124,10 +124,10 @@ typedef struct
|
|||
|
||||
|
||||
/* STS_MM operation functions *****************************************************/
|
||||
|
||||
|
||||
|
||||
|
||||
void STS_MOTION_SENSOR_GetValue(void);
|
||||
void STS_MOTION_SENSOR_SineWaveTest(uint16_t cycles);
|
||||
void STS_MOTION_SENSOR_Motion_INT(void);
|
||||
void STS_MOTION_SENSOR_Init(void);
|
||||
void STS_MOTION_SENSOR_Function_Test_Process(int16_t *sampled_freq, uint8_t count);
|
||||
void STS_MOTION_SENSOR_WakeUp_Process(void);
|
||||
void STS_MOTION_SENSOR_WakeUp_Process_Sampling(void);
|
||||
|
@ -144,15 +144,12 @@ int32_t STS_MOTION_SENSOR_Set_Sleep_Duration(uint8_t Duration);
|
|||
void STS_MOTION_SENSOR_Enable_Wake_Up_Detection(void);
|
||||
void STS_MOTION_SENSOR_Disable_Wake_Up_Detection(void);
|
||||
void STS_MOTION_SENSOR_ACT_INACT_DURATION_Init();
|
||||
|
||||
void STS_MOTION_SENSOR_Motion_INT(void);
|
||||
void STS_MOTION_SENSOR_Init(void);
|
||||
void STS_MOTION_SENSOR_GetValue(void);
|
||||
void STS_M7_GetValue(void);
|
||||
|
||||
void STS_SENSOR_Power_ON(uint8_t cnt);
|
||||
void STS_SENSOR_Power_OFF(uint8_t cnt);
|
||||
void STS_SENSOR_MEMS_Reset(uint8_t cnt);
|
||||
uint8_t STS_SENSOR_MEMS_Get_ID(uint8_t *devID);
|
||||
|
||||
|
||||
/**
|
||||
* @}
|
||||
|
|
|
@ -39,7 +39,7 @@
|
|||
* MODULE SELECTION
|
||||
*/
|
||||
//#define USE_OLED_SSD1306
|
||||
|
||||
//#define USE_TOF_VL53LXX
|
||||
#define USE_MEMS_ADXL345
|
||||
|
||||
/* ########################## Product Selection ############################## */
|
||||
|
@ -47,9 +47,94 @@
|
|||
* @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 ---------------------------------------------------------
|
||||
|
@ -57,11 +142,78 @@
|
|||
* 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 9U
|
||||
#define SubMinorVer 28U
|
||||
#define MinorVer 02U
|
||||
#define SubMinorVer 23U
|
||||
#define FirmwareVersion 3U
|
||||
#define YUNHORN_STS_M7_NVM_CFG_SIZE 3U
|
||||
#define YUNHORN_STS_M7_CFG_CMD_SIZE 9U
|
||||
|
@ -92,6 +244,17 @@
|
|||
#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
|
||||
|
|
|
@ -53,7 +53,297 @@ 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))
|
||||
|
||||
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 */
|
||||
|
||||
/* leakage detection */
|
||||
uint8_t leakage_event; /* 1: leakage detected, 0: no leakage detected */
|
||||
uint8_t leakage_cable_position; /* distance level 0-255 from starting point to length of cable */
|
||||
uint8_t leakage_measure_mode; /* 0: point, 1: cable/distance/level */
|
||||
|
||||
/* closestool clogging detection */
|
||||
uint8_t clogging_state; /* 0: no clogging, 1: clogging */
|
||||
uint8_t clogging_duration_level; /* 0-255 duration level time in min. */
|
||||
uint16_t clogging_level_distance_mm; /* from measure point to measured clogging level, in mm*/
|
||||
|
||||
/* water flow measure */
|
||||
uint16_t water_pulse_count; /* water flow count within counting interval 0-255 */
|
||||
uint8_t water_pipe_diameter_dn; /* DN number DN20--4", DN25--6", DN30--8" */
|
||||
uint8_t water_count_interval; /* in minutes 10 min by default */
|
||||
|
||||
/* power relay */
|
||||
uint8_t break_on_off; /* 0: off, 1: on */
|
||||
uint8_t channel_num_mask; /* 0000 0000 = 0x00, 0xff, 0-7, 8 channels max */
|
||||
|
||||
/* DI, DO digital input output */
|
||||
|
||||
uint8_t di_do_channel_mask; /* 0000 0000 = 0x00, 0xff, 0-7, 8 channels max */
|
||||
|
||||
/* Vibration sensor */
|
||||
uint8_t vibration_on_off; /* 0: off, 1: on */
|
||||
uint8_t vibration_threshold_level; /* 0 -255 */
|
||||
|
||||
uint16_t vb_x_freq; /* max vibration freq in x axis */
|
||||
uint16_t vb_y_freq; /* max vibration freq in y axis */
|
||||
uint16_t vb_z_freq; /* max vibration freq in z axis */
|
||||
|
||||
uint16_t vb_x_rms; /* max vibration rms in x axis */
|
||||
uint16_t vb_y_rms; /* max vibration rms in y axis */
|
||||
uint16_t vb_z_rms; /* max vibration rms in z axis */
|
||||
|
||||
|
||||
/* ventilation fan */
|
||||
uint8_t swing_state; /* 1: swing, 0: no swing */
|
||||
uint8_t speed_level; /* 0: off, speed 1, 2, 3 min max , 4:local remote control released */
|
||||
|
||||
|
||||
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 */
|
||||
|
||||
|
@ -117,10 +407,39 @@ void STS_REBOOT_CONFIG_Init(void);
|
|||
*/
|
||||
void OnRestoreSTSCFGContextProcess(void);
|
||||
|
||||
/**
|
||||
* @brief Read duty cycle level count from flash
|
||||
*/
|
||||
//uint8_t * read_duty_cycle_level_from_flash(uint8_t *flash_code_duty_cycle_level, uint32_t Save_Config_Flash_Addr);
|
||||
#ifdef USE_OLED_SSD1306
|
||||
void yunhorn_smartoilets_mini_display_splash(char *prd_name);
|
||||
void yunhorn_banner(char *s1, char *s2, char *s3);
|
||||
#endif
|
||||
|
||||
void STS_MOTION_SENSOR_Power_ON(void);
|
||||
void STS_MOTION_SENSOR_Power_OFF(void);
|
||||
void STS_SENSOR_Upload_Config_Invalid_Message(void);
|
||||
void STS_SENSOR_Upload_Message(uint8_t appDataPort, uint8_t appBufferSize, char *appDataBuffer);
|
||||
void STS_SENSOR_Auto_Responder_Process(uint8_t tlv_ver,uint8_t tlv_type, uint8_t tlv_length, uint8_t *tlv_content);
|
||||
uint8_t STS_SENSOR_MEMS_Get_ID(uint8_t *devID);
|
||||
|
||||
void STS_M7_GetValue(void);
|
||||
void STS_M7_SineWaveTest(uint16_t cycles);
|
||||
void STS_M7_Motion_INT(void);
|
||||
void STS_MOTION_SENSOR_Init(void);
|
||||
|
||||
void STS_MOTION_SENSOR_Disable_Wake_Up_Detection(void);
|
||||
|
||||
int32_t STS_MOTION_SENSOR_Set_Wake_Up_Threshold(uint8_t Threshold);
|
||||
int32_t STS_MOTION_SENSOR_Set_Wake_Up_Duration(uint8_t Duration);
|
||||
int32_t STS_MOTION_SENSOR_Enable_Inactivity_Detection(STS_MOTION_SENSOR_IntPin_t IntPin);
|
||||
int32_t STS_MOTION_SENSOR_Disable_Inactivity_Detection(void);
|
||||
int32_t STS_MOTION_SENSOR_Set_Sleep_Duration(uint8_t Duration);
|
||||
|
||||
void STS_MOTION_SENSOR_Get_Event_Status(STS_MOTION_SENSOR_Event_Status_t *Status);
|
||||
void STS_MOTION_SENSOR_Enable_Wake_Up_Detection(void);
|
||||
void STS_MOTION_SENSOR_Initialization(void);
|
||||
|
||||
void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size);
|
||||
void STS_SENSOR_Function_Test_Process(void);
|
||||
|
||||
|
|
|
@ -45,14 +45,14 @@
|
|||
/* USER CODE BEGIN PV */
|
||||
|
||||
volatile uint16_t TIM2_Counter=0;
|
||||
I2C_HandleTypeDef hi2c1;
|
||||
I2C_HandleTypeDef hi2c2, 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,6 +212,47 @@ 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
|
||||
|
|
|
@ -100,7 +100,7 @@ void PWR_EnterStopMode(void)
|
|||
LL_PWR_ClearFlag_C1STOP_C1STB();
|
||||
|
||||
/* USER CODE BEGIN EnterStopMode_2 */
|
||||
HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN1);
|
||||
|
||||
/* USER CODE END EnterStopMode_2 */
|
||||
HAL_PWREx_EnterSTOP2Mode(PWR_STOPENTRY_WFI);
|
||||
/* USER CODE BEGIN EnterStopMode_3 */
|
||||
|
@ -126,6 +126,9 @@ void PWR_ExitStopMode(void)
|
|||
#ifdef YUNHORN_STS_M7_ENABLED
|
||||
MX_I2C1_Init();
|
||||
MX_TIM2_Init();
|
||||
#ifdef USE_OLED_SSD1306
|
||||
HAL_I2C_Init(&SSD1306_I2C_HANDLE);
|
||||
#endif
|
||||
HAL_I2C_Init(&MOTION_SENSOR_I2C_HANDLE);
|
||||
HAL_TIM_Base_Start_IT(&MOTION_SENSOR_TIM_HANDLE);
|
||||
#endif
|
||||
|
|
|
@ -147,7 +147,59 @@ 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 */
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -191,7 +243,40 @@ 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 */
|
||||
}
|
||||
|
||||
}
|
||||
/**
|
||||
|
|
|
@ -236,7 +236,7 @@ void GetUniqueId(uint8_t *id)
|
|||
}
|
||||
|
||||
void GetDevAddr(uint32_t *devAddr)
|
||||
{
|
||||
{
|
||||
/* USER CODE BEGIN GetDevAddr_1 */
|
||||
|
||||
/* USER CODE END GetDevAddr_1 */
|
||||
|
@ -250,6 +250,7 @@ void GetDevAddr(uint32_t *devAddr)
|
|||
/* USER CODE BEGIN GetDevAddr_2 */
|
||||
|
||||
/* USER CODE END GetDevAddr_2 */
|
||||
|
||||
}
|
||||
|
||||
/* USER CODE BEGIN EF */
|
||||
|
|
|
@ -32,6 +32,9 @@
|
|||
#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"
|
||||
|
@ -75,7 +78,10 @@ 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;
|
||||
|
@ -294,7 +300,9 @@ 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();
|
||||
|
@ -303,14 +311,37 @@ 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
|
||||
|
@ -329,7 +360,12 @@ 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;
|
||||
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[0] /= count;
|
||||
|
@ -342,6 +378,12 @@ 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;
|
||||
|
@ -434,7 +476,70 @@ 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 */
|
||||
|
||||
|
|
|
@ -639,7 +639,7 @@ void Motion_Interrupt_Config(void)
|
|||
unsigned short i=0;
|
||||
uint8_t v_int1=0;
|
||||
uint8_t val=0;
|
||||
//APP_LOG(TS_ON, VLEVEL_L, "========== Start Motion Interrupt Test ======\r\n");
|
||||
APP_LOG(TS_ON, VLEVEL_L, "========== Start Motion Interrupt Test ======\r\n");
|
||||
//ADXL345_Init();
|
||||
ADXL345_SetInactivityDetection(ADXL345_REG_ACT_INACT_CTL,
|
||||
ADXL345_INACT_X_EN|ADXL345_INACT_Y_EN|ADXL345_INACT_Z_EN,
|
||||
|
@ -665,7 +665,7 @@ void Sine_waveGenerate(void)
|
|||
acc_y[i] = 28.0 * cos(PI2 * i * 97.0/Fss + 28.3) + 46.0* cos(PI2 * i * 458/Fss + 30);
|
||||
acc_z[i] = 22.0 * cos(PI2 * i * 152/Fss) + 14.0* sin(PI2 * i * 358/Fss)+ 36.0 * sin(PI2 * i * 460/Fss );
|
||||
}
|
||||
//APP_LOG(TS_ON, VLEVEL_L, "\r\n\r\n~~~~~~~~~~~~~~~~ Sine Cos Wave OK~~~~~~~~~~~~~~~~~~~~\r\n");
|
||||
APP_LOG(TS_ON, VLEVEL_L, "\r\n\r\n~~~~~~~~~~~~~~~~ Sine Cos Wave OK~~~~~~~~~~~~~~~~~~~~\r\n");
|
||||
}
|
||||
|
||||
|
||||
|
@ -725,10 +725,19 @@ void Process_FFT_and_Amplitude(void)
|
|||
|
||||
Do_FFT();
|
||||
|
||||
//
|
||||
// sprintf(outbuf,"\r\nSpectrum Peak: X=%.2f, Y=%.2f, Z=%.2f\r\n",
|
||||
// spectrumPeak_x, spectrumPeak_y, spectrumPeak_z);
|
||||
// APP_LOG(TS_ON, VLEVEL_L, outbuf );
|
||||
|
||||
freq_at_spectrumPeak_x = bin_at_spectrumPeak_x*Freq_Res;
|
||||
freq_at_spectrumPeak_y = bin_at_spectrumPeak_y*Freq_Res;
|
||||
freq_at_spectrumPeak_z = bin_at_spectrumPeak_z*Freq_Res;
|
||||
|
||||
/*
|
||||
sprintf(outbuf,"\r\n Freq: X=%4d Hz, Y=%4d Hz, Z=%4d Hz\r\n",
|
||||
(uint16_t)freq_at_spectrumPeak_x, (uint16_t)freq_at_spectrumPeak_y, (uint16_t)freq_at_spectrumPeak_z);
|
||||
APP_LOG(TS_ON, VLEVEL_M, outbuf );
|
||||
|
||||
*/
|
||||
}
|
||||
|
||||
|
|
|
@ -449,7 +449,12 @@ 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
|
||||
|
@ -464,7 +469,9 @@ 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;
|
||||
|
@ -474,8 +481,6 @@ 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;
|
||||
|
|
|
@ -67,7 +67,7 @@ extern "C" {
|
|||
/*!
|
||||
* LoRaWAN default class
|
||||
*/
|
||||
#define LORAWAN_DEFAULT_CLASS CLASS_A
|
||||
#define LORAWAN_DEFAULT_CLASS CLASS_C
|
||||
|
||||
/*!
|
||||
* LoRaWAN default confirm state
|
||||
|
@ -78,13 +78,13 @@ extern "C" {
|
|||
* LoRaWAN Adaptive Data Rate
|
||||
* @note Please note that when ADR is enabled the end-device should be static
|
||||
*/
|
||||
#define LORAWAN_ADR_STATE LORAMAC_HANDLER_ADR_OFF //LORAMAC_HANDLER_ADR_ON
|
||||
#define LORAWAN_ADR_STATE LORAMAC_HANDLER_ADR_ON //LORAMAC_HANDLER_ADR_ON
|
||||
|
||||
/*!
|
||||
* LoRaWAN Default data Rate Data Rate
|
||||
* @note Please note that LORAWAN_DEFAULT_DATA_RATE is used only when LORAWAN_ADR_STATE is disabled
|
||||
*/
|
||||
#define LORAWAN_DEFAULT_DATA_RATE DR_2
|
||||
#define LORAWAN_DEFAULT_DATA_RATE DR_0
|
||||
|
||||
/*!
|
||||
* LoRaWAN default activation type
|
||||
|
|
Loading…
Reference in New Issue