Anda di halaman 1dari 23

pengiriman data jarak menggunakan sensor ultrasonik dan gsm shield – Pada tutorial ini, kita

akan membuat sebuah alat yang dapat mengukur jarak dan mengirimkan data jarak tersebut ke
database internet serta menampilkannya ke situs web. Sebelum masuk ke proses pembuatan,
terlebih dahulu akan dijelaskan cara kerja alat melalui diagram blok berikut:

Diagram
Blok Pengiriman Data Jarak Menggunakan Sensor Ultrasonik (PING) dan GSM Shield SIM900

Penjelasan Diagram Blok:

 MASUKAN
sensor ultrasonik akan memancarkan gelombang ultrasonik ke area yang menjadi target,
setelah itu target akan memantulkan gelombang tersebut ke sensor ultrasonik. Waktu
yang dibutuhkan oleh sensor ultrasonik dalam memancarkan dan menerima pantulan
nantinya akan diolah oleh Arduino.
 PROSES
Arduino akan mengolah data yang didapat dari sensor ultrasonik dan mengkonversikan
data tersebut dalam satuan jarak (centimeter). Setelah itu data tersebut akan dikirim[1] ke
database internet melalui GSM Shield.
 KELUARAN
data yang terdapat di database akan ditampilkan[2] ke halaman web.

Catatan:
[1] Didalam proses pengiriman data ke database kita akan menggunakan file php sebagai
jembatan antara GSM Shield dan internet database.
[2] Untuk menampilkan data kita juga akan menggunakan file php.

Ilustrasi:
Ilustrasi Penggunaan File Php dalam Proses Pengiriman dan Menampilkan Data

Adapun komponen yang dibutuhkan dalam pembuatan alat ini adalah sebagai berikut:

 Arduino Uno

Arduino Uno ATmega328

 Sensor Ultrasonik (PING)


Sensor Ultrasonik (PING) HC-SR04

 GSM Shield SIM900

GSM Shield SIM900 SIMCom

 Hosting dan Domain

Terdapat beberapa tahap dalam pembuatan alat ini, adapun diantaranya adalah sebagai berikut:

1. Membuat rangkaian dan program untuk mengukur jarak menggunakan sensor ultrasonik
2. Membuat database data jarak sensor ultrasonik
3. Membuat file php sebagai penghubung SIM900 dengan database
4. Membuat program untuk mengirim data dari SIM900 ke database
5. Menggabungkan program jarak sensor ultrasonik dengan program pengiriman data
SIM900
6. Membuat file php sebagai tampilan data di website.

Silahkan klik Next Step di bawah ini untuk melanjutkan belajar.

Rangkaian Dan Program pengiriman data jarak menggunakan sensor ultrasonik dan gsm
shield

Pada tahap pertama ini kita akan membuat sebuah rangkaian untuk pembacaan jarak dengan
menggunakan Arduino Uno dan sensor ultrasonik HC-SR04, berikut skematik rangkaian
tersebut:
Rangkaian Arduino Uno dengan Sensor Ultrasonik HC-SR04

Dan berikut program untuk pengiriman data jarak menggunakan sensor ultrasonik dan gsm
shield dari rangkaian tersebut:

1 const int trig = 4; //insialisasi untuk pin trig sensor ping


2 const int echo = 5; //inisialisasi untuk pin echo sensor ping
3
4 long waktu; //waktu pantul yang dibutuhkan sensor
5 long jarak; //jarak sensor ke titik pantul
6 long cm; //nilai jarak dalam centimeter
7
8 void setup()
9 {
10 Serial.begin(9600);
11 pinMode(trig,OUTPUT);
12 pinMode(echo,INPUT);
13 }
14
15 void loop()
16 {
17 digitalWrite(trig,LOW);
18 delayMicroseconds(2);
19 digitalWrite(trig,HIGH);
20 delayMicroseconds(10);
21 digitalWrite(trig,LOW);
22
23 waktu = pulseIn(echo,HIGH);
24 cm = waktu/29/2;
25 Serial.print(cm);
26 Serial.println(" cm");
27 delay(100);
28 }

Setelah upload program, buka serial monitor Arduino IDE dan pastikan sensor ultrasonik bekerja
dengan baik, seperti gambar berikut:
Data Sensor Ultrasonik Pada Serial Monitor Arduino

Pada tahap ke-2, buatlah sebuah database yang akan digunakan sebagai penampung data jarak
dari sensor ultrasonik. Dengan skema tabel pada database seperti gambar berikut:

Skema Tabel Database Untuk Menampung Data Sensor

