蓝牙连接时灯状态 温度校准 电量获取优化

This commit is contained in:
hu-jiafeng 2025-06-21 11:28:37 +08:00
parent 6b7a65900a
commit e5afe5ef93
16 changed files with 48013 additions and 47807 deletions

View File

@ -6,6 +6,7 @@
"xutility": "c",
"tuya_ble_type.h": "c",
"initializer_list": "c",
"type_traits": "c"
"type_traits": "c",
"event.h": "c"
}
}

View File

@ -77,8 +77,8 @@ void app_var_init(void)
app_var.play_poweron_tone = 1;
app_var.auto_off_time = TCFG_AUTO_SHUT_DOWN_TIME;
app_var.warning_tone_v = 340;
app_var.poweroff_tone_v = 330;
app_var.warning_tone_v = 365;
app_var.poweroff_tone_v = 360;
}
__attribute__((weak))

View File

@ -22,7 +22,8 @@
static int led_state = 0;
static u16 timer_temperature_detect = 0;
static u16 timer_sleep = 0;
static u16 timer_work = 0;
//static u16 timer_work = 0;
static int16_t ADJ_temp = 0;
app_dev_info_t dev_info;
//struct app_dev_config_t dev_config;
@ -69,13 +70,13 @@ void ble_receive_callback(u8* data,u16 len){
if(strstr(data,"AT^TEMP:") != NULL){
u8 str_get_temp[64] = {0};
memset(str_get_temp,0,sizeof(str_get_temp));
sprintf(str_get_temp,"AT^TEMP:%d,%d,%d,%d", dev_info.temperature_sensor/10, dev_info.temperature_sensor/10, dev_info.temperature_sensor/10,dev_info.temperature_state);
sprintf(str_get_temp,"AT^TEMP:%d,%d,%d,%d", dev_info.temperature_sensor/10, dev_info.temperature_sensor/10, dev_info.temperature_sensor/10, dev_info.temperature_state);
ble_send_data(&str_get_temp,strlen(str_get_temp));
}
else if(strstr(data,"AT+TEMP=") != NULL){
u8 str_get_temp[64] = {0};
memset(str_get_temp,0,sizeof(str_get_temp));
sprintf(str_get_temp,"AT+TEMP=%d,%d,%d,%d", dev_info.temperature_sensor/10, dev_info.temperature_sensor/10, dev_info.temperature_sensor/10,dev_info.temperature_state);
sprintf(str_get_temp,"AT+TEMP=%d,%d,%d,%d", dev_info.temperature_sensor/10, dev_info.temperature_sensor/10, dev_info.temperature_sensor/10, dev_info.temperature_state);
ble_send_data(&str_get_temp,strlen(str_get_temp));
}
//BATT 真实电压值
@ -122,11 +123,31 @@ void ble_receive_callback(u8* data,u16 len){
memset(str_adj,0,sizeof(str_adj));
sprintf(str_adj,"AT+ADJ37=OK");
ble_send_data(&str_adj,strlen(str_adj));
u16 temp = dev_info.temperature_sensor;
ADJ_temp = dev_info.temperature_sensor - BLE_ADJUST_TEMP_37 ;
if (ADJ_temp > 5000 || ADJ_temp < -5000) {
ADJ_temp = 0;
}
syscfg_write(ADJ_TEMP_CONFIG, &ADJ_temp,sizeof(ADJ_temp));
}
else{
printf("unknow cmd\n");
}
}
static u16 blink_timer_id = 0;
void temperature_poweron_led_timeout(){
temperature_work_led(0);
}
static void blink_led_callback(void *priv) {
temperature_work_led(1);
sys_s_hi_timerout_add(NULL, temperature_poweron_led_timeout, 50); // 0.05 秒后关闭
}
void ble_led_timeout() {
temperature_work_led(0);
blink_timer_id = usr_timer_add(NULL, blink_led_callback, 6000, 1);
}
/**
*
*1
@ -135,8 +156,10 @@ void ble_on_connect_change(u8 is_connect){
printf("ble_on_connect_change :(state:%d) \n",is_connect);
if(is_connect){
temperature_work_led(1);
sys_s_hi_timerout_add(NULL,ble_led_timeout,3000);
}else{
temperature_work_led(0);
usr_timer_del(blink_timer_id);
}
}
@ -413,16 +436,39 @@ u16 buffer[MAX_SIZE];
u16 ntc = (u16)0;
// u8 battery = 99;
u8 battery = get_vbat_percent();
u16 batt_val = 0;
if (!batt_val) {
batt_val = get_vbat_level();
} else {
batt_val = (get_vbat_level() + batt_val) / 2;
}
//batt
// battery = get_cur_battery_level() *10;
if (ADJ_temp != 0) {
int16_t temp_body = (int16_t)body;
int16_t temp_obj = (int16_t)obj;
temp_body -= ADJ_temp;
temp_obj -= ADJ_temp;
body = (temp_body > 0) ? (u16)temp_body : 0;
obj = (temp_obj > 0) ? (u16)temp_obj : 0;
}
if(body == 0 && obj == 0 ){
printf("error data ...\r\n");
return ;
}
dev_info.temperature_sensor = body;
dev_info.temperature_ntc = body;
dev_info.batt_percent = battery;
dev_info.batt_val = get_vbat_value();
dev_info.batt_val = batt_val;
printf("battery: %d\r\n",battery);
u8 ff_temp_data[7] = {0};
u8 ff_temp_data[9] = {0};
//body
ff_temp_data[0] = (body >> 8) & 0xFF;
ff_temp_data[1] = (body) & 0xFF;
@ -435,6 +481,9 @@ u16 buffer[MAX_SIZE];
ff_temp_data[6] = battery & 0xFF;
ff_temp_data[7] = (batt_val >> 8) & 0xFF;
ff_temp_data[8] = batt_val & 0xFF;
//先查明当前连接的conn_handle
u16 connection_handle = ble_comm_dev_get_handle(0, GATT_ROLE_SERVER);
if(connection_handle != 0)//
@ -445,26 +494,23 @@ u16 buffer[MAX_SIZE];
//printf("connection_handle: %04x\n", connection_handle);
}
trans_client_adv_data_set_ff(ff_temp_data,sizeof(ff_temp_data));
gpio_direction_output(IO_PORTB_05, 0);
//计算温度稳定性
u16 temp_body = dev_info.temperature_sensor;
u16 last_body_temp = 0;
if(temp_body < BLE_TEMPERATURE_LIMIT_MIN || temp_body > BLE_TEMPERATURE_LIMIT_MAX){
if(body < BLE_TEMPERATURE_LIMIT_MIN || body > BLE_TEMPERATURE_LIMIT_MAX){ //异常温度不发送
printf("error temp_body\r\n");
return;
}
last_body_temp = temp_body;
trans_client_adv_data_set_ff(ff_temp_data,sizeof(ff_temp_data));
gpio_direction_output(IO_PORTB_05, 0);
//计算当前温度是否稳定
u16 temp_body = dev_info.temperature_sensor;
//添加数据到队列,数量足够后取出所有温度数据 计算方差 如果小于 N N可以趋近于0 暂定小于20 则表示温度稳定
if (tuya_ble_queue_isFull(&temp_queue)) {
tuya_ble_queue_decrease(&temp_queue); // 移除队首元素
}
tuya_ble_enqueue(&temp_queue, &last_body_temp);
tuya_ble_enqueue(&temp_queue, &temp_body);
uint8_t size = tuya_ble_get_queue_used(&temp_queue);
if (!tuya_ble_queue_isFull(&temp_queue)) {
@ -481,33 +527,32 @@ u16 buffer[MAX_SIZE];
index = (index + 1) % temp_queue.size;
}
// 中值滤波:排序
// for (int i = 0; i < MAX_SIZE - 1; i++) {
// for (int j = i + 1; j < MAX_SIZE; j++) {
// if (t_datas[i] > t_datas[j]) {
// u16 tmp = t_datas[i];
// t_datas[i] = t_datas[j];
// t_datas[j] = tmp;
// }
// }
// }
// // 取中值
// u16 mean_value;
// if (MAX_SIZE % 2 == 1) {
// mean_value = t_datas[MAX_SIZE / 2];
// } else {
// mean_value = (t_datas[MAX_SIZE / 2 - 1] + t_datas[MAX_SIZE / 2]) / 2;
// }
// printf("mean_value:%d \r\n", mean_value);
//计算平均值
u32 sum = 0;
for(i = 0;i < MAX_SIZE; i++){
sum += t_datas[i];
// 中值滤波取中值
for (int i = 0; i < MAX_SIZE - 1; i++) {
for (int j = i + 1; j < MAX_SIZE; j++) {
if (t_datas[i] > t_datas[j]) {
u16 tmp = t_datas[i];
t_datas[i] = t_datas[j];
t_datas[j] = tmp;
}
}
}
u16 mean_value;
if (MAX_SIZE % 2 == 1) {
mean_value = t_datas[MAX_SIZE / 2];
} else {
mean_value = (t_datas[MAX_SIZE / 2 - 1] + t_datas[MAX_SIZE / 2]) / 2;
}
u16 mean_value = sum / MAX_SIZE;
printf("mean_value:%d \r\n", mean_value);
// //计算平均值
// u32 sum = 0;
// for(i = 0;i < MAX_SIZE; i++){
// sum += t_datas[i];
// }
// u16 mean_value = sum / MAX_SIZE;
// printf("mean_value:%d \r\n", mean_value);
//计算方差
double sumOfSquares = 0;
for (int i = 0; i < MAX_SIZE; i++) {
@ -517,11 +562,7 @@ u16 buffer[MAX_SIZE];
printf("variance_value:%d \r\n", variance_value);
//方差小于 20 表示温度稳定
if(variance_value <= 15){
dev_info.temperature_state=1;
}else{
dev_info.temperature_state=0;
}
dev_info.temperature_state = (variance_value <= 30) ? 1 : 0;
printf("dev_info.temperature_state:%d\r\n", dev_info.temperature_state);
}
}
@ -531,12 +572,14 @@ u16 buffer[MAX_SIZE];
* //BBOOEEbs 2字节体温 2字节物温 2字节环温 1字节电量 1字节状态
* 00 01
*/
void temperature_update_adv_ff(u16 temp_body,u16 temp_obj,u16 temp_env,u8 batt,u8 state){
void temperature_update_adv_ff(u16 temp_body,u16 temp_obj,u16 temp_env,u8 batt,u8 state ,u16 batt_val){
u16 body = (u16)temp_body;
u16 obj = (u16)temp_obj;
u16 ntc = (u16)temp_env;
u8 battery = 99;
u8 ff_temp_data[8] = {0};
u8 battery = (u8)batt;
u16 val = (u16)batt_val;
u8 ff_temp_data[10] = {0};
//body
ff_temp_data[0] = (body >> 8) & 0xFF;
ff_temp_data[1] = (body) & 0xFF;
@ -547,9 +590,12 @@ u16 buffer[MAX_SIZE];
ff_temp_data[4] = (ntc >> 8) & 0xFF;
ff_temp_data[5] = (ntc) & 0xFF;
//batt
battery = get_cur_battery_level() *10;
//battery = get_cur_battery_level() *10;
ff_temp_data[6] = battery & 0xFF;
ff_temp_data[7] = state & 0xFF;
//val
ff_temp_data[8] = (val >> 8) & 0xFF; // 高字节
ff_temp_data[9] = val & 0xFF;
trans_client_adv_data_set_ff(ff_temp_data,sizeof(ff_temp_data));
}
@ -605,10 +651,18 @@ void temperature_detect(void)
rtc_test_demo();
nst1002_read_temperatura();
u8 battery = get_vbat_percent();
u16 batt_val = 0;
// 低电处理电量小于20%
if (battery < 20 && !charge_state) {
if (!batt_val) {
batt_val = get_vbat_level();
} else {
batt_val = (get_vbat_level() + batt_val) / 2;
}
printf("battery:%d\r\n", batt_val);
// 低电处理电压小于365
if (batt_val <= 365 && !charge_state) {
if (!low_battery_led_blinking) {
// 开始闪烁
low_battery_led_blinking = 1;
@ -643,9 +697,14 @@ void temperature_work_led(u8 on){
gpio_direction_output(BLE_TEMPERATURE_WORK_LED, 0);
}
}
void temperature_poweron_led_timeout(){
temperature_work_led(0);
void device_hell(u8 on){
gpio_set_direction(DEVICE_HALL, 1);
if(on){
gpio_set_hd0(DEVICE_HALL, 1);
gpio_direction_output(DEVICE_HALL, 1);
}else{
gpio_direction_output(DEVICE_HALL, 0);
}
}
static u8 init_complete = 0;
@ -670,6 +729,23 @@ void temperature_set_soft_poweroff(void)
power_set_soft_poweroff();
#endif
}
void hall_isr_callback()
{
// 这里写HALL变化时的处理逻辑
printf("hall_isr_callback:%d\n", gpio_read(DEVICE_HALL));
// 例如:唤醒、计数、状态切换等
}
// 注册下降沿/上升沿中断
void hall_gpio_init(void)
{
gpio_set_direction(DEVICE_HALL, 1);
gpio_set_pull_up(DEVICE_HALL, 1);
gpio_set_die(DEVICE_HALL, 1);
// 配置为唤醒源,下降沿/上升沿触发
gpio_wakeup0(DEVICE_HALL); // 使能唤醒通道0具体通道可查手册
}
void timer_sleep_callback(void);
void temperature_charge_state(int state){
static u8 charge_inited = 0;//防止充电因电压不稳,重复触发充电状态
@ -691,6 +767,9 @@ void temperature_charge_state(int state){
switch (state){
//接入充电
case BLE_TEMPERATURE_CHARGE_STATE_CHARGING :
if (gpio_read(DEVICE_HALL) == 1 ) {
}
if (charge_inited) {
printf("vbal instablity!\n");
return;
@ -722,6 +801,8 @@ void temperature_charge_state(int state){
break;
//拔出电压0.6左右)< ldoin < vbat
case BLE_TEMPERATURE_CHARGE_KEEP_CHARGING :
if (gpio_read(DEVICE_HALL) == 1 ) {
}
if (charge_inited) {
printf("vbal instablity!\n");
return;
@ -864,7 +945,6 @@ void timer_sleep_callback(void)
// sys_timer_del(timer_work);
// timer_sleep = sys_timer_add(NULL, timer_sleep_callback, 10000);
// }
void temperature_init(void)
{
@ -880,7 +960,7 @@ void temperature_init(void)
extern u16 get_vbg_trim();
printf("vbat_trim:%d...vbg_trim:%d", get_vbat_trim(), get_vbg_trim());
// 添加以上代码看打印值如果为15跟63那就要用烧录器先烧录一遍。
hall_gpio_init();
temperature_config_init();
//从收纳仓取出时自动开机指示灯亮2S后灭
@ -891,8 +971,11 @@ void temperature_init(void)
//sys_s_hi_timer_add(NULL, temperature_detect, 2000);
//sys_timer_add 方式添加定时任务 任务里边可以使用udelay delay_ms 等延时 sys_s_hi_timer_add 则延时无效
if (syscfg_read(ADJ_TEMP_CONFIG, &ADJ_temp, sizeof(ADJ_temp)) != sizeof(ADJ_temp)) {
ADJ_temp = 0;
}
timer_temperature_detect = sys_timer_add(NULL, temperature_detect, dev_config.detect_interval);
//工作10秒关机 关机10s后 RTC重新唤醒
//工作15秒关机 关机5s后 RTC重新唤醒
//timer_sleep = sys_timer_add(NULL, timer_sleep_callback,DEVICE_WORK_TIMEOUT);
tuya_ble_queue_init(&temp_queue, buffer, MAX_SIZE, sizeof(u16));

View File

@ -9352,7 +9352,7 @@
"gatt_common/le_gatt_common.h"
"examples/trans_data/ble_trans_profile.h"
1748568313 source:c:\users\hjf\desktop\temperature_it12\fw-ac63_bt_sdk\cpu\bd19\adc_api.c
1750414073 source:c:\users\hjf\desktop\temperature_it12\fw-ac63_bt_sdk\cpu\bd19\adc_api.c
"typedef.h"
"asm/clock.h"
"asm/adc_api.h"
@ -12527,7 +12527,7 @@
"system/debug.h"
"smartbox_extra_flash_opt.h"
1748568313 source:c:\users\hjf\desktop\temperature_it12\fw-ac63_bt_sdk\apps\spp_and_le\app_main.c
1750413834 source:c:\users\hjf\desktop\temperature_it12\fw-ac63_bt_sdk\apps\spp_and_le\app_main.c
"system/includes.h"
"app_config.h"
"app_action.h"
@ -12541,13 +12541,13 @@
"jl_kws/jl_kws_api.h"
"debug.h"
1749712206 c:\users\hjf\desktop\temperature_it12\fw-ac63_bt_sdk\apps\spp_and_le\include\app_temperature.h
1750382587 c:\users\hjf\desktop\temperature_it12\fw-ac63_bt_sdk\apps\spp_and_le\include\app_temperature.h
"typedef.h"
"system/event.h"
1748568312 c:\users\hjf\desktop\temperature_it12\fw-ac63_bt_sdk\apps\common\jl_kws\jl_kws_api.h
1749696102 source:c:\users\hjf\desktop\temperature_it12\fw-ac63_bt_sdk\apps\spp_and_le\app_temperature.c
1750414076 source:c:\users\hjf\desktop\temperature_it12\fw-ac63_bt_sdk\apps\spp_and_le\app_temperature.c
"system/includes.h"
"app_config.h"
"app_action.h"
@ -13859,7 +13859,7 @@
"app_config.h"
"chargebox.h"
1749439693 source:c:\users\hjf\desktop\temperature_it12\fw-ac63_bt_sdk\apps\spp_and_le\modules\power\app_power_manage.c
1750470096 source:c:\users\hjf\desktop\temperature_it12\fw-ac63_bt_sdk\apps\spp_and_le\modules\power\app_power_manage.c
"system/includes.h"
"app_power_manage.h"
"app_main.h"

View File

@ -2,9 +2,14 @@
<CodeBlocks_layout_file>
<FileVersion major="1" minor="0" />
<ActiveTarget name="Release" />
<File name="..\..\..\..\cpu\bd19\adc_api.c" open="1" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<File name="board_ac6323a_demo_cfg.h" open="1" top="0" tabpos="4" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="11677" topLine="441" />
<Cursor1 position="12074" topLine="216" />
</Cursor>
</File>
<File name="board_config.h" open="1" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="518" topLine="0" />
</Cursor>
</File>
<File name="..\..\include\app_config.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
@ -12,6 +17,16 @@
<Cursor1 position="10242" topLine="189" />
</Cursor>
</File>
<File name="..\..\examples\trans_data\ble_trans.h" open="1" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="553" topLine="0" />
</Cursor>
</File>
<File name="..\..\..\..\cpu\bd19\adc_api.c" open="1" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="11677" topLine="439" />
</Cursor>
</File>
<File name="..\..\modules\power\app_charge.c" open="1" top="0" tabpos="6" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1522" topLine="53" />
@ -22,14 +37,14 @@
<Cursor1 position="8796" topLine="308" />
</Cursor>
</File>
<File name="..\..\modules\bt\app_comm_edr.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<File name="..\..\examples\trans_data\ble_trans.c" open="1" top="0" tabpos="8" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1154" topLine="18" />
<Cursor1 position="26810" topLine="719" />
</Cursor>
</File>
<File name="board_ac6323a_demo_cfg.h" open="1" top="0" tabpos="4" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<File name="..\..\app_temperature.c" open="1" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="12074" topLine="216" />
<Cursor1 position="22937" topLine="673" />
</Cursor>
</File>
<File name="..\..\..\common\third_party_profile\jieli\gatt_common\le_gatt_server.c" open="1" top="0" tabpos="9" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
@ -37,29 +52,14 @@
<Cursor1 position="27428" topLine="677" />
</Cursor>
</File>
<File name="board_config.h" open="1" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<File name="..\..\app_main.c" open="1" top="1" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="518" topLine="0" />
<Cursor1 position="7497" topLine="279" />
</Cursor>
</File>
<File name="..\..\app_main.c" open="1" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<File name="..\..\modules\bt\app_comm_edr.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="7497" topLine="261" />
</Cursor>
</File>
<File name="..\..\examples\trans_data\ble_trans.c" open="1" top="0" tabpos="8" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="26810" topLine="719" />
</Cursor>
</File>
<File name="..\..\app_temperature.c" open="1" top="1" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="16761" topLine="496" />
</Cursor>
</File>
<File name="..\..\examples\trans_data\ble_trans.h" open="1" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="553" topLine="0" />
<Cursor1 position="1154" topLine="18" />
</Cursor>
</File>
</CodeBlocks_layout_file>

View File

@ -5,9 +5,9 @@
#include "system/event.h"
/**
* 1.0.1 2025.05.16
* 1.0.2 2025.06.13
*/
#define BLE_TEMPERATURE_DEVICE_SOFT_VER "1.0.1"
#define BLE_TEMPERATURE_DEVICE_SOFT_VER "1.0.2"
#define BLE_TEMPERATURE_DETECT_INTERVAL 250
#define BLE_TEMPERATURE_WORK_TIMEOUT 10*1000
@ -19,6 +19,7 @@
#define BLE_TEMPERATURE_DEVICE_NTC 0
#define BLE_TEMPERATURE_WORK_LED IO_PORTA_07
#define DEVICE_HALL IO_PORTB_07
#define BLE_TEMPERATURE_CHARGE_STATE_CHARGING 1
#define BLE_TEMPERATURE_CHARGE_STATE_FULL 2
@ -29,6 +30,7 @@
//VM用户自定义配置项[1 ~ 49]
#define BLE_TEMPERATURE_VM_DEVICE_CONFIG 2
#define INIT_COMPLETE_FLAG_CONFIG 3
#define ADJ_TEMP_CONFIG 4
#define DEVICE_SLEEP_TIMEOUT 5 //设备休眠时间
#define DEVICE_WORK_TIMEOUT 15000 //设备工作时间
@ -36,6 +38,7 @@
#define BLE_TEMPERATURE_LIMIT_MIN 2000
#define BLE_TEMPERATURE_LIMIT_MAX 4500
#define BLE_ADJUST_TEMP_37 3700 //37.0C
#define MAX_SIZE 30
typedef struct
{

View File

@ -113,11 +113,12 @@ u16 get_vbat_value(void)
{
return bat_val;
}
//1
u8 get_vbat_percent(void)
{
u16 tmp_bat_val;
u16 bat_val = get_vbat_level();
app_var.poweroff_tone_v = 360;
if (battery_full_value == 0) {
#if TCFG_CHARGE_ENABLE
battery_full_value = (get_charge_full_value() - 100) / 10; //防止部分电池充不了这么高电量,充满显示未满的情况
@ -125,11 +126,9 @@ u8 get_vbat_percent(void)
battery_full_value = 420;
#endif
}
if (bat_val <= app_var.poweroff_tone_v) {
return 0;
return 1;
}
tmp_bat_val = remap_calculate_vbat_percent(bat_val);
if (!tmp_bat_val) {
tmp_bat_val = ((u32)bat_val - app_var.poweroff_tone_v) * 100 / (battery_full_value - app_var.poweroff_tone_v);

View File

@ -163,7 +163,7 @@ u32 adc_value_to_voltage(u32 adc_vbg, u32 adc_ch_val)
tmp1 = adc_trim & 0x0f;
tmp = (adc_trim & BIT(4)) ? VBG_CENTER - tmp1 * VBG_RES : VBG_CENTER + tmp1 * VBG_RES;
adc_res = adc_res * tmp / adc_vbg;
//printf("adc_res %d mv vbg:%d adc:%d adc_trim:%x\n", adc_res, adc_vbg, adc_ch_val, adc_trim);
//printf("adc_res %d mv vbg:%d adc:%d adc_trim:%x tmp1:%d tmp:%d\n", adc_res, adc_vbg, adc_ch_val, adc_trim, tmp1, tmp);
return adc_res;
}

View File

@ -2305,8 +2305,14 @@ obj/Release/apps/spp_and_le/app_temperature.o
-r=obj/Release/apps/spp_and_le/app_temperature.o,memset,l
-r=obj/Release/apps/spp_and_le/app_temperature.o,sprintf,l
-r=obj/Release/apps/spp_and_le/app_temperature.o,strlen,l
-r=obj/Release/apps/spp_and_le/app_temperature.o,ble_on_connect_change,pl
-r=obj/Release/apps/spp_and_le/app_temperature.o,syscfg_write,l
-r=obj/Release/apps/spp_and_le/app_temperature.o,temperature_poweron_led_timeout,pl
-r=obj/Release/apps/spp_and_le/app_temperature.o,temperature_work_led,pl
-r=obj/Release/apps/spp_and_le/app_temperature.o,ble_led_timeout,pl
-r=obj/Release/apps/spp_and_le/app_temperature.o,usr_timer_add,l
-r=obj/Release/apps/spp_and_le/app_temperature.o,ble_on_connect_change,pl
-r=obj/Release/apps/spp_and_le/app_temperature.o,usr_timeout_add,l
-r=obj/Release/apps/spp_and_le/app_temperature.o,usr_timer_del,l
-r=obj/Release/apps/spp_and_le/app_temperature.o,delay_us_by_timer0,pl
-r=obj/Release/apps/spp_and_le/app_temperature.o,clk_get,l
-r=obj/Release/apps/spp_and_le/app_temperature.o,delay_us_by_timer0_irq,pl
@ -2319,35 +2325,34 @@ obj/Release/apps/spp_and_le/app_temperature.o
-r=obj/Release/apps/spp_and_le/app_temperature.o,gpio_read,l
-r=obj/Release/apps/spp_and_le/app_temperature.o,nst1002_read_temperatura,pl
-r=obj/Release/apps/spp_and_le/app_temperature.o,get_vbat_percent,l
-r=obj/Release/apps/spp_and_le/app_temperature.o,get_vbat_value,l
-r=obj/Release/apps/spp_and_le/app_temperature.o,get_vbat_level,l
-r=obj/Release/apps/spp_and_le/app_temperature.o,trans_client_adv_data_set_ff,l
-r=obj/Release/apps/spp_and_le/app_temperature.o,tuya_ble_queue_isFull,l
-r=obj/Release/apps/spp_and_le/app_temperature.o,tuya_ble_queue_decrease,l
-r=obj/Release/apps/spp_and_le/app_temperature.o,tuya_ble_enqueue,l
-r=obj/Release/apps/spp_and_le/app_temperature.o,tuya_ble_get_queue_used,l
-r=obj/Release/apps/spp_and_le/app_temperature.o,temperature_update_adv_ff,pl
-r=obj/Release/apps/spp_and_le/app_temperature.o,get_cur_battery_level,l
-r=obj/Release/apps/spp_and_le/app_temperature.o,rtc_test_demo,pl
-r=obj/Release/apps/spp_and_le/app_temperature.o,read_sys_time,l
-r=obj/Release/apps/spp_and_le/app_temperature.o,low_battery_led_flash,pl
-r=obj/Release/apps/spp_and_le/app_temperature.o,usr_timer_del,l
-r=obj/Release/apps/spp_and_le/app_temperature.o,stop_low_battery_blink,pl
-r=obj/Release/apps/spp_and_le/app_temperature.o,temperature_detect,pl
-r=obj/Release/apps/spp_and_le/app_temperature.o,usr_timer_add,l
-r=obj/Release/apps/spp_and_le/app_temperature.o,temperature_charge_lowpower,pl
-r=obj/Release/apps/spp_and_le/app_temperature.o,sys_timer_del,l
-r=obj/Release/apps/spp_and_le/app_temperature.o,sys_timer_add,l
-r=obj/Release/apps/spp_and_le/app_temperature.o,temperature_poweron_led_timeout,pl
-r=obj/Release/apps/spp_and_le/app_temperature.o,device_hell,pl
-r=obj/Release/apps/spp_and_le/app_temperature.o,temperature_set_soft_poweroff,pl
-r=obj/Release/apps/spp_and_le/app_temperature.o,temperature_deinit,pl
-r=obj/Release/apps/spp_and_le/app_temperature.o,syscfg_write,l
-r=obj/Release/apps/spp_and_le/app_temperature.o,gpio_longpress_pin0_reset_config,l
-r=obj/Release/apps/spp_and_le/app_temperature.o,btstack_ble_exit,l
-r=obj/Release/apps/spp_and_le/app_temperature.o,sys_timeout_add,l
-r=obj/Release/apps/spp_and_le/app_temperature.o,power_set_soft_poweroff,l
-r=obj/Release/apps/spp_and_le/app_temperature.o,hall_isr_callback,pl
-r=obj/Release/apps/spp_and_le/app_temperature.o,hall_gpio_init,pl
-r=obj/Release/apps/spp_and_le/app_temperature.o,gpio_set_pull_up,l
-r=obj/Release/apps/spp_and_le/app_temperature.o,gpio_wakeup0,l
-r=obj/Release/apps/spp_and_le/app_temperature.o,temperature_charge_state,pl
-r=obj/Release/apps/spp_and_le/app_temperature.o,syscfg_read,l
-r=obj/Release/apps/spp_and_le/app_temperature.o,usr_timeout_add,l
-r=obj/Release/apps/spp_and_le/app_temperature.o,ble_user_cmd_prepare,l
-r=obj/Release/apps/spp_and_le/app_temperature.o,ble_module_enable,l
-r=obj/Release/apps/spp_and_le/app_temperature.o,temperature_ble_init,pl
@ -2363,7 +2368,6 @@ obj/Release/apps/spp_and_le/app_temperature.o
-r=obj/Release/apps/spp_and_le/app_temperature.o,get_vbg_trim,l
-r=obj/Release/apps/spp_and_le/app_temperature.o,tuya_ble_queue_init,l
-r=obj/Release/apps/spp_and_le/app_temperature.o,tuya_ble_queue_flush,l
-r=obj/Release/apps/spp_and_le/app_temperature.o,gpio_set_pull_up,l
-r=obj/Release/apps/spp_and_le/app_temperature.o,dev_info,pl
-r=obj/Release/apps/spp_and_le/app_temperature.o,err_code,pl
-r=obj/Release/apps/spp_and_le/app_temperature.o,charge_led_hander,pl

File diff suppressed because it is too large Load Diff

View File

@ -8,10 +8,10 @@ iT12 腋温计通讯协议
5.指令CMD
5.1 获取温度 :AT+TEMP=?
回复AT+TEMP=255,265,365 (255表示环境温度, 265表示物体温度 , 365表示体温)
回复AT+TEMP=255,265,365,1 (255表示环境温度, 265表示物体温度 , 365表示体温),最后一位 1表示当前温度处于稳定状态测量完成0表示当前正在测量中温度不稳定
5.2 获取电池电量百分百 :AT+BATP=?
回复AT+BATP=80 (88表示电量为80%)
回复AT+BATP=88 (88表示电量为88%)
5.3 获取电池电压 :AT+BATT=?
回复AT+BATT=333 (333 表示3.33V)