úterý 19. září 2017

Arduino 7, Staniční rozhlas (zvukový modul)

Dnes si popíšeme zapojení zvukového MP3 modulu možnéh využít ke staničnímu hlášení, ozvučení scény kolejiště a nebo třeba jako jednoduchý přehrávač MP3.

Použité komponenty:
1 x Arduino Pro Mini (Nano) - Aliexpress (cca 35 CZK klon)
1 x DFPlayer MP3 (Mp3-TF-16P) - AliExpress (cca 30 CZK verze mp3-tf-16p)
10 x spínač dle vaší volby
11 x odpor 10 k pro spínač a RX
1 x microSD paměťová karta - formát FAT32
1 x repro 3 W 4 ohmy


Program:

Program verze 1.1
Stav klidu - nic nehraje
Stav sepnutí - sepnutí T1 sepne mp3 z SD karty a nechá daný zvuk celý přehrát (shodné pro další T1 až T10)
Upozornění - pokud se přehrává zvuk a zmačknete stejné, či jiné talčítko T1 až T10 spustí se nový zvuk a původní přehrávaný se přeruší.

microSD karta - do kořenového adresáře nahrajte zvuk s názvem:
1.mp3 - spouští tlačítko T1
2.mp3 - spouští tlačítko T2 
atd.....
...
... až
10.mp3 - spouští tlačítko T10

Zařízení nemusí být využíváno jako rozhlas, ale jde použít jako zvukový modul pro podkreslení krajiny kolejiště, či dalšímu nazvučení figurek, vozidel, dílen apod.

Funkce viz. video:

Program:
#include <Servo.h>
#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
SoftwareSerial mySoftwareSerial(2, 3); // RX, TX - data mezi MPR a Arduino
DFRobotDFPlayerMini myDFPlayer;
void printDetail(uint8_t type, int value);
const int button0 = 4;     //nastavení funkčních tlačítek
const int button1 = 5;
const int button2 = 6; 
const int button3 = 7; 
const int button4 = 8; 
const int button5 = 9;   
const int button6 = 10;
const int button7 = 11;
const int button8 = 12;
const int button9 = 13;
int buttonState = 0; 
int pos = 0;
int value = 0;
       
void setup() {
  pinMode(button1, INPUT);     
 mySoftwareSerial.begin(9600);
  Serial.begin(9600);
  
  Serial.println();
  Serial.println(F("DFRobot DFPlayer Mini Demo"));
  Serial.println(F("Initializing DFPlayer ... (May take 3~5 seconds)"));
  
  if (!myDFPlayer.begin(mySoftwareSerial)) {  //Use softwareSerial to communicate with mp3.
    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(25);  //Nastavení hlasitosti minimální 0 až maximální 30
}

void loop() {
  buttonState = digitalRead(button0);   //tlačítko 0 sepne 1.mp3 atd u dalších
  if (buttonState == HIGH) {
  myDFPlayer.play(1);  //Play the 1.mp3
    delay(10);
  } else {
  }
    buttonState = digitalRead(button1);
  if (buttonState == HIGH) {
  myDFPlayer.play(2);  //Play the 2.mp3
    delay(10);
  } else {
  }
    buttonState = digitalRead(button2);
  if (buttonState == HIGH) {
  myDFPlayer.play(3);  //Play the 3.mp3
    delay(10);
  } else {
  }
    buttonState = digitalRead(button3);
  if (buttonState == HIGH) {
  myDFPlayer.play(4);  //Play the 4.mp3
    delay(10);
  } else {
  }
      buttonState = digitalRead(button4);
  if (buttonState == HIGH) {
  myDFPlayer.play(5);  //Play the 5.mp3
    delay(10);
  } else {
  }
      buttonState = digitalRead(button5);
  if (buttonState == HIGH) {
  myDFPlayer.play(6);  //Play the 6.mp3
    delay(10);
  } else {
  }
      buttonState = digitalRead(button6);
  if (buttonState == HIGH) {
  myDFPlayer.play(7);  //Play the 7.mp3
    delay(10);
  } else {
  }
      buttonState = digitalRead(button7);
  if (buttonState == HIGH) {
  myDFPlayer.play(8);  //Play the 8.mp3
    delay(10);
  } else {
  }
      buttonState = digitalRead(button8);
  if (buttonState == HIGH) {
  myDFPlayer.play(9);  //Play the 9.mp3
    delay(10);
  } else {
  }
      buttonState = digitalRead(button9);
  if (buttonState == HIGH) {
  myDFPlayer.play(10);  //Play the 10.mp3
    delay(10);
  } else {
  }
}


2 komentáře:

  1. Prosím - kde lze nalézt hlasový syntezátor pro výrobu staničních hlášení, který jste použil ?

    OdpovědětVymazat
  2. Hello my friend. Your project is very nice but not working. Do you help me?
    My address is.................yo9bxe@gmail.com

    OdpovědětVymazat