Perancangan Sistem Pemanasan Mesin Sepeda Motor Secara Otomatis Berbasis Arduino Chapter III V
20
BAB III
PERANCANGAN SISTEM
3.1. Umum
Sistem pemanasan mesin sepeda motor secara otomatis merupakan sistem
yang bertujuan untuk menyalakan mesin sepeda motor secara otomatis dan
terjadwal. Sistem ini menggunakan arduino uno yang dilengkapi dengan beberapa
pheripheral masukan dan keluaran.
Sistem pemanasan mesin sepeda motor secara otomatis berbasis arduino
merupakan sistem yang bekerja dengan tujuan pemeliharaan mesin sepeda motor.
Sistem ini bekerja dengan menggunakan indikator bahan bakar, indikator baterai,
indikator transmisi dan indikator status mesin sebagai parameter.
Sistem pemanasan mesin sepeda motor ini juga dapat dipantau dari aplikasi
android pada smartphone. Sistem ini akan melakukan pembacaan data dari sepeda
motor kemudian mengirimkan dan menyimpannya pada database yang terdapat
pada web server melalui jaringan internet. User menggunakan aplikasi android
untuk mangakses dan menampilkan data pada database tersebut. Gambar 3.1
memperlihatkan gambaran umum dari sistem yang akan dirancang.
Gambar 3. 1 Gambaran sistem secara Umum
Universitas Sumatera Utara
21
3.2. Perancangan Sistem Pemanasan Mesin Sepeda Motor
Pada sistem ini arduino berperan sebagai pusat pengolahan data pembacaan
sensor. Pada Arduino terdapat ADC berperan dalam pengolahan sinyal analog
sensor ke digital dan terminal masukan/keluaran digital untuk keperluan
komunikasi digital. Sensor-sensor dibaca dan data pembacaan kemudian diolah
untuk dikirim ke server dengan menggunakan HTTPS request dengan
menggunakan GET method. Data yang dikirim diolah dan disimpan untuk
keperluan monitoring. Monitoring dilakukan dengan menggunakan sebuah aplikasi
berbasis android secara online menggunakan smartphone. Pada gambar 3.2
diperlihatkan gambaran perancangan alat dalam diagram blok sistem.
Gambar 3. 2 Diagram blok sistem
3.3. Perancangan Perangkat Keras
Perangkat keras sistem berperan sebagai perangkat pemantau kondisi
sepeda motor, pengirim data ke server dan pengontrol pemanasan mesin sepeda
Universitas Sumatera Utara
22
motor secara otomatis. Pada gambar 3.3 diperlihatkan diagram blok perangkat keras
sistem pemanasan mesin sepeda motor.
Gambar 3. 3 Diagram blok hardware
Untuk dapat melakukan pemanasan mesin secara otomatis maka sistem
dirancang untuk dapat bekerja sesuai dengan aturan prosedur yang ingin dirancang.
Pada gambar 3.4 diperlihatkan flowchart dari sistem yang akan dibuat. dengan
bekerja berdasarkan flowchart ini diharapkan sistem dapat berfungsi dengan baik.
Universitas Sumatera Utara
23
Gambar 3. 4 Flowchart proses sistem pemanasan mesin sepeda motor secara
otomatis
Universitas Sumatera Utara
24
3.3.1. Timer
Timer yang dipakai adalah RTC DS3231. Timer ini membutuhkan minimal
empat terminal untuk bisa berkomunikasi dengan arduino yaitu: VCC, Ground,
SCL dan SDA. VCC di pasang pada tegangan keluaran arduino 5 volt, Ground
dipasang pada terminal Ground keluaran arduino, SDA dipasang pada terminal A4
dan SCL dipasang pada terminal A5. Berikut adalah rangkaian skematik antara
arduino uno dengan RTC DS3231. Gambar 3.5 menunjukkan rangkaian skematik
dari IC RTC DS3231 dengan arduino uno
Gambar 3. 5 Diagram skematik DS3231 dengan arduino
Berikut program menjalankan pembacaan RTC DS3231 oleh arduino.
// Convert binary coded decimal to normal decimal numbers
byte bcdToDec(byte val)
{
return( (val/16*10) + (val%16) );
}
// read the DS3231
void readDS3231time(byte *second,
byte *minute,
byte *hour,
byte *dayOfWeek,
byte *dayOfMonth,
Universitas Sumatera Utara
25
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());
}
3.3.2. Pengukuran Level Bahan Bakar
Pengukuran bahan bakar dilakukan dengan mengukur tegangan jepit antara
kedua terminal pelampung bahan bakar yang terdapat didalam tanki sepeda motor
MINERVA MX150. Untuk mengukur tagangan tersebut, maka dipasang sebuah
sensor tegangan seperti pada gambar dibawah ini. Gambar 3.6 memerlihatkan
rangakaian skematik sensor bahan bakar.
Gambar 3. 6 Rangkaian skematik sensor bahan bakar
Universitas Sumatera Utara
26
Gambar 3.7 memperlihatkan hasil pembacaan sensor tegangan jepit dari
pelampung bahan bakar melalui serial monitor dari arduino software pada saat
bahan bakar dalam keadaan (A) penuh, (B) kosong dan (C) reserve. hasil
pembacaan sensor di simpan dengan nama varibel ‘ sensor1’ .
Grafik pembacaan sensor tingkat bahan bakar
nilai pembacaan sensor
70
60
50
40
30
20
10
0
1
2
3
4
5
6
7
tangki penuh
8
9
10 11 12 13 14 15 16 17 18 19 20 21
waktu (detik)
tangki kosong
tangki reserve
Gambar 3. 7 Grafik pembacaan sensor tengangan pada pelampung bahan bakar
Dari hasil pembacaan sensor tersebut, nilai data di ubah ke dalam satuan
persen (%) dengan rumus:
100
=(
1)
(%)
= (65
1)
100
(%)
65 10
= (65
1)
1,85 (%)
Dimana:
Fuel
: tingkat ketinggian bahan bakar dalam tangki (%)
Universitas Sumatera Utara
27
A
: nilai pembacaan sensor pada saat bahan bakar penuh
B
: nilai pembacaan sensor pada saat bahan bakar kosong
Sensor1: hasil pembacaan sensor
Berikut program menjalankan pembacaan pengukuran level bahan bakar
oleh arduino.
float Sensor1 = analogRead(A2);
delay (1000);
fuel =(66.00 - Sensor1) *1.85;
3.3.3. Pengukuran Tegangan Baterai
Pengukuran tegangan baterai dilakukan dengan memasang sensor tegangan
pada terminal positif dan negatif baterai tersebut seperti pada gambar 3.8.
Gambar 3. 8 Rangkaian skematik sensor tegangan Baterai
Universitas Sumatera Utara
28
Gambar 3.9 memperlihatkan hasil pembacaan sensor tegangan baterai
melalui serial monitor dari arduino software pada saat tegangan baterai sebesar
12V. hasil pembacaan sensor di simpan dengan nama varibel ‘ sensor2’ .
grafik pembacaan sensor tegangan baterai dengan
tegangan 12 Volt
nilai pembacaan Sensor
700
600
500
400
300
200
100
0
1
2
3
4
5
6
7
8
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
waktu (detik)
Gambar 3. 9 Rangkaian skematik sensor tegangan Baterai
Dari hasil pembacaan sensor tersebut, nilai pembacaan diubah kedalam
satuan Volt dengan rumus sebagai berikut:
=
2
12
(
582
)
Dimana:
V
: tegangan baterai (Volt)
Sensor2
: hasil pembacaan sensor tegangan baterai
Berikut program menjalankan pembacaan pengukuran tegangan baterai
oleh arduino.
float
delay
float
delay
Sensor2 = analogRead(A1);
(1000);
battery = Sensor2 * (12.0 / 582.0);
(1000);
Universitas Sumatera Utara
29
3.3.4. Pembacaan status mesin
Pembacaan status mesin bertujuan untuk mengetahui status mesin apakah
dalam keadaan menyala atau tidak. Saat menyala mesin akan menghasilkan
tegangan AC 3 fasa, dengan memanfaatkan keadaan ini maka sebuah dioda bridge
dipasang antara dua kutub generator mesin sepeda motor tersebut sebagai
penyearah gelombang tegangan AC. Kapasitor di pasang pada kutub positif (+) dan
negatif (-) dioda blidge tersebut untuk mengurangi riak tegangan DC keluarannya
dan sebuah resistor sebagai pembatas arus pada salah satu terminal fasa masukan
dioda bridge. Dengan memasang sebuah sensor tegangan untuk mendeteksi ada
tidaknya tegangan pada keluaran dioda bridge tersebut maka arduino dapat
mengetahui status mesin sepda motor. Pembacaan status mesin ini dipasang pada
terminal A0 arduino. Gambar 3.10 memperlihatkan rangkaian skematik dari sensor
tegangan untuk membaca status mesin.
Gambar 3. 10 Rangakaian skematik pembacaan stasus mesin
Universitas Sumatera Utara
30
Pada gambar 3.11 diperlihatkan grafik hasil pembacaan status mesin saat
mesin dalam kondisi mati (OFF) dan hasil pembacaan saat mesin dalam kondisi
menyala (ON). Hasil pembacaan status mesin disimpan dengan nama variabel ‘ val”.
Grafik pembacaan sensor tegangan mesin
Nilai Pembacaan Sensor
700
600
500
400
300
200
100
0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
waktu (detik)
Status mesin menyala
Status mesin mati
Gambar 3. 11 Grafik hasil pembacaan status mesin
Dari hasil pembacaan status mesin tersebut kita lihat bahwa ada
pembedaan antar pembacaan pada kedua kondisi mesin. Status mesin dapat kita
peroleh dengan ketentuan sebagai berikut
ON ==> val > 10
OFF ==> val < 10
Berikut program pembacaan status mesin oleh arduino.
float val = analogRead(A0);
delay(1000);
if (val1>10)
{
engine = "ON";
}
else
{
engine = "OFF";
}
Serial.println(engine);
Universitas Sumatera Utara
31
3.3.5. Pembacaan Status Transmisi
Pembacaan status transmisi dilakukan untuk mengetahui posisi dari sistem
transmisi pada sepeda motor. Kondisi transmisi yang dibaca adalah posisi netral
dan posisi tidak netral. Sepeda motor minerva MX150 sudah dilengkapi dengan
sebuah sakelar sebagai indikator transmisi netral dan tidak. Pada gambar 3.12
merupakan rangkaian
Gambar 3. 12 Rangakian skematik pembacaan status transmisi
Berikut program pembacaan status transmisi oleh arduino.
digitalWrite(pul,HIGH);
delay(100);
int val2 = digitalRead(net);
if (net==HIGH)
{
transmission = "NEUTRAL";
}
Else
{
Transmission = “ON GEAR”;
}
digitalWrite(pul,LOW);
// puldown input neutral
// membaca status transmisi
Universitas Sumatera Utara
32
3.3.6. Power Relay
Power relay dipasang pada kedua terminal sakelar power sepeda motor.
Tegangan masukan untuk menggerakkan relay ini berasal dari keluaran 5 volt
arduino melalui sebuah transistor NPN yang dipicu oleh tegangan keluaran arduino
pada terminal delapan. Pada gambar 3.13 diperlihatkan rangkaian skematik power
relay.
Gambar 3. 13 Rangkaian skematik power relay
Berikut program untuk mengaktifkan relai Power oleh arduino.
digitalWrite(power,LOW);
delay (4000);
Berikut program untuk mematikan relai Power oleh arduino.
digitalWrite(power,HIGH);
3.3.7. Starter Relay
Starter Relay dipasang pada kedua terminal sakelar starter sepeda motor.
Tegangan masukan untuk menggerakkan relay ini berasal dari tegangan keluaran 5
volt arduino melalui sebuah transistor NPN yang dipicu oleh tegangan keluaran
Universitas Sumatera Utara
33
arduino pada terminal sembilan. Pada gambar 3.14 diperlihatkan rangkaian
skematik dari starter relay.
Gambar 3. 14 Rangkaian skematik starter relay
Berikut program untuk mengaktifkan starter relay oleh arduino.
digitalWrite(9,LOW);
delay (3000);
3.3.8. Sim800l
Untuk dapat berkomunikasi dengan arduino, sim800l membutuhkan
setidaknya empat terminal yaitu: VCC (3,7 – 4,2 volt), GND, TX dan MX. Untuk
mendapatkan tegangan antara 3,7 - 4,2 volt dari tegangan keluaran arduino, maka
dibutuhkan sebuah regulator penurun tegangan dari 5 Volt DC menjadi kisaran 3,7
– 4,2 volt DC. Terminal keluaran regulator dipasangkan pada VCC dan GND sim
800l. Terminal TX dipasangkan pada terminal B10 arduino sedangkan terminal MX
sim800l dipasangkan pada terminal B11 arduino. Pada gambar 3.15 diperlihatkan
rangkaian skematik Sim800l.
Universitas Sumatera Utara
34
Gambar 3. 15 Rangkaian skematik Sim800l
Berikut diagram blok dan program sim800l pada arduino.
SoftwareSerial sim800l(11, 10);
String stringPARA =
"AT+HTTPPARA=\"URL\",\"http://autobike.pe.hu/input.php?fuel=";
String stringend = "\"";
String stringPARA2 = "";
String bt = "&battery=";
String en = "&engine_st=";
String tr = "&transmission=";
float fuel;
float battery;
int engine;
int transmission;
void SubmitHttpRequest()
{
stringPARA2 = stringPARA + fuel + bt + battery + en + engine + tr
+ transmission + stringend;
Serial.println(stringPARA2);
sim800l.println("AT+CSQ");
delay(100);
ShowSerialData();
sim800l.println("AT+CGATT?");
delay(100);
Universitas Sumatera Utara
35
ShowSerialData();
sim800l.println("AT+SAPBR=3,1,\"CONTYPE\",\"GPRS\"");//setting
the SAPBR, the connection type is using gprs
delay(1000);
ShowSerialData();
sim800l.println("AT+SAPBR=3,1,\"APN\",\"internet\"");
delay(1000);
ShowSerialData();
sim800l.println("AT+SAPBR=1,1");
delay(2000);
ShowSerialData();
sim800l.println("AT+HTTPINIT"); //init the HTTP request
delay(2000);
ShowSerialData();
sim800l.println(stringPARA2);
delay(1000);
ShowSerialData();
sim800l.println("AT+HTTPACTION=0");
delay(6000);
ShowSerialData();
sim800l.println("AT+HTTPREAD");
ShowSerialData();
delay(300);
checkForResponse();
mySerial.println("");
delay(100);
}
void ShowSerialData()
{
while(sim800l.available()!=0)
Serial.write(sim800l.read());
}
void checkForResponse()
{
while(sim800l.available()!=0)
{
for (int i = 0; i < 22; i++)
{
dLine[i] = sim800l.read();
}
}
Serial.println(dLine[6]);
}
Universitas Sumatera Utara
36
3.4. Perancangan Penjadwalan Sistem
Pada penjadwal akan diatur kapan sepeda motor akan melakukan
pemanasan mesin secara otomatis. Dalam hal ini sepeda motor akan melakukan
pemanasan mesin secara otomatis pada pukul 7:00:00 pada zona waktu GMT+7.
Jika dalam melakukan penyalaan pada mesin sepeda motor tidak berhasil, maka
sistem akan mengulangi penyalaan sebanyak 3 kali. Berikut program arduino untuk
melakukan penjadwalan pemanasan mesin secara otomatis.
void start_engine()
{
digitalWrite(power,LOW);
delay (4000);
sensor();
if(fuel>31.45 && battery > 10 && transmission == "NEUTRAL" &&
engine == "OFF")
{
cacah = 0;
while (engine == "OFF" && cacah
BAB III
PERANCANGAN SISTEM
3.1. Umum
Sistem pemanasan mesin sepeda motor secara otomatis merupakan sistem
yang bertujuan untuk menyalakan mesin sepeda motor secara otomatis dan
terjadwal. Sistem ini menggunakan arduino uno yang dilengkapi dengan beberapa
pheripheral masukan dan keluaran.
Sistem pemanasan mesin sepeda motor secara otomatis berbasis arduino
merupakan sistem yang bekerja dengan tujuan pemeliharaan mesin sepeda motor.
Sistem ini bekerja dengan menggunakan indikator bahan bakar, indikator baterai,
indikator transmisi dan indikator status mesin sebagai parameter.
Sistem pemanasan mesin sepeda motor ini juga dapat dipantau dari aplikasi
android pada smartphone. Sistem ini akan melakukan pembacaan data dari sepeda
motor kemudian mengirimkan dan menyimpannya pada database yang terdapat
pada web server melalui jaringan internet. User menggunakan aplikasi android
untuk mangakses dan menampilkan data pada database tersebut. Gambar 3.1
memperlihatkan gambaran umum dari sistem yang akan dirancang.
Gambar 3. 1 Gambaran sistem secara Umum
Universitas Sumatera Utara
21
3.2. Perancangan Sistem Pemanasan Mesin Sepeda Motor
Pada sistem ini arduino berperan sebagai pusat pengolahan data pembacaan
sensor. Pada Arduino terdapat ADC berperan dalam pengolahan sinyal analog
sensor ke digital dan terminal masukan/keluaran digital untuk keperluan
komunikasi digital. Sensor-sensor dibaca dan data pembacaan kemudian diolah
untuk dikirim ke server dengan menggunakan HTTPS request dengan
menggunakan GET method. Data yang dikirim diolah dan disimpan untuk
keperluan monitoring. Monitoring dilakukan dengan menggunakan sebuah aplikasi
berbasis android secara online menggunakan smartphone. Pada gambar 3.2
diperlihatkan gambaran perancangan alat dalam diagram blok sistem.
Gambar 3. 2 Diagram blok sistem
3.3. Perancangan Perangkat Keras
Perangkat keras sistem berperan sebagai perangkat pemantau kondisi
sepeda motor, pengirim data ke server dan pengontrol pemanasan mesin sepeda
Universitas Sumatera Utara
22
motor secara otomatis. Pada gambar 3.3 diperlihatkan diagram blok perangkat keras
sistem pemanasan mesin sepeda motor.
Gambar 3. 3 Diagram blok hardware
Untuk dapat melakukan pemanasan mesin secara otomatis maka sistem
dirancang untuk dapat bekerja sesuai dengan aturan prosedur yang ingin dirancang.
Pada gambar 3.4 diperlihatkan flowchart dari sistem yang akan dibuat. dengan
bekerja berdasarkan flowchart ini diharapkan sistem dapat berfungsi dengan baik.
Universitas Sumatera Utara
23
Gambar 3. 4 Flowchart proses sistem pemanasan mesin sepeda motor secara
otomatis
Universitas Sumatera Utara
24
3.3.1. Timer
Timer yang dipakai adalah RTC DS3231. Timer ini membutuhkan minimal
empat terminal untuk bisa berkomunikasi dengan arduino yaitu: VCC, Ground,
SCL dan SDA. VCC di pasang pada tegangan keluaran arduino 5 volt, Ground
dipasang pada terminal Ground keluaran arduino, SDA dipasang pada terminal A4
dan SCL dipasang pada terminal A5. Berikut adalah rangkaian skematik antara
arduino uno dengan RTC DS3231. Gambar 3.5 menunjukkan rangkaian skematik
dari IC RTC DS3231 dengan arduino uno
Gambar 3. 5 Diagram skematik DS3231 dengan arduino
Berikut program menjalankan pembacaan RTC DS3231 oleh arduino.
// Convert binary coded decimal to normal decimal numbers
byte bcdToDec(byte val)
{
return( (val/16*10) + (val%16) );
}
// read the DS3231
void readDS3231time(byte *second,
byte *minute,
byte *hour,
byte *dayOfWeek,
byte *dayOfMonth,
Universitas Sumatera Utara
25
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());
}
3.3.2. Pengukuran Level Bahan Bakar
Pengukuran bahan bakar dilakukan dengan mengukur tegangan jepit antara
kedua terminal pelampung bahan bakar yang terdapat didalam tanki sepeda motor
MINERVA MX150. Untuk mengukur tagangan tersebut, maka dipasang sebuah
sensor tegangan seperti pada gambar dibawah ini. Gambar 3.6 memerlihatkan
rangakaian skematik sensor bahan bakar.
Gambar 3. 6 Rangkaian skematik sensor bahan bakar
Universitas Sumatera Utara
26
Gambar 3.7 memperlihatkan hasil pembacaan sensor tegangan jepit dari
pelampung bahan bakar melalui serial monitor dari arduino software pada saat
bahan bakar dalam keadaan (A) penuh, (B) kosong dan (C) reserve. hasil
pembacaan sensor di simpan dengan nama varibel ‘ sensor1’ .
Grafik pembacaan sensor tingkat bahan bakar
nilai pembacaan sensor
70
60
50
40
30
20
10
0
1
2
3
4
5
6
7
tangki penuh
8
9
10 11 12 13 14 15 16 17 18 19 20 21
waktu (detik)
tangki kosong
tangki reserve
Gambar 3. 7 Grafik pembacaan sensor tengangan pada pelampung bahan bakar
Dari hasil pembacaan sensor tersebut, nilai data di ubah ke dalam satuan
persen (%) dengan rumus:
100
=(
1)
(%)
= (65
1)
100
(%)
65 10
= (65
1)
1,85 (%)
Dimana:
Fuel
: tingkat ketinggian bahan bakar dalam tangki (%)
Universitas Sumatera Utara
27
A
: nilai pembacaan sensor pada saat bahan bakar penuh
B
: nilai pembacaan sensor pada saat bahan bakar kosong
Sensor1: hasil pembacaan sensor
Berikut program menjalankan pembacaan pengukuran level bahan bakar
oleh arduino.
float Sensor1 = analogRead(A2);
delay (1000);
fuel =(66.00 - Sensor1) *1.85;
3.3.3. Pengukuran Tegangan Baterai
Pengukuran tegangan baterai dilakukan dengan memasang sensor tegangan
pada terminal positif dan negatif baterai tersebut seperti pada gambar 3.8.
Gambar 3. 8 Rangkaian skematik sensor tegangan Baterai
Universitas Sumatera Utara
28
Gambar 3.9 memperlihatkan hasil pembacaan sensor tegangan baterai
melalui serial monitor dari arduino software pada saat tegangan baterai sebesar
12V. hasil pembacaan sensor di simpan dengan nama varibel ‘ sensor2’ .
grafik pembacaan sensor tegangan baterai dengan
tegangan 12 Volt
nilai pembacaan Sensor
700
600
500
400
300
200
100
0
1
2
3
4
5
6
7
8
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
waktu (detik)
Gambar 3. 9 Rangkaian skematik sensor tegangan Baterai
Dari hasil pembacaan sensor tersebut, nilai pembacaan diubah kedalam
satuan Volt dengan rumus sebagai berikut:
=
2
12
(
582
)
Dimana:
V
: tegangan baterai (Volt)
Sensor2
: hasil pembacaan sensor tegangan baterai
Berikut program menjalankan pembacaan pengukuran tegangan baterai
oleh arduino.
float
delay
float
delay
Sensor2 = analogRead(A1);
(1000);
battery = Sensor2 * (12.0 / 582.0);
(1000);
Universitas Sumatera Utara
29
3.3.4. Pembacaan status mesin
Pembacaan status mesin bertujuan untuk mengetahui status mesin apakah
dalam keadaan menyala atau tidak. Saat menyala mesin akan menghasilkan
tegangan AC 3 fasa, dengan memanfaatkan keadaan ini maka sebuah dioda bridge
dipasang antara dua kutub generator mesin sepeda motor tersebut sebagai
penyearah gelombang tegangan AC. Kapasitor di pasang pada kutub positif (+) dan
negatif (-) dioda blidge tersebut untuk mengurangi riak tegangan DC keluarannya
dan sebuah resistor sebagai pembatas arus pada salah satu terminal fasa masukan
dioda bridge. Dengan memasang sebuah sensor tegangan untuk mendeteksi ada
tidaknya tegangan pada keluaran dioda bridge tersebut maka arduino dapat
mengetahui status mesin sepda motor. Pembacaan status mesin ini dipasang pada
terminal A0 arduino. Gambar 3.10 memperlihatkan rangkaian skematik dari sensor
tegangan untuk membaca status mesin.
Gambar 3. 10 Rangakaian skematik pembacaan stasus mesin
Universitas Sumatera Utara
30
Pada gambar 3.11 diperlihatkan grafik hasil pembacaan status mesin saat
mesin dalam kondisi mati (OFF) dan hasil pembacaan saat mesin dalam kondisi
menyala (ON). Hasil pembacaan status mesin disimpan dengan nama variabel ‘ val”.
Grafik pembacaan sensor tegangan mesin
Nilai Pembacaan Sensor
700
600
500
400
300
200
100
0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
waktu (detik)
Status mesin menyala
Status mesin mati
Gambar 3. 11 Grafik hasil pembacaan status mesin
Dari hasil pembacaan status mesin tersebut kita lihat bahwa ada
pembedaan antar pembacaan pada kedua kondisi mesin. Status mesin dapat kita
peroleh dengan ketentuan sebagai berikut
ON ==> val > 10
OFF ==> val < 10
Berikut program pembacaan status mesin oleh arduino.
float val = analogRead(A0);
delay(1000);
if (val1>10)
{
engine = "ON";
}
else
{
engine = "OFF";
}
Serial.println(engine);
Universitas Sumatera Utara
31
3.3.5. Pembacaan Status Transmisi
Pembacaan status transmisi dilakukan untuk mengetahui posisi dari sistem
transmisi pada sepeda motor. Kondisi transmisi yang dibaca adalah posisi netral
dan posisi tidak netral. Sepeda motor minerva MX150 sudah dilengkapi dengan
sebuah sakelar sebagai indikator transmisi netral dan tidak. Pada gambar 3.12
merupakan rangkaian
Gambar 3. 12 Rangakian skematik pembacaan status transmisi
Berikut program pembacaan status transmisi oleh arduino.
digitalWrite(pul,HIGH);
delay(100);
int val2 = digitalRead(net);
if (net==HIGH)
{
transmission = "NEUTRAL";
}
Else
{
Transmission = “ON GEAR”;
}
digitalWrite(pul,LOW);
// puldown input neutral
// membaca status transmisi
Universitas Sumatera Utara
32
3.3.6. Power Relay
Power relay dipasang pada kedua terminal sakelar power sepeda motor.
Tegangan masukan untuk menggerakkan relay ini berasal dari keluaran 5 volt
arduino melalui sebuah transistor NPN yang dipicu oleh tegangan keluaran arduino
pada terminal delapan. Pada gambar 3.13 diperlihatkan rangkaian skematik power
relay.
Gambar 3. 13 Rangkaian skematik power relay
Berikut program untuk mengaktifkan relai Power oleh arduino.
digitalWrite(power,LOW);
delay (4000);
Berikut program untuk mematikan relai Power oleh arduino.
digitalWrite(power,HIGH);
3.3.7. Starter Relay
Starter Relay dipasang pada kedua terminal sakelar starter sepeda motor.
Tegangan masukan untuk menggerakkan relay ini berasal dari tegangan keluaran 5
volt arduino melalui sebuah transistor NPN yang dipicu oleh tegangan keluaran
Universitas Sumatera Utara
33
arduino pada terminal sembilan. Pada gambar 3.14 diperlihatkan rangkaian
skematik dari starter relay.
Gambar 3. 14 Rangkaian skematik starter relay
Berikut program untuk mengaktifkan starter relay oleh arduino.
digitalWrite(9,LOW);
delay (3000);
3.3.8. Sim800l
Untuk dapat berkomunikasi dengan arduino, sim800l membutuhkan
setidaknya empat terminal yaitu: VCC (3,7 – 4,2 volt), GND, TX dan MX. Untuk
mendapatkan tegangan antara 3,7 - 4,2 volt dari tegangan keluaran arduino, maka
dibutuhkan sebuah regulator penurun tegangan dari 5 Volt DC menjadi kisaran 3,7
– 4,2 volt DC. Terminal keluaran regulator dipasangkan pada VCC dan GND sim
800l. Terminal TX dipasangkan pada terminal B10 arduino sedangkan terminal MX
sim800l dipasangkan pada terminal B11 arduino. Pada gambar 3.15 diperlihatkan
rangkaian skematik Sim800l.
Universitas Sumatera Utara
34
Gambar 3. 15 Rangkaian skematik Sim800l
Berikut diagram blok dan program sim800l pada arduino.
SoftwareSerial sim800l(11, 10);
String stringPARA =
"AT+HTTPPARA=\"URL\",\"http://autobike.pe.hu/input.php?fuel=";
String stringend = "\"";
String stringPARA2 = "";
String bt = "&battery=";
String en = "&engine_st=";
String tr = "&transmission=";
float fuel;
float battery;
int engine;
int transmission;
void SubmitHttpRequest()
{
stringPARA2 = stringPARA + fuel + bt + battery + en + engine + tr
+ transmission + stringend;
Serial.println(stringPARA2);
sim800l.println("AT+CSQ");
delay(100);
ShowSerialData();
sim800l.println("AT+CGATT?");
delay(100);
Universitas Sumatera Utara
35
ShowSerialData();
sim800l.println("AT+SAPBR=3,1,\"CONTYPE\",\"GPRS\"");//setting
the SAPBR, the connection type is using gprs
delay(1000);
ShowSerialData();
sim800l.println("AT+SAPBR=3,1,\"APN\",\"internet\"");
delay(1000);
ShowSerialData();
sim800l.println("AT+SAPBR=1,1");
delay(2000);
ShowSerialData();
sim800l.println("AT+HTTPINIT"); //init the HTTP request
delay(2000);
ShowSerialData();
sim800l.println(stringPARA2);
delay(1000);
ShowSerialData();
sim800l.println("AT+HTTPACTION=0");
delay(6000);
ShowSerialData();
sim800l.println("AT+HTTPREAD");
ShowSerialData();
delay(300);
checkForResponse();
mySerial.println("");
delay(100);
}
void ShowSerialData()
{
while(sim800l.available()!=0)
Serial.write(sim800l.read());
}
void checkForResponse()
{
while(sim800l.available()!=0)
{
for (int i = 0; i < 22; i++)
{
dLine[i] = sim800l.read();
}
}
Serial.println(dLine[6]);
}
Universitas Sumatera Utara
36
3.4. Perancangan Penjadwalan Sistem
Pada penjadwal akan diatur kapan sepeda motor akan melakukan
pemanasan mesin secara otomatis. Dalam hal ini sepeda motor akan melakukan
pemanasan mesin secara otomatis pada pukul 7:00:00 pada zona waktu GMT+7.
Jika dalam melakukan penyalaan pada mesin sepeda motor tidak berhasil, maka
sistem akan mengulangi penyalaan sebanyak 3 kali. Berikut program arduino untuk
melakukan penjadwalan pemanasan mesin secara otomatis.
void start_engine()
{
digitalWrite(power,LOW);
delay (4000);
sensor();
if(fuel>31.45 && battery > 10 && transmission == "NEUTRAL" &&
engine == "OFF")
{
cacah = 0;
while (engine == "OFF" && cacah