• Tidak ada hasil yang ditemukan

Perancangan Datalogger Online Melalui Jaringan 3G Menggunakan Low Cost Mikrokontroler Arduino

N/A
N/A
Protected

Academic year: 2021

Membagikan "Perancangan Datalogger Online Melalui Jaringan 3G Menggunakan Low Cost Mikrokontroler Arduino"

Copied!
7
0
0

Teks penuh

(1)

ISBN: 978-602-70570-5-0

http://eproceeding.itp.ac.id/index.php/pimimd2017

© 2017 ITP Press. All rights reserved. DOI 10.21063/PIMIMD4.2017.274-280

Perancangan Datalogger Online Melalui Jaringan 3G

Menggunakan

Low Cost

Mikrokontroler Arduino

Agus Putu Abiyasa

1,

*, Yoga Divayana

2

1Program Studi Teknik Elektro, Fakultas Teknik dan Informatika, Universitas Pendidikan Nasional Jalan Bedugul No. 39, Denpasar-Bali, Indonesia

2Program Studi Teknik Elektro dan Komputer, Fakultas Teknik, Universitas Udayana Jalan Kampus Bukit Jimbaran, Badung-Bali, Indonesia

*Korespondensi dialamatkan melalui email abiyasa@undiknas.ac.id

Abstrak

Di dalam penelitian ini, instrumen elektronik untuk data akuisisi didesain menggunakan mikrokontroler Arduino. Sistem ini menggunakan jaringan seluler 3G untuk menyimpan data secara online melalui koneksi router dan modem USB. Dengan menggunakan komponen low cost dan open source, harga instrumen dapat dibuat menjadi relatif murah sehingga terjangkau untuk pengguna individu. Diperoleh hasil bahwa instrumen dapat mengirimkan data dari sensor ke server dengan baik. Data yang terekam di server kemudian dapat dimonitor lewat internet dengan membuat software interface untuk penggunanya.

Kata kunci: data akuisisi, datalogger, mikrokontroler.

1.

Pendahuluan

Dalam era informasi, pemakaian internet dalam kegiatan sehari-hari telah menjadi suatu keharusan. Dengan adanya teknologi informasi berbasis internet maka pengembangan sistem informasi yang terintegrasi dapat dilaksanakan. Sistem ini telah membuat pekerjaan manusia dapat diselesaikan dengan lebih efisien dari segi waktu dan biaya.

Tren perkembangan teknologi informasi ke depan bergerak untuk mengintegrasikan benda-benda yang terkoneksi satu dengan yang lain melalui internet atau dikenal dengan

Internet of Things (IoT) [1,2]. Komponen utama IoT adalah sensor-sensor elektronik yang dapat mengirimkan informasi secara otomatis. Hal ini telah digunakan dalam sistem otomatisasi industri menggunakan instrumen data akuisisi atau datalogger [3]. Implementasi dari IoT akan memperluas penggunaan data akuisisi bukan hanya di industri namun juga di level instrumen elektronik yang dipergunakan oleh masyarakat. Untuk itu, diperlukan instrumen datalogger online yang murah bagi masyarakat sehingga IoT dapat terealisasi.

Di dalam penelitian ini, kami menggunakan

low cost dan open source komponen dalam merancang datalogger online. Mikrokontroler Arduino Uno digunakan sebagai komponen utama kontroler. Ethernet Shield digunakan

sebagai modul tambahan untuk melakukan koneksi internet. Integrasi dengan router MR3020 dan modem USB memungkinkan koneksi internet menggunakan jaringan seluler 3G. Untuk mendapatkan informasi waktu, DS3231 dihubungkan ke Arduino Uno. Data dari analog sensor dengan nilai berkisar 0 – 5 Volt dapat dikoneksi ke analog pin dari Arduino Uno. Dengan teknik PUSH DATA untuk transmisi data menggunakan HTTP GET, data dapat disimpan secara online dalam

MySQL database. Untuk tampilan pengguna, tabulasi data dalam bentuk tabel HTML

