• Tidak ada hasil yang ditemukan

1. Membuat tampilan aplikasi yang lebih menarik agar pengguna lebih nyaman dalam penggunaan aplikasi.

2. Menambah indikator kelebihan berat agar mengetahui kelebihan berat jika buzzer tidak berfungsi.

52

DAFTAR PUSTAKA

[1] Fauzi1,N.A., Hapsari, G.I., Rosmiati, M., 2019. Prototipe Sistem Monitoring Berat Muatan Truk. e-Proceeding of Applied Science, Vol. 5(3), 2433-2440.

[2] Bus-Truck.id. 2018. Menhub: 63 Persen Kecelakaan di Jalan Raya karena Kendaraan Overload,https://bus-truck.id/berita/menhub-63-persen-kecelakaan-di-jalan-raya-karena-kendaraan-overload, diakses 10 November 2020.

[3] Arifin, J., Sumardi, Setiawan, 2011. Model Timbangan Digital Menggunakan Load Cell.

[4] Adzani, M.R., 2014. Prototipe Sistem Monitoring Berat dan Posisi Kendaraan Bermuatan Dengan Menggunakan PC.

[5] Peraturan Daerah Istimewa Yogyakarta, 2010. Perda DIY No. 4 Tahun 2010 ttg Kelebihan Muatan Angkutan Barang.

[6] Robotshop, 2011. Datasheet. 3133 - Micro Load Cell (0-5kg) - CZL635, http://yourduino.com/docs/Loadcell-datasheet-3133.pdf, diakses pada 15 November 2020.

[7] Avia semiconductor Datasheet: 24-Bit Analog-to-Digital Converter (ADC) for Weigh Scales. Pp.1-9.

[8] Nugraha, Agung, D., 2017. Timbangan Gantung Digital dengan Sensor HX711 (Load Cell) Berbasis Arduino Uno.

[9] Espressif. (2015). ESP8266EX Datasheet. Espressif Systems Datasheet, pp. 1-31. Diakses dari

https://www.adafruit.com/images/productfiles/2471/0AESP8266__Datasheet__EN_

v4.3.pdf pada 20 November, 13.45 WIB.

[10] Darmawan, C. W., Sompie, S. R. U. A., Kambey, F. D., 2020. Implementasi Internet of Things Pada Monitoring Kecepatan Kendaraan Bermotor. Jurnal Teknik Informatika, Vol. 1(1), 1-10.

[11] Dicoding, 2019. Apa itu Android Studio dan Android SDK?.

https://www.dicoding.com/blog/apa-itu-android-studio-dan-android-sdk/ , diakses pada 10 Desember 2020.

[12] Sandy, L. A., Januar, R., Hariadi, R. R., 2017. Rancang Bangun Aplikasi Chat pada Platform Android dengan Media Input berupa Canvas dan Shareable Canvas untuk Bekerja Dalam Satu Canvas secara Online. Jurnal Teknik ITS, Vol. 6 (2), 2337-

53

LAMPIRAN

Lampiran 1. Data Pengujian Sensor Load Cell

Tabel L1. Hasil Pengukuran Load Cell Prototipe Truk 1 Jumlah

4 2562 2.48 97.52

Tabel L2. Hasil Pengukuran Load Cell Prototipe Truk 2

3000

Lampiran 2. Listing Program Prototipe Truk 1

#include <HX711.h>

#include <ESP8266WiFi.h>

#include <FirebaseESP8266.h>

#define calibration_factor 184440

#define LOADCELL_DOUT_PIN D1

#define LOADCELL_SCK_PIN D2

#define PIN_BUZZER D6

HX711 scale;

unsigned long myTime = 0;

#define WIFI_SSID "Hormes"

#define WIFI_PASSWORD "Orion007"

#define DATABASE_URL "arduino-c263b.firebaseio.com/"

FirebaseData fbdo;

struct myMillis{

unsigned long offset=0;

unsigned long get(){

return millis()-offset;

}

void reset(){

scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);

scale.set_scale(calibration_factor);

scale.tare();

pinMode(PIN_BUZZER, OUTPUT);

WiFi.begin(WIFI_SSID, WIFI_PASSWORD);

Serial.print("Connecting to Wi-Fi");

while (WiFi.status() != WL_CONNECTED) {

Serial.print(".");

delay(300);

}

Serial.println();

Serial.print("Connected with IP: ");

Serial.println(WiFi.localIP());

Serial.println();

Serial.printf("Firebase Client v%s\n\n", FIREBASE_CLIENT_VERSION);

Firebase.begin(DATABASE_URL,

"5JQJKz6Ni4hv9gFpTfmKAXdOQsQuAEquiz8Dbm5c");

delay(1);

Firebase.setFloat(fbdo, "/Truk1/Berat", 0);

Firebase.setString(fbdo, "/Truk1/Buzzer", "OFF");

Firebase.setString(fbdo, "/Truk1/Reset", "OFF");

Firebase.setFloat(fbdo, "/Truk1/Waktu", 0);

}

