MCU/SensorBox

From ESS-WIKI
Revision as of 09:15, 22 August 2019 by Will.chen (talk | contribs)
Jump to: navigation, search

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.

Retrieved from "https://ess-wiki.advantech.com.tw/wiki/index.php?title=MCU/SensorBox&oldid=17369"