找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
楼主: eagler8
打印 上一主题 下一主题
收起左侧

【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)

  [复制链接]
1641#
ID:513258 发表于 2019-8-6 18:46 | 只看该作者
本帖最后由 eagler8 于 2019-8-7 18:02 编辑

实验八十五:开源 Mini MP3 Player SD卡播放器模块(YX5200-24SS)


YX5200-24SS
是一个提供串口的MP3芯片,完美的集成了MP3、WMV的硬解码。同时软件支持TF卡驱动和USB驱动,以及外挂FLASH。支持FAT16、FAT32文件系统。通过简单的串口指令即可完成播放指定的音乐,以及如何播放音乐等功能,无需繁琐的底层操作,使用方便,稳定可靠是此款产品的最大特点。




回复

使用道具 举报

1642#
ID:513258 发表于 2019-8-6 20:12 | 只看该作者
YX5200-24SS串口语音芯片参数
MP3文件格式:支持所有比特率11172-3和ISO13813-3layer音频解1码,采样支持(KHZ):8/11.025/12/16/22.05/24/32/44.1/48,支持Normal、Lazz、Classic、Pop、ROCK等
USB接口:2.0标准
UART接口:标准串口,TTL电平,波特率可设
输入电压:3.3-5V
额定电流:15ma(不带U盘)
尺寸:8.4*8mm
封装:SSOP24封装
工作温度:-40度—80度
湿度:5%-95%。


回复

使用道具 举报

1643#
ID:513258 发表于 2019-8-6 20:25 | 只看该作者
特色功能
1、支持采样率(KHz):8/11.025/12/16/22.05/24/32/44.1/48
2、24位DAC输出,动态范围支持90dB,信噪比支持85dB
3、完全支持FAT16、FAT32文件系统,最大支持32G的TF卡和U盘
4、多种控制模式,并口控制模式、串口模式、按键控制模式
5、广播语插播功能,可以暂停正在播放的背景音乐
6、音频数据按文件夹排序,最多支持100个文件夹,每隔文件夹可以分配1000首歌曲
7、支持line in功能
8、支持mic扩音喊话功能
9、支持声卡功能,也支持线控耳机功能
10、30级音量可调,10种EQ可调
11、支持外扩NORFLASH和NANDFLASH.板载默认支持NORFLASH



回复

使用道具 举报

1644#
ID:282095 发表于 2019-8-6 20:41 | 只看该作者
感谢分享 太有用了
回复

使用道具 举报

1645#
ID:513258 发表于 2019-8-7 18:03 | 只看该作者
鹏博士PBs 发表于 2019-8-6 20:41
感谢分享 太有用了

谢谢老师的鼓励
回复

使用道具 举报

1646#
ID:513258 发表于 2019-8-7 19:22 | 只看该作者
YX5200-24SS电原理图



回复

使用道具 举报

1647#
ID:513258 发表于 2019-8-7 19:54 | 只看该作者

回复

使用道具 举报

1648#
ID:513258 发表于 2019-8-7 19:56 | 只看该作者

回复

使用道具 举报

1649#
ID:513258 发表于 2019-8-7 20:03 | 只看该作者
应用领域
1.汽车导航语音播报
2.公路运输检查员,收费站语音提示
3.火车,公交车安全检查语音提示
4.电力,通讯,财务手术室语音提示
5.车辆进出通道以验证语音提示
6.边境频道语音提示
7.多声道语音报警或语音导航设备操作
8.带语音通知的电动观光巴士安全
9.机电设备故障报警
10.火警语音提示
11.自动播放设备,定期播放




回复

使用道具 举报

1650#
ID:513258 发表于 2019-8-7 20:09 | 只看该作者
Mini MP3 Player TF卡播放器模块






回复

使用道具 举报

1651#
ID:513258 发表于 2019-8-8 06:55 | 只看该作者
Mini MP3 Player播放器模块
是一款小巧且价格低廉的MP3模块,可以直接接驳扬声器。模块配合供电电池、扬声器、按键可以单独使用,也可以通过串口控制,作为UNO或者是任何有串口的单片机的一个模块。模块本身完美的集成了MP3、WAV、WMA的硬解码。同时软件支持TF卡驱动,支持FAT16、FAT32文件系统。通过简单的串口指令即可完成播放指定的音乐,以及如何播放音乐等功能,无需繁琐的底层操作,使用方便,稳定可靠。



