Jumat, 15 Mei 2015

Membuat Handphone Remote Control dengan Bluetooth dan Arduino

Handphone atau HP anda dapat dijadikan remote control untuk mengendalikan peralatan listrik anda di rumah. Contoh sederhana untuk membuat saklar remote sehingga anda bisa menghidupkan dan mematikan alat listrik anda dari jarak jauh menggunakan HPandroid.

Alat-alat yang diperlukan:
1. Arduino Uno atau Arduino Mega 2560
    Dapat dibeli di : https://www.tokopedia.com/greencleanenergy/arduino-mega-2560
2. HP android
3. Remote relay modul
4. Bread-board
5. Kabel jumper
6. IC hex inverting 74LS04
    https://www.tokopedia.com/greencleanenergy/ic-hex-buffer-7407-74ls07-sn74ls07n-logic-ttl
7. Modul bluetooth HC-05/ HC-06
    https://www.tokopedia.com/greencleanenergy/bluetooth-module-hc-06-rs232?n=1


Langkah-langkah merangkai alat:
1. Men-download aplikasi dan install Apikasi Ardudroid dari Google Play.
2. Upload scrip program dari Ardudroid ke Arduino mikrokontroler. dapat di-copy dari web-site:

#define START_CMD_CHAR '*'
#define END_CMD_CHAR '#'
#define DIV_CMD_CHAR '|'
#define CMD_DIGITALWRITE 10
#define CMD_ANALOGWRITE 11
#define CMD_TEXT 12
#define CMD_READ_ARDUDROID 13
#define MAX_COMMAND 20  // max command number code. used for error checking.
#define MIN_COMMAND 10  // minimum command number code. used for error checking.
#define IN_STRING_LENGHT 40
#define MAX_ANALOGWRITE 255
#define PIN_HIGH 3
#define PIN_LOW 2

String inText;

void setup() {
  Serial.begin(9600);
  Serial.println("ArduDroid 0.12 Alpha by TechBitar (2013)");
  Serial.flush();
}

void loop()
{
  Serial.flush();
  int ard_command = 0;
  int pin_num = 0;
  int pin_value = 0;

  char get_char = ' ';  //read serial

  // wait for incoming data
  if (Serial.available() < 1) return; // if serial empty, return to loop().

  // parse incoming command start flag
  get_char = Serial.read();
  if (get_char != START_CMD_CHAR) return; // if no command start flag, return to loop().

  // parse incoming command type
  ard_command = Serial.parseInt(); // read the command
 
  // parse incoming pin# and value 
  pin_num = Serial.parseInt(); // read the pin
  pin_value = Serial.parseInt();  // read the value

  // 1) GET TEXT COMMAND FROM ARDUDROID
  if (ard_command == CMD_TEXT){  
    inText =""; //clears variable for new input  
    while (Serial.available())  {
      char c = Serial.read();  //gets one byte from serial buffer
      delay(5);
      if (c == END_CMD_CHAR) { // if we the complete string has been read
        // add your code here
        break;
      }             
      else {
        if (c !=  DIV_CMD_CHAR) {
          inText += c;
          delay(5);
        }
      }
    }
  }

  // 2) GET digitalWrite DATA FROM ARDUDROID
  if (ard_command == CMD_DIGITALWRITE){ 
    if (pin_value == PIN_LOW) pin_value = LOW;
    else if (pin_value == PIN_HIGH) pin_value = HIGH;
    else return; // error in pin value. return.
    set_digitalwrite( pin_num,  pin_value);  // Uncomment this function if you wish to use
    return;  // return from start of loop()
  }

  // 3) GET analogWrite DATA FROM ARDUDROID
  if (ard_command == CMD_ANALOGWRITE) { 
    analogWrite(  pin_num, pin_value );
    // add your code here
    return;  // Done. return to loop();
  }

  // 4) SEND DATA TO ARDUDROID
  if (ard_command == CMD_READ_ARDUDROID) {
    // char send_to_android[] = "Place your text here." ;
    // Serial.println(send_to_android);   // Example: Sending text
    Serial.print(" Analog 0 = ");
    Serial.println(analogRead(A0));  // Example: Read and send Analog pin value to Arduino
    return;  // Done. return to loop();
  }
}

// 2a) select the requested pin# for DigitalWrite action
void set_digitalwrite(int pin_num, int pin_value)
{
  switch (pin_num) {
  case 13:
    pinMode(13, OUTPUT);
    digitalWrite(13, pin_value); 
    // add your code here     
    break;
  case 12:
    pinMode(12, OUTPUT);
    digitalWrite(12, pin_value);  
    // add your code here      
    break;
  case 11:
    pinMode(11, OUTPUT);
    digitalWrite(11, pin_value);        
    // add your code here
    break;
  case 10:
    pinMode(10, OUTPUT);
    digitalWrite(10, pin_value);        
    // add your code here
    break;
  case 9:
    pinMode(9, OUTPUT);
    digitalWrite(9, pin_value);        
    // add your code here
    break;
  case 8:
    pinMode(8, OUTPUT);
    digitalWrite(8, pin_value);        
    // add your code here
    break;
  case 7:
    pinMode(7, OUTPUT);
    digitalWrite(7, pin_value);        
    // add your code here
    break;
  case 6:
    pinMode(6, OUTPUT);
    digitalWrite(6, pin_value);        
    // add your code here
    break;
  case 5:
    pinMode(5, OUTPUT);
    digitalWrite(5, pin_value);
    // add your code here      
    break;
  case 4:
    pinMode(4, OUTPUT);
    digitalWrite(4, pin_value);        
    // add your code here
    break;
  case 3:
    pinMode(3, OUTPUT);
    digitalWrite(3, pin_value);        
    // add your code here
    break;
  case 2:
    pinMode(2, OUTPUT);
    digitalWrite(2, pin_value);
    // add your code here      
    break;     
    // default:
    // if nothing else matches, do the default
    // default is optional
  }
}
3. Susun jumper dari Arduino ke breadboard dan module bluetooth sebagai berikut:

 Picture


4. Susun IC Hex inverter sebagai berikut:
Hex inverter diperlukan karena biasanya module Relay "ON" pada kondisi signal "LOW". Output Arduino ON pada kondisi "HIGH", jadi harus dibalik menggunakan IC Hex Inverter
Picture



5. Hubungkan breadboard ke module Relay
    Berikut hasil rangkaian saya sendiri menggunakan modul relay 4 channel

Empat buah Relay ini dapat dirangkai menjadi saklar untuk menghidup-mati-kan lampu, kipas angin, pompa air dan lain sebagainya dengan HP android anda.



Demikian yang bisa saya share dan entri ini masih dalam progress.

2 komentar:

  1. Bang..
    Total pengeluaran untuk membuat projek ini brapa rupiah ?

    BalasHapus
  2. Gan itu yang pembalik . Yg pke ic hex ada skemanya ?? Mhn bntuannya gann..

    BalasHapus