【雕爷学编程】Arduino动手做(212)---9合1 扩展板完成Arduino的第10类扩展实验之DFPlayer Mini TF卡MP3播放模块

在这里插入图片描述

37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和模块,依照实践(动手试试)出真知的理念,以学习和交流为目的,这里准备逐一做做实验,不管能否成功,都会记录下来—小小的进步或是搞不掂的问题,希望能够抛砖引玉。

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百一十二:9合一多功能扩展板 DHT1器温湿度 LM3 温度5蜂鸣1兼容UNO

在这里插入图片描述

采取"Arduino程序代码"+“Mind+图形编程”+"Linkboy仿真编程’三者相结合的方式

互为补充,打好基础,促进理解

在这里插入图片描述

实验目录(Arduino动手做)
一、LED 实验
01 Blink:D13蓝色 LED 闪烁
02 Blink2:D12、D13红蓝色 LED 交替闪烁
03 Blink3:模拟爆闪警灯
04 Breath_LED:D9 全彩 LED 模拟红色呼吸灯
二、按键实验
05 Button:D2 按键控制 D13蓝色 LED
06 Button_Lock:D3 按键控制 D13 蓝色LED 自锁实验
三、电位器实验
07 RS232_AD:串口读取 A0 电位器采集数值(旋转角度270°输出0-3.3V/5V电压信号电位器阻值10K)
08 Rotation_LED:A0 电位器控制 D11 全彩 LED 蓝色端亮度
09 RC_Motor:A0 电位器控制 D7 输出口的舵机控制其转动角度(舵机需自备Arduino 需要外部供电)
四、RGB 全彩 LED 实验
10 LED_RGB_Text:全彩 LED 基本颜色变化
11 LED_RGB:全彩 LED 彩虹变化
五、红外传感器D6实验(红外遥控器需自备)
12 IRrelay:按红外遥控器任意键,可以控制 D13 LED 开关(控制距离1-8米,频率38KHz,兼容市面上大部分红外遥控器)
13 IRrecord:串口显示读取的红外遥控代码
六、温度传感器实验
14 LM35_RS232AD:串口显示 A2 口 LM35 温度传感器读取的温度(可测试室内外温度,范围-50-150°C,灵敏度好)
七、温湿度传感器实验
15 DHT11_Test:串口显示 D4 口 DHT11 温湿度传感器读取的温湿度数据(测温范围0-50°C,湿度范围20%-90%PH)
八、亮度传感器实验
16 Light Sensor:串口显示 A1 口光敏电阻采集的数值
17 Light_LED:A1 口光敏电阻控制 D13 LED 开关(感光比较灵敏,适合教学实验及民用设备)
九、蜂鸣器实验
18 Buzzer:D5 口无源蜂鸣器模拟救护车警笛(可发出简单的音乐声,音乐需要通过程序编写)
十、扩展实验
19 模拟超声波测距传感器(探测类I,IIC/I2C接口)
20 总线DS18B20温度传感器(数值类,接扩展板数字D7接口)
21 TM1637四位数码管(数码管和点阵类,接扩展板数字D7/D8接口)
22 GY-BMP280-3.3 大气压强高度计传感器模块 ( 数值类,IIC/I2C接口)
23 GY-NEO-6MV2新款飞控GPS卫星信号接收模块 (数值类,TTL接口)
24 5V低电平触发单路继电器模块(执行类,数字D7接口)
25 带驻极话筒4线制声音传感器模块(触发类,数字D7接口)
26 BH1750FVI 数字光强度模块光照传感器(数值类, IIC/I2C接口)
27 开源DFPlayer Mini TF卡MP3播放模块(输出执行器类D7/D8数字接口)
28 LCD1602液晶屏模块(输出显示器类, IIC/I2C接口)
29 人体红外热释电运动传感器模块 (触发类,数字D7接口)
30 DS1307时钟模块 Tiny RTC I2C模块(探测传感器类, IIC/I2C接口)
31 兼容HC-06从机蓝牙模块(通信与存储类,TTL接口)
32 0.96寸OLED12864液晶屏模块(显示器类,IIC接口)

在这里插入图片描述

十、扩展实验
27 开源DFPlayer Mini TF卡MP3播放模块(输出执行器类D7数字接口)

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

在这里插入图片描述
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%。

特色功能
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

在这里插入图片描述
Mini MP3 Player播放器模块

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

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

模块管脚图
管脚号 管脚名称 功能描述 备注
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数据线