void loop() {

MM.reset();

Serial.print("Reading: ");

Serial.print(scale.get_units(), 3);

Serial.print(" kg");

Serial.println();

if(Firebase.getString(fbdo, "/Truk1/Buzzer")) {

if(fbdo.dataType()=="string") {

String buzzerstatus = fbdo.stringData();

if(buzzerstatus == "OFF" && scale.get_units(3) > 3) {

Firebase.setString(fbdo, "/Truk1/Buzzer", "ON");

digitalWrite(PIN_BUZZER, HIGH);

Serial.println("Buzzer Nyala");

delay(1);

}else if(buzzerstatus == "ON2" && scale.get_units(3) > 3){

digitalWrite(PIN_BUZZER, LOW);

Serial.println("Buzzer Mati");

delay(1);

}else if(scale.get_units(3) < 3 ){

Firebase.setString(fbdo, "/Truk1/Buzzer", "OFF");

digitalWrite(PIN_BUZZER, LOW);

if(Firebase.getString(fbdo, "/Truk1/Reset")) {

if(fbdo.dataType()=="string") {

String resetstatus = fbdo.stringData();

if(resetstatus == "ON") {

scale.tare();

Firebase.setString(fbdo, "/Truk1/Reset", "OFF");

Serial.println("Tare");

}

if (Firebase.ready()) {

Firebase.setFloat(fbdo, "/Truk1/Berat", scale.get_units(3));

delay(1);

Serial.printf("Get Firebase ... %s\n", Firebase.getFloat(fbdo, "/Truk1/Berat") ? String(fbdo.floatData()).c_str() : fbdo.errorReason().c_str());

myTime = MM.get();

Serial.printf("%lu milisecond\n", myTime);

Firebase.setFloat(fbdo, "/Truk1/Waktu", myTime);

} }

Lampiran 3. Listing Program Prototipe Truk 2

#include <HX711.h>

#include <ESP8266WiFi.h>

#include <FirebaseESP8266.h>

#define calibration_factor 184440

#define LOADCELL_DOUT_PIN D1

#define LOADCELL_SCK_PIN D2

#define PIN_BUZZER D6

HX711 scale;

unsigned long myTime = 0;

#define WIFI_SSID "Hormes"

#define WIFI_PASSWORD "Orion007"

#define DATABASE_URL "arduino-c263b.firebaseio.com/"

FirebaseData fbdo;

struct myMillis{

unsigned long offset=0;

unsigned long get(){

return millis()-offset;

}

void reset(){

scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);

scale.set_scale(calibration_factor);

scale.tare();

pinMode(PIN_BUZZER, OUTPUT);

WiFi.begin(WIFI_SSID, WIFI_PASSWORD);

Serial.print("Connecting to Wi-Fi");

while (WiFi.status() != WL_CONNECTED) {

Serial.print(".");

delay(300);

}

Serial.println();

Serial.print("Connected with IP: ");

Serial.println(WiFi.localIP());

Serial.println();

Serial.printf("Firebase Client v%s\n\n", FIREBASE_CLIENT_VERSION);

Firebase.begin(DATABASE_URL,

"5JQJKz6Ni4hv9gFpTfmKAXdOQsQuAEquiz8Dbm5c");

delay(1);

Firebase.setFloat(fbdo, "/Truk2/Berat", 0);

Firebase.setString(fbdo, "/Truk2/Buzzer", "OFF");

Firebase.setString(fbdo, "/Truk2/Reset", "OFF");

Firebase.setFloat(fbdo, "/Truk2/Waktu", 0);

}

void loop() {

MM.reset();

Serial.print("Reading: ");

Serial.print(scale.get_units(), 3);

Serial.print(" kg");

Serial.println();

if(Firebase.getString(fbdo, "/Truk2/Buzzer")) {

if(fbdo.dataType()=="string") {

String buzzerstatus = fbdo.stringData();

if(buzzerstatus == "OFF" && scale.get_units(3) > 3) {

Firebase.setString(fbdo, "/Truk2/Buzzer", "ON");

digitalWrite(PIN_BUZZER, HIGH);

Serial.println("Buzzer Nyala");

delay(1);

}else if(buzzerstatus == "ON2" && scale.get_units(3) > 3){

digitalWrite(PIN_BUZZER, LOW);

Serial.println("Buzzer Mati");

delay(1);

}else if(scale.get_units(3) < 3 ){

Firebase.setString(fbdo, "/Truk2/Buzzer", "OFF");

digitalWrite(PIN_BUZZER, LOW);

if(Firebase.getString(fbdo, "/Truk2/Reset")) {

if(fbdo.dataType()=="string") {

String resetstatus = fbdo.stringData();

if(resetstatus == "ON") {

scale.tare();

Firebase.setString(fbdo, "/Truk2/Reset", "OFF");

Serial.println("Tare");

}

if (Firebase.ready()) {

Firebase.setFloat(fbdo, "/Truk2/Berat", scale.get_units(3));

delay(1);

Serial.printf("Get Firebase ... %s\n", Firebase.getFloat(fbdo, "/Truk2/Berat") ? String(fbdo.floatData()).c_str() : fbdo.errorReason().c_str());

myTime = MM.get();

Serial.printf("%lu milisecond\n", myTime);

Firebase.setFloat(fbdo, "/Truk1/Waktu", myTime);

} }

Lampiran 4. Listing Program Kalibrasi Sensor

#include "HX711.h" //You must have this library in your arduino library folder

unsigned long sendDataPrevMillis = 0;

float weight;

float calibration_factor = 196440; //105640; -106600 worked for my 40Kg max scale setup

void setup() {

// put your setup code here, to run once:

Serial.begin(9600);

scale.begin(DOUT,CLK);

Serial.println("HX711 Calibration");

Serial.println("Remove all weight from scale");

Serial.println("After readings begin, place known weight on scale");

Serial.println("Press a,s,d,f to increase calibration factor by 10,100,1000,10000 respectively");

Serial.println("Press z,x,c,v to decrease calibration factor by 10,100,1000,10000 respectively");

Serial.println("Press t for tare");

scale.set_scale();

scale.tare(); //Reset the scale to 0

long zero_factor = scale.read_average(); //Get a baseline reading

Serial.print("Zero factor: "); //This can be used to remove the need to tare the scale.

Useful in permanent scale projects.

Serial.println(zero_factor);

pinMode(PIN_BUZZER, OUTPUT);

}

void loop() {

// put your main code here, to run repeatedly:

scale.set_scale(calibration_factor); //Adjust to this calibration factor

Serial.print("Reading: ");

Serial.print(scale.get_units(), 3);

Serial.print(" kg"); //Change this to kg and re-adjust the calibration factor if you follow SI units like a sane person

Serial.print(" calibration_factor: ");

Serial.print(calibration_factor);

Serial.println();

Lampiran 4. Listing Program Android Studio (Aplikasi)

package com.example.arduino;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

import android.widget.TextView;

import android.widget.Toast;

import com.firebase.client.DataSnapshot;

import com.firebase.client.Firebase;

import com.firebase.client.FirebaseError;

import com.firebase.client.ValueEventListener;

import com.google.firebase.database.DatabaseReference;

import com.google.firebase.database.FirebaseDatabase;

import java.text.DecimalFormat;

public class MainActivity extends AppCompatActivity {

private TextView tv1, tv2, tv3, tv4;

private Button bt1, bt2, btr1, btr2;

private Firebase db1;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

tv1= (TextView)findViewById(R.id.tv1);

db1= new Firebase("https://arduino-c263b.firebaseio.com/");

db1.addValueEventListener(new ValueEventListener() { @Override

tv2.setText("---");

bt1.setOnClickListener(new View.OnClickListener() { @Override

public void onClick(View view) { updatebuzzer("ON2");

} });

btr1.setOnClickListener(new View.OnClickListener() { @Override

public void onClick(View view) { updatetare("ON");

} });

bt2.setOnClickListener(new View.OnClickListener() { @Override

public void onClick(View view) { updatebuzzer2("ON2");

} });

btr2.setOnClickListener(new View.OnClickListener() { @Override

private boolean updatebuzzer(String buzzer) {

DatabaseReference dR =

FirebaseDatabase.getInstance().getReference("Truk1").child("Buzzer");

dR.setValue(buzzer);

Toast.makeText(getApplicationContext(), "Buzzer berhasil dimatikan", Toast.LENGTH_LONG).show();

return true;

}

private boolean updatebuzzer2(String buzzer) {

DatabaseReference dR = FirebaseDatabase.getInstance().getReference("Truk2").child("Buzzer");

dR.setValue(buzzer);

Toast.makeText(getApplicationContext(), "Buzzer berhasil dimatikan", Toast.LENGTH_LONG).show();

return true;

}

private boolean updatetare(String reset) {

DatabaseReference dR =

FirebaseDatabase.getInstance().getReference("Truk1").child("Reset");

dR.setValue(reset);

Toast.makeText(getApplicationContext(), "Timbangan berhasil dinolkan", Toast.LENGTH_LONG).show();

return true;

}

private boolean updatetare2(String reset) {

DatabaseReference dR =

FirebaseDatabase.getInstance().getReference("Truk2").child("Reset");

dR.setValue(reset);

Toast.makeText(getApplicationContext(), "Timbangan berhasil dinolkan", Toast.LENGTH_LONG).show();

return true;

} }

Lampiran 5. Indikator Pengukuran Berat

Lampiran 6. Perubahan Diagram Blok

Lampiran 7. Cuplikan Tampilan Serial Monitor Prototipe 1

Lampiran 8. Cuplikan Tampilan Serial Monitor Prototipe 2

Lampiran 9. Cuplikan Tampilan Lama Waktu Pengiriman Data pada

Prototipe 1

Lampiran 10. Cuplikan Tampilan Lama Waktu Pengiriman Data

pada Prototipe 2

Lampiran 11. Lembar Revisi Proposal Pra Tugas Akhir

Lampiran 12. Lembar Monitoring Tugas Akhir

Dokumen terkait