Membuat Alarm Elektronik Menggunakan Arduino dengan Sensor Ultrasonik dan MP3 Module

sheli indriani 19 Juli 2019

Membuat Alarm Elektronik Menggunakan Arduino  dengan Sensor Ultrasonik dan MP3 Module

Lihat video rangkaian jadinya di https://www.youtube.com/watch?v=2jHmjzTkjak

Embedded system (sistem tertanam) adalah sebuah sistem dan aplikasi yang mempunyai central processing unit (CPU) yang dapat diprogram, biasanya dalam bentuk microcontroller ataupun microprocessor. Sistem ini dapat pula didefinisikan sebagai sistem berukuran relatif kecil dan berbasis komputer yang dikemas dalam bentuk chip. Sistem inilah yang berperan layaknya komputer yang memberikan kemudahan dalam pengoperasian serta meningkatkan fungsi dinamis dan otomatis sistem.

Embedded system digunakan sebagai komponen inti dari komponen lain dan tertanam dari beberapa komponen atau peralatan yang lebih besar. Embedded system dirancang untuk suatu pekerjaan yang dapat dikerjakan secara otomatis, terutama sebagai suatu sistem pengontrol. Dengan adanya embedded system, suatu sistem dapat di kerjakan lebih baik, bekerja secara otomatis dan berukuran relatif kecil. Umumnya dengan embedded system ini diharap kita dapat membuat suatu sistem yang bersifat stand alone (bekerja sendiri tanpa harus tergantung dengan komputer).

Beberapa komponen yang diterapkan dalam pembuatan alarm :

1. Kabel jumper

Kabel jumper adalah salah satu alat pendukung untuk membuat rangkaian elektronika pada saat teman-teman menggunakan papan breadboard.

Dalam merancang rangkaian elektronika tentu saja kabel jumper ini sangat dibutuhkan. Fungsinya untuk menghubungkan antartik pada papan pcb single slide dan juga dapat digunakan untuk menghubungkan jalur rangkaian yang terputus dengan cara men-jumper-nya.

Image
Image

Harga : Rp. 1.000,- / Pcs

2. Papan Breadboard

Papan breadboard adalah sebuah sirkuit elektronika yang merupakan bagian prototipe dari rangkaian yang belum disolder sehingga masih dapat dirubah skema ataupun pergantian komponen.

Kali ini penulis menggunakan papan breadboard untuk memasang rangkaian elektronika apa saja yang akan saling terhubung dengan menggunakan kabel jumper sebagai media penghubung antara rangkaian elektronika satu dengan yang lainnya.

Image

Harga : Rp. 17.000,-

3. Resistor

Resistor merupakan salah satu komponen yang paling sering ditemukan dalam rangkaian elektronika. Hampir setiap peralatan elektronika menggunakannya. Pada dasarnya resistor adalah komponen elektronika pasif yang memiliki nilai resistansi atau hambatan tertentu yang berfungsi untuk membatasi dan mengatur arus listrik dalam suatu rangkaian elektronika.

Image

Harga : Rp. 1.500,- / Pcs

4. Arduino Uno/Mega

Arduino adalah pengendali mikro single-board yang bersifat terbuka, dirancang untuk memudahkan penggunaan elektronik dalam berbagai bidang.

Mikcokontroller diprogram menggunakan bahasa pemrograman arduino yang memiliki kemiripan syntax dengan menggunakan bahasa pemrograman C. Karena sifatnya sangat terbuka maka siapa saja dapat mengunduh skema hardware arduino dan menggunakannya.

Image

Harga : 126.000,-

5. Mp3 Module / DFPlayer Mini

Mp3 Module atau DFPlayer Mini merupakan module pemutar file audio / module sound player music dengan support format audio seperti file .mp3 yang sudah umum dikenal oleh khalayak umum. Bentuk fisik dari DFPlayer mini ini berbentuk persegi dengan ukuran 20 x 20 mm yang dimana memiliki 16 kaki pin. Output pada module mp3 mini ini dapat langsung dihubungkan dengan speaker mini ataupun amplifier sebagai pengeras suaranya. Teman-teman bisa mengunduh library-nya melalui link di bawah ini :

Unduh DFMiniMp3

Image

Harga : Rp. 30.000,-

6. RTC DS3231

RTC adalah kepanjangan dari Real Time Clock merupakan suatu chip yang bisa menyimpan waktu,waktu itu dapat berupa detik, menit, tanggal, bulan dan tahun. Misalnya kalau kita perhatikan komputer,saat di matikan dan saat nyalakn kembali waktunya tetap sesuai,karena RTC masih menyimpan data waktunya dan saat komputer di matikan RTC masih bekerja.Agar tetap dapat bekerja, sebuah RTC dilengkapi dengan baterai CMOS.

Image

Harga : Rp. 25.000,-

7. Speaker