在这里插入图片描述
第十类 扩展实验
27 开源DFPlayer Mini TF卡MP3播放模块(输出执行器类D7/D8数字接口)
程序之一,循环播放TF卡内0003.MP3(MP3文件夹内),音量20
材料:1.5W小型扬声器一个
Arduino-------dfplayer
5V-------------VCC
GND-----------GND
D7-----------TXD
D8-----------RXD

Arduino实验开源代码

/*
Eagler8系列实验程序列表
第十类 扩展实验
27 开源DFPlayer Mini TF卡MP3播放模块(输出执行器类D7/D8数字接口)
程序之一,循环播放TF卡内0003.MP3(MP3文件夹内),音量20
材料:1.5W小型扬声器一个
Arduino-------dfplayer
5V-------------VCC
GND-----------GND
D7-----------TXD
D8-----------RXD
*/

#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"

SoftwareSerial mySoftwareSerial(2, 3);

DFRobotDFPlayerMini myDFPlayer;

void setup()
{
    
    
mySoftwareSerial.begin(9600);

myDFPlayer.begin(mySoftwareSerial);

myDFPlayer.volume(20);

myDFPlayer.loop(3);   
}

void loop()
{
    
    
}

Eagler8系列实验程序列表
第十类 扩展实验
27 开源DFPlayer Mini TF卡MP3播放模块(输出执行器类D7/D8数字接口)
程序之二,每3秒切换到下一首歌曲,音量20(速播TF卡内所有MP3歌曲)
可以打印来自dfplayer的详细信息以处理不同的错误和状态。
材料:1.5W小型扬声器一个
Arduino-------dfplayer
5V-------------VCC
GND-----------GND
D7-----------TXD
D8-----------RXD

Arduino实验开源代码

/*
Eagler8系列实验程序列表
第十类 扩展实验
27 开源DFPlayer Mini TF卡MP3播放模块(输出执行器类D7/D8数字接口)
程序之二,每3秒切换到下一首歌曲,音量20(速播TF卡内所有MP3歌曲)
可以打印来自dfplayer的详细信息以处理不同的错误和状态。
材料:1.5W小型扬声器一个
Arduino-------dfplayer
5V-------------VCC
GND-----------GND
D7-----------TXD
D8-----------RXD
*/

#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"

SoftwareSerial mySoftwareSerial(8, 7);
DFRobotDFPlayerMini myDFPlayer;
void printDetail(uint8_t type, int value);

void setup()
{
    
    
  mySoftwareSerial.begin(9600);
  Serial.begin(115200);

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

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

  myDFPlayer.volume(20);  
  myDFPlayer.play(3);  
}

void loop()
{
    
    
  static unsigned long timer = millis();

  if (millis() - timer > 3000) {
    
    
    timer = millis();
    myDFPlayer.next();  
  }

  if (myDFPlayer.available()) {
    
    
    printDetail(myDFPlayer.readType(), myDFPlayer.read());
  }
}

void printDetail(uint8_t type, int value){
    
    
  switch (type) {
    
    
    case TimeOut:
      Serial.println(F("Time Out!"));
      break;
    case WrongStack:
      Serial.println(F("Stack Wrong!"));
      break;
    case DFPlayerCardInserted:
      Serial.println(F("Card Inserted!"));
      break;
    case DFPlayerCardRemoved:
      Serial.println(F("Card Removed!"));
      break;
    case DFPlayerCardOnline:
      Serial.println(F("Card Online!"));
      break;
    case DFPlayerPlayFinished:
      Serial.print(F("Number:"));
      Serial.print(value);
      Serial.println(F(" Play Finished!"));
      break;
    case DFPlayerError:
      Serial.print(F("DFPlayerError:"));
      switch (value) {
    
    
        case Busy:
          Serial.println(F("Card not found"));
          break;
        case Sleeping:
          Serial.println(F("Sleeping"));
          break;
        case SerialWrongStack:
          Serial.println(F("Get Wrong Stack"));
          break;
        case CheckSumNotMatch:
          Serial.println(F("Check Sum Not Match"));
          break;
        case FileIndexOut:
          Serial.println(F("File Index Out of Bound"));
          break;
        case FileMismatch:
          Serial.println(F("Cannot Find File"));
          break;
        case Advertise:
          Serial.println(F("In Advertise"));
          break;
        default:
          break;
      }
      break;
    default:
      break;
  }
}

实验开源图形编程(Mind+、编玩边学)

在这里插入图片描述

实验开源仿真编程(Linkboy V5.33)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Arduino实验场景图

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

猜你喜欢

转载自blog.csdn.net/weixin_41659040/article/details/132465032