ditampilkan lewat web browser yang dapat diakses secara online lewat internet. Datalogger dapat digunakan untuk membaca bermacam-macam jenis sensor sesuai aplikasi dan dapat diproduksi dalam negeri dengan harga terjangkau.

2.

Tinjauan Pustaka

A. Komponen Untuk Datalogger

Komponen elektronik datalogger online terdiri dari Arduino mikrokontroler, Ethernet Shield, router MR3020, modem USB, Real Time Clock DS3231 dengan harga terjangkau. Komponen utama low cost dan open source

adalah Arduino mikrokontroler yang tersedia dalam banyak model dengan spesifikasi teknis sesuai kebutuhan. Dalam penelitian ini, model Arduino Uno digunakan sebagai kontroler.

(2)

Tampilan mikrokontroler ini dapat dilihat dalam Gambar 1 berikut. Spesifikasi teknis mikrokontroler ini dapat dilihat di website

www.arduino.cc untuk lebih detail.

Gambar 1. Arduino Uno

Komponen Ethernet Shield adalah modul ekspansi yang dapat langsung dikoneksikan dengan Arduino mikrokontroler untuk memberikan kemampuan koneksi internet melalui kabel LAN. Tampilan dari Ethernet Shield dapat dilihat pada Gambar 2 berikut. Untuk mengintegrasikan Arduino Uno dengan

Ethernet Shield, perintah dari Arduino Uno dieksekusi menggunakan Ethernet Library

yang dapat di-download melalui laman

www.arduino.cc. Dengan Ethernet Shield, pengembangan aplikasi internet menggunakan Arduino dapat dilaksanakan.

Gambar 2. Ethernet Shield

Untuk koneksi seluler 3G, kita menggunakan komponen router MR3020 dan modem USB. Kedua komponen ini merupakan instrumen elektronik yang tersedia secara komersial untuk keperluan koneksi internet. Tampilan router MR3020 dan modem USB dapat dilihat dalam Gambar 3 berikut.

Gambar 3. (a) Router MR3020 dan (b) Modem USB

Untuk memberikan informasi waktu, chip real time clock RTC DS3231 dapat digunakan. Tampilan dari DS3121 dapat dilihat dalam Gambar 4 berikut. Untuk mengintegrasikan DS3231 dengan Arduino mikrokontroler, kita dapat men-download library yang akan membaca data dari chip ini. Pin utama dari chip ini terdiri dari Vcc, GND, SCL dan SDA. Penggunaan dari chip ini dapat dilihat dalam referensi [4].

Gambar 4. RTC DS3231

Disamping kebutuhan hardware berupa komponen elektronik, dalam perancangan datalogger juga memerlukan server yang akan menyimpan data secara online. Dalam penelitian ini, kami memanfaatkan free webhosting dengan alamat uno.coolpage.biz

yang mendukung platform WAMP. Dengan menggunakan platform WAMP, kita dapat menyimpan data secara online ke dalam

MySQL database dan mengolah data dengan menggunakan PHP.

B. Datalogger Komersial

Sebagai bahan perbandingan, datalogger komersial dijual dengan harga relatif mahal untuk penggunaan konsumen masyarakat. Sebagai contoh misalnya datalogger Versalog dari CAS yang memiliki kemampuan untuk menyimpan data secara online. Tampilan dari model datalogger Versalog dapat dilihat pada Gambar 5 berikut. Detail tentang datalogger Versalog dapat dilihat melalui website

www.dataloggerinc.com untuk melihat

spesifikasi teknisnya. Dari harga yang ditawarkan di website, datalogger komersial relatif mahal untuk penggunaan konsumen masyarakat biasa.

(3)

3.

Metode Penelitian

Penelitian dilaksanakan dalam 3 (tiga) tahapan kegiatan utama yang meliputi:

1) perancangan hardware, 2) perancangan firmware dan 3) perancangan software.

Pertama, perancangan hardware meliputi pembuatan diagram blok sistem dan pemilihan komponen. Adapun komponen – komponen yang akan dipergunakan adalah Arduino Uno,

