用STM32制作汽车蓝牙OBD转速/车速表(带LED转速指示)

2023-10-23 13:30

本文主要是介绍用STM32制作汽车蓝牙OBD转速/车速表(带LED转速指示),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这个项目的目标是用STM32F103C8T6制作汽车蓝牙OBD转速/车速表,在OLED屏上显示当前转速和车速,同步在OLED灯带上显示转速(按预设的最高转速的比例显示),转速超出预设的最高转速后,灯带开始闪烁,可以用于换挡提示。

系统结构框图如下:

1、LED灯条和OLED屏用商家提供的驱动就好了;

2、蓝牙模块HC-05预先和蓝牙OBD配对好,HC-05连接模式需要设置CMOD为1,写入蓝牙OBD的mac地址,这样上电后HC-05就会主动连接OBD。同时需要把HC-05的状态引脚接入STM32的一个io口,用于判断蓝牙是否连接成功。

3、系统使用按键进入设置模式,可以设置提醒转速值。设置参数存储在STM32的flash内。

系统最重要的部分是OBD的初始化和OBD数据的接收:

/****************初始化OBD
*****************/
#define INIT_SEQ_LEN	6
char *init_strs[]={"ATD\r","ATZ\r","AT E0\r","AT L0\r","AT S0\r","AT H0\r"};
char *response_strs1[]={"OK","ELM327v1.5","OK","OK","OK","OK"};
char *response_strs2[]={"ATDOK","ATZ","ATE0OK","","",""};
u8 USART2_init_obd(void){u8 ret=0;for(int i=0;i<INIT_SEQ_LEN;i++){USART2_SendStr(init_strs[i]);ret=USART2_wait_for_response(response_strs1[i],response_strs2[i]);if(!ret) return 0;		}return ret;
}
/****************UART2接收中断处理
*****************/
void USART2_IRQHandler(void)
{u8 data;//接收中断//溢出-如果发生溢出需要先读SR,再读DR寄存器 则可清除不断入中断的问题if(USART_GetFlagStatus(USART2,USART_FLAG_ORE) != RESET) //溢出{USART_ClearFlag(USART2,USART_FLAG_ORE);  //读SRdata=USART_ReceiveData(USART2); //读DR  //gUsart2RxOk=1;	//标识已经接收完成}if(USART_GetITStatus(USART2,USART_IT_RXNE)!= RESET)  // 接收 中断{USART_ClearITPendingBit(USART2,USART_IT_RXNE); // U1RX_Clear_Intr_Status_Bit;data=USART_ReceiveData(USART2);if(data == '>'){	//'>'符号代表一行数据结束USART2_ParseData();	gUsart2RxOk=1;	//标识已经接收完成usart2_rx_buff_idx=0;//指针复位}  else if((data !=0x20) && (data!=0x0d)) {	//忽略空格和回车usart2_rx_buff[usart2_rx_buff_idx++]=data;	//放入缓冲区usart2_rx_buff_idx %= USART2_RX_BUFF_SIZE;	//防止越界}}}

 

这篇关于用STM32制作汽车蓝牙OBD转速/车速表(带LED转速指示)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/268164

相关文章

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预售小鹏汇天分体式飞行汽车,探索分体式飞行汽车城际通勤。阅读原文,获取专题报告合集全文,解锁文末271份飞行汽车相关行业研究报告。 据悉,业内人士对飞行汽车行业

【STM32】SPI通信-软件与硬件读写SPI

SPI通信-软件与硬件读写SPI 软件SPI一、SPI通信协议1、SPI通信2、硬件电路3、移位示意图4、SPI时序基本单元(1)开始通信和结束通信(2)模式0---用的最多(3)模式1(4)模式2(5)模式3 5、SPI时序(1)写使能(2)指定地址写(3)指定地址读 二、W25Q64模块介绍1、W25Q64简介2、硬件电路3、W25Q64框图4、Flash操作注意事项软件SPI读写W2

用Unity2D制作一个人物,实现移动、跳起、人物静止和动起来时的动画:中(人物移动、跳起、静止动作)

上回我们学到创建一个地形和一个人物,今天我们实现一下人物实现移动和跳起,依次点击,我们准备创建一个C#文件 创建好我们点击进去,就会跳转到我们的Vision Studio,然后输入这些代码 using UnityEngine;public class Move : MonoBehaviour // 定义一个名为Move的类,继承自MonoBehaviour{private Rigidbo

STM32(十一):ADC数模转换器实验

AD单通道: 1.RCC开启GPIO和ADC时钟。配置ADCCLK分频器。 2.配置GPIO,把GPIO配置成模拟输入的模式。 3.配置多路开关,把左面通道接入到右面规则组列表里。 4.配置ADC转换器, 包括AD转换器和AD数据寄存器。单次转换,连续转换;扫描、非扫描;有几个通道,触发源是什么,数据对齐是左对齐还是右对齐。 5.ADC_CMD 开启ADC。 void RCC_AD

STM32内部闪存FLASH(内部ROM)、IAP

1 FLASH简介  1 利用程序存储器的剩余空间来保存掉电不丢失的用户数据 2 通过在程序中编程(IAP)实现程序的自我更新 (OTA) 3在线编程(ICP把整个程序都更新掉) 1 系统的Bootloader写死了,只能用串口下载到指定的位置,启动方式也不方便需要配置BOOT引脚触发启动  4 IAP(自己写的Bootloader,实现程序升级) 1 比如蓝牙转串口,

FreeRTOS-基本介绍和移植STM32

FreeRTOS-基本介绍和STM32移植 一、裸机开发和操作系统开发介绍二、任务调度和任务状态介绍2.1 任务调度2.1.1 抢占式调度2.1.2 时间片调度 2.2 任务状态 三、FreeRTOS源码和移植STM323.1 FreeRTOS源码3.2 FreeRTOS移植STM323.2.1 代码移植3.2.2 时钟中断配置 一、裸机开发和操作系统开发介绍 裸机:前后台系

寻迹模块TCRT5000的应用原理和功能实现(基于STM32)

目录 概述 1 认识TCRT5000 1.1 模块介绍 1.2 电气特性 2 系统应用 2.1 系统架构 2.2 STM32Cube创建工程 3 功能实现 3.1 代码实现 3.2 源代码文件 4 功能测试 4.1 检测黑线状态 4.2 未检测黑线状态 概述 本文主要介绍TCRT5000模块的使用原理,包括该模块的硬件实现方式,电路实现原理,还使用STM32类

STM32 ADC+DMA导致写FLASH失败

最近用STM32G070系列的ADC+DMA采样时,遇到了一些小坑记录一下; 一、ADC+DMA采样时进入死循环; 解决方法:ADC-dma死循环问题_stm32 adc dma死机-CSDN博客 将ADC的DMA中断调整为最高,且增大ADCHAL_ADC_Start_DMA(&hadc1, (uint32_t*)adc_buffer, ADC_Buffer_Size); 的ADC_Bu

开放式耳机好用?平价开放式耳机推荐?四款开放式的蓝牙耳机推荐

开放式耳机好用吗?有平价些的开放式耳机推荐吗?那这两个问题的回答当然是肯定的。 首先开放式耳机好不好用取决于对耳机的需求,因为开放式耳机其实是比较适用于需要注意周围环境、需要‌长时间佩戴舒适以及需要频繁与人交流的场景中,在这些场景下使用开放式耳机的话就会比较有优势。就例如跑步骑行健身等运动的时候,能够兼得佩戴舒适度的同时,增加一定的安全性;还有在办公学习的时候,会很适合长时间佩戴,能够方便和

物联网之流水LED灯、正常流水灯、反复流水灯、移动流水灯

MENU 硬件电路设计软件程序设计正常流水LED灯反复流水LED灯移动流水LED灯 硬件电路设计 材料名称数量直插式LED1kΩ电阻杜邦线(跳线)若干面包板1 每一个LED的正极与开发板一个GPIO引脚相连,并串联一个电阻,负极接GND。 当然也可以选择只使用一个电阻。 软件程序设计 正常流水LED灯 因为要用到多个GPIO引脚,所以最好把所有的GPI