Pengukur Tinggi Badan dengan Sensor Ultrasonik dan Suara  Menggunakan Mikrokontroler Arduino/ ATMega328

Holaa,,, selamat datang di web ane yang super cupu ini
Kemarin ane dapet orderan dari temen ada yang minta bikinin alat pengukur tinggi badan pake arduino katanya, dan outputnya ada suara juga yang bunyi suaranya itu tinggi badan yang diukur.
Oke, ane ambil tawarannya..
Langsung deh ane list komponen apa aja yang dibutuhkan untuk merakit keseluruhan dari alat ini. Sebetulnya sih simpel, berikut udah ane siapin listnya dibawah ini.
List Kebutuhan :
  • Niat
  • Duit
  • Mikrokontroler Arduino (bebas. disini ane pake yang UNO)
  • Sensor Ultrasonik/ PING HC-SR04
  • Modul Suara DFPlayer
  • LCD 16x2 plus modul I2C
  • Mini Speaker 0.5W
  • SD Card min. 1GB/2GB
  • ProtoBoard
  • Kabel Jumper min.20 (male-male 10, male-female 10)
  • Adaptor 5V
  • Dah, itu aja.

Disini ane gabakal ngejelasin secara detail definisi dan cara kerja dari tiap-tiap komponen yang akan kita pakai nantinya, karena akan memakan waktu juga. Jadi ane asumsikan kalian udah cukup paham ya.
1. Mikrokontroler Arduino : fungsinya sebagai otak pemroses data.
2. Sensor HC-SR04 :  sensor ini yang akan mengukur jarak/ tinggi badan kita.
3. Modul DFPlayer : modul ini dapat memainkan file berekstensi *.mp3 dan *.wav. jadi ga perlu susah-susah konversi ke *.AD4 seperti pada penggunaan modul WTV020m01 (diawal pengerjaan sempet pake ini, tapi frustasi karena suaranya ga keluar2. T_T )
4. LCD 16x2 + I2C : nanti di layar LCD nya muncul teks berupa Tinggi badan kita.
5. SD Card yang kita pakai usahakan diformat dulu menjadi FAT16 / FAT32. Karena tidak semua format FS disupport.
Sekarang, kita langsung ke tahap perancangan skematik/ mapping pin komponen yang terhubung.

Gambar skematik alat yang akan dirakit

Untuk rincian pin-pinnya, ane jelasin per komponen:
1. Sensor PING
                Power yang diperlukan sensor ultrasonik adalah 5V DC, dapat dihubungkan langsung ke pin Vcc 5v yang disediakan arduino. Jangan lupa juga jalur GND, karena sensor pasti tidak akan berfungsi apabila tidak mendapat tegangan referensi dari Vcc sensor.
Untuk jalur data, pin Trigger (pemicu/pemancar gelombang ultrasonik) dihubungkan ke pin Digital 3 (D3), ping Echo (menyerap gelombang balik) ke pin Digital 4 (D4). Referensi mengenai bagaimana cara kerja sensor PING ini dapat kita baca pada artikel-artikel yang “bejibun” di internet.
2. LCD modul
                Modul lcd yang digunakan disini sudah dikombinasikan dengan modul I2C sehingga meminimalkan penggunaan pin menjadi 2 pin saja, yakni pin Serial Data (SDA) ke pin Analog 4 (A4) dan Serial Clock (SCL) ke pin analog 5(A5) yang memang mode transfer data tersebut hanya disediakan pada 2 pin analog ini. Suplai tegangan yang diperlukan adalah kisaran 3.3 – 5V.
3. Modul Mp3 DFPlayer
                Untuk bertukar data dengan arduino, modul ini melakukan komunikasi serial dengan mikrokontroler ( Transmit – Receive ). Oke , disini kita tidak akan menggunakan fungsi Hardware Serial pada arduino, melainkan memanfaatkan ketersediaan pin yang ada sebagai penggantinya dengan menambahkan library “SoftwareSerial.h”.
Kemudian hubungkan pin Tx DFPlayer (pin 3) ke pin Digital 5(D5, sebagai receiver) dan pin Rx DFPlayer (pin 2) ke pin Digital 6 (D6, sebagai Transmitter). Lalu berikan suplai tegangan sebesar 5V DC.
3a. Penyimpanan file Mp3
                File mp3 yang akan kita gunakan disimpan didalam folder di SD card. Berikut ini gambaran isi dari sd cardnya.


NOTE : PENAMAAN FILE HARUS DENGAN ANGKA BERURUT SESUAI PRIORITAS. KARENA DFPLAYER HANYA MENGENAL FILE MP3 SESUAI DENGAN URUTAN ANGKA TERKECIL – TERBESAR.
Jadi usahakan berikan penomoran file sesuai prioritas.

Disini kita bagi menjadi 3 Folder. Penamaan folder harus format angka 01 – 99 dan berurutan.
Folder 01 : Berisi file mp3 dengan urutan nama 001.mp3 – 004.mp3. Suara dari 4 file disini adalah suara pengarahan/petunjuk kepada pengguna nantinya. Mulai dari suara pembuka, petunjuk tinggi maksimal, peringatan ketinggian dan kurang tinggi. Bisa ditambah jika mau.



