Kamis, 14 April 2016

Final Project Part 1: Definition

Halo semuanya! Sudah lama tidak berjumpa. Pada pembahasan kali ini saya akan menjelaskan tentang proyek akhir yang hendak di buat. Berikut adalah gambaran umum spesifikasi dari proyek:



A. Latar Belakang
Seperti yang sudah dijelaskan pada pembahasan sebelumnya, proyek arduino yang hendak kubuat adalah smart traffic light yang menyimulasikan sistem penilangan otomatis kepada para pelanggar lampu merah. Ide ini berawal dari banyaknya pelanggar lalu lintas yang sudah terlalu sering "dimaklumi" oleh kita, hanya mematuhi jika ada polisi saja. Maka dari itu, kami mencontoh beberapa negara maju yang telah menerapkan hal ini. Mereka mengaitkan plat nomor kendaraan dengan akun seseorang sehingga jika mobil tersebut melanggar, si pemilik mobil akan tertilang secara otomatis. Namun yang mungkin menjadi permasalahan adalah masih belum adanya keterkaitan antara mobil dengan bank di Indonesia. Lagi pula, belum tentu pengendara suatu mobil adalah orang yang sama, bisa saja seorang supir. Maka dari itu, kami mengasumsikan yang akan menjadi objek dari penilangan adalah berdasarkan SIMnya dengan asumsi pula bahwa SIM seseorang sudah dikaitkan dengan bank milik orang tersebut.

B. Proyek yang akan dikembangkan
Smart Traffic Light akan menyimulasikan penilangan otomatis kepada para pelanggar lalu lintas melalui scan RFID(dengan mengambil penerapan nyatanya berupa penanaman RFID ke dalam SIM). Akan dicek terlebih dahulu lampu yang tertera pada jalan. Jika sudah merah dan masih melaju, maka sang pengendara akan dikenakan tilang langsung ke akun banknya

C. Input - Proses - Output Proyek
Berikut adalah gambaran umum Input - Proses - Output dari proyek yang hendak dikerjakan:

Sistem penilangan ini akan menerima input berupa identitas pengendara, status lampu, dan posisi pengendara saat itu. Dengan melakukan proses penilangan pelanggan, nanti akan ditampilkan pesan tertilang pada (pura-puranya) akun bank pelanggar

D. Software Design
Berikut adalah flowchart dari sistem yang hendak dibangun


Akan dilakukan pengecekan terlebih dahulu terhadap status lampu dan posisi pengendara. Jika kedua kondisi tilang terpenuhi, maka akan ditangkap RFID penilang dan dilakukan proses penilangan

E. Design Specification
Dalam pengerjaan proyek ini, alat dan bahan yang digunakan meliputi:
- Arduino UNO
- Kabel USB
- Breadboard
- Jumper
- 3 Buah LED(merah, kuning, hijau)
- RFID Reader
- Sensor Photodioda/LDR
- ESP 8266. Digunakan sebagai media transmisi data ke dalam database sistem

F. System Design

 Berikut adalah desain sistem dalam bentuk diagram blok


Ada tiga entitas dalam sistem ini, yaitu pengendara, Smart Traffic Light System, dan Bank. Pengendara direpresentasikan dengan RFID. Setelah kondisi tilang terpenuhi, maka terlebih dahulu dibaca RFID dari SIM pengendara, setelah itu dilakukan passing ke Arduino. Arduino akan menentukan alamat pengiriman paket data yang kemudian akan dilempar ke Wifi Module untuk di transmisikan. Paket data tersebut akan diterima oleh sebuah database yang kami beri nama Violation Database yang berisi kumpulan pelanggar lalulintas. Violation Database memiliki Application UI sebagai antarmuka admin untuk dapat melihat para pelanggar lalu lintas. Database ini juga terintegrasi dengan Account Database milik Bank sehingga proses penilangan dapat dilakukan secara otomatis

G. Hardware Design
Berikut adalah desain dari rangkaian yang hendak dibangun



Dapat diperhatikan bahwa Wifi Module akan mentransmisikan data secara real time ke internet sehingga juga diperlukan koneksi internet yang stabil untuk menjalankan sistem ini.