回复

使用道具 举报

1652#
ID:513258 发表于 2019-8-8 07:05 | 只看该作者
模块管脚图
管脚号        管脚名称        功能描述        备注
1        BUSY        播放时输出高电平,停止为低        忙信号
2        RX        UART异步串口数据输入        3.3V的TTL电平
3        TX        UART异步串口数据输出        3.3V的TTL电平
4        DACR        DAC右声道输出        可外接功放、耳机
5        DACL        DAC左声道输出        可外接功放、耳机
6        SPK1        外接单声道喇叭        接3W/4Ω或2W/8Ω无源喇叭
7        SPK2        外接单声道喇叭        接3W/4Ω或2W/8Ω无源喇叭
8        VCC        电源正极        3.6-5V
9        IO5        触发输入口5        接地触发
10        IO4        触发输入口4        接地触发
11        IO3        触发输入口3        接地触发
12        IO2        触发输入口2        接地触发
13        IO1        触发输入口1        接地触发
14        GND        电源负极        系统地
15        DP        USB数据线        读U盘或用USB数据线连接电脑更换TF卡内容
16        DM        USB数据线



回复

使用道具 举报

1653#
ID:513258 发表于 2019-8-8 07:08 | 只看该作者

回复

使用道具 举报

1654#
ID:513258 发表于 2019-8-8 07:13 | 只看该作者

回复

使用道具 举报

1655#
ID:513258 发表于 2019-8-8 07:14 | 只看该作者

回复

使用道具 举报

1656#
ID:513258 发表于 2019-8-8 07:17 | 只看该作者

回复

使用道具 举报

1657#
ID:513258 发表于 2019-8-8 08:19 | 只看该作者

回复

使用道具 举报

1658#
ID:513258 发表于 2019-8-8 08:59 | 只看该作者
工作模式
1)串口模式
模块支持异步串口通讯模式,通过串口接受控制命令
串口指令格式




回复

使用道具 举报

1659#
ID:513258 发表于 2019-8-8 09:03 | 只看该作者
串口控制指令



回复

使用道具 举报

1660#
ID:513258 发表于 2019-8-8 09:05 | 只看该作者
串口查询指令



回复

使用道具 举报

1661#
ID:513258 发表于 2019-8-8 09:07 | 只看该作者
2)AD按键模式
模块还支持AD按键控制方式,取代了传统了矩阵键盘的接法,这样做的好处是充分利用了MCU越来越强大的AD功能。设计简约而不简单,我们模块默认配置2个AD口,20个按键的阻值分配。按键使用示意原理图




回复

使用道具 举报

1662#
ID:513258 发表于 2019-8-8 09:10 | 只看该作者
3)IO模式
本模块也支持简单的IO模式




回复

使用道具 举报

1663#
ID:513258 发表于 2019-8-8 14:29 | 只看该作者
  1. /*
  2. 【Arduino】66种传感器模块系列实验(85)
  3. 实验八十五:开源 Mini MP3 Player TF卡播放器模块(YX5200-24SS)
  4. 程序之一,循环播放TF卡内0003.MP3(MP3文件夹内),音量20
  5. Arduino-------dfplayer
  6. 5V-------------VCC
  7. GND-----------GND
  8. D2-----------TXD
  9. D3-----------RXD
  10. */

  11. #include "SoftwareSerial.h"
  12. #include "DFRobotDFPlayerMini.h"

  13. SoftwareSerial mySoftwareSerial(2, 3);

  14. DFRobotDFPlayerMini myDFPlayer;

  15. void setup()
  16. {
  17. mySoftwareSerial.begin(9600);

  18. myDFPlayer.begin(mySoftwareSerial);

  19. myDFPlayer.volume(20);

  20. myDFPlayer.loop(3);   
  21. }

  22. void loop()
  23. {
  24. }
复制代码


回复

使用道具 举报

1664#
ID:513258 发表于 2019-8-8 14:46 | 只看该作者

回复

使用道具 举报