Folder 02 : Isinya adalah file-file suara yang akan mengatakan ketinggian badan kita saat pengukuran. Kita dapat memberikan nama file sesuai keinginan kita, hanya saja saran ane adalah berikan awalan dengan “angka  urutan terakhir” setelah urutan pada jumlah file pertama di folder 01. Tujuannya adalah supaya kita mudah mengingat kesesuaian urutan file dengan bunyi suara.


Kemudian disini ane menyiapkan 1 folder bernama “Tambahan” bukan folder urutan “03”, hal ini sengaja karena ane ga akan memanggil file di dalam folder ini. Isinya adalah range Tinggi badan yang sudah kita buat sebagai cadangan.


 Udah jelas kan semua? Kita lanjut ke pemrogramannya.
Pertama, masukan library yang diperlukan.

#include <Wire.h>
#include <NewPing.h>
#include <LiquidCrystal_I2C.h>
#include <SoftwareSerial.h>
#include "DFRobotDFPlayerMini.h"

DFRobotDFPlayerMini myDFPlayer;
// tetapkan pin komunikasi soft serial untuk modul DFPlayer
SoftwareSerial mySoftwareSerial(5,6); // RX, TX
LiquidCrystal_I2C lcd(0x3F,16,2);
// set pin untuk sensor PING
const int pingPin = 3;
const int echoPin = 4;
NewPing sonar(3,4, 500);
int val2, tinggi, val =0;
int alert1, alert2;
int mp3list[20]={5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24};
int rangeTinggi[20]={ 141,142,143,144,145,
                      146,147,148,149,150,
                      151,152,153,154,155,
                      156,157,158,159,160};
void setup() {
  lcd.begin();
  Serial.begin(9600);   mySoftwareSerial.begin(9600);
  pinMode(echoPin, INPUT);

   if (!myDFPlayer.begin(mySoftwareSerial)) {  //Use softwareSerial to communicate with mp3.
    Serial.println(F("Unable to begin. Please recheck the connection / insert the SD card!"));
    while(true){
      delay(0); // Code to compatible with ESP8266 watch dog.
    }
  }
  Serial.println(F("DFPlayer Mini online."));
  myDFPlayer.volume(25);  //Set volume value. From 0 to 30

 Serial.println(" Kalibrasi batas tinggi selama 2 detik ");
 ////////////////////////////////////////////////////
 unsigned int uS = sonar.ping();
  plus();
  val2 = uS/ US_ROUNDTRIP_CM ;
 Serial.print("Tinggi maks :");
 Serial.print(val2);
 Serial.println(" cm");

 myDFPlayer.play(2);
 lcd.setCursor(0,0);
 lcd.print("Tinggi maks :");
 lcd.setCursor(0,1);
 lcd.print(val2); lcd.setCursor(7,1); lcd.print("CM");
 delay(2000);
 lcd.clear();
 //////////////////////////////////////////////////////
 
  myDFPlayer.play(1); 
  delay(3000);
}

void loop() {
  /////////////////// MENGUKUR TINGGI BADAN REALTIME ///////////////
 unsigned int uS = sonar.ping();
 tinggi = val2 - uS / US_ROUNDTRIP_CM;
 Serial.print("Tinggi Anda: ");
 Serial.print(tinggi);
 Serial.println(" cm");

 lcd.clear();
 lcd.setCursor(0,0);
 lcd.print("Tinggi anda :");
 lcd.setCursor(0,1);
 lcd.print(tinggi); lcd.setCursor(7,1); lcd.print("CM");

 int a;
 while(a < 20){
  if(tinggi == rangeTinggi[a]){
    Serial.print("PlayVoice : ");
    Serial.println(a);
   
    myDFPlayer.play(mp3list[a]);
    delay(5000);
    alert1=1; alert2=1;
  }
    a++;
 }

  if(tinggi > rangeTinggi[19]){ 
    if(alert1 == 1){    
      Serial.println("Anda Ketinggian");
      myDFPlayer.play(4); //ketinggian
      delay(2000);
      alert1++;
    }
  }
  else if(tinggi < rangeTinggi[0]){
    if(alert2 == 1){     
      Serial.println("Anda Kurang tinggi");
      myDFPlayer.play(3); //kurang tinggi
      delay(2500);
      alert2++;
    }
  }
  delay(1000);
}

void plus(){
val = val + 1;

}

NOTE : Pengelompokkan file suara disimpan di dalam Array “mp3list[]”. Contoh :
                Misalkan, kita dapatkan Variabel “a” dengan nilai “2”.

myDFPlayer.play(mp3list[a]);

1. Karena angka “2” yang didapat, berarti program berhasil mendapatkan tinggi aktual yang diukur sesuai dengan range yang kita buat pada Variabel Array “rangeTinggi[20]”, yakni angka “143”.
2. Angka “2” merujuk pada urutan Array “mp3list[20]”. Berarti angka yang dipanggil adalah angka “7”, betul kan?
3. Nah, dengan angka “7” ini adalah format urutan file yang disimpan di dalam SD Card dengan posisi ke-7 dari file pertama, yaitu file “143.mp3”.




Yaps, selesai penjelasannya. Untuk program lebih lengkapnya silahkan download pada link dibawah.

Cari Blog Ini