DAFTAR PUSTAKA
1. Agung M., Bangun, 2014, Arduino for Beginners, Surya University, Tangerang. 2. McRoberts, Michael, 2010, Beginning Arduino, Technology In Action, United States of America. 3. Nugroho, Triyan Wahyu, 2015, Skripsi: Rancang bangun Alat pengirim Sinyal Arus 4-20 mA Dari Pemancar Suhu Melalui Jaringan GPRS, Sekolah Tinggi Teknologi Nasional, Yogyakarta. 4. Robert Faludi, 2010, Building Wireless Sensor Network, United State of America, O’Reilly Media. 5. Simon, Monk, 2010, 30 Arduino Projects for the Evil Genius, United States of America: McGraw-Hill. 6. Stalling, W, 2005, Wireless Communications and Network, 2nd Ed., USA: Pearson Education, Inc. 7. Faizal, Ahmad, 2012, Belajar Menggunakan Arduino, Yogyakarta: Graha Ilmu 8. Gestwicki, P., & Ahmad, K., App inventor for Android with Studio Based Learning, J. Comput. Sci. Coll, 2011
9. Warangkiran, Immanuel, 2014, Jurnal: Perancangan Kendali Lampu Berbasis Android, Universitas Sam Ratulangi, Manado.
60 http://digilib.mercubuana.ac.id/
LAMPIRAN-LAMPIRAN
61 http://digilib.mercubuana.ac.id/
Lampiran 1 Diagram alir program selengkapnya Mulai Inisialisasi Input Alarm Warning Inisialisasi Input Alarm Critical
Catat status alarm di microSD
Koneksi WiFi ke Android?
Tidak
Ya Kirim Alarm Status via WiFi Tampilkan Status Alarm di Aplikasi Android Switch Alarm diaktifkan
Ya
Alarm Warning aktif? Tidak Alarm Critical aktif? Tidak Matikan Arduino Putus Koneksi WiFi Android
Selesai
62 http://digilib.mercubuana.ac.id/
Ya
Koneksikan WiFi Android ke Arduino
Lampiran 2 Program Arduino //include Bridge, Bridge Server, dan Bridge Client untuk REST request #include
#include #include //FileIO.h untuk pustaka komunikasi dengan SD card #include YunServer server; void setup() { //Inisialisasi Bridge, dan FileSystem pinMode(13, OUTPUT); digitalWrite(13, LOW); Bridge.begin(); digitalWrite(13, HIGH); FileSystem.begin();
}
//Menerima koneksi hanya dari localhost server.listenOnLocalhost(); server.begin();
void loop() { //Inisialisasi dataString untuk pembacaan status alarm String dataString; //Pencatatan status alarm Warning D4,D6,D8,D9,D10,D12 for (int digitalPin = 0; digitalPin < 12; digitalPin++) { int sensor = digitalRead(digitalPin); //Jika alarm aktif, lakukan pencatatan if (sensor == 1){ dataString += getTimeStamp(); dataString += " << "; dataString += "Alarm "; dataString += String(digitalPin); dataString += " = "; dataString += String(sensor); dataString += ">>\n"; 63 http://digilib.mercubuana.ac.id/
}
} delay(50);
//Tulis ke SD Card File dataFile = FileSystem.open("/mnt/sd/www/datalog.txt", FILE_APPEND); if (dataFile) { dataFile.println(dataString); dataFile.close(); Serial.println(dataString); } //Jika terjadi error, tampilkan notifikasi else { Serial.println("error saat membuka datalog.txt"); } delay(50); // Get clients dari server YunClient client = server.accept(); /*Jika klien terhubung, proses requests *putus koneksi ketika selesai*/ if (client) { //proses request process(client); //putus koneksi client.stop(); } }
delay(50);
//Fungsi Parsing REST command void process(YunClient client){ String command = client.readStringUntil('/'); //jika perintah "digital" if (command == "digital") { digitalCommand(client); } //jika perintah "analog" if (command == "analog") { analogCommand(client); 64 http://digilib.mercubuana.ac.id/
}
} //jika perintah "mode" if (command == "mode") { modeCommand(client); }
//Fungsi DIGITAL command void digitalCommand(YunClient client) { int pin, value; //baca nomor pin pin = client.parseInt(); //Jika karakter berikutnya adalah '/' yg berarti //memiliki URL dengan value if (client.read() == '/') { value = client.parseInt(); digitalWrite(pin, value); } else { value = digitalRead(pin); } //Kirim feedback ke client client.print(F("Pin D")); client.print(pin); client.print(F(" set to ")); client.println(value); //Update datastore key dengan pin value saat ini String key = "D"; key += pin; Bridge.put(key, String(value)); } //Fungsi ANALOG command void analogCommand(YunClient client) { int pin, value; pin = client.parseInt(); //Jika karakter berikutnya '/' maka memiliki URL dengan nilai if (client.read() == '/') { //Baca nilai dan jalankan perintah 65 http://digilib.mercubuana.ac.id/
value = client.parseInt(); analogWrite(pin, value); // Kirim feedback ke client client.print(F("Pin D")); client.print(pin); client.print(F(" set to analog ")); client.println(value); //Update datastore key dengan pin value saat ini String key = "D"; key += pin; Bridge.put(key, String(value));
} else { //Baca analog pin value = analogRead(pin);
//Kirim feedback ke client client.print(F("Pin A")); client.print(pin); client.print(F(" reads analog ")); client.println(value);
}
}
//Update datastore key dengan pin value saat ini String key = "A"; key += pin; Bridge.put(key, String(value));
//Fungsi MODE command void modeCommand(YunClient client) { int pin; //Baca nomor pin pin = client.parseInt(); //Jika karakter berikutnya berupa '/' maka URL salah if (client.read() != '/') { client.println(F("error")); return; }
66 http://digilib.mercubuana.ac.id/
String mode = client.readStringUntil('\r'); if (mode == "input") { pinMode(pin, INPUT); //Kirim feedback ke client client.print(F("Pin D")); client.print(pin); client.print(F(" configured as INPUT!")); return; } if (mode == "output") { pinMode(pin, OUTPUT); // Send feedback to client client.print(F("Pin D")); client.print(pin); client.print(F(" configured as OUTPUT!")); return; }
}
client.print(F("error: invalid mode ")); client.print(mode);
//Fungsi untuk mencatat waktu String getTimeStamp() { String result; Process time; time.begin("date"); time.addParameter("+%D-%T"); time.run(); while(time.available()>0) { char c = time.read(); if(c != '\n') result += c; } }
return result;
67 http://digilib.mercubuana.ac.id/
Lampiran 3 Program Android dengan App Inventor
68 http://digilib.mercubuana.ac.id/
69 http://digilib.mercubuana.ac.id/
70 http://digilib.mercubuana.ac.id/
71 http://digilib.mercubuana.ac.id/