11. Proyek Audio dengan Microcontroller Arduino

11. PROYEK AUDIO DENGAN MICROCONTROLLER ARDUINO

Teknologi saat ini telah mampu mengkombinasikan audio digital player (Audio DAC — Digital To Analog Converter) dengan Arduino. Contoh penerapannya adalah sebagai pemutar audio di ruang publik yang diaktifkan oleh sensor. Konsep kerjanya tampak seperti pada Gambar 11.1.

Contoh aplikasi Arduino dengan modul audio antara lain:

  • Sebagai pemutar audio yang aktifasinya dipicu oleh sensor, contoh: sirine peringatan gempa bumi dan tsunami, sirine palang pintu kereta api, sirine peringatan kebakaran dan kebocoran gas dan lain sebagainya.
  • Sebagai aplikasi bel sekolah (pemutar rekaman audio) otomatis aktif saat pergantian jam pelajaran. Dimana pemilihan file audio telah dijadwal berdasarkan waktu sesuai program.

Terdapat beberapa modul Audio DAC yang sering digunakan pada Arduino, misalnya modul DFPlayer atau module WTV020SD16P seperti tampak pada Gambar 11.2 dan Gambar 11.3.Module tersebut bertugas mengkonversi file digital audio berformat MP3/WAV menjadi audio analog.

Daya modul audio DAC umumnya tergolong kecil untuk area publik, sehingga perlu diperkuat dengan modul audio amplifier tambahan, seperti tampak pada Gambar 11.4 (daya rendah) dan Gambar 11.5 (daya besar). Sesuaikan besaran daya audio amplifier yang dibutuhkan karena banyak pilihan yang bisa digunakan.

11.1 Pemutar Lagu MP3 Dengan Module DFPlayer

Percobaan kali ini cukup mudah yaitu memutar file audio dengan module DFPlayer tanpa amplifier tambahan sebagai penguat signal audio. Kontrol audio (play, pause, next, prev, volume) dapat dilakukan dengan dua cara, pertama menggunakan saklar push button yang tidak membutuhkan arduino (tidak dijelaskan di sini), kedua kontrol audio menggunakan arduino dengan perintah serial. Untuk lebih jelas mengenai modul DFPlayer, silahkan baca halaman website berikut https://www.dfrobot.com/wiki/index.php/DFPlayerMini_SKU:DFR0299 dan https://www.dfrobot.com/blog-277.html.

Berikut hal-hal penting yang perlu diperhatikan:

  • Usahakan kapasitas memori microSD kurang dari 8GB. Kapasitas memori yang terlalu besar akan menyebabkan file tidak terbaca oleh modul DFPiayer. Format memori microSD dengan tipe FAT atau FAT32.
  • Sebaiknya penamaan file audio .MP3/.WAV yang disimpan ke dalam microSD menggunakan angka dengan lebar 4 digit, misalnya “0001.mp3’% “0002.mp3”, “0012.mp3” dan seterusnya. Tujuannya untuk mengurangi waktu proses pencarian nama file audio oleh DFPlayer, jika terlalu waktu yang dibutuhkan maka proses akan dibatalkan.
  • Buat folder baru bernama “mp3” ke dalam memori microSD, kemudian letakkan semua file audio/ file lagu ke dalam folder tersebut.
  • Kebutuhan Bahan
Bahan Jumlah Nilai Keterangan
Modul DFPlayer 1 pcs
Memory MicroSD

Kapasitas < 8GB, Format FAT/FAT32.

1 pcs < 8GB
Resistor % watt 2 pcs 1K ohm
Speaker

Diagram Sketch

Pada program dibutuhkan library DFRobotDFPlayerMini.h yang dapat di-download di https://github.com/DFRobot/DFRobotDFPlayerMini, kemudian instal file tersebut melalui menu Sketch*lnclude Library#Add .zip Library atau diinstal secara online melalui menu Tools4Managed libraries dengan kata kunci”dfplayer”, kumudian pilih dan instal “DFRobotDFPlayerMini by DFRobot”.

Kode Program

#include “SoftwareSerial.h”

#include “DFRobotDFPlayerMini.h”

SoftwareSerial mySoftwareSerial(7, 6); // RX,TX DFRobotDFP1ayerMini myDFPlayer;

void setup()

{

mySoftwareSerial.begin(9600);

Serial.begin(9600);

Serial.print1n();

Serial.println(“Initializing DFPlayer…”);

if (!myDFPlayer.begin(mySoftwareSerial)) {

Serial.print1n(“Unable to begin:”);

Serial.print1n(“1. Cek ulang koneksi!”);

Serial.print1n(“2. Masukkan microSD!”);

while(true);

}

Serial.println(“DFPlayer Mini aktif.”);

myDFPlayer.volume(10); //Set volume antara 0 sampai 30

myDFPlayer.play(1); //Play file mp3 pertama

}

void loop()

{

static unsigned long timer = millis();

if (millis() – timer > 3000) {

timer = millis();

myDFPlayer.next(); //Play next mp3 setiap 3 detik.

}

if (myDFPlayer.available()) {

//print pesan status dan error.

printDetail(myDFPlayer.readType(), myDFPlayer.read());

}

}

