毕业设计 基于单片机的智能音响设计与实现 -物联网 嵌入式 stm32

文章目录

  • 0 前言
  • 1 简介
  • 2 主要器件
  • 3 实现效果
  • 4 设计原理
    • 4.1 PAJ7620U2模块
    • 4.2 HC-05蓝牙模块
    • 4.3 JQ8900语音模块
  • 5 部分核心代码
  • 6 最后


0 前言

🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。

为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是

🚩 基于单片机的智能音响设计与实现

🥇学长这里给一个题目综合评分(每项满分5分)

  • 难度系数:4分
  • 工作量:4分
  • 创新点:3分

🧿 选题指导, 项目分享:

https://gitee.com/dancheng-senior/project-sharing-1/blob/master/%E6%AF%95%E8%AE%BE%E6%8C%87%E5%AF%BC/README.md


1 简介

本项目是基于STM32单片机设计的智能音响系统,可用手机客户端控制音频文件的播报以及灯光的变化,并在OLED显示屏显示信息,JQ8900语音模块播报音乐,同时可识别用户的手势控制音频的播放和灯光的变化。

2 主要器件

  • STM32F103C8T6主控芯片
  • JQ8900语音模块
  • HC-05蓝牙模块
  • 手势识别模块

3 实现效果

手势识别模块,右滑控制音频文件,左滑控制灯光
在这里插入图片描述

4 设计原理

4.1 PAJ7620U2模块

简介
项目手势识别检测模块选择基于PixArt公司PAJ7620U2传感器开发的一块PAJ7620手势识别模块。网上很多店铺卖的这种 PAJ7620手势识别模块,但其实都是基于传感器设计的,只不过外围电路设计和形状外观不太一样而已,整体功能特性基本都一样。
在这里插入图片描述
工作原理
在这里插入图片描述
从上图中,我们可以看到PAJ7620U2传感器内部自带 LED 驱动器(可发射红外线信号),内置有传感器感应阵列、目标信息提取阵列和手势识别阵列。另外,PAJ7620U2作为一种光学数组式传感器,其内置LED驱动器集成了环境光和光源抑制滤波器,模块基本不受环境光干扰。
红外LED手势识别原理:

传感器工作时通过内部 LED 驱动器,驱动红外 LED 向外发射红外线信号,当传感器阵列在有效的距离中探测到物体时,目标信息提取阵列会对探测目标进行特征原始数据的获取,采集到的数据被保存在寄存器中,同时手势识别阵列会对原始数据进行识别处理,最后将手势结果存到寄存器中。

根据 PAJ7620U2传感器数据手册,用户可通过I²C接口总线采集信号并迅速识别出UP、Down、Right、Left等9种常用手势。另外PAJ7620U2还提供内置的接近检测功能,用于检测物体的接近或离开。

4.2 HC-05蓝牙模块

简介
它是汇承公司出品的一个蓝牙主从机一体可用作无线串口透传通讯的模块。
在这里插入图片描述

原理图
在这里插入图片描述
相关参数讲解

6根引脚,名称与功能如下;

  • VCC 接电源的正极,电压的范围为3.3v到5.0v
  • vdd 为外接供电电源输入端
  • GND 地线
  • TXD:模块串口发送引脚(TTL电平,不能直接接RS232电平),可直接接单片机的RXD引脚
  • RXD:模块串口接收引脚(TTL电平,不能直接接RS232电平),可直接接单片机的TXD引脚
  • KEY:用于进入AT状态:
  • LED:这个引脚是用来检测蓝牙模块是否已经连接上了其他蓝牙设备

通讯方式(tx、rx)

HC-05通过TX和RX引脚,支持使用标准AT命令。为此,用户必须在设备启动时进入特殊命令模式。启动进入数据模式,这样它就可以与其他设备进行无线通信

常见的AT指令

AT指令不区分大小写,但是都要以回车符结尾,下面是常用的AT指令
在这里插入图片描述

4.3 JQ8900语音模块

JQ8900模块选用的是 SOC 方案,集成了一个 16 位的 MCU,以及一个专门针对音频解码的ADSP,采用硬解码的方式,更加保证了系统的稳定性和音质。小巧尺寸更加满足嵌入其它产品的需求。