Sekian dan terima kasih~~~

Fikriansyah Adzaka
18213001

Kamis, 17 Maret 2016

Pre-Final Project

Halooo semuaaa!!

Sekarang saya akan menjelaskan tentang proses pemilihan judul akhir untuk proyek besar mata kuliah ini.

Jadi sebenarnya kelompok kami memiliki 2 ide utama:

- Smart Traffic Light, Ide ini mensimulasikan proses tilang otomatis untuk para pengendara yang menerobos lampu merah

- Panic Button, Ide ini mensimulasikan sebuah produk aksesoris yang didalamnya terdapat tombol, yang mana saat tombol itu di klik, maka akan dikirimkan pesan ke kantor polisi terdekat bahwa orang tersebut sedang dalam bahaya

Ada beberapa parameter yang digunakan sebagai pembanding, yaitu:
- Kegunaan
- Akses teknologi / teknologi yang dibutuhkan
- Presentasi keberhasilan

Mari kita bahas satu persatu!

A. Kegunaan
Smart Traffic Light jauh lebih berguna dibandingkan panic button. Hal ini disebabkan tidak begitu matangnya ide Panic Button. Bisa saja kalau si penggunanya iseng dia tekan-tekan terus tombolnya, jadilah spam. Sekalipun dilakukan pengecekan dengan denyut nadi(yang mana biasanya orang-orang yang panik akan semakin cepat nadinya berdenyut), tetap saja tidak bisa menjadi tolak ukur baku karena tingkat kecepatan denyut nadi tiap orang disaat panik berbeda-beda.

B. Akses teknologi / teknologi yang dibutuhkan
Smart Traffic Light menggunakan sensor tekan, ceritanya ditaruh di bawah garis lampu merah. Sedangkan Panic Button menggunakan sensor pendeteksi denyut nadi. Terlihat bahwa sensor tekan lebih terjangkau dari pada sensor pendeteksi denyut nadi.

C. Presentasi keberhasilan
Smart Traffic Light sejauh ini dirancang seperti simulasi lampu merah. Ada lampu LED 3, sensor tekan, dan (pura-puranya) mobil yang melintas. Sedangkan Panic Button sejauh ini dibayangkan bentuk jadinya seperti gelang. HOW???

Jadi setelah semua pertimbangan tersebut, pilihan kami adalah...

SMART TRAFFIC LIGHT!!!

Sekian~~

Kamis, 03 Maret 2016

Percobaan Arduino UNO 3 - Kalkulator

Pada postingan kali ini, saya akan menjelaskan tentang percobaan ketiga kelompok saya menggunakan Arduino seri UNO, yaitu membuat kalkulator sederhada.

Alat-alat yang dibutuhkan meliputi:
  • Arduino UNO (1 set)
  • BreadBoard (1 buah)
  • Keypad 4x4 (1 buah)
  • LCD (1 buah)
  • Resistor 220 ohm (1 buah)
  • Potensiometer 10 kilo ohm
  • Kabel jumper secukupnya
  • Laptop
 Berikut adalah langkah-langkah pengerjaannya:

1. Susun rangkaian berikut kabel jumpernya seperti gambar di bawah ini:


 Gambar 1: Ilustrasi dari Implementasi Rangkaian

2. Sambungkan Arduino pada PC.

3. Masukkan source code berikut ini:
 ---
#include <LiquidCrystal.h> //import lcd library
#include <Keypad.h> //import keypad library

LiquidCrystal lcd(5, 4, 3, 2, 1, 0); //lcd pins
const byte ROWS = 4; // four rows
const byte COLS = 4; // four columns

//define the keymap
char keys [ROWS] [COLS] = {
  {'7', '4', '1', 'X'},
  {'8', '5', '2', '0'},
  {'9', '6', '3', '='},
  {'/', '*', '-', '+'}
};
byte rowPins[ROWS] = {
  9 ,8 ,7 ,6}; //connect keypad ROW1, ROW2, ROW3, ROW4 to these arduino pins
byte colPins[COLS] = {
  13, 12, 11, 10}; //connect keypad COL1, COL2, COL3, COL4 to these arduino pins