Ethernet Shield, router MR3020, modem USB, RTC DS3231 dan Sensor Analog. Kedua, perancangan firmware adalah pemrograman mikrokontroler Arduino untuk dapat berfungsi sesuai dengan spesifikasi datalogger online. Dalam pemrograman firmware menggunakan

Arduino IDE dan memakai bahasa

pemrograman C. Ketiga, perancangan software meliputi kegiatan pemrograman untuk menyimpan data di WAMP server dan menampilkan data lewat web browser. Untuk pemrograman di server, dipergunakan PHP script dan MySQL query untuk database.

Untuk pemrograman tampilan data

menggunakan HTML dan PHP.

4.

Hasil dan Pembahasan

A.Rangkaian Hardware

Diagram kerja datalogger dapat dilihat pada Gambar 6 berikut. Masukan ke mikrokontroler terdiri dari informasi waktu dan nilai sensor analog yang diterima oleh Arduino Uno. DS3231 mengirimkan informasi waktu yang diterima oleh Arduino Uno melalui analog pin A4 dan A5. Untuk data dari sensor juga diterima melalui pin A0 – A3 Arduino Uno. Data dari sensor adalah tegangan berkisar dari 0 – 5 Volt. Setelah diproses dengan Arduino Uno, data dapat dikirim ke server melalui koneksi internet seluler 3G menggunakan

Ethernet Shield, router MR3020 dan modem USB.

Gambar 6. Diagram kerja datalogger untuk mengirimkan data ke server

B. Pemrograman Arduino Uno

Arduino Uno sebagai kontroler utama akan mengolah data masukan yang diterima dari DS3231 dan analog sensor. Dari DS3231, data yang diterima adalah waktu yang tersimpan di dalam chip. Untuk mengakses data waktu, pin SCL dan SDA pada DS3231 dihubungkan dengan pin A4 dan A5 di Arduino Uno. Pin Vcc dan GND juga dihubungkan dengan 5V dan GND di Arduino Uno. Kemudian dalam program, kita menggunakan wire.h library

untuk komunikasi antara DS3231 dengan Arduino Uno. Program dapat dilihat di dalam

source code di lampiran.

Ethernet Shield juga dihubungkan dengan Arduino Uno. Cara pemasangan sangat mudah karena seluruh pin dapat diintegrasikan secara langsung. Di dalam program, Ethernet.h dan

SPI.h library digunakan untuk komunikasi antara Arduino Uno dengan Ethernet Shield. Program dapat dilihat dalam source code di lampiran. Pembacaan nilai dari analog sensor dilakukan melalui pin analog A0 – A3 di Arduino Uno. Dalam hal ini, kita menggunakan sensor tegangan yang terhubung pada pin A0 Arduino Uno.

Untuk proses transmisi data, teknik PUSH DATA dilakukan dengan menggunakan protokol HTTP GET dari Arduino Uno ke server [5]. Data akan terkirim ke server dalam bentuk string. Untuk program pengiriman data dapat dilihat dalam source code di lampiran.

C. Pengolahan Data Sensor di Server

Ketika PUSH DATA dilakukan dengan menggunakan protokol HTTP GET dari Arduino Uno ke server, data tersimpan dalam bentuk string di link URL. Untuk membaca data ini, dapat digunakan PHP script di server. Contoh script dapat dilihat dalam Gambar 7 berikut.

Gambar 7. PHP Script untuk membaca data yang terkirim ke server

(4)

PHP Script akan mengambil data di URL dan menyimpannya dalam MySQL database. Format MySQL database dapat dilihat dalam Gambar 8 berikut.

Gambar 8. Tampilan tabel MySQL database

D. Tampilan Data Sensor di Browser

Data yang tersimpan dalam MySQL database dapat ditampilkan melalui web browser. Hal ini dapat dilakukan dengan pemrograman PHP Script dan HTML webpage. Gambar 9 menampilkan tabulasi data dari analog sensor. Informasi ini dapat diakses di alamat website uno.coolpage.biz/last_data.php.

