Jumat, 29 November 2013

KENDALIKAN LED MENGGUNAKAN ANDROID DAN ARDUINO VIA BLUETOOTH


Kemarin kita udah membahas arduino untuk pengaplikasian pada traffic light. Artikel kali ini saya akan berbagi mengenai kolaborasi atau penggunaan bersama antara Android dan Arduino yang akan saya gunaka untuk mengontrol/mengendalikan LED via Bluetooth.

Alat yang digunakan dalam pembuatan yaitu :

1. ARDUINO (Arduino yang saya gunakan adalah ARDUINO UNO)




        
 2. Modul bluetooth (Hc-07)

 
3. project board


 4. LED

4


     .5. Resistor


       6. Kabel jumper

           
 7. ANDROID
               

8. Aplikasi         

   


RANGKAIAN 

 
      Keterangan :
           1. Hubungkan led dengan pin.13
           2. Hubungkan RX(bluetooth) ke pin.1(TX) Arduino
           3. Hubungkan TX(bluetooth) ke pin.0(RX) Arduino
           4. Hubungkan GND dan 3,3v Bluetooth ke GND dan 3,3v pada Arduino


Sketch Program


Program Detail

#define    ledPin       13            // mendefinisikan pin 13 untuk led
#define    STX          0x02
#define    ETX          0x03

int i=0;
byte cmd[5] = {0, 0, 0, 0,0};

void setup()  
{
  Serial.begin(9600);                // membuka serial port, mensetting kecepatan data ke 9600 bps
  pinMode(ledPin, OUTPUT);
  Serial.println("Bluetooth Commander simulation");
}

void loop() 
{
  if(Serial.available())  {            // menerima dari android
    delay(5);
    cmd[0] =  Serial.read(); 
    if(cmd[0] == STX)  { 
      i=1;     
      while(Serial.available() && ((cmd[i]=Serial.read()) != ETX)) {
        if(i>3)  break;
        i++; }}
    if(i==2)    setLED(cmd[1]); }
  delay(5);
}

void setLED(int LEDstatus)  
{
  switch (LEDstatus)
  {
    case '1':
      Serial.println("Button: ON");
      digitalWrite(ledPin, HIGH);
      break;
    case '2':
      Serial.println("Button: OFF");
      digitalWrite(ledPin, LOW);
      break;
    }
}


VIDEO



Lampu Lalu Lintas Penyebrang Menggunakan Tombol

Setelah program yang sederhana diatas selesai, maka kita akan mencoba membuat hardware dan sketch yang lebih rumit.Dalam priyek kedua ini, pada hardware menggunakan 3 buah led merah, kuning, hijau sebagai lampu lalu lintas dan led merah, hijau sebagai lampu penyebrangan serta 1 buah pushbutton.

Berikut merupakan skema rangkaian menggunakan breadboard:





Keterangan:
  1. 3 lampu sebelah kiri (merah, kuning, hijau) merupakan lampu lalu lintas, sedangkan 2 lampu di sebelah kanan merupakan lampu penyebrangan (merah & hijau)
  2. Pemasangan Led
  • led merah lalu lintas pada kaki anoda diberi resistor 220 ohm lalu masuk pin 11
  • led kuning lalu lintas pada kaki anoda diberi resistor 220 ohm lalu masuk pin 10
  • led hijau lalu lintas pada kaki anoda diberi resistor 220 ohm lalu masuk pin 9
  • led merah penyebrangan pada kaki anoda diberi resistor 220 ohm lalu masuk pin 6
  • led hijau penyebrangan pada kaki anoda diberi resistor 220 ohm lalu masuk pin 5
  • semua kaki katoda led masuk ke pin ground
    3.   Penasangan pushbutton terhubung dari pin +5 volt ke pin 2, lalu resistor 220 ohm terhubung dari pinn  2 ke ground



Urutan Proses