Pada kolom “id” isi kan data “1”, seperti gambar berikut:
catatan: kolom “id” diberi data “1” bertujuan untuk memudahkan dalam melakukan update data
jarak, dikarenakan pada alat ini data yang baru akan menghapus data yang lama (tidak merekam
data)

File php Penghubung SIM900 Dengan Database

Setelah membuat database, pada tahap ke-3 ini buatlah file php yang akan digunakan sebagai
penghubung SIM900 dengan database. Terdapat 2 file php yang akan digunakan:

koneksi.php

1
<?php
2
$nama = "nama user database";
3
$pass = "password user database";
4
$database = "nama database";
5
$host = "host hosting yang digunakan";
6
$koneksi =mysqli_connect($host,$nama,$pass,$database);
7
if (mysqli_connect_errno())
8
{
9
echo 'Gagal terhubung :'.mysqli_connect_error();
10
}
11
?>
12

koneksi.php merupakan file php yang digunakan sebagai penghubung antara file php
dengan database mysql yang digunakan.

input.php

1 <?php
2
3 include("koneksi.php");
4
5 $masukan_jarak = $_GET['jarak'];
6 $query=mysqli_query($koneksi,"UPDATE nama tabel SET jarak='$masukan_jarak' WHERE
7 id='1'");
8
9 if ($query)
10 {
11 echo "data berhasil masuk";
12 }
13 else
14 {
15 echo "data gagal masuk";
16 }
?>

input.php merupakan file php yang digunakan sebagai pengambil data yang dikirimkan oleh
SIM900. Alat ini menggunakan metode GET dalam pengiriman data ke database.

Setelah membuat kedua file php tersebut, upload kedua file tersebut ke hosting yang sama
dengan hosting database. Setelah itu coba lakukan input data melalui browser seperti gambar
berikut:

Pada gambar tersebut kita meng-input data “1” ke kolom “jarak”. Jika input data berhasil, maka
kolom jarak pada tabel database akan berubah menjadi “1”, seperti gambar berikut:

Untuk memastikan database dan file php berfungsi dengan baik, gantilah angka “1” pada
“jarak=1” dengan angka lain. Dan periksa database saat melakukan perubahan data. Jika
database berubah sesuai dengan data yang di masukan maka database dan file php berfungsi
dengan baik.

Rangkaian dan Program Pengiriman Data SIM900

Pada GSM Shield SIM900 board yang dibuat sesuai dengan pin-pin pada Arduino Uno sehingga
Shield GSM tinggal dipasang pada Arduino Uno. Adapun rangkaian skematiknya adalah sebagai
berikut:
Skematik Arduino Uno dan GSM Shield SIM900

Program pengiriman data SIM900 adalah sebagai berikut:

1 #include <SoftwareSerial.h> //library software serial arduino


2
3 SoftwareSerial sim900(2, 3); //(rx,tx)
4
5 void setup()
6 {
7 sim900.begin(19200); //baudrate pada Shield = 19200
8 Serial.begin(9600); //baudrate serial monitor
9 delay(2000);
10 status_gsm(); //prosedur memeriksa koneksi sim900 dengan arduino
11 setting_kartusim(); //prosedur pengaturan GPRS sim900
12 koneksi(); //prosedur mengirim data ke database
13 }
14
15 void status_gsm()
16 {
17 sim900.println(F("AT")); //AT command untuk memastikan koneksi dengan Arduino
18 if(sim900.find("OK"))
19 {
20 Serial.println(F("Koneksi dengan Arduino BERHASIL"));
21 }
22 else
23 {
24 Serial.println(F("Koneksi dengan Arduino GAGAL"));
25 reset_gsm(); //prosedur power up sim900 (melakukan hard reset sim900)
26 status_gsm();
27 }
28 delay(100);
29 }
30
31 void reset_gsm()
32 {
33 pinMode(9, OUTPUT);
34 digitalWrite(9,LOW);
35 delay(1000);
36 digitalWrite(9,HIGH);
37 delay(2000);
38 digitalWrite(9,LOW);
39 delay(3000);
40 }
41
42 void setting_kartusim()
43 {
44 sim900.println(F("AT+CREG=1")); //mengaktifkan registrasi jaringan
45 delay(100);
46 Serial.println(sim900.readString());
47 sim900.println(F("AT+CGATT=1")); //masuk ke gprs servis
48 delay(100);
49 Serial.println(sim900.readString());
50 sim900.println(F("AT+CIPSHUT")); //menonaktifkan gprs
51 delay(100);
52 Serial.println(sim900.readString());
53 sim900.println(F("AT+CIPMUX=0"));//mengaktifkan single IP koneksi
54 delay(100);
55 Serial.println(sim900.readString());
56 sim900.println(F("AT+CSTT=\"internet""\"")); //setting APN kartu sim
57 delay(500);
58 sim900.println(F("AT+CSTT?")); //memastikan setting APN benar
59 delay(5000);
60 Serial.println(sim900.readString());
61 sim900.println(F("AT+CIICR")); //memulai koneksi GPRS
62 delay(10000);
63 Serial.println(sim900.readString());
64 sim900.println(F("AT+CIFSR")); //request IP
65 delay(5000);
66 Serial.println(sim900.readString());
67 }
68
69 void koneksi()
70 {
71 sim900.println(F("AT+CIPSTART=\"TCP\",\"www.iot.kodingindonesia.com""\",80"));
72 //memulai koneksi dengan server
73 delay(1000);
74 Serial.println(sim900.readString());
75 if(sim900.find("OK"))
76 {
77 Serial.println(F("proses data"));
78 }
79 String link = "GET /sim900/ping/input.php?jarak=2 HTTP/1.1\r\nHost:
80 www.iot.kodingindonesia.com\r\n\r\n"; //tautan dengan metode GET
81
82 sim900.print(F("AT+CIPSEND=")); //mengirim request data
83 sim900.println(link.length()); //mengirim panjang tautan request data
84 delay(500);
85 if(sim900.find(">"))
86 {
87 sim900.print(link); //mengirim tautan ke server
88 if(sim900.find("SEND OK"))
89 {
90 delay(100);
91 while (sim900.available())
92 {
93 Serial.println(sim900.readString()); //feedback data (sesuai dengan keluaran di browser)
94 }
95 sim900.println(F("AT+CIPCLOSE")); //stop koneksi
96 }
97 else
98 {
99 koneksi();
100 }
101 }
102 }
103
104 void loop()
{
}

Program tersebut merupakan program pengiriman data dummy dari SIM900. Pada program
tersebut data yang dikirim adalah karakter “2” dengan metode GET sama halnya dengan metode
yang digunakan saat meng-input melalui browser. Program yang dibuat berdasarkan pada AT
Command pada SIM900. Adapun daftar AT Command dapat dilihat pada tautan berikut:

http://wiki.amperka.ru/_media/продукты:gprs_shield:gprs-shield_sim900_at_commands.pdf

Upload program dan buka serial monitor Arduino untuk mengetahui perintah yang diberikan
berjalan atau tidak, seperti gambar berikut:
Jika program berhasil, maka feedback yang diberikan adalah “data berhasil masuk”, pastikan
dengan membuka database. Jika berhasil, maka data pada kolom “jarak” akan sesuai dengan data
dummy yang dikirimkan.

Gabungan Arduino Uno, SIM900, dan Sensor Ultrasonik

Rangkaian Skematik:
Skematik Arduino Uno, SIM900, dan Sensor Ultrasonik

Program:

1 #include <SoftwareSerial.h> //library software serial arduino


2
3 SoftwareSerial sim900(2, 3); //(rx,tx)
4
5 const int trig = 4; //insialisasi untuk pin trig sensor ping
6 const int echo = 5; //inisialisasi untuk pin echo sensor ping
7
8 long waktu; //waktu pantul yang dibutuhkan sensor
9 long jarak; //jarak sensor ke titik pantul
10 long cm; //nilai jarak dalam centimeter
11
12 int selisih[2];
13 int i=0;
14
15 void setup()
16 {
17 sim900.begin(19200); //baudrate pada Shield = 19200
18 Serial.begin(9600); //baudrate serial monitor
19 delay(2000);
20 pinMode(trig,OUTPUT);
21 pinMode(echo,INPUT);
22 status_gsm(); //prosedur memeriksa koneksi sim900 dengan arduino
23 setting_kartusim(); //prosedur pengaturan GPRS sim900
24 }
25
26 void status_gsm()
27 {
28 sim900.println(F("AT")); //AT command untuk memastikan koneksi dengan Arduino
29 if(sim900.find("OK"))
30 {
31 Serial.println(F("Koneksi dengan Arduino BERHASIL"));
32 }
33 else
34 {
35 Serial.println(F("Koneksi dengan Arduino GAGAL"));
36 reset_gsm(); //prosedur power up sim900 (melakukan hard reset sim900)
37 status_gsm();
38 }
39 delay(100);
40 }
41
42 void reset_gsm()
43 {
44 pinMode(9, OUTPUT);
45 digitalWrite(9,LOW);
46 delay(1000);
47 digitalWrite(9,HIGH);
48 delay(2000);
49 digitalWrite(9,LOW);
50 delay(3000);
51 }
52
53 void setting_kartusim()
54 {
55 sim900.println(F("AT+CREG=1")); //mengaktifkan registrasi jaringan
56 delay(100);
57 Serial.println(sim900.readString());
58 sim900.println(F("AT+CGATT=1")); //masuk ke gprs servis
59 delay(100);
60 Serial.println(sim900.readString());
61 sim900.println(F("AT+CIPSHUT")); //menonaktifkan gprs
62 delay(100);
63 Serial.println(sim900.readString());
64 sim900.println(F("AT+CIPMUX=0"));//mengaktifkan single IP koneksi
65 delay(100);
66 Serial.println(sim900.readString());
67 sim900.println(F("AT+CSTT=\"internet""\"")); //setting APN kartu sim
68 delay(500);
69 sim900.println(F("AT+CSTT?")); //memastikan setting APN benar
70 delay(5000);
71 Serial.println(sim900.readString());
72 sim900.println(F("AT+CIICR")); //memulai koneksi GPRS
73 delay(10000);
74 Serial.println(sim900.readString());
75 sim900.println(F("AT+CIFSR")); //request IP
76 delay(5000);
77 Serial.println(sim900.readString());
78 }
79
80 void koneksi()
81 {
82 sim900.println(F("AT+CIPSTART=\"TCP\",\"www.iot.kodingindonesia.com""\",80"));
83 //memulai koneksi dengan server
84 delay(1000);
85 Serial.println(sim900.readString());
86 if(sim900.find("OK"))
87 {
88 Serial.println(F("proses data"));
89 }
90 String link = "GET /sim900/ping/input.php?jarak="+String(cm)+" HTTP/1.1\r\nHost:
91 www.iot.kodingindonesia.com\r\n\r\n"; //tautan dengan metode GET
92
93 sim900.print(F("AT+CIPSEND=")); //mengirim request data
94 sim900.println(link.length()); //mengirim panjang tautan request data
95 delay(500);
96 if(sim900.find(">"))
97 {
98 sim900.print(link); //mengirim tautan ke server
99 if(sim900.find("SEND OK"))
100 {
101 delay(100);
102 while (sim900.available())
103 {
104 Serial.println(sim900.readString()); //feedback data (sesuai dengan keluaran di browser)
105 }
106 sim900.println(F("AT+CIPCLOSE")); //stop koneksi
107 }
108 else
109 {
110 koneksi();
111 }
112 }
113 }
114
115 void loop()
116 {
117 digitalWrite(trig,LOW);
118 delayMicroseconds(2);
119 digitalWrite(trig,HIGH);
120 delayMicroseconds(10);
121 digitalWrite(trig,LOW);
122
123 waktu = pulseIn(echo,HIGH);
124 cm = waktu/29/2;
125 selisih[i]=cm;
126 Serial.print(i);
127 Serial.print(" ");
128 delay(1000);
129 if(i==1)
130 {
131 if(selisih[1]==selisih[0])
132 {
133
134 }
135 else
136 {
137 koneksi(); //prosedur mengirim data ke database
138 }
139 i=0;
140 }
141 else
142 {
143 i++;
144 }
145 Serial.print(cm);
146 Serial.println(" cm");
delay(100);
}

Pada program gabungan ini, sensor ultrasonik akan memberikan variable data ke SIM900.
Variable data diberikan apabila terdapat perbedaan data dari data sebelumnya. Perhatikan
gambar berikut ini:
Data Dikirim Saat Terjadi Perubahan Data
Hal ini dilakukan agar SIM900 hanya mengirim data saat terjadi perubahan data dan tidak
melakukan pengiriman data terus-menerus, sehingga tidak membebani server database. Jika
berhasil maka data kolom jarak akan berubah sesuai dengan data yang dikirim seperti gambar
berikut:

Tampilan Data

Tampilan data pada browser diperlukan untuk mengetahui perubahan data pada tabel database
tanpa harus membuka database. Tampilan data dibuat dengan menggunakan file php. Simpanlah
file php tersebut dengan nama index.php, dan upload file tersebut di folder yang sama dengan
file php sebelumnya. Adapun programnya adalah sebagai berikut:

1 <?php
2
3 include "koneksi.php";
4
5 $data = mysqli_query($koneksi,"SELECT * FROM sensorping") or die (mysqli_error());
6 $row = mysqli_fetch_array($data);
7
8 echo "Jarak: ".$row['jarak']. " cm";
9
10 ?>

Setelah itu bukalah alamat web sesuai dengan domain yang telah didaftarkan pada hosting
dengan menggunakan browser, seperti gambar berikut:

Tampilan Data Database Pada Browser


Aktifkan alat dan lakukan reload pada browser untuk melihat perubahan terhadapat data.

Sekian proses pengiriman data jarak menggunakan sensor ultrasonik dan gsm shield,
sensor ultrasonik, dan Arduino Uno.

Anda mungkin juga menyukai