特点

  • 支持 MP3 WAV 硬件解码

  • 支持采样率(KHz):8/11.025/12/16/22.05/24/32/44.1/48

  • 多种控制模式:两线串口模式、一线串口控制、按键模式

  • 支持上一曲,下一曲,播放、暂停、停止、选曲、等常用功能控制

  • 支持播放曲目序号获取,总曲目及目录总曲目等信息获取

  • 支持各种信息查询,轻松获取语音芯片的当前状态

  • 支持指定曲目插播,即可以暂停当前播放的音乐,播放插播的曲目,播放完后返回原来曲目断点处播放

  • 支持系统深度睡眠,睡眠后电流低至 600 微安,可以通过一线串和指令 IO 唤醒

管脚说明

在这里插入图片描述
通讯命令
它是支持异步串口通信,波特率9600,8位数据位,没有校验位,没有流控制,这里也要注意,在利用串口调试的时候,这些参数都要设置好,一旦有偏差都通信不了。调试的时候利用串口调试助手就可以,尤其注意一点,发送数据的时候,要勾选上以十六进制发送数据。

在这里插入图片描述
在这里插入图片描述

![在这里插入图片描述](https://img-blog.csdnimg.cn/71e5dd03cfbf429685545361cbe3252f.png#pic_center =)

5 部分核心代码

#include "paj7620u2.h"
#include "paj7620u2_cfg.h"static void paj7620u2_selectBank(bank_e bank);//选择PAJ7620U2 BANK区域
static u8 paj7620u2_wakeup(void);//PAJ7620U2唤醒//PAJ7620U2初始化
//返回值:0:失败 1:成功
u8 paj7620u2_init()
{u8 i;u8 status;GS_i2c_init();//传感器I2C初始化							status = paj7620u2_wakeup();		//唤醒PAJ7620U2if(!status) return 0;paj7620u2_selectBank(BANK0);	//进入BANK0寄存器区域for(i=0;i<INIT_SIZE;i++)						//初始化模块{GS_Write_Byte(init_Array[i][0], init_Array[i][1]);//初始化PAJ7620U2}paj7620u2_selectBank(BANK0);//切换回BANK0寄存器区域return 1;
}GestureData *gesture;
void Gesture_Init(void)
{u8 i;paj7620u2_selectBank(BANK0);//进入BANK0寄存器区域for(i=0;i<GESTURE_SIZE;i++){GS_Write_Byte(gesture_arry[i][0],gesture_arry[i][1]);//手势识别模式初始化}paj7620u2_selectBank(BANK0);//切换回BANK0寄存器区域gesture = (GestureData *)malloc(sizeof(GestureData));if(NULL == gesture){//printf("Error: struct \"GESTURE_DATA\" malloc failed\r\n");}memset(gesture, 0, sizeof(GestureData));}//选择PAJ7620U2 BANK区域
void paj7620u2_selectBank(bank_e bank)
{switch(bank){case BANK0: GS_Write_Byte(PAJ_REGITER_BANK_SEL,PAJ_BANK0);break;//BANK0寄存器区域case BANK1: GS_Write_Byte(PAJ_REGITER_BANK_SEL,PAJ_BANK1);break;//BANK1寄存器区域}		
}//PAJ7620U2唤醒
u8 paj7620u2_wakeup()
{ u8 data=0x0a;GS_WakeUp();//唤醒PAJ7620U2delay_ms(5);//唤醒时间>400usGS_WakeUp();//唤醒PAJ7620U2delay_ms(5);//唤醒时间>400uspaj7620u2_selectBank(BANK0);//进入BANK0寄存器区域data = GS_Read_Byte(0x00);//读取状态if(data!=0x20) return 0; //唤醒失败return 1;
}
//语音模块代码
void uart3_init(u32 bound){//GPIO端口设置GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);	//使能USART3,GPIOB时钟RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE);//USART3_TX   GPIOB.10GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;	//复用推挽输出GPIO_Init(GPIOB, &GPIO_InitStructure);//USART3_RX	  GPIOB.11初始化GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入GPIO_Init(GPIOB, &GPIO_InitStructure);  //USART 初始化设置USART_InitStructure.USART_BaudRate = bound;//串口波特率USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字长为8位数据格式USART_InitStructure.USART_StopBits = USART_StopBits_1;//一个停止位USART_InitStructure.USART_Parity = USART_Parity_No;//无奇偶校验位USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//无硬件数据流控制USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;	//收发模式USART_Init(USART3, &USART_InitStructure); 
//  USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);//开启串口接受中断USART_Cmd(USART3, ENABLE);                     }//音乐播放  7e 04 03 00 02 ef
void Play(u16 cmd)
{USART_SendData(USART3,0x7E);delay_ms(1);USART_SendData(USART3,0x04);delay_ms(1);USART_SendData(USART3,0x03);delay_ms(1);USART_SendData(USART3,0x00);delay_ms(1);USART_SendData(USART3,cmd);delay_ms(1);USART_SendData(USART3,0xEF);delay_ms(1);}

6 最后

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1381877.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

两台电脑共享一个音响方法

两台电脑共享一个音响方法 由于某种原因&#xff0c;需要两个电脑使用同一个扬声器&#xff0c;现分享一种简单的方案 原理&#xff1a;通过主机的音频输入功能&#xff0c;将另一台电脑的音频接收过来并播放。 连线如下&#xff1a; PC2作为主设备&#xff0c;正常连接音响…

Spring IOC DI - 整合MyBatis

Spring IOC目录 主要内容Spring 框架介绍Spring 框架的优势(对比以前项目的缺点)Spring 框架引入历史发展框架学习三要素Spring 模块介绍 Spring IoC/DI - 引入IoC/DI 概念辨析使用IoC/DI的好处IoC/DI具体应用场景 Spring IoC/DI - 代码实现环境准备Spring 框架环境搭建创建Mav…

Spring框架——IOC、DI

本篇博客主要介绍Java中的IOC和DI&#xff0c;以及在String框架中的应用。首先&#xff0c;我们将对IOC和DI进行概念介绍&#xff0c;然后讲解它们的关系及在String框架中的应用&#xff0c;最后通过一个实例来展示它们的具体用法。 IOC和DI的概念介绍 IOC&#xff08;Invers…

叮咚!你点的Spring套餐来了!

儒猿技术团队最新出品&#xff1a; 《Spring顶尖高手进阶&#xff1a;互联网教育系统项目实战》 长按扫描下方二维码了解&#xff1a; 课程背景 在技术日新月异的今天&#xff0c;Spring作为Java主流开发框架&#xff0c;出道十多年仍然稳坐C位&#xff0c;经久不衰&#xff0c…

乐鑫Esp32学习之旅 17 全网首发,esp32 sdk直连京东微联·小京鱼·IoT开放平台,实现叮咚音响语音智能控制。

本系列博客学习由非官方人员 半颗心脏 潜心所力所写&#xff0c;仅仅做个人技术交流分享&#xff0c;不做任何商业用途。如有不对之处&#xff0c;请留言&#xff0c;本人及时更改。 1、 爬坑学习新旅程&#xff0c;虚拟机搭建esp32开发环境&#xff0c;打印 “Hellow World”。…

计时器setTimeout()函数、setInterval()函数

文章目录 &#x1f412;个人主页&#x1f3c5;JavaEE系列专栏&#x1f4d6;前言&#xff1a;&#x1f3c5;计时器setTimeout&#xff08;函数名&#xff0c;延迟时间&#xff09;结束计时器setTimeout &#x1f3c5;计时器setInterval&#xff08;函数名&#xff0c;延迟时间&a…

UGUI源码深度剖析

源码下载后 直接嵌入工程&#xff0c;删除引擎extension里的&#xff1b; 自制UI&#xff0c;在一个空场景中显示一个图片&#xff0c;当鼠标点击图片&#xff0c;执行操作。 gameobject &#xff1a; mesh meshfilter meshrender maintexture meshcollider camera ray

三星Note2 行货 水货 型号版本

来源&#xff1a;http://samsung.tgbus.com/201301/462040.shtml 三星Galaxy Note早期的用户定位&#xff0c;其实是喜欢大屏幕的商务男士&#xff0c;但是发售之后没想到&#xff0c;在市场中女性成为三星Galaxy Note的最大的购买群体。而比三星Galaxy Note屏幕更大的Galaxy N…

你的服务器安全吗?--服务器防渗透

1、概述 在本人所处的公司的服务器正式遭到黑客攻击之前&#xff0c;一直都以为 黑客 是个遥不可及的词&#xff0c;直到真正成为了受害者时&#xff0c;才猛然意识到安全的重要性。有一些基本经验和心得总结出来&#xff0c;和同行分享一下吧。 2、暴破手段 最粗暴的黑客行为…

数据通信——网络层(ACL)

引言 在网络中会区分三个区域&#xff1a;&#xff08;Trust&#xff09;内网&#xff0c;&#xff08;UnTrust&#xff09;外网&#xff0c;&#xff08;DM2&#xff09;非军事化区域 防火墙在网络中可以阻止DM2对Trust的访问。同理&#xff0c;从Trust到UnTrust或者UnTrust到…

微信小程序_23,分包

什么是分包: 分包指的是把一个完整的小程序项目,按照需求划分为不同的子包,在构建时,打包成不同的分包,用户在使用时按需进行加载 分包的好处: 可以优化小程序首次启动的下载时间在多团队共同开发时可以更好的解耦协作 分包前后项目的构成&#xff1a; 分包后小程序项目由1个主…

最新版南风表情包小程序独立版源码 独家最火表情包小程序源码+完整后台API+小程序前端

南风表情包小程序独立版源码 独家最火表情包小程序源码完整后台API小程序前端 南风表情包小程序源码&#xff0c;独家分享网传最火表情包小程序源码&#xff0c;带有独立版完整后台 API、小程序前端&#xff0c;并附带安装搭建说明。最近很火的表情包小程序源码&#xff0c;站…

还不错的新版南风表情包小程序源码+有搭建文档

正文: 还不错的新版南风表情包小程序源码有搭建文档&#xff0c;虽然这是一个表情包小程序&#xff0c;但是功能却不止这么单一的。 搭建教程: 1.需要一个域名且是国内的才行2.注册小程序这个就不用多说了3.一台服务器4.后台环境Nginx 1.18.0PHP-7.2mysql5.6 开启ssl php需要…

小程序源码:朋友圈发圈助手文案,头像,壁纸组合微信小程序源码下载-多玩法安装简单

这是一款为信朋友圈助手的一款小程序源码 内包含了朋友圈文案,壁纸,头像等等 每一个都包含了多个大分类 比如发捐助手有正能量,节假日祝福,搞笑段子等等 壁纸和头像自然也会有不同的分类,具体大家可以看演示图! 小程序源码下载地址&#xff1a;小程序源码&#xff1a;朋友圈…

寄快递邮寄发件上门邮寄小程序源码+前端+后端+安装说明

新快递小程序快递代发快递代寄寄件小程序可以对接易达云洋一级总代 快递小程序&#xff0c;接入云洋/易达物流接口&#xff0c;支持选择快递公司&#xff0c;三通一达&#xff0c;极兔&#xff0c;德邦等&#xff0c;功能成熟 如何收益: 1.对接第三方平台成本大约4元左右一单…

最近很火的微信红包封面小程序源码免费分享了!

此小程序适合流量主引流&#xff0c;赚广告费&#xff0c;适合广流量主&#xff0c;适合流量主&#xff0c;适合流量主懂。所以懂的都懂&#xff0c;不要问我封面去哪里整。 小程序里插入banner广告&#xff0c;插屏广告&#xff0c;视频广告&#xff0c;激励式广告。邀请好友…

【微信小程序】分包

基础概念 1.1、什么是分包 分包指的是把一个完整的小程序项目&#xff0c;按照需求划分为不同的子包&#xff0c;在构建时打包成不同的分包&#xff0c;用户在使用时按需进行加载。 1.2、分包的好处 对小程序进行分包的好处主要有以下两点&#xff1a; 可以优化小程序首次启…

表白套路表情包制作生成微信小程序源码下载安装简单支持多流量主

趁着空闲时间就给大家随便发一个吧,等小编忙完再好好整理资源分享给大家 这是一款表白套路表情包制作小程序源码 安装简单新手小白都会特别的简单 多种模板制作,输入一键生成 另外也支持多种流量主模式 链接 网盘源码.zip - 蓝奏云 背景 表白套路表情包是一款非常有趣和实…

微信小程序_24,分包预下载

什么是分包预下载: 分包预下载指的是:在进入小程序的某个页面时,由框架自动预下载可能需要的分包,从而提升进入后续分包页面时的启动速度 配置分包预下载: 预下载分包的行为,会在进入指定页面时触发,在app.json中,使用preloadRule节点定义分包的预下载规则,示例代码如下: 在app…