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

JR6001语音模块详解(STM32)

目录

一、介绍

二、传感器控制方式

1.按键接口

2.引脚描述

三、程序设计

main文件

usart.h文件

usart.c文件

四、实验效果 

五、资料获取

项目分享


一、介绍

        JR6001一种支持串口驱动的语音模块,模块自带USB接口,能够灵活的更换SPI Flash的内容,省去了传统语音芯片需要安装上位机更换语音的麻烦, SPI Flash直接模拟成U盘,跟拷贝U盘一样,非常方便。任何电脑系统都可以支持。

以下是JR6001语音模块的参数:

型号

JR6001

工作电压

DC3.6~5.2V

额定电流

10mA

USB接口

2.0标准(支持任何电脑操作系统)

UART接口

标准串口,3.3TTL电平,波特率9600

工作温度

-40~85

湿度

5%~95%

哔哩哔哩视频链接:

JR6001语音模块(STM32)

(资料分享见文末) 

二、传感器控制方式

1.按键接口

JR6001语音模块的AD_KEY引脚,是预留给外部增加控制按键使用。一共可以增加5个控制按键,功能分别是:音量减小,音量增加,上一首,下一首,播放/暂停。用到此功能,需增加电路如上图

2.引脚描述

 

三、程序设计

1.使用STM32F103C8T6使用JR6001语音模块连接扬声器,通过按键控制播放几段音频。

KEY

PA0

JQ6500_TX

PA10

JQ6500_RX

PA9

OLED_SCL

PB11

OLED_SDA

PB10

main文件

#include "stm32f10x.h"
#include "led.h"
#include "usart.h"
#include "delay.h"
#include "oled.h"
#include "key.h"/*****************辰哥单片机设计******************STM32* 项目			:	JR6001语音模块实验                     * 版本			: V1.0* 日期			: 2025.2.7* MCU			:	STM32F103C8T6* 接口			:	参看usart.h						* BILIBILI	:	辰哥单片机设计* CSDN			:	辰哥单片机设计* 作者			:	辰哥 **********************BEGIN***********************/int key = 0;
int key_state = 0;
int key_num = 0;int main(void)
{ SystemInit();//配置系统时钟为72M	delay_init(72);LED_Init();LED_On();USART1_Config();//串口初始化Key_Init();OLED_Init();printf("AF:30");//声音调到31档   最大delay_ms(1000);OLED_Clear();//显示“语音序号:”OLED_ShowChinese(0,0,0,16,1);OLED_ShowChinese(16,0,1,16,1);OLED_ShowChinese(32,0,2,16,1);OLED_ShowChinese(48,0,3,16,1);OLED_ShowChar(64,0,':',16,1);while (1){key = Key_GetData();if(key){key_state = 1;key_num++;if(key_num>3)key_num=1;}elsekey_state = 0;if(key_state){switch(key_num){case 1:printf("A7:00001");//欢迎使用LED_Toggle();OLED_ShowNum(56,30,1,1,16,1);		//1break;case 2:printf("A7:00002");//你好LED_Toggle();OLED_ShowNum(56,30,2,1,16,1);		//2break;case 3:printf("A7:00003");//再见LED_Toggle();OLED_ShowNum(56,30,3,1,16,1);		//3break;default:break;}	}}
}

usart.h文件

#ifndef __USART1_H
#define	__USART1_H#include "stm32f10x.h"
#include <stdio.h>/*****************辰哥单片机设计******************STM32* 项目			:	JR6001语音模块实验                     * 版本			: V1.0* 日期			: 2025.2.7* MCU			:	STM32F103C8T6* 接口			:	参串口1						* BILIBILI	:	辰哥单片机设计* CSDN			:	辰哥单片机设计* 作者			:	辰哥 **********************BEGIN***********************/void USART1_Config(void);
int fputc(int ch, FILE *f);
void USART1_printf(USART_TypeDef* USARTx, uint8_t *Data,...);
void UART1SendByte(unsigned char SendData);#endif /* __USART1_H */

usart.c文件

#include "usart.h"
#include <stdarg.h>/*****************辰哥单片机设计******************STM32* 项目			:	JR6001语音模块实验                     * 版本			: V1.0* 日期			: 2025.2.7* MCU			:	STM32F103C8T6* 接口			:	参串口1						* BILIBILI	:	辰哥单片机设计* CSDN			:	辰哥单片机设计* 作者			:	辰哥 **********************BEGIN***********************/void USART1_Config(void)
{GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;/* 使能 USART1 时钟*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE); /* USART1 使用IO端口配置 */    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;	//浮空输入GPIO_Init(GPIOA, &GPIO_InitStructure);   //初始化GPIOA/* USART1 工作模式配置 */USART_InitStructure.USART_BaudRate = 9600;	//波特率设置:9600USART_InitStructure.USART_WordLength = USART_WordLength_8b;	//数据位数设置:8位USART_InitStructure.USART_StopBits = USART_StopBits_1; 	//停止位设置: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(USART1, &USART_InitStructure);  //初始化USART1USART_Cmd(USART1, ENABLE);// USART1使能
}/* 描述  :重定向c库函数printf到USART1*/ 
int fputc(int ch, FILE *f)
{
/* 将Printf内容发往串口 */USART_SendData(USART1, (unsigned char) ch);while (!(USART1->SR & USART_FLAG_TXE));return (ch);
}/*发送一个字节数据*/
void UART1SendByte(unsigned char SendData)
{	   USART_SendData(USART1,SendData);while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);	    
} 

四、实验效果 

五、资料获取

项目分享

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

相关文章:

  • 1.3 点云数据获取方式——ToF相机
  • Linux电源管理(3)_关机和重启的过程
  • 【今日三题】小红的ABC(找规律) / 不相邻取数(多状态dp) / 空调遥控(排序+二分/滑动窗口)
  • 面向人工智能、量子科技、人形机器人等产业,山东启动制造业创新中心培育认定
  • Android Studio 中实现方法和参数显示一行
  • Git 多账号切换及全局用户名设置不生效问,GIT进行上传无权限问题
  • 科研入门规划
  • computed计算值为什么还可以依赖另外一个computed计算值?
  • linux下ACL权限和掩码权限
  • Springboot2.X 读取多层嵌套的配置结构
  • 【东枫电子】AI-RAN:人工智能 - 无线接入网络
  • react-新建项目复用node_modules
  • 从摄像头到 RAW 数据:MJPEG 捕获与验证
  • 大屏软件设计的交互设计底层逻辑
  • TCP概念+模拟tcp服务器及客户端
  • React Navigation 使用指南
  • mongoose的介绍,连接数据库
  • linux安装ragflow
  • 4.29【Q】paraCompute
  • 深入分析OpenCV技术原理:计算机视觉的核心力量
  • JavaScript 中的类型转换机制?
  • ​MCP协议深度解析:原理、应用与物联网时代的机遇-优雅草卓伊凡
  • 5. 配置舵机ID(具身智能机器人套件)
  • 使用 np.zeros_like(label) 保存预测概率时发现数据类型不匹配导致的隐式类型转换
  • 新版权案件申请TRO,涵盖复古风吉他与头盔
  • 【LeetCode】螺旋矩阵
  • Maven根据Google proto文件自动生成java对象
  • 香港科技大学广州|智能制造学域硕、博研究生招生可持续能源与环境学域博士招生宣讲会—四川大学专场!
  • Unity-Shader详解-其三
  • 电子电器架构 --- 人工智能、固态电池和先进自动驾驶功能等新兴技术的影响