Perangkat Keras yang berupa speaker merupakan piranti dengan kedudukannya hampir tidak bisa dipisahkan lagi dengan komputer. Karena itu, speaker memiliki peran yang sangat penting dalam mengeluarkan hasil pemrosesan berupa suara. Tentunya, kebanyakan pengguna komputer menyukai musik atau video sehingga membutuhkan speaker untuk mendukung keinginan pengguna. Speaker komputer dapat berfungsi sebagaimana mestinya apabila didukung perangkat keras bernamakan sound card atau pemroses audio/suara.

Penulis menggunakan speaker sebagai output berupa suara yang di simpan pada mp3 module / DFPlayer Mini. Ketika alarm telah disetting maka suara akan keluar melalui speaker.

Image

Harga : Rp. 15.000,- sampai Rp. 20.000,-

8. LCD (Liquid Crystal Display)

LCD (Liquid Crystal Display) ini adalah suatu jenis media tampilan yang menggunakan kristal cair sebagai penampil utama. LCD sudah digunakan di berbagai bidang, misalnya dalam alat-alat elektronik, seperti televisi, kalkulator ataupun layar komputer.

Disini penulis menggunakan LCD untuk mengatur waktu yang akan terus berjalan ketika alarm sudah aktif.

Image

Harga : Rp. 40.000,-

9. Kabel USB

Kabel USB ini digunakan sebagai alat untuk memasukkan perintah / input, program yang akan dijalankan di atur menggunakan aplikasi bawaan arduino sendiri unduh di sini

Image

Harga : Rp. 12.000,-

Setelah teman-teman mengetahui semua alat elektronika yang digunakan berupa penjelasannya. Silahkan teman-teman merangkai semua alat tersebut sesuai yang tertera pada gambar 1.1 dan gambar 1.2 diatas.

Kemudian penulis akan sedikit menjelaskan keterkaitan antara beberapa komponen elektronika ini.

Rangkaian elektronika yang perlu teman-teman perhatikan betul :

Image

​ Gambar 1.1 Rangkaian 1

Teman-teman bisa mulai merancang rangkaian pada Gambar 1.1 Rangkaian 1.

Rangkaian ini cukup mudah, teman-teman hanya perlu menggabungkan atau menyatukan Arduino dan LCD hingga pin antara keduanya terhubung.

LCD ini berfungsi untuk mengeluarkan output berupa teks, disini penulis menggunakan LCD sebagai output waktu yang akan diatur sesuai alarmnya.

Image

​ Gambar 1.2 Rangkaian 2

Disini terdapat arduino sebagai pengontrol, controller (input). Kemudian ada Mp3 Module sebagai media penampung (penyimpan suara), yang kemudian ada speaker sebagai output dari Mp3 Module yang telah diprogram melalui Arduino dan terakhir ada dua buah resistor yang memiliki nilai resistansi atau hambatan tertentu yang berfungsi untuk membatasi dan mengatur arus listrik dalam suatu rangkaian Elektronika.

Image

​ Gambar 1.3 Rangkaian 3

Setelah teman-teman selesai mengikuti rangkaian pada Gambar Rangkaian 1.1 dan Gambar Rangkaian 1.2, terakhir teman-teman ikuti rangkaian pada Gambar Rangkaian 1.3.

Silahkan hubungkan kembali RTC DS3231 pada arduino menggunakan kabel fleksibel.

Teman-teman perlu berhati-hati ketika mulai memasang beberapa komponen tersebut. Jangan sampai tertukar, ikuti seperti yang penulis buat jangan sampai tertukar karena akibatnya akan fatal, bisa jadi rangkaian yang di buat akan rusak atau tidak bisa dijalankan apabila keliru dalam penerapannya.

Setelah itu teman-teman bisa memasukkan programnya menggunakan aplikasi arduino yang sudah di unduh.

