自己利用空闲时间,用32单片机和一些模块做了一个语音插座,既有12V直流电输出,也有两路220交流输出(其中一路可以支持高低档切换,实现原理就是在两个继电器中间串一个1N5408二极管)。本制作语音插座,有PCB、原理图,PCB印制电路板都是原创,还有预留了两个DS18b20温度传感器的焊盘位置和两个按键,一个可以探测5V和3.3V芯片的工作温度,另一个可以探测外部温度,然后配合预留继电器12V供电,可以实现温度控制。除了这些已经连接好了的电路,还把剩余的其他IO口引出,有一组spi协议(后期可以添加显示屏)、3.3v、5v、12v的电源。毕竟是业余时间做的,可能在有些方面不是很完善。
一、资料展示
1.原理图
2.PCB印制电路板
因为自己做的板,所以在布线的时候那那么专业,能用就好。
3.实物图
外观大概就这样,工作状态
4、说明
外壳使用3D打印的,就是第一次使用,建模这些不是很好,打出6面后用热熔枪连接·······
5、代码
代码太多了,我就不写出来咯,自行可以去程序里面看。在资料里有单独的nsy6288、MP3、LD3320的一些单一代码,直接修改一下就能移植。有些代码的注释没有修改到,是错误的。看的时候注意一下就好。
6、视频
https://www.bilibili.com/video/BV1Fq4y147Rm/ 哔哩哔哩
制作出来的实物图如下:
Altium Designer画的原理图和PCB图如下:(51hei附件中可下载工程文件)
单片机源程序如下:
- #include "stm32f10x.h"
- #include "delay.h"
- #include "usart.h"
- #include "led.h"
- #include "buzzer.h"
- #include "Relay.h"
- #include "time.h"
- #include "syn6288.h"
- #include "LD3320.h"
- #include "stdio.h"
- /**************芯片设置命令*********************/
- u8 SYN_StopCom[] = {0xFD, 0X00, 0X02, 0X02, 0XFD}; //停止合成
- u8 SYN_SuspendCom[] = {0XFD, 0X00, 0X02, 0X03, 0XFC}; //暂停合成
- u8 SYN_RecoverCom[] = {0XFD, 0X00, 0X02, 0X04, 0XFB}; //恢复合成
- u8 SYN_ChackCom[] = {0XFD, 0X00, 0X02, 0X21, 0XDE}; //状态查询
- u8 SYN_PowerDownCom[] = {0XFD, 0X00, 0X02, 0X88, 0X77}; //进入POWER DOWN 状态命令
- int main(void)
- {
- delay_init();
- LED_init();
- buzzer_init();
- Relay_init();
- LD3320_START();
- uart_init(9600);
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
- Flashing();
- buzzer_On_off();
- //选择背景音乐2。(0:无背景音乐 1-15:背景音乐可选)
- //m[0~16]:0背景音乐为静音,16背景音乐音量最大
- //v[0~16]:0朗读音量为静音,16朗读音量最大
- //t[0~5]:0朗读语速最慢,5朗读语速最快
- //其他不常用功能请参考数据手册
- SYN_FrameInfo(0, "[v10][m0][t5]主人你好,我是您的语音助手,随时听候您的差遣!");
- while(1)
- {
- LD3320_main();
-
-
- //暂停合成,此时没有用到,用于展示函数用法
- //YS_SYN_Set(SYN_SuspendCom);
- }
- }
复制代码
Keil代码下载与原理图和PCB文件:
智能插座.7z
(1.11 MB, 下载次数: 100)
|