ESP32实现OBD检测+蓝牙GATTS传输
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示例分析中
实验记录
服务端
自动检测协议,并且打印速度
服务端
直接打印读取的数据