void printDetail(uint8_t type, int value){

switch(type){

case TimeOut:

Serial.println(“Time Out!”);

break;

case WrongStack:

Serial.println(“Stack Wrong!”);

break;

case DFPlayerCardInserted:

Serial.print1n(“Card Inserted!”);

break;

case DFP1ayerCardRemoved:

Serial.println(“Card Removed!”);

break;

case DFPlayerCardonline:

Serial.println(“Card Online!”);

break;

case DFPlayerPlayFinished:

Serial.print(“Number:”);

Serial.print(value);

Serial,println(“ Play Finished!”);

break;

case DFPlayerError:

Serjal.print(“DFPlayerError;”);

switch(value) {

case Busy:

Serial.print1n(“Card not found”);

break;

case Sleeping:

Serial.println(“Sleeping”);

break;

case SerialwrongStack:

Serial.println(“Get Wrong Stack”);

break;

case CheckSumNotMatch:

Serial.println(“Check Sum Not Match”); break;

case FileIndexOut:

Serial.println(“File Index Out of Bound”); break;

case FileMismatch:

Serial.println(“Cannot Find File”);

break;

case Advertise:

Serial.println(“In Advertise”);

break;

default:

break;

}

break;

default:

break;

}

}

11.2 Aktifasi Pemutar Audio Dengan Pemicu Sensor Gas & Ultrasonic

Proyek ini merupakan pengembangan proyek sebelumnya, namun aktifasi pemutaran file audio dipicu oleh sensor gas MQ-02 dan sensor ultrasonic HCSR04. Jika sensor gas MQ-2 mendeteksi kadar gas telah mencapai nilai ambang tertentu atau ketika sensor ultrasonic mendeteksi adanya penghalang pada jarak tertenetu maka modul DFPlayer akan memutar file audio yang sudah ditentukan.

Jika jarak penghalang antara sensor ultrasonic dengan benda penghalangnya kurang dari atau sama dengan 50cm maka DFPlayer akan memainkan file audio berindeks 1 dan ketika sensor gas MQ-2 mendeteksi kadar gas melebihi atau sama dengan 30% maka DFPlayer akan memainkan file audio berindeks 2. Nilai jarak dan nilai kadar gas akan ditampilkan pada layar LCD 12C saat mencapai ambang saja.

Kebutuhan Bahan

Diagram Sketch

Kode Program

#include “SoftwareSerial.h”

#include “DFRobotDFPlayerMini,h”

#include <LiquidCrystal_I2C.h>

#define pinAnalog A0 //pin ultrasonic

#define pinTrigger 9 // pin trigger HC-SR04

#define pinEcho 8 // pin echo HC-SR04

SoftwareSerial mySoftwareSerial(7, 6); // RX, TX

DFRobotDFPlayerMini myDFPlayer;

LiquidCrystal_I2C lcd(0x27, 16,2);

long duration;

int distanceCm;

// Pembangkitan custom character, kunjungi https://maxpromer.github.io/ LCD-Character-Creator/

byte kotak[] = {B11111, B11111, B11111, B11111, B11111, B11111, B11111, B11111};

void setup()

{

mySoftwareSerial.begin(9600);

Serial.begin(9600);

pinMode(pinAnalog, INPUT);

lcd.init(); // Inisialisasi LCD

lcd.backlight(); // Menghidupkan backlight

lcd.setCursor(0,0);

lcd.print(“Menghitung Jarak”);

lcd.setCursor(0,1);

Icd.print(“Dengan Ultrasonic“);

pinMode(pinTrigger, oUTPUT); // set pin trigger sebagai output

pinMode(pinEcho, INPUT); // set pin echo sebagai input

Serial.println();

Serial.println(“Initializing DFPlayer…”);

if(!myDFPlayer.begin(mySoftwareSerial)){

Serial.println(“Unable to begin:”);

Serial.println(“1. Cek ulang koneksi!”);

Serial.println(“2. Masukkan microSD!”);

while(true);

Serial.println(“DFPlayer Mini aktif.”);

}

void loop()

{

//*******************

// Menghitung jarak

//*******************

// Membersihkan pin pinTrigger selama 2 microdetik

digitalwrite(pinTrigger, LOW);

delayMicroseconds(2);

// Set pinTrigger menjadi HIGH selama 10 microdetik

digitalwrite(pinTrigger, HIGH);

delayMicroseconds(10);

digitalwrite(pinTrigger, LOW);

// Membaca pinEcho, mengembalikan waktu perjalanan gelombang suara dalam mikrodetik

duration = pulseIn(pinEcho, HIGH);

distanceCm = duration * 0.034 / 2; // Jarak dalam CM

//**************

// Deteksi Gas

//**************

unsigned int nilaiPembacaanSensor = analogRead(pinAnalog);

//mapping 1023 (kering) ke 0 dan 0 (level kebasahan) ke 100 persen byte persen = map(nilaiPembacaanSensor, 0, 1023, 0, 100);

//mapping 0-100% ke jumlah karakter 1-16

byte progressBar = map(persen, 0, 100, 1, 16);

//*********

// Play Audio

//*********

//tampilkan jarak kurang dari 50cm

if (distanceCm <=50) {

myDFPlayer.volume(20); //Set volume antara 0 sampai 30

myDFPlayer.play(1); //Play file mp3 pertama

lcd.clear();

lcd.setCursor(0, 0);

lcd.prínt(“Jarak: “ + String(distanceCm) +“ c㎡”);

} else if (persen>=30){

myDFPlayer.volume(20); //Set volume antara 0 sampai 30

myDFPlayer.play(2); //Play fle mp3 pertama

lcd.clear();

lcd.setCursor(0,0);

lcd.print(“Polusi Level:”+ String(persen)+“%”);

for (byte i = 0; i < progressBar-1;i++)

}

//cetak custom character kotak

lcd.setCursor(1,1);

lcd.write(0);

}

} else {

// berhenti jika jarak lebih dari 50cm

myDFPlayer.stop();

}

delay(1000);

}

Tinggalkan Komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

This site uses Akismet to reduce spam. Learn how your comment data is processed.