首页 > 其他分享 >esp32 + obd检测第二版

esp32 + obd检测第二版

时间:2023-06-28 10:45:41浏览次数:42  
标签:handle 检测 esp32 ISO15765 protocol speed obd define

OBD_detect组件说明

利用esp32获得OBD模拟器数据进行车况检测的组件,可以直接获得车速信息

组件代码如下:

https://github.com/doincli/esp32_obd_blue

公共参数说明:

定义的参数

protocol_t表示协议到种类,有两种 ISO15765_11bit 和 ISO15765_29bit

speed 表示CAN总线的速度 有两种BPS_500K和BPS_250K

MSG_ID 根据协议不同有两种 MSG_ID和MSG_ID_EXP

#define ISO15765_11bit 1        /*!< protocol_t   */
#define ISO15765_29bit 0

#define BPS_500K   1            /*!< speed   */
#define BPS_250K   0

#define MSG_ID 0x7DF            /*!< MSG_ID the head of message of protocol   */
#define MSG_ID_EXP 0x18DB33F1 

枚举参数

表示不同的四种情况,分别对应不同的轮询搜索状态

typedef enum 
{
    ISO15765_11bit_500K=0,       /*!< Show current search mode is ISO15765_11bit,speed is 500KB */
    ISO15765_11bit_250K,         /*!< Show current search mode is ISO15765_11bit,speed is 250KB */
    ISO15765_29bit_500K,         /*!< Show current search mode is ISO15765_29bit,speed is 500KB */
    ISO15765_29bit_250K          /*!< Show current search mode is ISO15765_29bit,speed is 250KB */
}protocol;

结构体参数

有一个IO结构体,包含两个传输的引脚

还有一个detect_config_t 包含协议种类,轮询状态,CAN总线速度,以及相关的TWAI总线配置

typedef struct 
{
    uint8_t  tx_port;            /*!< IO port */
    uint8_t  rx_port;
}obd_io;

typedef obd_io * obd_io_handle;

typedef struct 
{
    uint8_t    protocol_t;          /*!< protocol can be defined as  ISO15765_11bit and ISO15765_29bit */
    uint8_t    statu ;              /*!< current search mode */
    uint8_t    speed ;              /*!< speed can be defined as  BPS_500K and BPS_250K */
    obd_io_handle io_port;
    twai_general_config_t * g_config;
    twai_timing_config_t *  t_config;
}detect_config_t;

typedef detect_config_t* obd_protocol_handle;

函数说明:

1.表示创造一个can总线句柄由于接下来的OBD检测操作,OBD初始化,绑定输出引脚以及基础的通信协议初始化

obd_protocol_handle obd_create(uint8_t TX_GPIO_NUM,uint8_t RX_GPIO_NUM);

3.获取OBD模拟器的车速

uint32_t obd_get_engine_speed_val(obd_protocol_handle protocol_status );

4.删除can总线句柄

esp_err_t obd_delete(obd_protocol_handle obd_handle);

5.关闭CAN总线 (本组件内部调用)

esp_err_t obd_twai_deinit();

6.更改CAN总线配置(本组件内部调用)

esp_err_t obd_twai_modifed(obd_protocol_handle obd_handle);

7.判断当前协议是否正确(本组件内部调用)

esp_err_t obd_detect(obd_protocol_handle obd_handle);

8.自动匹配到正确的协议(本组件内部调用)

esp_err_t obd_detect_match(obd_protocol_handle obd_handle);

测试流程:

总体分为3步

  1. obd_create 创造一个操作句柄
  2. obd_get_engine_speed_val 获得车速信息
  3. obd_delete 删除句柄
#include <stdio.h>
#include <inttypes.h>
#include "sdkconfig.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "OBD_detect.h"


#define TX_GPIO_NUM 2
#define RX_GPIO_NUM 3

void app_main(void)
{   
    obd_protocol_handle protocol_status = obd_create(TX_GPIO_NUM,RX_GPIO_NUM);

    for (int i = 0; i < 10; i++)
    {
        uint32_t speed = obd_get_engine_speed_val(protocol_status);
        printf("speed is %ld\n",speed);
    }
    
    obd_delete(protocol_status);
}

标签:handle,检测,esp32,ISO15765,protocol,speed,obd,define
From: https://www.cnblogs.com/doincli/p/17510760.html

