MCU/SensorBox
From ESS-WIKI
Contents
Introduction
Sensor Box has general interface to collect sensor data and it benefits the user easy to use.
Architecture
Content.
Source tree
Content.
| Directory | Description |
| sensor_api | The source code of API of Sensor Box. |
| sensor_driver | The source code of sensor driver. |
| sensor_lib_cfg.sh | The script used to configure which sensor we enable/disable. |
Sensor list
Currently, these sensors are ported into sensor box as default.
- HDC1080 - Digital Temperature/Humidity Sensor
Item Description Vendor Texas Instruments Interface I2C Pin-defined Check
- DS18B20 - 1-Wire Digital Thermometer
Item Description Vendor Maxim Interface GPIO Pin-defined Check
- VL53L0X - Time-of-Flight ranging sensor
Item Description Vendor STMicroelectronics Interface I2C Pin-defined Check
- HPMA215S0-XXX - Particle Sensor
Item Description Vendor Honeywell Interface I2C Pin-defined Check
API
Content.
int SBox_iInit(void);
- Brief
- Initialize sensor box
- Parameters
- None
- Return
- On success, eSErr_None is returned.
- On error, other is returned.
int SBox_iUnInit(void);
- Brief
- Uninitialize sensor box
- Parameters
- None
- Return
- On success, eSErr_None is returned.
- On error, other is returned.
int SBox_iGetAllData(TSBDataFmt *_ptDataSet);
- Brief
- Update all sensors and get all data of sensors
- Parameters
- _ptDataSet: the pointer to data buffer that is used to get sensor data back.
- Return
- On success, eSErr_None is returned.
- On error, other is returned.
int SBox_iGetData(int _iModelName, TSBDataFmt *_ptData);
- Brief
- Update only one sensor and get data
- Parameters
- _iModelName: the index of model name to specify which sensor will be updated.
- _ptData: the pointer to data that is used to get sensor data back.
- Return
- On success, eSErr_None is returned.
- On error, other is returned.
Get sensor box
Content.
Example
Content.
How to porting new sensor into sensor box
When the user intends to add new sensor into sensor box, the user needs to find the configuration file "sensor_box.cfg" located at the folder "sensor_api/", then opens it and follows the below for how to do.
Add new configuration with the model name and sensor data
Step01: Define the model name:
- Please define the model name by the macro that is based on naming rule of "SN_MN" + "DRIVER_FOLDER".
- "SB_MN_" is fixed string as prefix.
- "DRIVER_FOLDER" is the name of directory of specified sensor driver and it's located at the directory of sensor driver.
- For example as below:
#define SB_MN_HDC1080 Hdc1080#define SB_MN_DS18B20 Ds18b20
Step02: Define the sensor data:
- Please define the name of sensor data by the macro that is based on naming rule of "SB_" + "DRIVER_FOLDER" + "_DATA" + N + "_NAME".
- "SB_" is fixed string as prefix.
- "DRIVER_FOLDER" is the name of directory of specified sensor driver and it's located at the directory of sensor driver.
- "_DATA" is fixed string.
- N is serial number of this sensor.
- "_NAME" is fixed string as postfix.
#define SB_HDC1080_DATA1_NAME Temperature#define SB_HDC1080_DATA2_NAME Humidity
Step03: Create index with the sensor:
- The user needs to open the file "sensor_index.cfg" located at the folder "sensor_api/" for below steps.
- Add index into "enum ESensorModelNameList"
- The index is defined using pre-defined macro "SB_DEFINE_MN(model_name)". The model name is defined above by the user.
typedef enum ESensorModelNameList { // HDC 1080 #if defined(SB_MN_HDC1080) SB_DEFINE_MN(SB_MN_HDC1080), #endif SB_DEFINE_MN(Total) }TSBModelNameList;
- Add index into "enum ESensorDataList"
- content
Add new HAL instance
Content.
Add new sensor driver
Content.