//create the keypad
Keypad myKeypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

//variables declaration
boolean valOnePresent = false;
boolean next = false;
boolean final = false;
String num1, num2;
int ans;
char op;

void setup(){
  lcd.begin(16,2);
  lcd.setCursor(2,0);
  lcd.print("Hello World!");
  delay(2500);
  lcd.clear(); //clears the LCD screen and positions the cursor in the upper-left corner.
}

void loop(){
  char key = myKeypad.getKey();

  if (key != NO_KEY && (key=='1'||key=='2'||key=='3'||key=='4'||key=='5'||key=='6'||key=='7'||key=='8'||key=='9'||key=='0')){
    if (valOnePresent != true){
      num1 = num1 + key;
      int numLength = num1.length();
      lcd.setCursor(15 - numLength, 0); //to adjust one whitespace for operator
      lcd.print(num1);
    }
    else {
      num2 = num2 + key;
      int numLength = num2.length();
      lcd.setCursor(15 - numLength, 1);
      lcd.print(num2);
      final = true;
    }
  }

  else if (valOnePresent == false && key != NO_KEY && (key == '/' || key == '*' || key == '-' || key == '+')){
    if (valOnePresent == false){
      valOnePresent = true;
      op = key;
      lcd.setCursor(15,0); //operator on right corner
      lcd.print(op);
    }
  }

  else if (final == true && key != NO_KEY && key == '='){
    if (op == '+'){
      ans = num1.toInt() + num2.toInt();
    }
    else if (op == '-'){
      ans = num1.toInt() - num2.toInt();
    }
    else if (op == '*'){
      ans = num1.toInt() * num2.toInt();
    }
    else if (op == '/'){
      ans = num1.toInt() / num2.toInt();
    }  
      lcd.clear();
      lcd.setCursor(15,0);
      lcd.autoscroll();
      lcd.print(ans);
      lcd.noAutoscroll();
  }
  else if (key != NO_KEY && key == 'X'){
    lcd.clear();
    valOnePresent = false;
    final = false;
    num1 = "";
    num2 = "";
    ans = 0;
    op = ' ';
  }
}

---

4. Compile dan run code. Maka seharusnya kalkulator dapat berjalan dengan baik.

Seharusnya...

Ya, kami gagal mengerjakannya.

Untuk lebih jelasnya, berikut adalah video hasil pengerjaan kami:
---

---
Untuk kendala yang kami alami, ada banyak. Sebelumnya mohon maaf pada percobaan yang satu ini saya tidak dapat terlibat langsung dalam pengerjaannya sehingga saya hanya akan me-list semua temuan yang teman saya temukan.

Kendala yang ditemukan(oleh teman saya Ifan):

1. Kabel jumper yang kurang bagus sehingga dalam transmisi data kurang baik
2. Gigi pin arduino yang tidak menggigit sehingga kabel jumper mudah terlepas
3. LCD yang tidak disolder sehingga nyala mati ketika dijalankan karena mudah terlepas dari kabel jumper
4. IDE Arduino yang error tidak bisa upload source code ke dalam arduino
5. Kesalahan pemasangan pin sehingga output LCD dan keypad tidak sesuai dengan yang seharusnya
6. Potensiometer yang tidak berjalan dengan baik sehingga tulisan LCD tidak tampak

Referensi percobaan ini:

Well, saya rasa cukup untuk postingan kali ini.

Fikriansyah Adzaka
18213001

Percobaan Arduino UNO 2 - ESP 8266

Pada postingan kali ini, saya akan menjelaskan tentang percobaan kedua kelompok saya menggunakan Arduino seri UNO, yaitu mencoba ESP 8266 - Modul Wifi.

Alat-alat yang dibutuhkan meliputi:
  • Arduino UNO (1 set)
  • BreadBoard (1 buah)
  • ESP 8266 - Modul Wifi (1 buah)
  • Kabel jumper secukupnya
  • Akses Point(Wifi) (1 buah) 
  • Laptop (1 buah)
 Berikut adalah langkah-langkah pengerjaannya:

1. Susun rangkaian berikut kabel jumpernya seperti gambar di bawah ini:



 Gambar 1 : Illustrasi dari Implementasi Rangkaian


 Gambar 2 : Foto Rangkaian Jadi


2. Sambungkan Arduino pada PC.

3.Masukkan kode kosong ke arduino.



Gambar 3 : Kode Kosong

4. Compile dan run code. Buka Serial Monitor kemudian set Both NL & CR dan kecepatan komunikasi (Baudrate) 115200 dipojok kanan bawah dari serial monitor

 

Gambar 4 : Settingan Serial Monitor

5.  Jalankan modul dengan memberikan perintah kepada Serial Monitor:
- AT : Mengecek apakah ESP 8266 sudah siap untuk digunakan
- AT+GMR : Mengecek versi firmware dari ESP 8266 yang digunakan
- AT+CWLAP : Mengecek Akses Point yang tersedia
- AT+CWJAP=”SSID”,”Password” : Konek ke dalam sebuah akses point
- AT+CIFSR : Mengecek IP Address setelah berhasil tersambung ke akses point
- AT+RST : Restart sistem ESP 8266

Hampir tidak ada ada kendala dalam pengerjaan proyek ini dikarenakan terdapat banyak referensi yang jelas pada internet.

---
Referensi

---

Fikriansyah Adzaka
18213001

Kamis, 11 Februari 2016

Percobaan Arduino UNO 1 - Sensor Suhu

Pada postingan kali ini, saya akan menjelaskan tentang percobaan pertama kelompok saya menggunakan Arduino seri UNO, yaitu menerima dan menampilkan input sensor suhu.

Alat-alat yang dibutuhkan meliputi:
  • Arduino UNO (1 set)
  • BreadBoard (1 buah)
  • Seven-segment (2 buah)
  • LM35/Sensor suhu (1 buah) 
  • Resistor 220 ohm (1 buah)
  • Kabel jumper secukupnya
 Berikut adalah langkah-langkah pengerjaannya:

1. Susun rangkaian berikut kabel jumpernya seperti gambar di bawah ini:

 Gambar 1 : Skematik dari Rangkaian


 Gambar 2 : Ilustrasi dari Implementasi Rangkaian

Keterangan:
Dengan menggunakan jumper, sambungkan LM35 ke pin Analog 0, Ground, dan 5 pada Arduino. Sambungkan pula Seven-segment ke pin digital pada Arduino.

2. Sambungkan Arduino pada PC.

3. Masukkan source code berikut ini:
 ---
 #include "SevSeg.h"
SevSeg sevseg;
int val;
int tempUnits;
int refreshTime = 2000;
unsigned long timer;
float celsius = 0, k = 0;
void setup()
{
  sevseg.Begin(0,2,3,4,5,6,7,8,9,10,11,12,13);
  Serial.begin(9600);
}
void loop()
{
  sevseg.PrintOutput();
  val = analogRead(0);
  k = ( val/1024.0)*5000;
  celsius = k/10;
  tempUnits = celsius;
  unsigned long mils=millis();
  if (mils-timer>=refreshTime) {
    timer=mils;
    //Print teperature to the displays
  sevseg.NewNum(tempUnits,(byte) 2);
  }
  Serial.print("Temperature : ");
  Serial.println(tempUnits);
}

---
Keterangan:
Update terlebih dahulu library sevseg nya ke versi terbaru untuk menjalankan kode ini.

4. Compile dan run code. Maka kedua buah Seven-segment akan menampilkan keluaran sesuai dengan suhu yang dibaca oleh sensor suhu.

Untuk lebih jelasnya, berikut adalah video hasil pengerjaan kami:
---

---
Untuk kendala yang kami alami, kami sempat bingung mengapa kode diatas tidak dapat jalan. Ternyata memang kodenya tidak kompatibel dengan library sevseg versi lama dan harus diperbaharui terlebih dahulu untuk digunakan. Selain itu, sempat kami temukan kesalahan pada output seven segmentnya diakibatkan kesalahan dalam menyusun rangkaian.

Sekian untuk postingan kali ini~

Fikriansyah Adzaka
18213001