Gambar 9. Tampilan tabel dalam web browser dari tabulasi data analog sensor di MySQL database

E. Biaya Pembuatan Datalogger

Untuk memberikan gambaran secara ekonomi, harga komponen serta biaya pembuatan datalogger ini ditampilkan dalam Tabel 1.

Tabel 1. Daftar harga komponen elektronik datalogger N o Komponen Harga per unit (Rp) Kuantitas Har ga (Rp) 1 Arduino Uno 100,000 1 100, 000 2 Ethernet Shield 150,000 1 150, 000 3 Router MR3020 200,000 1 200, 000 4 Modem USB 200,000 1 200, 000 5 Box Casing 50,000 1 50,0 00 6 Adaptor 5V 30,000 1 30,0 00 7 DS3231 20,000 1 20,0 00 Total Biaya (Rp) 750, 000

Berdasarkan hasil perhitungan di dalam Tabel 1, total biaya seluruh komponen untuk pembuatan datalogger online ini menghabiskan dana sekitar Rp 750,000,-. Bila dibandingkan dengan datalogger komersial yang harganya sekitar Rp 5,000,000,- sehingga datalogger online dalam penelitian ini lebih ekonomis. Dengan demikian, produk datalogger ini mampu membuat integrasi peralatan elektronik konsumen masyarakat ke dalam internet atau

Internet of Things (IoT) terealisasi lebih cepat.

5.

Kesimpulan

Dari penelitian ini dapat diambil kesimpulan sebagai berikut:

1. Datalogger online dapat dibuat dengan menggunakan low cost dan open source

Arduino Uno serta komponen penunjang seperti Ethernet Shield,

Router MR3020, Modem USB dan RTC DS3231.

2. Pengujian datalogger online ini menunjukkan kinerja yang baik dimana data dari analog sensor dapat disimpan ke dalam database online serta dapat ditampilkan melalui web browser untuk diakses oleh pengguna.

3. Perhitungan untuk biaya pembuatan datalogger ini menunjukkan bahwa harga datalogger relatif murah sehingga lebih terjangkau untuk digunakan oleh masyarakat.

(5)

Referensi

[1] Al-Fuqaha A, Guizani M, Mohammadi, M, Aledhari M, Ayyash M (2015), Internet of Things: A Survey on Enabling Technologies, Protocols, and Applications, IEEE Communications Surveys Tutorials. 17 (4): 2347–2376 [2] Mattern Friedemann, Floerkemeier

Christian (2010), From the Internet of Computers to the Internet of Things, Informatik-Spektrum. 33 (2): 107–121 [3] Riva Marco, Piergiovanni, Schiraldi

Luciano, Schiraldi Alberto (2001), Performances of time-temperature indicators in the study of temperature exposure of packaged fresh foods, Packaging Technology and Science, 14 (1): 1–39

[4] Nedelkovski Deja n (2016), Arduino and DS3231 Real Time Clock Tutorial, How To Mechatronics [Online]. Available:

http://howtomechatronics.com/tutorials/ arduino/arduino-ds3231-real-time-clock-tutorial/

[5] Hans (2014), Arduino Ethernet – Pushing Data To a PHP Server, Tweakin4All [Online]. Available: https://www.tweaking4all.com/hardware /arduino/arduino-ethernet-data-push/

Lampiran

Source Code untuk program datalogger online

/*

* Program untuk logging data online ke server * Oleh : Agus Putu Abiyasa -- 2017

* Koneksi pin DS3231 pada Arduino Uno: * Vcc -- 5V * GND -- GND * SCL -- A5 * SDA -- A4 */ #include<Ethernet.h> #include<SPI.h> #include "Wire.h" #define DS3231_I2C_ADDRESS 0x68

// Convert normal decimal numbers to binary coded decimal byte decToBcd(byte val)

{

return( (val/10*16) + (val%10) ); }

// Convert binary coded decimal to normal decimal numbers byte bcdToDec(byte val)

{

return( (val/16*10) + (val%16) ); }

//Definition of Pin variable const int analogPin = A0;

// **** ETHERNET SETTING ****