相关文章

  • 静态代码检测工具十大特点
    静态代码检测工具是现代软件开发流程中不可或缺的一环。它可以在代码编写过程中自动检测出潜在的错误和漏洞,帮助开发者在测试和上线前尽早发现和解决问题,从而提高代码质量和开发效率。静态代码检测工具主要有以下几个特点:一、自动化检测静态代码检测工具不需要运行软件,可以直接......
  • PHP 批量检测网站是否正常打开
    curl_setopt函数是php中一个重要的函数,它可以模仿用户的一些行为,如模仿用户登录,注册等等一些用户可操作的行为。 <metacharset="utf-8"><?php//设置最大执行时间是120秒ini_set('max_execution_time',120);functionhttpcode($url){ $ch=curl_init(); $timeout=3; c......
  • PHP 检测网址是否能正常打开代码
    这是一个检测网址是否能正常打开的PHP代码,通过下面的代码检测一个网址是否能正常访问,如果正常则会返回http状态码200的值,如果为其它则不正常;这个代码我们可以用到很多地方,例如缓存友情链接的ICO图标时就可以用到,缓存时先检测网站是否正常,如果正常就缓存ICO图标,否则调用一个默认的图......
  • 目标检测中目标数量不一致的解决方法
    问题描述  在学习使用Pytorch进行目标检测任务时,会出现和分类任务有很大区别的一点。在进行分类任务时,当指定了图像的大小,那么Dataset中每张图的张量大小都是一致的。而在目标检测任务中,在一张图上可以只有一个目标,也可以有多个目标,在Dataset中张量大小不一致会报错,例如:Runtim......
  • 科技项目验收测试规范有哪些?靠谱第三方软件检测机构推荐
    随着科技的不断发展和进步,越来越多的科技项目被投入使用。为了保证这些科技项目的质量,需要进行验收测试。科技项目验收测试是一项非常重要的工作,其结果对项目的质量和功能正常使用有着直接的影响。本文将就科技项目验收测试规范和第三方软件检测机构的资质进行探讨。一、科......
  • MATLAB车道偏离检测,车道线检测 这段程序主要是对图像进行处理和分析,用于检测车道线
    MATLAB车道偏离检测,车道线检测这段程序主要是对图像进行处理和分析,用于检测车道线并计算车辆的偏离率。下面我将逐步解释代码的功能和工作流程。首先,程序进行了一些初始化操作,定义了一些变量,并读取了一张图片。接下来,程序对图像进行了一系列处理步骤,包括图像切割、灰度化、滤波......
  • opencv 表识别 工业表智能识别 数字式表盘识别,指针式表盘刻度识别,分为表检测,表盘纠正,
    在工业表智能识别中,OpenCV被用于数字式表盘和指针式表盘的识别。这个过程可以分为几个步骤:表的检测、表盘的纠正、刻度的分割、刻度的拉直识别,以及指针和时刻的分割。首先,通过表的检测,确定表在图像中的位置。然后,对表盘进行纠正,将圆形表盘拉直成一条线,以便后续处理。接下来,进行刻度......
  • esp32 + OBD实验
    esp32+OBD实验整体的思路是使用esp32+obd模拟器控制can总线实现车况检测代码在hello_world文件夹中esp32_learn/obdatmaster·doincli/esp32_learn·GitHub解决问题1.esp32这端如何自动识别不同的CAN的速率2.对于不同的OBD协议esp32这段如何同时支持思路:对于......
  • 水质传感器和水质检测传感器有哪些
    水质传感器又称水质检测传感器、水质监测传感器,风途水质传感器是检测水质参数的仪器,包括很多种传感器,可以实时监测水体中的溶解氧、pH值、电导率、浊度、温度、总磷、总氮等多种参数测量。不同的行业对检测的要求不同,水质传感器的选择也不同。以下是常用的6种水质传感器。水质传感......
  • 课程介绍:YOLOv8实战火焰和烟雾检测 (视频教程)
    课程链接:https://edu.51cto.com/course/34090.htmlYOLOv8基于先前YOLO版本在目标检测任务上的成功,进一步提升性能和灵活性。本课程将手把手地教大家使用YOLOv8结合可变形卷积(deformableconvolution)训练火焰和烟雾数据集,完成一个多目标检测实战项目,可实时检测图像、视频、摄像......