/* LiquidCrystal Library - Hello World Demonstrates the use a 16x2 LCD display. The LiquidCrystal library works with all LCD displays that are compatible with the Hitachi HD44780 driver. There are many of them out there, and you can usually tell them by the 16-pin interface. This sketch prints "Hello World!" to the LCD and shows the time. The circuit: LCD RS pin to digital pin 12 LCD Enable pin to digital pin 11 LCD D4 pin to digital pin 5 LCD D5 pin to digital pin 4 LCD D6 pin to digital pin 3 LCD D7 pin to digital pin 2 LCD R/W pin to grounda LCD VSS pin to ground LCD VCC pin to 5V 10K resistor: ends to +5V and ground wiper to LCD VO pin (pin 3) Library originally added 18 Apr 2008 by David A. Mellis library modified 5 Jul 2009 by Limor Fried (http://www.ladyada.net) example added 9 Jul 2009 by Tom Igoe modified 22 Nov 2010 by Tom Igoe modified 7 Nov 2016 by Arturo Guadalupi This example code is in the public domain. http://www.arduino.cc/en/Tutorial/LiquidCrystalHelloWorld */ // include the library code: #include <LiquidCrystal.h> //LCD module #include <Wire.h> //RTC #include "RTClib.h" RTC_Millis rtc; #include <SoftwareSerial.h> //DF #include <DFMiniMp3.h> //====================LCD==============================// const int rs = 8, en = 9, d4 = 4, d5 = 5, d6 = 6, d7 = 7; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); //====================DF============================// class Mp3Notify { public: static void OnError(uint16_t errorCode) { // see DfMp3_Error for code meaning Serial.println(); Serial.print("Com Error "); Serial.println(errorCode); } static void OnPlayFinished(uint16_t globalTrack) { Serial.println(); Serial.print("Play finished for #"); Serial.println(globalTrack); } static void OnCardOnline(uint16_t code) { Serial.println(); Serial.print("Card online "); Serial.println(code); } static void OnCardInserted(uint16_t code) { Serial.println(); Serial.print("Card inserted "); Serial.println(code); } static void OnCardRemoved(uint16_t code) { Serial.println(); Serial.print("Card removed "); Serial.println(code); } }; // instance a DFMiniMp3 object, // defined with the above notification class and the hardware serial class // DFMiniMp3<HardwareSerial, Mp3Notify> mp3(Serial); int alarm_jam = 0; int alarm_menit = 0; int alarm_detik = 0; void setup() { pinMode(2, OUTPUT); //menentukan output atau input pada pin digital //==================LCD==============================// lcd.begin(16, 2); //menentukan jenis lcd //=====================RTC=====================// Serial.begin(9600); //menampilkan di baudrate rtc.begin(DateTime(__DATE__, __TIME__)); //=======================DF=======================// Serial.println("initializing..."); mp3.begin(); uint16_t volume = mp3.getVolume(); Serial.print("volume "); Serial.println(volume); uint16_t count = mp3.getTotalTrackCount(); Serial.print("files "); Serial.println(count); Serial.println("starting..."); } void waitMilliseconds(uint16_t msWait) { uint32_t start = millis(); while ((millis() - start) < msWait) { // calling mp3.loop() periodically allows for notifications // to be handled without interrupts mp3.loop(); delay(1); } } void loop() { // if (analogRead (A0) == 721) // { // lcd.setCursor(12, 0); // lcd.print(analogRead(A0)); // digitalWrite(2, LOW); // } // else { // digitalWrite(2, HIGH); // lcd.setCursor(12, 0); // lcd.print(analogRead(A0)); // } DateTime now = rtc.now(); // calculate a date which is 7 days and 30 seconds into the future DateTime future (now.unixtime() + 0 * 86400L + 60); lcd.setCursor(0, 0); //menentukan munculnya huruf pertama kolom 0 baris 0 lcd.print(future.hour()); lcd.print(':'); lcd.print(future.minute()); lcd.print(':'); lcd.print(future.second()); //========================LCD=====================// lcd.setCursor(0, 1); //menentukan munculnya huruf pertama kolom 0 baris 1 lcd.print(future.day(), DEC); lcd.print('/'); lcd.print(future.month(), DEC); lcd.print('/'); lcd.print(future.year(), DEC); lcd.print(' '); alarm_jam = (future.hour()); alarm_menit = (future.minute()); alarm_detik = (future.second()); //--------------------------Setting alarm 1-------------------// if (alarm_jam == 21) { if (alarm_menit == 55) { if (alarm_detik == 50) { mp3.playMp3FolderTrack(4); // sd:/mp3/0001.mp3 set_alarm(); } } } //--------------------------setting alarm 2----------// if (alarm_jam == 21) { if (alarm_menit == 25) { if (alarm_detik == 05) { mp3.playMp3FolderTrack(5); // sd:/mp3/0001.mp3 set_alarm(); } } } //----------------------------setting alarm 3---------// if (alarm_jam == 20) { if (alarm_menit == 53) { if (alarm_detik == 35) { mp3.playMp3FolderTrack(6); // sd:/mp3/0001.mp3 set_alarm(); } } } //------------------------setting alarm 4---------------// if (alarm_jam == 20) { if (alarm_menit == 53) { if (alarm_detik == 45) { mp3.playMp3FolderTrack(7); // sd:/mp3/0001.mp3 set_alarm(); } } } delay(1000); lcd.clear(); } void set_alarm() { //for(int i=0;i<60;i++){ mp3.setVolume(500); lcd.setCursor(0, 0); lcd.print("Alarm 1 "); waitMilliseconds(1000); //} //serial.println(); //menampilkan di baudrate (enter) } void printDigits(int digits) { // utility function for digital clock display: prints preceding colon and leading 0 lcd.print(":"); if (digits < 10) lcd.print('0'); lcd.print(digits); } /* code to process time sync messages from the serial port */ #define TIME_HEADER "T" // Header tag for serial time sync message unsigned long processSyncMessage() { unsigned long pctime = 0L; const unsigned long DEFAULT_TIME = 1357041600; // Jan 1 2013 if (Serial.find(TIME_HEADER)) { pctime = Serial.parseInt(); return pctime; if ( pctime < DEFAULT_TIME) { // check the value is a valid time (greater than Jan 1 2013) pctime = 0L; // return 0 to indicate that the time is not valid } } return pctime; }

Selamat mencoba.


Referensi:

RTC

DFPlayer Mini

RTC DS3231