1665#
ID:513258 发表于 2019-8-8 15:11 | 只看该作者
收集整理的使用<DFRobotDFPlayerMini>库的控制语句汇总


  1. //收集整理的使用<DFRobotDFPlayerMini>库的控制语句汇总
  2.   
  3.   myDFPlayer.start();  //播放mp3
  4.   myDFPlayer.pause();  //暂停mp3
  5.   myDFPlayer.next();  //播放下一个mp3
  6.   myDFPlayer.enableLoop();  //启用循环
  7.   myDFPlayer.disableLoop();  //禁用循环
  8.   myDFPlayer.stopAdvertise(); //停止做广告
  9.   mp3Player.volume(10); //音量为10(0-30)
  10.   myDFPlayer.previous();  //播放上一个的mp3
  11.   myDFPlayer.randomAll(); //随机播放所有mp3
  12.   myDFPlayer.enableLoopAll(); //循环所有mp3文件
  13.   myDFPlayer.disableLoopAll(); //停止循环所有mp3文件
  14.   myDFPlayer.play(1);  //播放文件夹里名为0001.mp3的音乐
  15.   myDFPlayer.loop(1);  //循环文件夹里名为0001.mp3的音乐
  16.   myDFPlayer.loopFolder(5); //循环文件夹SD:/ 05中的所有mp3文件
  17.   myDFPlayer.playMp3Folder(4); //在SD中播放特定的mp3:/MP3/0004.mp3;文件名(0~65535)
  18.   myDFPlayer.advertise(3); //在SD中宣传特定的mp3广告:/ADVERT/0003.mp3;文件名(0~65535)
  19.   myDFPlayer.playFolder(15, 4);  //在SD中播放特定的mp3:/ 15/004.mp3;文件夹名称(1~99);文件名(1~255)
  20.   myDFPlayer.playLargeFolder(2, 999); //在SD中播放特定的mp3:/ 02/004.mp3;文件夹名称(1~10);文件名(1~1000)
复制代码



回复

使用道具 举报

1666#
ID:513258 发表于 2019-8-8 16:46 | 只看该作者
几点注意事项
1、DFPlayer Mini 可以读取MP3 & WAV 档案格式,但试过档案长度1秒以下无法播放。
2、所有音乐档案一定要放在/mp3 资料夹里
3、音乐档案名称一定要使用4 个字,如0001.mp3, 0002.mp3…..0255.mp3
4、音乐档案超过4个字后则无限制,像是0001_Bruno_Mars_Count_On Me.mp3 是没问题的。
5、如果你从SD 卡上删掉某个档案,DFPlayer Mini 还是有办法把它播出来,好怪!后来我从新格式化SD 卡才成功播放我要的音乐档案。
6、Delay(sec); 这个指是是告诉Arduino 你要播放音乐的长度,如果你给的秒数不足,而下个指令又是要播另一首,则Arduino 就会把目前播放中断,而继续播下一首。
7、mp3_play (74); 这个指令是播放0074.mp3 这个音乐档。
8、不要直接把Arduino的5V给DFPlayer Mini使用,一定要分别供给DFPlayer Mini电源,不然喇叭会发出很大的杂音。
9、测试时平均电流150ma左右,模块发烫,可能要注意控制电流。
10、偶然发现这个模块使用不同的库,相关的控制语句完全不相同。

回复

使用道具 举报

