[Diao Ye がプログラミングを学ぶ] Arduino ハンズオン (212) --- Arduino の 10 回目の拡張実験を完了するための 9-in-1 拡張ボード DFPlayer Mini TF カード MP3 プレーヤー モジュール

ここに画像の説明を挿入

37 個のセンサーとモジュールについての言及はインターネット上で広く広まっていますが、実際には、Arduino と互換性のあるセンサー モジュールは 37 個以上あるはずです。手持ちのセンサーやモジュールがいくつかあることを考慮し、学習とコミュニケーションを目的とした実践(ハンズオントライ)の概念に従って、ここで一つずつ実験を行っていきます。成功しても失敗しても記録するのは難しい問題ですが、レンガを投げて翡翠を輝かせられるようになりたいと思っています。

【Arduino】168種類のセンサーモジュールシリーズ実験(データコード+シミュレーションプログラミング+グラフィックプログラミング)
実験212:9 in 1多機能拡張ボードDHT1デバイス温湿度LM3温度5ブザー1UNO互換

ここに画像の説明を挿入

「Arduino プログラムコード」+「Mind + グラフィックス プログラミング」+「Linkboy シミュレーション プログラミング」の組み合わせを考えてみましょう。

お互いを補い、基礎を築き、理解を促進する

ここに画像の説明を挿入

実験カタログ (Arduino ハンズオン)
1. LED 実験
01 Blink: D13 の青色 LED が点滅
02 Blink2: D12、D13 赤と青の LED が交互に点滅
03 Blink3: 点滅するアラーム光をシミュレート
04 Breath_LED: D9 フルカラー LED が赤色の呼吸光をシミュレート
2. ボタン実験
05 ボタン: D2 ボタン制御 D13 青色 LED
06 Button_Lock: D3 ボタン制御 D13 青色 LED セルフロック実験
3. ポテンショメータ実験
07 RS232_AD: シリアル ポートが A0 ポテンショメータを読み取り、値を収集します (回転角度 270° 出力 0 -3.3 V/5V 電圧信号ポテンショメータの抵抗値 10K)
08 Rotation_LED: A0 ポテンショメータは D11 フルカラー LED 青色端子の輝度を制御します。
09 RC_Motor: A0 ポテンショメータは D7 の出力ポートでステアリング ギアを制御し、その回転角度を制御します (ステアリング ギアは
4. RGB フルカラー LED 実験
10 LED_RGB_Text: フルカラー LED 基本色変更
11 LED_RGB: フルカラー LED レインボー変更
5. 赤外線センサー D6 実験 (赤外線リモコンは別途用意する必要があります) 12 IRrelay :
赤外線リモコンを押します。デバイスの任意のキーで D13 LED スイッチを制御できます (制御距離 1 ~ 8 メートル、周波数 38KHz、市販のほとんどの赤外線リモコンと互換性があります) 13 IRrecord: シリアル ポートに読み取り値が表示されます
。赤外線リモコンコード
6. 温度センサー実験
14 LM35_RS232AD: シリアル ポート
センサーは、A2 ポートの8. 明るさセンサーの実験16 光センサー: シリアル ポートはポート A1 のフォトレジスターによって収集された値を表示します。17 Light_LED: ポートのフォトレジスターの制御A1 D13 LED スイッチ (光に敏感、教育実験や民生用機器に適しています) 9. ブザー実験18 ブザー: 救急車のサイレンをシミュレートするための D5 ポート パッシブ ブザー (簡単な音楽を鳴らすことができます。音楽はプログラムする必要があります) 10 、拡張実験19 アナログ超音波測距センサー (検出タイプ I、IIC/I2C インターフェイス) 20 バス DS18B20 温度センサー (数値タイプ、拡張ボードのデジタル D7 インターフェイスに接続) 21 TM1637 4 桁デジタル チューブ (デジタル チューブおよびドット マトリックス タイプ、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 LCD スクリーン モジュール (出力表示タイプ、IIC/I2C インターフェイス)
29 人体赤外線焦電モーション センサー モジュール (トリガー タイプ、デジタル D7 インターフェイス) )
30 DS1307 クロック モジュール Tiny RTC I2C モジュール (検出センサー タイプ、IIC/I2C インターフェイス)
31 互換 HC-06 スレーブ Bluetooth モジュール (通信およびストレージ タイプ、TTL インターフェイス)
32 0.96 インチ OLED12864 LCD スクリーン モジュール (ディスプレイ タイプ、IIC インターフェイス)

ここに画像の説明を挿入

10. 拡張実験
27 オープンソース DFPlayer Mini TF カード MP3 プレーヤー モジュール (出力アクチュエーター タイプ D7 デジタル インターフェイス)

知識ポイント: YX5200-24SS チップは、
シリアル ポートを提供する MP3 チップで、MP3 と WMV のハード デコーディングを完全に統合します。同時に、ソフトウェアはTFカードドライバーとUSBドライバー、および外部フラッシュをサポートします。FAT16、FAT32 ファイルシステムをサポートします。指定した音楽の再生とその音楽の再生方法は、面倒な下位レベルの操作を必要とせず、簡単なシリアルポートコマンドを通じて実行でき、使いやすく、安定性と信頼性がこの製品の最大の特徴です。

ここに画像の説明を挿入
YX5200-24SS シリアル音声チップパラメータ
MP3 ファイル形式: すべてのビットレート 11172-3 および ISO13813-3 層オーディオデコードをサポート、サンプリングサポート (KHZ): 8/11.025/12/16/22.05/24/32/44.1/48、サポートノーマル、ラズ、クラシック、ポップ、ロックなど
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、S/N 比サポート 85dB
3. FAT16、FAT32 ファイルシステムを完全サポート、最大 32G TF カードと U ディスクをサポート
4、複数の制御モード、パラレルポート制御モード、シリアルポートモード、ボタン制御モード
5、ラジオ言語挿入機能、再生中の BGM を一時停止できます
6 、オーディオデータプレス フォルダーソート、最大100のフォルダーをサポート、各フォルダーに1000曲を
割り当てることができます
ボリューム調整可能、10種類のEQ調整可能11、外部拡張NORFLASHおよびNANDFLASHをサポート オンボードはデフォルトでNORFLASHをサポート


ここに画像の説明を挿入
ミニ MP3 プレーヤー プレーヤー モジュール

スピーカーに直接接続できる小型で安価な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 の 10 番目のカテゴリーは、
オープンソースの DFPlayer Mini TF カード MP3 プレーヤー モジュール (出力アクチュエーター タイプ D7/D8 デジタル インターフェイス) のプログラムの 1 つで、
TF カード内の 0003.MP3 (MP3 内) をループして再生します。フォルダー)、ボリューム 20
材質: 1.5W 小型スピーカー
Arduino 1 台------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 シリーズ実験プログラムリスト
10 回目の拡張実験
27 オープンソース DFPlayer Mini TF カード MP3 プレーヤー モジュール (出力アクチュエーター タイプ D7/D8 デジタル インターフェイス)
プログラム 2、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