// Arduino Uno pins: 10 = CS, 11 = MOSI, 12 = MISO, 13 = SCK

// Ethernet MAC address - must be unique on your network - MAC Reads T4A001 in hex (unique in your network)

byte mac[] = { 0x90, 0xA2, 0xDA, 0x0F, 0x3A, 0xDC }; // For the rest we use DHCP (IP address and such)

IPAddress ip(192,168,0,100);// MR3020 EthernetClient client;

char server[] = "uno.coolpage.biz";

void setup() {

Wire.begin(); Serial.begin(9600); // set the initial time here:

// DS3231 seconds, minutes, hours, day, date, month, year //setDS3231time(30,17,19,3,4,7,17);

// Start ethernet setting

Serial.println("Konfigurasi Ethernet dengan DHCP..."); if (Ethernet.begin(mac) == 0) {

Serial.println("Gagal konfigurasi Ethernet dengan DHCP!!!"); // no point in carrying on, so do nothing forevermore: // try to congifure using IP address instead of DHCP: Ethernet.begin(mac, ip); } Serial.print("IP Address : "); Serial.println(Ethernet.localIP()); Serial.print("Subnet Mask : "); Serial.println(Ethernet.subnetMask()); Serial.print("Default Gateway IP : "); Serial.println(Ethernet.gatewayIP()); Serial.print("DNS Server IP : "); Serial.println(Ethernet.dnsServerIP()); Serial.println(" "); } // MAIN LOOP void loop() {

byte detik = checkSecond(); byte menit = checkMinute(); byte jam = checkHour(); byte tanggal = checkDate(); byte bulan = checkMonth(); byte tahun = checkYear();

if ((detik==0) && client.connect(server, 80)) { Serial.println("-> Connected");

displayTime(); // display on the Serial Monitor float nilai = getAnalog();

Serial.println( nilai ); if(client.connected()){

// Make a HTTP request:

client.print( "GET /add_data.php?"); client.print("serial="); client.print( "SensorA0" ); client.print("&&"); client.print("analog0="); client.print( nilai); client.print("&&"); client.print("waktulokal="); //client.print("NA"); // print waktu client.print(jam, DEC); client.print(":"); if (menit<10) { client.print("0"); } client.print(menit, DEC); client.print(":"); if (detik<10) {

(6)

client.print("0"); }

client.print(detik, DEC); // selesai print waktu client.print("&&"); client.print("tanggallokal="); // print tanggal client.print(tanggal, DEC); client.print("/"); client.print(bulan, DEC); client.print("/"); client.print(tahun, DEC); // selesai print tanggal

client.println( " HTTP/1.1"); client.print( "Host: " ); client.println(server);

client.println( "Connection: close" ); client.println();

client.println(); client.stop(); }

else {

// you didn't get a connection to the server: Serial.println("--> connection failed/n"); displayTime(); delay(1000); } } } float getAnalog() { float voltage, value ;

voltage = analogRead(analogPin) ; value = voltage*25.0/1024.0; return value;

}

void setDS3231time(byte second, byte minute, byte hour, byte dayOfWeek, byte dayOfMonth, byte month, byte year) {

// sets time and date data to DS3231

Wire.beginTransmission(DS3231_I2C_ADDRESS); Wire.write(0); // set next input to start at the seconds register Wire.write(decToBcd(second)); // set seconds

Wire.write(decToBcd(minute)); // set minutes Wire.write(decToBcd(hour)); // set hours

Wire.write(decToBcd(dayOfWeek)); // set day of week (1=Sunday, 7=Saturday)

Wire.write(decToBcd(dayOfMonth)); // set date (1 to 31) Wire.write(decToBcd(month)); // set month

Wire.write(decToBcd(year)); // set year (0 to 99) Wire.endTransmission();

}

void readDS3231time(byte *second, byte *minute,byte *hour,byte *dayOfWeek,byte *dayOfMonth,byte *month,byte *year)

{

Wire.beginTransmission(DS3231_I2C_ADDRESS); Wire.write(0); // set DS3231 register pointer to 00h Wire.endTransmission();

Wire.requestFrom(DS3231_I2C_ADDRESS, 7);

// request seven bytes of data from DS3231 starting from register 00h

*second = bcdToDec(Wire.read() & 0x7f); *minute = bcdToDec(Wire.read()); *hour = bcdToDec(Wire.read() & 0x3f); *dayOfWeek = bcdToDec(Wire.read()); *dayOfMonth = bcdToDec(Wire.read()); *month = bcdToDec(Wire.read()); *year = bcdToDec(Wire.read()); } void displayTime() {

byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;

// retrieve data from DS3231

readDS3231time(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month,

&year);

// send it to the serial monitor switch(dayOfWeek){ case 1: Serial.print("Minggu"); break; case 2: Serial.print("Senin"); break; case 3: Serial.print("Selasa"); break; case 4: Serial.print("Rabu"); break; case 5: Serial.print("Kamis"); break; case 6: Serial.print("Jumat"); break; case 7: Serial.print("Sabtu"); break; } Serial.print(","); Serial.print(dayOfMonth, DEC); Serial.print("/"); Serial.print(month, DEC); Serial.print("/"); Serial.print(year, DEC); Serial.print(","); Serial.print(hour, DEC);

// convert the byte variable to a decimal number when displayed Serial.print(":"); if (minute<10) { Serial.print("0"); } Serial.print(minute, DEC); Serial.print(":"); if (second<10) { Serial.print("0"); } Serial.print(second, DEC); Serial.print(" "); } byte checkSecond() {

byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;

// retrieve data from DS3231

readDS3231time(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year); return second; } byte checkMinute() {

byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;

// retrieve data from DS3231

readDS3231time(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month,

&year);

return minute; }

(7)

byte checkHour() {

byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;

// retrieve data from DS3231

readDS3231time(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year); return hour; } byte checkDate() {

byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;

// retrieve data from DS3231

readDS3231time(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year); return dayOfMonth; } byte checkMonth() {

byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;

// retrieve data from DS3231

readDS3231time(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year); return month; } byte checkYear() {

byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;

// retrieve data from DS3231

readDS3231time(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month,

&year);

return year; }

Gambar

Gambar 4. RTC DS3231
Gambar 6. Diagram kerja datalogger untuk mengirimkan  data ke server
Gambar 9. Tampilan tabel dalam web browser dari  tabulasi data analog sensor di MySQL database

Referensi

Dokumen terkait

Kami melakukan sosialisasi, hutbah jum,at pada masyarakat Desa di Kecamatan Bolo ini supaya bisah mengantisipasi terjadinya perkawinan di bawah umur. - Apa sebab terjadinya

Skripsi ini berjudul “Pengaruh Fixed Assets Intensity, Leverage, dan Market To Book Ratio terhadap Perusahaan yang melakukan Revaluasi Aset Tetap (Studi Empiris

Setelah asumsi normal dan homogen terpenuhi, selanjutnya dilakukan pengujian hipotesis. Pembelajaan matematika menggunakan model problem based learning dengan contoh

Waktu dan beban kerja di setiap stasiun perakitan harus dikendalikan sesuai dengan waktu siklus yang ditentukan, kemacetan (terlalu lama) proses pada produksi

Hasil ini menunjukkan bahwa terdapat perbedaan signifikan dari nilai rerata kadar MDA hati mencit pada kelompok penelitian yang hanya diberi pakan standar (K1), kelompok

Tabel 2. Toksisitas isolat Bt terhadap S. Angka-angka dalam satu lajur yang diikuti dengan huruf sama tidak berbeda pada taraf nyata 5% menurut uji DMRT.. usus tengah

Hak atas merek adalah hak eksklusif yang diberikan oleh negara kepada pemilik merek terdaftar dalam Daftar Umum Merek dalam jangka waktu tertentu dengan menggunakan

Hasil analisis ragam menunjukkan bahwa interaksi antara varietas bibit kelapa sawit dengan lama cekaman genangan air atau faktor tunggal varietas kelapa sawit