1667#
ID:513258 发表于 2019-8-8 16:52 | 只看该作者
  1. /*
  2. 【Arduino】66种传感器模块系列实验(85)
  3. 实验八十五:开源 Mini MP3 Player TF卡播放器模块(YX5200-24SS)
  4. 程序之二,每3秒切换到下一首歌曲,音量20(速播TF卡内所有MP3歌曲)
  5. 可以打印来自dfplayer的详细信息以处理不同的错误和状态。
  6. Arduino-------dfplayer
  7. 5V-------------VCC
  8. GND-----------GND
  9. D10-----------TXD
  10. D11-----------RXD
  11. */

  12. #include "Arduino.h"
  13. #include "SoftwareSerial.h"
  14. #include "DFRobotDFPlayerMini.h"

  15. SoftwareSerial mySoftwareSerial(10, 11);
  16. DFRobotDFPlayerMini myDFPlayer;
  17. void printDetail(uint8_t type, int value);

  18. void setup()
  19. {
  20.   mySoftwareSerial.begin(9600);
  21.   Serial.begin(115200);

  22.   Serial.println();
  23.   Serial.println(F("DFRobot DFPlayer Mini Demo"));
  24.   Serial.println(F("Initializing DFPlayer ... (May take 3~5 seconds)"));

  25.   if (!myDFPlayer.begin(mySoftwareSerial)) {  
  26.     Serial.println(F("Unable to begin:"));
  27.     Serial.println(F("1.Please recheck the connection!"));
  28.     Serial.println(F("2.Please insert the SD card!"));
  29.     while(true);
  30.   }
  31.   Serial.println(F("DFPlayer Mini online."));

  32.   myDFPlayer.volume(20);  
  33.   myDFPlayer.play(3);  
  34. }

  35. void loop()
  36. {
  37.   static unsigned long timer = millis();

  38.   if (millis() - timer > 3000) {
  39.     timer = millis();
  40.     myDFPlayer.next();  
  41.   }

  42.   if (myDFPlayer.available()) {
  43.     printDetail(myDFPlayer.readType(), myDFPlayer.read());
  44.   }
  45. }

  46. void printDetail(uint8_t type, int value){
  47.   switch (type) {
  48.     case TimeOut:
  49.       Serial.println(F("Time Out!"));
  50.       break;
  51.     case WrongStack:
  52.       Serial.println(F("Stack Wrong!"));
  53.       break;
  54.     case DFPlayerCardInserted:
  55.       Serial.println(F("Card Inserted!"));
  56.       break;
  57.     case DFPlayerCardRemoved:
  58.       Serial.println(F("Card Removed!"));
  59.       break;
  60.     case DFPlayerCardOnline:
  61.       Serial.println(F("Card Online!"));
  62.       break;
  63.     case DFPlayerPlayFinished:
  64.       Serial.print(F("Number:"));
  65.       Serial.print(value);
  66.       Serial.println(F(" Play Finished!"));
  67.       break;
  68.     case DFPlayerError:
  69.       Serial.print(F("DFPlayerError:"));
  70.       switch (value) {
  71.         case Busy:
  72.           Serial.println(F("Card not found"));
  73.           break;
  74.         case Sleeping:
  75.           Serial.println(F("Sleeping"));
  76.           break;
  77.         case SerialWrongStack:
  78.           Serial.println(F("Get Wrong Stack"));
  79.           break;
  80.         case CheckSumNotMatch:
  81.           Serial.println(F("Check Sum Not Match"));
  82.           break;
  83.         case FileIndexOut:
  84.           Serial.println(F("File Index Out of Bound"));
  85.           break;
  86.         case FileMismatch:
  87.           Serial.println(F("Cannot Find File"));
  88.           break;
  89.         case Advertise:
  90.           Serial.println(F("In Advertise"));
  91.           break;
  92.         default:
  93.           break;
  94.       }
  95.       break;
  96.     default:
  97.       break;
  98.   }
  99. }
复制代码


回复

使用道具 举报

1668#
ID:513258 发表于 2019-8-8 16:55 | 只看该作者

回复

使用道具 举报

1669#
ID:513258 发表于 2019-8-8 17:34 | 只看该作者

回复

使用道具 举报

1670#
ID:513258 发表于 2019-8-8 18:21 | 只看该作者

回复

使用道具 举报

1671#
ID:513258 发表于 2019-8-8 19:18 | 只看该作者

回复

使用道具 举报

1672#
ID:513258 发表于 2019-8-8 19:36 | 只看该作者

回复

使用道具 举报

1673#
ID:513258 发表于 2019-8-10 07:37 | 只看该作者
实验八十六: 180度SG90舵机模块(模拟9G)

舵机
是一种位置伺服的驱动器,主要是由外壳、电路板、无核心马达、齿轮与位置检测器所构成。其工作原理是由接收机或者单片机发出信号给舵机,其内部有一个基准电路,产生周期为20ms,宽度为1.5ms 的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。经由电路板上的IC 判断转动方向,再驱动无核心马达开始转动,透过减速齿轮将动力传至摆臂,同时由位置检测器送回信号,判断是否已经到达定位。适用于那些需要角度不断变化并可以保持的控制系统。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。一般舵机旋转的角度范围是0 度到180 度。


回复

使用道具 举报

1674#
ID:513258 发表于 2019-8-10 08:31 | 只看该作者
SG90舵机
9克小舵机是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。常见于航模,飞机模型,遥控机器人及机械部件当中。在使用中,舵机的配件通常包含一个能把舵机固定到基座上的支架以及可以套在驱动轴上的舵盘,通过舵盘上的孔可以连接其它物体构成传动模型。小舵机自带的3线接口可以通过RJ25适配器与主板相连。




回复

使用道具 举报