Dalam desain kedua ini, urutan dari nyala lampu adalah seperti gambar diatas.
urutannya yaitu:

  1. Saat pushbutton belum ditekan, maka lampu lalu lintas akan menyala lampu hijau dan pada lampu penyebrang akan menyala lampu merah.
  2. Saat pushbutton ditekan, maka pada lampu lalu lintas di lampu kuning akan berkedip 4 kali namun saat itu terjadi, lampu penyebrang masih menyala lampu merah.
  3. Kemudian pada saat lampu lalulintas menyala lampu merah  pada saat itu juga lampu penyebrangan akan berganti warna hijau.
  4. Setelah proses tersebut, lampu lalu lintas pada led merah meyala, sedang led kuning berkedip dan pada lampu penyebrang led meyala merah.
  5. Kemudian proses mengulang dari awal (loop)


Langkah memasukkan sketch program ke dalam arduino sama seperti langkah sebelumnya, yang berbeda adalah sketch programmnya.

 Turns on and off a light emitting diode(LED) connected to digital 
 pin 13, when pressing a pushbutton attached to pin 2.


 The circuit:
 * LED attached from pin 13 to ground
 * pushbutton attached to pin 2 from +5V
 * 10K resistor attached to pin 2 from ground

 */


// menseting nomor pin
const int buttonPin = 2;     // definisi konstan dari pin 2 dengan nama 'buttonPin'
const int merahor =  6;      // definisi konstan dari pin 6 dengan nama 'merahor'
const int hijauor = 5;       // definisi konstan dari pin 5 dengan nama 'hijauor'
const int merah = 11;        // definisi konstan dari pin 11 dengan nama 'merah'
const int kuning = 10;       // definisi konstan dari pin 10 dengan nama 'kuning'
const int hijau = 9;         // definisi konstan dari pin 9 dengan nama 'hijau'
int x;                       // mendefinisikan 'x' yang kelak akan dijadikan variabel dalam fungsi for
int buttonState = 0;         // variabel untuk membaca status pushutton dengan nama 'buttonState'

void setup() {
// menginisialisasi pin-pin pada lampu sebagai output
  pinMode(merahor, OUTPUT);
  pinMode(hijauor, OUTPUT);
  pinMode(merah, OUTPUT);
  pinMode(kuning, OUTPUT);
  pinMode(hijau, OUTPUT); 
// menginisialisasi pin pada pushbutton sebagai input
  pinMode(buttonPin, INPUT);    
}

 void hati2 ()                  //  sketch instruksi dari fungsi bernama hati2
{                                   //  lampu kuning hidup kedap-kedip
  for(x=0; x<4 awal="" fungsi="" nbsp="" nilai="" perulangan="" x="0</p">                                     //  nilai max x adalah kurang dari 4                                                 
                                     //  x++ fungsi penjumlah x+1
                                     //  x akan ditambah 1, hingga x<4 p="">  {
    digitalWrite(kuning, HIGH); //  menginstruksi lampu kuning untuk hidup
    delay(500);                 //  memberi jeda hidup lampu kuning selama setengah detik
    digitalWrite(kuning, LOW);  //  menginstruksi lampu kuning untuk mati
    delay(500);                 //  memberi jeda mati lampu kuning selama setengah detik
  }
}

