-
3 capacity-to-digital converters with 12 channels and 16 bit accuracy
-
A relatively complete function menu that provides debugging functions
-
Supports Bluetooth Low Energy (BLE) for data transfer from all sensors
The insole uses the ICM-20948 9-axis sensor, which is the world’s lowest power 9-axis MotionTracking device that is ideally suited for Smartphones, Tablets, Wearable Sensors, and IoT applications.
- 3-axis gyroscope, 3-axis accelerometer, 3-axis compass, and a Digital Motion Processor™ (DMPTM) in a 3 mm x 3 mm x 1 mm (24-pin QFN) package
- DMP offloads computation of motion processing algorithms from the host processor, improving system power performance
- Software drivers are fully compliant with Google’s latest Android release
- EIS FSYNC support
AD7147 is a programmable capacitance-to-digital converter (CDC) ,with 12 channels and 16 bit accuracy.
- Femtofarad resolution
- 13 capacitance sensor inputs
- 9 ms update rate, all 13 sensor inputs
- No external RC components required
- Automatic conversion sequencer
- Automatic compensation for environmental changes
- Automatic adaptive threshold and sensitivity levels
- Full power mode: 1 mA
- Low power mode: 21.5 μA
Based on the time slice rotation system freeRTOS, and using the system's own resource mutex api to achieve time-sharing control of the bus, it can maximize the utilization of the I2C bus and have good data stability
The function menu used to debug the sensor parameters in the insole, the following is an example of the function menu:
menu
list all functions and descriptions
Pressure1_GetData
return pressure1 sensors' datas
Pressure1_Calibrate
calibrate pressure1 sensor
Pressure2_GetData
return pressure2 sensors' datas
Pressure2_Calibrate
calibrate pressure2 sensor
Pressure3_GetData
return pressure3 sensors' datas
Pressure3_Calibrate
calibrate pressure3 sensor
Gyroscope_GetGyroRateDivisor
return value of gyro rate divisor
Gyroscope_SetGyroRateDivisor
-gyroratedivisor (1~256)
set the gyro rate divisor
Gyroscope_GetAccelRateDivisor
return value of accel rate divisor
Gyroscope_SetAccelRateDivisor
-accelratedivisor (1~65536)
set the accel rate divisor
Gyroscope_GetAccelRange
return the accel range
Gyroscope_SetAccelRange
-accelrange 2|4|8|16
return accel range
Gyroscope_GetGyroRange
return the gyro range
Gyroscope_SetGyroRange
-gyrorange 250|500|1000|2000
set the gyro range
Gyroscope_GetMagDataRate
return the mag data rate
Gyroscope_SetMagDataRate
-magdatarate SHUTDOWN|SINGLE|10|20|50|100
set mag data rate
Gyroscope_EnableAccelDLPF
-enable ENABLE|DISABLE
-cutoff_freq 437|246|111.4|50.4|23.9|11.5|5.7
enable the accel DLPF(low pass filter)
Gyroscope_EnableGyrolDLPF
-enable enable|disable
-cutoff_freq 361.4|196.6|151.8|119.5|51.2|23.9|11.6|5.7
enable the gyrol DLPF(low pass filter)
Gyroscope_GetData
return the gyroscope datas
clear_nvs_namespace
clear the nvs space
data_json
return the packet consist of the data from all the sensors
show_task
stow task that existed
stop_task
-name (task name)
stop task that existed
Use ESP's low-power Bluetooth to transmit all sensor data packets, which are packaged in json format through the ArduinoJson api.The packet format is as follows:
{
"PRESSURE1": {
"datas": [
-4,
-3,
-4,
-4,
-4,
-3,
-3,
-3,
-3,
-4,
-3,
-7
]
},
"PRESSURE2": {
"datas": [
-2,
-4,
-3,
-3,
-3,
-3,
-3,
-3,
-3,
-2,
-4,
-2
]
},
"PRESSURE3": {
"datas": [
-1,
-3,
-2,
-2,
-3,
-2,
-4,
-2,
-5,
-2,
-2,
-5
]
},
"GYROSCOPE": {
"datas": {
"accel": {
"x": 0.263362199,
"y": 0.474051923,
"z": 9.911994934
},
"gyro": {
"x": 0.012770702,
"y": 0.004256901,
"z": -0.001064225
},
"mag": {
"x": -8.399999619,
"y": 31.64999962,
"z": 8.25
},
"temp": 24.354599
}
}
}
-
In order to use the system resource tracking function of freeRTOS, it is necessary to further improve the dynamic link library of freeRTOS
-
Need to improve the encrypted part of the data packet transmitted through the Bluetooth low energy protocol