1675#
ID:513258 发表于 2019-8-10 08:48 | 只看该作者


技术规格
工作电压:4.8V到6V DC
工作电流:80到100mA
待机电流:5mA
极限角度: 210°±5%
扭力: 1.3到1.7kg/cm
工作温度:-10℃到60℃
湿度范围:60%±10%
转速: 0.09到0.10 sec/60°(4.8V)
信号周期:20 ms
信号高电平时间范围:1000到2000 us/周期
尺寸: 32.3 x 12.3 x 30.6 mm (长x宽x高)

回复

使用道具 举报

1676#
ID:513258 发表于 2019-8-10 08:57 | 只看该作者

回复

使用道具 举报

1677#
ID:513258 发表于 2019-8-10 09:14 | 只看该作者
工作原理
舵机安装了一个电位器(或其它角度传感器)检测输出轴转动角度,控制板根据电位器的信息能比较精确的控制和保持输出轴的角度。这样的直流电机控制方式叫闭环控制,所以舵机更准确的说是伺服马达,英文 servo.舵机组成: 舵盘、 减速齿轮、 位置反馈电位计、直流电机、 控制电路板等。控制电路板接受来自信号线的控制信号,控制电机转动,电机带动一系列齿轮组,减速后传动至输出舵盘。舵机的输出轴和位置反馈电位计是相连的,舵盘 转动的同时,带动位置反馈电位计,电位计将输出一个电压信号到控制电路板,进行反馈,然后控制电路板根据所在位置决定电机转动的方向和速度,从而达到目标停止。其工作流程为:控制信号→控制电路板→电机转动→齿轮组减速→舵盘转动→位置反馈电位计→控制电路板反馈。




回复

使用道具 举报

1678#
ID:513258 发表于 2019-8-10 09:19 | 只看该作者

舵机的闭环检测机制
关于舵机的精准位置控制,存在以下如下图的闭环控制机制。即:位置检测器(角度传感器)是它的输入传感器,舵机转动的位置变化,位置检测器的电阻值就会跟着变化。通过控制电路读取该电阻值的大小,就能根据阻值适当调整电机的速度和方向,使电机向指定角度旋转。从而实现了舵机的精确转动的控制。

回复

使用道具 举报

1679#
ID:513258 发表于 2019-8-10 10:33 | 只看该作者
舵机的控制信号
为周期是20ms的脉宽调制(PWM)信号,其中脉冲宽度从0.5ms-2.5ms,相对应舵盘的位置为0-180度,呈线性变化。也就是说,给它提供一定的脉宽,它的输出轴就会保持在一个相对应的角度上,无论外界转矩怎样改变,直到给它提供一个另外宽度的脉冲信号,它才会改变输出角度到新的对应的位置上。舵机内部有一个基准电路,产生周期20ms,宽度1.5ms的基准信号,有一个比较器,将外加信号与基准信号相比较,判断出方向和大小,从而产生电机的转动信号。由此可见,舵机是一种位置伺服的驱动器,转动范围不能超过180度,适用于那些需要角度不断变化并可以保持的驱动当中。比方说机器人的关节、飞机的舵面等。



回复

使用道具 举报

1680#
ID:513258 发表于 2019-8-10 10:54 | 只看该作者
本帖最后由 eagler8 于 2019-8-10 12:32 编辑

PWM信号和舵机转动角度的关系
说到舵机的控制信号,一般是脉宽调制(PWM)信号,如下图,直观反映了PWM信号和舵机转动角度的关系,你也可以简单的理解为,通过给舵机通电的时间控制,结合角度传感器的反馈信号检测和控制,实现了舵机的精确角度控制。舵机的控制信号周期为20MS的脉宽调制信号(PWM),其中脉宽从0.5ms-2.5ms,相应的舵盘位置从0-180度,呈线型变化。也就是说,给舵机提供一定的脉宽,他的输出轴就会保持一定的对应角度,无论外接转矩怎么改变,知道给他提供另外一个脉冲信号,他才会改变输出角度到新的对应的位置上。舵机内部有一个基准电路,产生周期为20MS,宽度为1.5MS的脉冲信号,有一个比较器,将外加信号与基准信号相比较,判断出方向和大小,从而产生电机的转动信号。舵机是一种位置伺服驱动器,转动范围不能超过180度,适用于那些需要不断变化并可以保持的驱动器中,比喻说机器人的关节、飞机的多面等。





回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表