void loop(){
 
  buttonState = digitalRead(buttonPin);  // membaca nilai dari pushbutton
  if (buttonState == HIGH) {             // mengecek apabila pushbutton ditekan
                                         // jika ditekan, nilai dari pushbutton adalah HIGH
                                         // lalu akan berlanjut dalam pengaturan nyala lampu-lampu
  digitalWrite(hijau, LOW);              // mengistruksikan lampu hijau untuk mati
  hati2();                               // memanggil fungsi hati2 untuk diproses program
  digitalWrite(merah, HIGH);             // mengistruksikan lampu merah untuk hidup
  digitalWrite(hijauor, HIGH);           // mengistruksikan lampu hijau-penyebrang untuk hidup
  digitalWrite(merahor, LOW);            // mengistruksikan lampu merah-penyebrang untuk mati
  delay(10000);                           // memberi jeda hidup lampu merah, merahor dan hijauor selama 10 detik
  hati2();                               // memanggil fungsi hati2 untuk diproses program
  digitalWrite(kuning, LOW);             // mengistruksikan lampu kuning untuk mati
  digitalWrite(merah, LOW);              // mengistruksikan lampu merah untuk mati
  digitalWrite(hijau, HIGH);             // mengistruksikan lampu hijau untuk hidup
  digitalWrite(hijauor, LOW);            // mengistruksikan lampu hijau-penyebrang untuk mati
  digitalWrite(merahor, HIGH);           // mengistruksikan lampu merah-penyebrang untuk hidup
  delay(10000);                           // memberi jeda waktu 10 detik dari lampu merah, merahor, hijauor kuning dan hijau sesuai pengkondisian
  digitalWrite(hijau, LOW);              // menginstruksikan lampu hijau untuk mati
 
  }
  else {
    // menginstruksi lampu-lampu dalam kondisi tertentu saat saklar tidak ditekan:
    digitalWrite(merah, LOW);            // mengistruksikan lampu merah untuk mati
    digitalWrite(kuning, LOW);           // mengistruksikan lampu kuning untuk mati
    digitalWrite(hijau, HIGH);           // mengistruksikan lampu hijau untuk hidup
    digitalWrite(merahor, HIGH);         // mengistruksikan lampu merah-penyebrang untuk hidup
    digitalWrite(hijauor, LOW);          // mengistruksikan lampu hijau-penyebrang untuk mati
  }
}

Kamis, 21 November 2013

PROGRAM TRAFFIC LIGHT ARDUINO

Rangkaian lampu lalu lintas menurut saya adalah rangkaian yang mudah-mudah susah untuk dibuat. Dimana kita dituntut untuk bisa mengkondisikan nyala dari tiga buah lampu dengan mengikuti peraturan lalu lintas yang ada. Di sini saya akan sedikit menjelaskan bagaimana cara kerja traffic light sederhana dengan menggunakan arduino uno Adapun cara kerja dari lampu lalu-lintas ini adalah semisal lampu lalu-lintas dalam kondisi 1, 2, 3, dan 4 seperti pada gambar 1. Pada saat kondisi 1 lampu merah menyala (on) maka lampu kuning dan hijau padam (off) untuk beberapa saat. Kemudian saat akan terjadi perubahan lampu merah ke hijau pada kondisi 2 lampu merah menyala (on) dan lampu kuning menyala (kedip-kedip) sedangkan lampu hijau masih padam (off). Saat kondisi 3 lampu hijau menyala (on) maka lampu kuning dan merah padam (off). Kemudian saat akan terjadi perubahan lampu hijau ke merah pada kondisi 4 lampu kuning menyala (kedip-kedip) sedangkan lampu hijau padam (off) dan lampu merah masih padam (off), seterusnya akan berjalan kembali dari awal (kondisi 1).

 



 Koneksi Rangkaian
Simulasi menggunakan hardware
 
Keterangan :
1. Lampu hijau terhubung dengan port no 11
2. Lampu kuning terhubung dengan port no 12
3. Lampu merah terhubung dengan port 13
 4. Ground terhubung dengan port no 14  

video simulasi hardware
 
 

Simulasi menggunakan software Proteus
 

video simulasi software proteus



 Penulisan Program Lampu lalu-lintas

int led0 =13;
int led1=12;
int led2=11;
int x=0;

void setup()
{
  pinMode(led0, OUTPUT);
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
}

void loop()
{
  digitalWrite(led0,HIGH);
  delay(3000);

  for(int x=0; x<3 ; x++)
  {
    digitalWrite(led1, HIGH);
    delay(200);
    digitalWrite(led1, LOW);
    delay(200);
  }
  digitalWrite(led0,LOW);
  digitalWrite(led2,HIGH);
  delay(3000);
  digitalWrite(led2,LOW);

  for(int y=0; y<3 ; y++)
  {
    digitalWrite(led1, HIGH);
    delay(200);
    digitalWrite(led1, LOW);
    delay(200);
  }
}