Luc Paquin
Published © CC BY

Project #16: Sound – ESP32 – Mk27

Project #16: Sound – ESP32 – Mk27

IntermediateFull instructions provided2 hours22
Project #16: Sound – ESP32 – Mk27

Things used in this project

Hardware components

DFRobot FireBeetle 2 ESP32-E
×1
DFRobot Fermion: 2.0" 320x240 IPS TFT LCD
×1
DFRobot GDL Line 10 CM
×1
DFRobot Gravity: IO Shield for FireBeetle 2
×1
Elecrow Mini MP3 Player
×1
Resistor 1k ohm
Resistor 1k ohm
×1
Speaker
×1
DFRobot Gravity: Analog Rotation Potentiometer
×1
DFRobot Gravity: Digital Push Button (Red)
×1
DFRobot Lithium Ion Battery - 1000mAh
×1
SparkFun Switch
×1
DFRobot USB 3.0 to Type-C Cable
×1

Software apps and online services

Arduino IDE
Arduino IDE

Story

Read more

Schematics

Fritzing

Code

DL2510Mk03p.ino

Arduino
/****** Don Luc Electronics © ******
Software Version Information
Project #16: Sound – ESP32 – Mk27
16-27
DL2509Mk03p.ino
DL2509Mk03
1 x DFRobot FireBeetle 2 ESP32-E
1 x Fermion: 2.0" 320x240 IPS TFT LCD
1 x GDL Line 10 CM
1 x Gravity: IO Shield for FireBeetle 2
1 x Mini MP3 Player
1 x 1K Ohm Resistor
1 x Gravity: Analog Rotation Potentiometer
1 x Gravity: Digital Push Button (Red)
1 x Speaker
1 x Lithium Ion Battery - 1000mAh
1 x Switch
1 x SPDT Slide Switch
1 x USB-A to Micro-B Cable
*/

// Include the Library Code
// EEPROM Library to Read and Write EEPROM
// with Unique ID for Unit
#include "EEPROM.h"
// Arduino
#include "Arduino.h"
// DFRobot Display GDL API
#include <DFRobot_GDL.h>
// DFRobot DFPlayer Mini
#include "DFRobotDFPlayerMini.h"

// FPSerial
#define FPSerial Serial1

// DFRobot DFPlayer Mini
DFRobotDFPlayerMini myDFPlayer;

// Button R
int iButR = D12;
int iValR;

// Volume Potentiometer
int iVolPot = A0;
int iValV;

// Defined ESP32
#define TFT_DC  D2
#define TFT_CS  D6
#define TFT_RST D3

/*dc=*/ /*cs=*/ /*rst=*/
// DFRobot Display 240x320
DFRobot_ST7789_240x320_HW_SPI screen(TFT_DC, TFT_CS, TFT_RST);

// EEPROM Unique ID Information
#define EEPROM_SIZE 64
String uid = "";

// Software Version Information
String sver = "16-27";

void loop() {
  
  // isMP3
  isMP3();

  // isDisplayMP3
  isDisplayMP3();

  // Delay
  delay( 200 );
  
}

getDisplay.ino

Arduino
// DFRobot Display 240x320
// DFRobot Display 240x320 - UID
void isDisplayUID(){

  // DFRobot Display 240x320
  // Text Display
  // Text Wrap
  screen.setTextWrap(false);
  // Rotation
  screen.setRotation(3);
  // Fill Screen => black
  screen.fillScreen(0x0000);
  // Text Color => white
  screen.setTextColor(0xffff);
  // Font => Free Sans Bold 12pt
  screen.setFont(&FreeSansBold12pt7b);
  // TextSize => 1.5
  screen.setTextSize(1.5);
  // Don Luc Electronics
  screen.setCursor(0, 30);
  screen.println("Don Luc Electronics");
  // SD
  screen.setCursor(0, 60);
  screen.println("GDFPlayer Mini");
  // Version
  screen.setCursor(0, 90);
  screen.println("Version");
  screen.setCursor(0, 120);
  screen.println( sver );
  // EEPROM
  screen.setCursor(0, 150);
  screen.println("EEPROM");
  screen.setCursor(0, 180);
  screen.println( uid );

}
// isDisplayMP3
void isDisplayMP3(){

  // DFRobot Display 240x320
  // Text Display
  // Text Wrap
  screen.setTextWrap(false);
  // Rotation
  screen.setRotation(3);
  // Fill Screen => white
  screen.fillScreen(0xffff);
  // Text Color => blue
  screen.setTextColor(0x001F);
  // Font => Free Sans Bold 12pt
  screen.setFont(&FreeSansBold12pt7b);
  // TextSize => 1.5
  screen.setTextSize(1.5);
  // Geiger
  screen.setCursor(0, 30);
  screen.println("MP3");
  // 1.mp3 - William Shakespeare
  screen.setCursor(0, 60);
  screen.println("1.mp3 - William Shakespeare");
  // 2.mp3 - Albert Einstein
  screen.setCursor(0, 90);
  screen.println( "2.mp3 - Albert Einstein" );
  // 3.mp3 - Luc Paquin
  screen.setCursor(0, 120);
  screen.println( "3.mp3 - Luc Paquin" );
// 4.mp3 - Carl Sagan
  screen.setCursor(0, 150);
  screen.println( "4.mp3 - Carl Sagan" );
 // 5.mp3 - Dalek
  screen.setCursor(0, 180);
  screen.println( "5.mp3 - Dalek" );
  
}

getEEPROM.ino

Arduino
// EEPROM
// isUID EEPROM Unique ID
void isUID() {
  
  // Is Unit ID
  uid = "";
  for (int x = 0; x < 7; x++)
  {
    uid = uid + char(EEPROM.read(x));
  }

}

getMiniMP3.ino

Arduino
// Mini MP3
// isSetupMP3
void isSetupMP3(){

  // Mini MP3
  // isACK
  // doReset
  myDFPlayer.begin(FPSerial, true, true);

  // Set serial communictaion time out 500ms
  myDFPlayer.setTimeOut(500);
  
}
// isMP3
void isMP3(){
  
  // Volume Potentiometer
  iValV = analogRead(iVolPot);
  
  // Mapping function
  iValV = map(iValV, 0, 4095, 0, 30);

  // Set volume value. From 0 to 30
  myDFPlayer.volume( iValV );

  // iValR
  iValR = digitalRead(iButR);

  // Check high iButR is pressed down.
  if (iValR == HIGH) { 

    // Play next mp3
    myDFPlayer.next();

  }
  
}

setup.ino

Arduino
// Setup
void setup()
{
 
  // Delay
  delay( 100 );

  // EEPROM Size
  EEPROM.begin(EEPROM_SIZE);

  // EEPROM Unique ID
  isUID();

  // Delay
  delay( 100 );

  // FPSerial
  // rx
  // tx
  FPSerial.begin(9600, SERIAL_8N1, D7, D5);

  // Delay
  delay( 100 );

  // Button R
  pinMode(iButR, INPUT);

  // Delay
  delay(100);

  // isSetupMP3
  isSetupMP3();

  // Delay
  delay(100);
  
  // DFRobot Display 240x320
  screen.begin();

  // Delay
  delay(100);

  // DFRobot Display 240x320 - UID
  // Don Luc Electronics
  // Version
  // EEPROM
  isDisplayUID();

  // Delay 5 Second
  delay( 5000 );

  

}

Credits

Luc Paquin
46 projects • 4 followers
Teacher, Instructor, E-Mentor, R&D and Consulting -Programming Language -Microcontrollers -IoT -Robotics -Machine Learning -AI -Sensors

Comments