当前位置: 首页 > ops >正文

STM32项目---汽车氛围灯

一、蓝牙模块驱动

1、怎么使用蓝牙模块呢?

1:首先,先通过串口调试助手验证蓝牙模块是否正常使用。先连接好

2:打开串口调试软件配置好

3:发送测试指令:AT\r\n,返回OK,则说明连接正确,可以修改名字

AT+NAMECHEN\r\n   (AT+NAME:AT指令  CHEN:蓝牙名字)

若串口返回: OKsetname 则说明设置名字成功

2、代码设置模块的名字

配置好串口3,并设置串口波特率为:9600,调用下面代码,发送AT指令

void usart3_send_str(const char *pbuf)
{const char *p = pbuf;//检测当前p的指针有效性//*p检测是否为非0  while(p && *p){USART_SendData(USART3,*p++);while(USART_GetFlagStatus(USART3,USART_FLAG_TXE)==RESET);}
}
void ble_set_config(void)
{//这个是必须delay_s(1);//设置好模块的名字usart3_send_str("AT+NAMEBardb\r\n");delay_s(1);//重新启动模块usart3_send_str("AT+RESET\r\n");delay_s(2);
}

驱动源码为:

二、ST7789V屏幕模块驱动

1、基本信息为:

屏幕像素是:240×280,16位色深,5位(R)+6位(G)+5位(B)

2、主要特效

3、接口模式

(1) SPI 模式(常见于小尺寸屏)

  • 4线SPI(常用)
    • SCLK(时钟)、MOSI(数据输入)、DC(数据/命令选择)、CS(片选)
    • 可选RESET(复位)、BLK(背光控制)
数据:像素点数据
命令:不同命令,设置LCD不同的模式在16位模式下,分辨率为:240*280,帧率为24,那么SPI频率至少是多少
SPI总线,一脉冲传1位数据。在16位模式下,分辨率为:240*280,
那么全屏需要位:1 075 200位,那么24帧对应的数据位:25 804 800。 
所以传输速度:25 804 800bps = 25 Mbit/s  至少需要SPI主频约为:25MHZ,
正常来那么CPU的主频至少:50MHZ

(2)SPI屏与STM32连接

屏幕与底板连接

驱动源码为:

三、WS2812B灯带模块驱动

1、实物图

2、电路图原理

1:引脚说明

2:驱动原理

每一个LED都需要24bit数据(这里的24位不是我们常说的二进制位的数据,而是驱动灯带的码型数据),形成RGB,RGB的数据格式如下

3:灯带的码型

4:数据传输时间

所以发送一位数据(0码或者1码)所需时间为:1.25us

发送一个灯需要的时间: 1.25us*24+50us=30us,发完一个灯的数据后需要发送大于50us的低电平让数据从锁存器表现在灯上。

5:传输方式

这幅图理解:即从单片机中发送数据给灯带,当发送的数据为三个24的数据,则第一灯会拿到前面24位数据,剩下的数据会以此传输下去,即第二个灯拿到24到48的数据,第三个灯拿到后面的24位数。

6:我们通过DMA和SPI来传输数据给灯带

以STM32F407ZET6的SPI2使用来分析。SPI2挂在APB1总线下,也就是说明SPI2的时钟频率为42MHZ,对SPI2进行分频的,这个分频得有一定的技巧。这里以8分频为例子。42/8 = 5.25MHZ, 那么它的时钟周期:1/5.25MHZ = 190ns(约等)。表示传输一个字节的时间大概是:190ns8=1.52us(而W2812B灯一位数据所需要时间约:1.25us)。这样一看,是不是这个分频是大致满足的呀。

W2812B的一位数据,SPI输出一个字节来表示即可,那么如果某个W2812B灯显示为白色,即RGB为:0xFFFFF(24位),需要的时间范围:30us;那么SPI需要输出的字节数:24个(24*8 = 192位数据,大约需要190ns*192 = 36.480us),这样一算,基本是符合W2812B传输时序。

驱动源码为:

四、声音传感器的驱动模块 

 1、实物图

2、原理图

传感器模块上的麦克风可将音频信号转换为电信号(模拟量),然后通过STM32自带ADC功能将模拟量转换为数字量。

LM386是一款功率放大器,具有自身功耗低、更新内链增益可调整、电源电压范围大、外接元件少和总谐波失真小等优点的功率放大器,广泛应用于录音机和收音机之中。

麦克风将声音信号转换为电信号,然后将信号发送到LM386的引脚3,并通过外部电路将它们输出到引脚5(模块的引脚OUT)。然后使用STM32中具有ADC功能的引脚,读取模拟值。

3、硬件连接

 

驱动源码为:

五、整个项目的演示视频和源码(可免费下载) 

WS2812的一个氛围灯项目的演示_哔哩哔哩_bilibili

源码: 

http://www.xdnf.cn/news/14112.html

相关文章:

  • flowable工作流的学习demo
  • 【本地虚拟机】xshell连接虚拟机linux服务器
  • 云平台|Linux部分指令
  • 【Erdas实验教程】021:遥感图像辐射增强( 查找表拉伸)
  • NLP学习路线图(四十七):隐私保护
  • YOLOv8新突破:FASFFHead多尺度检测的极致探索
  • 【模板】埃拉托色尼筛法(埃氏筛)
  • Spring-rabbit重试消费源码分析
  • OCCT基础类库介绍:Modeling Data - 2D Geometry 3D Geometry Topology
  • Javascript和NodeJS异常捕获对比
  • C++基础算法————二分查找
  • 深度学习——基于卷积神经网络实现食物图像分类【1】(datalodar处理方法)
  • VMware虚拟机集群上部署HDFS集群
  • 达梦的三权分立安全机制
  • 【机器学习与数据挖掘实战 | 医疗】案例16:基于K-Means聚类的医疗保险的欺诈发现
  • 使用 Azure LLM Functions 与 Elasticsearch 构建更智能的查询体验
  • 【论文解读】OmegaPRM:MCTS驱动的自动化过程监督,赋能LLM数学推理新高度
  • C++包管理器vcpkg的使用
  • RK全志平台LCD设备调试思路
  • JDBC基础(1)
  • python使用milvus教程
  • 使用 Git 将本地仓库上传到 GitHub 仓库的完整指南
  • 如何编写高效的Prompt:从入门到精通
  • 【Qt】QStateMachine状态机-实现播放按钮状态切换
  • Java 常用类 Math:从基础到高阶应用指南
  • 设计模式精讲 Day 1:单例模式(Singleton Pattern)
  • 将图片合成为视频(基于 OpenCV)
  • 【0.3 漫画数据结构与算法】
  • SNMP中BER编码解析
  • 微信小程序使用画布实现飘落泡泡功能