ESP32实现OBD检测+蓝牙GATTS传输

发布时间 2023-07-03 22:58:25作者: 快乐气氛组阿宇

OBD检测+蓝牙GATTS传输

分为客户端和服务端两个部分,分别在两个文件夹下

代码连接:

esp32_obd_blue/ at feature/gatt_v1 · doincli/esp32_obd_blue · GitHub

客户端在例程基础上修改,添加读取服务端数据的功能,每1s读取一次服务端中的车速信息

    while (1)
    {
        vTaskDelay(200);
        esp_err_t flag =  esp_ble_gattc_read_char(gl_profile_tab[PROFILE_A_APP_ID].gattc_if,
                        gl_profile_tab[PROFILE_A_APP_ID].conn_id,
                        gl_profile_tab[PROFILE_A_APP_ID].char_handle,
                        ESP_GATT_AUTH_REQ_NONE        );
        if (flag != ESP_OK)
        {
            printf(" lilililililililili error\n");
        }    
    }

服务端同样在例程上修改,并且进行裁剪,只保留一个server和profile。服务端每秒通过CAN总线读取一次当前的车速信息,当客户端发来请求时候,通过GATT将车速信息发送给客户端

void app_main(void)
{
    esp_err_t ret;

    ret = esp_blue_init();
    if (ret != ESP_OK)
    {
        printf("init fail\n");
        return ;
    }
    

    obd_protocol_handle protocol_status = obd_create(TX_GPIO_NUM,RX_GPIO_NUM);
  
    while (1)
    {   
        vTaskDelay(190);
        speed = obd_get_engine_speed_val(protocol_status);
        printf("speed is %d\n",speed);
    }
    
    
    obd_delete(protocol_status);
    return;
}

示例程序的分析在GATT server示例分析中

实验记录

服务端

自动检测协议,并且打印速度

image-20230629141900632

服务端

直接打印读取的数据

image-20230629141934807