DAFTAR PUSTAKA
Arikunto, S., & Jabar, C. S. A. (2014). Evaluasi program pendidikan : Pedoman Teoretis Praktis bagi Praktisi Pendidikan. Jakarta: Bumi Aksara.
Aryantika, M. E., Darmawiguna, I. G. M., & Putrama, I. M. (2015). Pengembangan Kamus Kolok Visual Berbasis Android Sebagai Media Edukatif Mempelajari Bahasa Penyandang Tuna Rungu di Desa Bengkala. Jurnal Karmapati, 4(4), 1–8.
Fathulloh, & Budiana, N. S. (2015). Akuaponik Panen Sayur Bonus Ikan. Jakarta:
Penebar Swadaya.
Firly, N. (2018). Create Your Own Android Application. Jakarta: Elex Media Komputindo.
Firrizqika, A. (2018). Definisi dan Manfaat Internet of Things. Retrieved May 23, 2019, from www.plimbi.com
Fraifer, M., & Fernström, M. (2016). Designing an IoT Smart Parking Prototype System. Jitter, 1(December), 1–12.
Haqim, K. R., Permana, A. G., & Sunarya, U. (2018). Perancangan Web Monitoring Dan Kontrolling Aquaponic Untuk Budidaya Ikan Lele Berbasis Internet Of Things Designing Web Monitoring and Controlling Aquaponic For Cultivation of Catfish Farming Based On Internet of Things, 4(3), 2786–2808.
Haryanto, B., Ismail, N., & Pristianto, E. J. (2018). Sistem Monitoring Suhu dan Kelembapan Secara Nirkabel pada Budidaya Tanaman Hidroponik. Jurnal Teknologi Rekayasa, 3(1), 47. https://doi.org/10.31544/jtera.v3.i1.2018.47-54
Hendrawati, T. D., Wicaksono, Y. D., & Andika, E. (2018). Internet of Things : Sistem Kontrol-Monitoring Daya Perangkat Elektronika, 3(2), 177–184.
https://doi.org/10.31544/jtera.v3.i2.2018.177-184
Huda, C. (2017). Pengenalan Algoritma. Retrieved April 29, 2019, from http://binus.ac.id/
Isa, I. G. T., & Hartawan, G. P. (2017). Perancangan Aplikasi Koperasi Simpan Pinjam Berbasis Web (Studi Kasus Koperasi Mitra Setia). Jurnal Ilmiah Ilmu Ekonomi, 5, 139–151.
Justicia, L. T., Tolle, H., & Amalia, F. (2017). Rancang Bangun Aplikasi
Messaging Berbasis Voice Interaction Bagi Penderita Tunanetra Pada Sistem
Operasi Android. Jurnal Pengembangan Teknologi Informasi Dan Ilmu
Komputer, 1(7), 620–627. Retrieved from https://www.researchgate.net/profile/Faizatul_Amalia/publication/31918745 0_Rancang_Bangun_Aplikasi_Messaging_Berbasis_Voice_Interaction_Bagi _Penderita_Tunanetra_Pada_Sistem_Operasi_Android/links/599a85b1a6fdcc 261587f7a0/Rancang-Bangun-Aplikasi-Messaging-B
Kadir, A. (2013). Dasar Pemograman Mikrokontroller Arduino (2nd ed.). Jakarta:
Elex Media Komputindo.
Karmandia, D. P., Susanto, E., & Halomoan, J. (2017). Perancangan Aplikasi Android Untuk Monitoring Dan Controlling Pada Sistem Otomatisasi Rumah Design of Android Applications for Monitoring and Controlling on Home Automation Systems, 4(3), 3278–3285.
Kumar, N. (2018). Smart Aquaponic System with IOT. International Journal for Research in Applied Science and Engineering Technology, 6(7), 411–415.
https://doi.org/10.22214/ijraset.2018.7057
Kurniawan, D., & Nurraharjo, E. (2018). Sistem Monitoring Suhu Dengan Metode Wireless Real-Time, 239–242.
Kurniawati, P. (2018). Pengujian Sistem. Retrieved April 29, 2019, from https://medium.com/
Latifa, U., & Saputro, J. S. (2018). Perancangan Robot Arm Gripper Berbasis Arduino Uno, 3(2), 138–141.
Limantara, D. A., Cahyo, Y., Purnomo, S., & Mudjanarko, S. W. (2017).
Pemodelan Sistem Pelacakan LOT Parkir Kosong Berbasis Sensor Ultrasonic Dan Internet Of Things ( IOT ) Pada Lahan Parkir Diluar Jalan. Seminar Nasional Sains Dan Teknologi, 1(2), 1–10.
Meutia, E. D. (2015). Internet of Things – Keamanan dan Privasi. Seminar Nasional Dan Expo Teknik Elektro 2015, 85–89.
Mudjanarko, Wiwoho, S., Winardi, S., & Limantara, A. D. (2017). Pemanfaatan Internet of Things Sebagai Solusi Manajemen Transportasi Kendaraan Sepeda Motor. Prosiding Seminar Nasional Aplikasi Teknologi & Prasarana Wilayah (ATPW), 5.
Mulqan, M., Afdhal, S., Rahimi, E., & Dewiyanti, I. (2017). Pertumbuhan dan Kelangsungan Hidup Benih Ikan Nila Gesit ( Oreochromis niloticus ) Pada Sistem Akuaponik Dengan Jenis Tanaman Yang Berbeda The Growth and Survival rates of Tilapia Juvenile ( Oreochromis niloticus ) in Aquaponics Systems with Different Pla, 2, 183–193.
Nuha, F. U., Rizal, Z. A., & Permatasari, D. D. (2017). Shonicno ( Smart Garden
Home Aquaponic Based Arduino ), 05(01), 25–30.
Prayitno, W. A., Muttaqin, A., & Syauqy, D. (2017). Sistem Monitoring Suhu , Kelembaban , Dan Pengendali Penyiraman Tanaman Hidroponik menggunakan Blynk Android. Jurnal Pengembangan Teknologi Informasi Dan Ilmu Komputer, Universitas Brawijaya, 1(4), 292–297. Retrieved from http://j-ptiik.ub.ac.id/index.php/j-ptiik/article/download/87/46/
Purkayastha, A. (2014). Hand Gestures Controlled Robotic Arm. Journal Of International Academic Research For Multidisciplinary, 2(4)(pp. 234-140).
Puspasari, I., & Triwidyastuti, Y. (2018). Otomasi Sistem Hidroponik Wick Terintegrasi pada Pembibitan Tomat Ceri, 7(1).
Putra, S. A., & Sunarya, U. (2017). Perancangan Aplikasi Monitoring Dan Kendali Sistem Pada Sistem Keamanan Smarthome Berbasis Android. E-Proceeding of Engineering, 4(3), 4131–4137.
Ramdhoni, R. ; S. S. ; N. N. (2018). Rancang Bangun Sistem Kontrol Dan Monitoring Lampu Otomatis Menggunakan Arduino Dengan Metode Fuzzy Logic Berbasis Android, 12.
Ray, P. P. (2017). Internet of things for smart agriculture: Technologies, practices and future direction. Journal of Ambient Intelligence and Smart Environments, 9(4), 395–420. https://doi.org/10.3233/AIS-170440
Rinaldi, R. (2019). Penerapan Unified Modelling Language (Uml) Dalam Analisis Dan Perancangan Aplikasi E-Learning. Jurnal SIMTIKA, 2(1), 43–50.
Rozaq, I. A., & Yulita, N. (2017). Uji Karakteristik Sensor Suhu DS18B20 Waterproof Berbasis Arduino Uno Sebagai Salah Satu Parameter Kualitas Air.
Safaat, N. (2012). Android: Pemrograman Aplikasi Mobile Smartphone dan Tablet PC Berbasis Android. Bandung: Informatika Bandung.
Saparinto, C., & Susiana, R. (2014). Panduan Lengkap Budi Daya Ikan dan Sayuran dengan Sistem Akuaponik (1st ed.). Yogyakarta: Andi Publisher.
Saputra, I., Triyanto, D., & Ruslianto, I. (2015). Sistem Kendali Suhu, Kelembaban Dan Level Air Pada Pertanian Pola Hidroponik, 03(1), 1–10.
Saputro, T. T. (2017). Wemos D1, Board ESP8266 Yang Kompatible dengan Arduino. Retrieved May 5, 2019, from https://embeddednesia.com/
Septiana Devi, N., Sistem Kontrol Suhu Dan Kelembaban Ruangan Pada, P.,
Erwanto, D., Bismo Utomo, Y., Elektro Universitas Islam Kadiri-Kediri Jl
Sersan Suharmaji No, T., & Kediri, M. (2018). Perancangan Sistem Kontrol
Suhu dan Kelembaban Ruangan pada Budidaya Jamur Tiram Berbasis Internet of Things. Multitek Indonesia: Jurnal Ilmiah, 12(2), 104–113. Retrieved from http://journal.umpo.ac.id/index.php/multitek
Sommerville, I. (2011). Software Engineering. (M. Horton, Ed.) (9th ed.). Boston:
Pearson.
Sugiyono. (2018). Metode Penelitian Kuantitatif, Kualitatif, R&D (23rd ed.).
Bandung: Alfabeta.
Suprianto, D., & Agustina, R. (2012). Pemrograman Aplikasi Android. Bandung:
MediaKom.
Syafiqoh, U., Sunardi, S., & Yudhana, A. (2018). Pengembangan Wireless Sensor Network Berbasis Internet of Things untuk Sistem Pemantauan Kualitas Air dan Tanah Pertanian. Jurnal Informatika: Jurnal Pengembangan IT, 3(2), 285–289. https://doi.org/10.30591/jpit.v3i2.878
Tong, J. (2016). Design and implementation of music teaching platform in college based on android mobile technology. International Journal of Emerging
Technologies in Learning, 11(5), 4–9.
https://doi.org/10.3991/ijet.v11i05.5686
Vyanza, V. E., Irawan, B., & Setianingsih, C. (2017). Perancangan Pintu Pintar Untuk Mengenali Wajah Nyata Berbasis Pengolahan Citra Menggunakan Metode Principal Component Analysis Dan Template Matching Correlation Design of Smart Door System for Live Face Recognition Based on Image Processing Using Principa, 4(3), 4066–4073.
Waleed, K., Kusuma, P. D., & Setiamingsih, C. (2019). Sistem Pemantauan Dan Klasifikasi Kondisi Pencemaran Air Sungai Dengan Metode Fuzzy Logic Monitoring And Classification System Of River Water Pollution, 6(1), 1604–
1610.
LEMBAR KONSULTASI BIMBINGAN SKRIPSI
UNIVERSITAS BSI
■
NIM : 17150072
■
Nama Lengkap : Nur Ariska Asmarani
■
Dosen Pembimbing : Erfian Junianto, ST., M.Kom
■
Judul Skripsi : Aplikasi Android Monitoring dan Controlling Akuaponik berbasis Internet of Things
No. Tanggal
Bimbingan Pokok Bahasan Paraf Dosen
Pembimbing
1. 22 April 2019 Pengajuan Judul
2. 26 April 2019 Pengajuan BAB I
3. 02 Mei 2019 ACC BAB I
4. 06 Mei 2019 Pengajuan BAB II
5. 13 Mei 2019 ACC BAB II
6. 24 Mei 2019 Pengajuan BAB III
7. 27 Mei 2019 ACC BAB III dan Pengajuan BAB IV
8. 01 Juli 2019 ACC BAB IV
9. 10 Juli 2019 ACC Aplikasi
10. 26 Juli 2019 ACC Abstrak
11. 31 Juli 2019 ACC Keseluruhan Catatan untuk Dosen Pembimbing
Bimbingan Skripsi
Dimulai pada tanggal : 22 April 2019
Diakhiri pada tanggal : 31 Juli 2019
Jumlah pertemuan bimbingan : 11 Pertemuan
Disetujui oleh, Dosen Pembimbing
Erfian Junianto, ST., M.Kom
DAFTAR RIWAYAT HIDUP
I. Biodata Mahasiswa
NIM : 17150072
Nama Lengkap : Nur Ariska Asmarani
Lahir : Lampung Barat, 3 Agustus 1997
Alamat Lengkap : Jl. Durachman RT 002/RW 005, Tugusari, Sumberjaya, Lampung Barat
No. Hp : 085783069215
Email : [email protected]
II. Pendidikan
1. SD : SDN 2 Tugusari lulus tahun 2009 2. SMP : SMPN 1 Sumberjaya lulus tahun 2012 3. SMA : SMAN 1 Sumberjaya lulus tahun 2015
III.
Riwayat Pengalaman Berorganisasi
1. Paskibra Kecamatan Sumberjaya tahun 2012-2013
2. Sekretaris umum OSIS SMAN 1 Sumberjaya tahun 2013-2014 3. Paskibraka Kabupaten Lampung Barat tahun 2013-2014
4. Purna Paskibraka Indonesia Kabupaten Lampung Barat 2014-2015 5. Sekretaris FOKMATIF Universitas BSI tahun 2016-2017
6. Ketua Divisi Humas HIMATIF Universitas BSI tahun 2017-2018
Bandung, 1 Agustus 2019
Nur Ariska Asmarani
LAMPIRAN
1. Listing Program Monitoring
if (dataSnapshot.exists()) { progressDialog.dismiss();
Double tmpValue =
dataSnapshot.child("temperature_value").getValue(Double.class);
textSuhu =
Objects.requireNonNull(getView()).findViewById(R.id.txt_Suhu);
textSuhu.setText(tmpValue.toString());
Double phValue =
dataSnapshot.child("ph_value").getValue(Double.class);
textPh = getView().findViewById(R.id.txt_Ph);
textPh.setText(phValue.toString());
}else {
progressDialog.dismiss();
} }
2. Listing Program Controlling
timePicker = view.findViewById(R.id.time_picker);
aSwitch = view.findViewById(R.id.sw_jadwal);
aSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
Calendar calendar = Calendar.getInstance();
if (Build.VERSION.SDK_INT>=23) {
calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH),
calendar.get(Calendar.DAY_OF_MONTH),
timePicker.getHour(), timePicker.getMinute(),0);
}else {
calendar.set(calendar.get(Calendar.YEAR),calendar.get(Calendar .MONTH), calendar.get(Calendar.DAY_OF_MONTH),
timePicker.getCurrentHour(),timePicker.getCurrentMinute(), 0);
}
if (isChecked){
// jika checked nyalakan alaram
setAlarm(calendar.getTimeInMillis());
} else {
// jika tidak matikan stopAlarm();
} } });
myRef.child("pump_status").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
final String value = dataSnapshot.getValue(String.class);
textPumpStatus =
getView().findViewById(R.id.txt_pump_status);
textPumpStatus.setText(value);
Pump = getView().findViewById(R.id.cardPump);
Pump.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) { if (value.equals("OFF")){
Toast.makeText(getContext(),"Pompa Dinyalakan",Toast.LENGTH_LONG).show();
myRef.child("pump_status").setValue("ON");
} else {
Toast.makeText(getContext(),"Pompa Dimatikan",Toast.LENGTH_LONG).show();
myRef.child("pump_status").setValue("OFF");
} } });
if (value.equals("OFF")){
Pump.setCardBackgroundColor(getResources().getColor(R.color.co lorOFF));
}else {
Pump.setCardBackgroundColor(getResources().getColor(R.color.co lorON));
} }
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
} });
myRef.child("feed_status").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
final String value = dataSnapshot.getValue(String.class);
textFeedStatus =
getView().findViewById(R.id.txt_feed_status);
textFeedStatus.setText(value);
Feed = getView().findViewById(R.id.cardFeed);
Feed.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) { if (value.equals("OFF")){
Toast.makeText(getContext(),"Pakan Dinyalakan",Toast.LENGTH_LONG).show();
myRef.child("feed_status").setValue("ON");
} else {
myRef.child("feed_status").setValue("OFF");
} } });
if (value.equals("OFF")){
Feed.setCardBackgroundColor(getResources().getColor(R.color.co lorOFF));
}else {
Feed.setCardBackgroundColor(getResources().getColor(R.color.co lorON));
} }
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
} });
return view;
}
private void setAlarm(long time){
AlarmManager am =
(AlarmManager)this.getActivity().getSystemService(Context.ALAR M_SERVICE);
Intent intent = new
Intent(getActivity(),MyAlarm.class);
PendingIntent pendingIntent =
PendingIntent.getBroadcast(getActivity(),0, intent, 0);
am.setRepeating(AlarmManager.RTC,time, AlarmManager.INTERVAL_DAY, pendingIntent);
Toast.makeText(getActivity(),"Alarm is set", Toast.LENGTH_SHORT).show();
}
private void stopAlarm(){
AlarmManager am =
(AlarmManager)this.getActivity().getSystemService(Context.ALAR M_SERVICE);
Intent intent = new
Intent(getActivity(),MyAlarm.class);
PendingIntent pendingIntent =
PendingIntent.getBroadcast(getActivity(),0, intent, 0);
am.cancel(pendingIntent);
pendingIntent.cancel();
Toast.makeText(getActivity(),"Alarm is stop", Toast.LENGTH_SHORT).show();
} }
3. Listing Program Arduino IDE
#include <ESP8266WiFi.h>
#include <FirebaseArduino.h>
#include <Servo.h>
#include <OneWire.h>
#include <DallasTemperature.h>
// FIREBASE & WIFI CONFIG
#define FIREBASE_HOST "akuaponiku.firebaseio.com"
#define FIREBASE_AUTH "QxuSJHjWxRKe0j6f5cusAmmcdmGWLTJVmYXNoSBR"
#define WIFI_SSID "KAKA"
#define WIFI_PASSWORD "takodekode"
// RELAY & SERVO CONFIG
#define RELAY D3
#define SERVO D2 Servo myservo;
#define ONE_WIRE_BUS D4
// PH CONFIG
float calibration = 30.60; //change this value to calibrate const int analogInPin = A0;
int sensorValue = 0;
unsigned long int avgValue;
float b;
int buf[10],temp;
void setup() {
Serial.begin(9600);
// connect to wifi.
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
Serial.print("connecting");
while (WiFi.status() != WL_CONNECTED) { Serial.print(".");
delay(500);
}
Serial.println();
Serial.print("connected: ");
Serial.println(WiFi.localIP());
Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH); // setuo firebase
myservo.attach(SERVO); // attaches the servo on pin D2 to the servo object
pinMode(RELAY, OUTPUT); // attaches the relay on pin D3
// Start up the library sensors.begin();
}
String feed_status = "OFF";
String pump_status = "ON";
void loop() {
// get value feed
Serial.print("Feed : ");
feed_status = Firebase.getString("feed_status");
Serial.println(feed_status);
// handle error
if (Firebase.failed()) {
Serial.print("Get /feed_status from firebase failed:");
Serial.println(Firebase.error());
return;
}
delay(1000);
if (feed_status == "ON") { servo();
}
// get value pump
Serial.print("Pump : ");
pump_status = Firebase.getString("pump_status");
Serial.println(pump_status);
// handle error
if (Firebase.failed()) {
Serial.print("Get /pump_status from firebase failed:");
Serial.println(Firebase.error());
return;
}
delay(1000);
relay(pump_status);
// run PH sensor phSensor();
}
void phSensor(){
for(int i=0;i<10;i++) {
buf[i]=analogRead(analogInPin);
delay(30);
}
for(int i=0;i<9;i++) { for(int j=i+1;j<10;j++) { if(buf[i]>buf[j]) { temp=buf[i];
buf[i]=buf[j];
buf[j]=temp;
} } }
avgValue=0;
for(int i=2;i<8;i++) avgValue+=buf[i];
float pHVol=(float)avgValue*5.0/1024/6;
float phValue = -5.70 * pHVol + calibration;
Serial.print("PH Value = ");
Serial.println(phValue);
delay(500);
// set ph_value to firebase
Firebase.setFloat("ph_value", phValue);
// handle error
if (Firebase.failed()) {
Serial.print("set /ph_value failed:");
Serial.println(Firebase.error());
return;
}
delay(500);
// temparture temperature();
}
void servo(){
myservo.write(0); // set to position 0 degress myservo.write(90); // set to 90 degress
delay(1000);
myservo.write(0); // back to 0 degress delay(1000);
// set feed_status off
Firebase.setString("feed_status", "OFF");
// handle error
if (Firebase.failed()) {
Serial.print("setting /message failed:");
Serial.println(Firebase.error());
return;
}
delay(1000);
}
void relay(String relay_status){
if (relay_status == "OFF"){
digitalWrite(RELAY, HIGH);
} else {
digitalWrite(RELAY, LOW);
} }
void temperature(){
sensors.requestTemperatures(); // Send the command to get temperatures
float tempC = sensors.getTempCByIndex(0);
if(tempC != DEVICE_DISCONNECTED_C) {
Serial.print("Temperature for the device 1 (index 0) is: ");
Serial.println(tempC);
// set value temperature to firebase
Firebase.setFloat("temperature_value", tempC);
// handle error
if (Firebase.failed()) {
Serial.print("firebase /temperature_value failed:");
Serial.println(Firebase.error());
return;
} } else {
Serial.println("Error: Could not read temperature data");
}
delay(1000);
}