Tutorial : Arduino dan Xbee V2

wirelees communication atau komunikasi nirkabel menjadi sangat populer dalam 10 tahun ini. Dan yang paling populer untuk Arduino adalah Xbee, entah apa alasannya, yang jelas hal ini mendasari xbee untuk membuat shield sendiri untuk Arduino (Uno).

Bagian pertama ini pengaturan dilakukan  tanpa menggunakan shield.

Xbee adalah . . .

Xbee yang kita bahas di sini adalah Xbee versi 2, Xbee adalah modul bluetooth 2,4 GHz yang beroperasi pada protokol Zigbee (protokol yang dibangun diatas 802.15.4). Nah klo yang v1 beda protokolnya yang dipake.

Xbee S2 dapat mengimplementasikan mesh networking, jadi bisa berperan sebagai Coordinator, Router maupun End-Device. tinggal setting-setting.

Untuk melakukan setting pada Xbee, dibutuhkan Xbee adapter, yaitu suatu adapter yang berisi chip converter FTDI to serial untuk mengupload firmware pada Xbee. Xbee ini unik karena memliki ukuran pin yang tidak biasa, sehingga memerlukan breakout board untuk dapat mengoperasikannya pada breadboard pada umumnya.



gunakan tegangan 3,3 Volt !

Langkah pertama 

melakukan setting pada Xbee.
setting firmware pada Xbee , 1 sebagai Coordinator dengan mode API, 1 lagi sebagai router dengan mode AT. Untuk mengupdate firmware pada Xbee digunakan program dari Digi yang bernama X-CTU. Program ini dapat diunduh secara gratis dari website Digi




API (Xbee 1)



router (Xbee 2)

Lanjut ke rangkaian.

    

sketch untuk Arduino Mega

void setup(){
  Serial3.begin(9600);
}

void loop(){
  Serial3.print("on");
  delay(500);
  Serial3.print("off");
  delay(500);
}

sketch untuk Arduino Uno

int LED = 11;
int debugLED = 13;

void setup() {
  pinMode(LED,OUTPUT);
  pinMode(debugLED,OUTPUT);
  Serial.begin(9600);
}

void loop() {
  // make sure everything we need is in the buffer
  if (Serial.available() >= 21) {
    // look for the start byte
    if (Serial.read() == 0x7E) {
      //blink debug LED to indicate when data is received
      digitalWrite(debugLED, HIGH);
      delay(10); 
      digitalWrite(debugLED, LOW);
      // read the variables that we're not using out of the buffer
      for (int i = 0; i<20; i++) {
        byte discard = Serial.read();
      }
      char pertama = Serial.read();
      char kedua = Serial.read();
      char ketiga = Serial.read();
      if((pertama == 'o') && (kedua == 'n')){
        digitalWrite(LED, HIGH);
      }
      else if((pertama == 'o') && (kedua == 'f') && (ketiga == 'f')){
        digitalWrite(LED, LOW);
      }
    }
  }
}

klo kurang jelas bisa liat di sumber hehehe

terus gimana cara pake shield Xbee, di postingan selanjutnya ya

terimakasih :D




Komentar

  1. Gan. mohon pencerahannya tentang arduino uno. ane sedang mengerjakan TA . bagaimana membuat display eksternal untuk timbangan digital menggunakan arduino uno dan panel p10.

    BalasHapus
  2. Ane sudah buat display eksternal untuk timbangan digital melalui port rs232 tetapi menggunakan lcdkeypad sheild arduino uno.
    ini sketchnya :


    #include
    LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
    #include
    const int rxpin1 = 0;
    const int txpin1 = 1;
    SoftwareSerial Scale(rxpin1, txpin1); // gps device connected to pins 2 and 3
    #include
    #include //SPI.h must be included as DMD is written by SPI (the IDE complains otherwise)
    #include //
    #include //
    #include "SystemFont5x7.h"
    #include "Arial_black_16.h"

    //Fire up the DMD library as dmd
    #define DISPLAYS_ACROSS 1
    #define DISPLAYS_DOWN 1
    DMD dmd(DISPLAYS_ACROSS, DISPLAYS_DOWN);

    String inString = ""; // string to hold input

    void ScanDMD() {
    dmd.scanDisplayBySPI();
    }

    void setup()
    {
    Timer1.initialize( 5000 );
    Timer1.attachInterrupt( ScanDMD );
    dmd.clearScreen( true );
    Scale.begin(9600);
    Scale.println("\n\nString toInt():");
    Scale.println();
    }

    String digitke1,digitke2,digitke4,digitke5,digitke6;

    void loop() {
    lcd.clear();
    // Read serial input:
    while (Scale.available()>0) {
    char inChar = Scale.read();
    if(isDigit(inChar)){
    // convert the incoming byte to a char
    // and add it to the string:
    inString += (char)inChar;
    }
    // if you get a newline, print the string,
    // then the string's value:
    if (inChar == '\n') {

    digitke1 = inString.substring(5, 6);
    digitke2 = inString.substring(4, 5);

    digitke4 = inString.substring(3, 4);
    digitke5 = inString.substring(2, 3);
    digitke6 = inString.substring(1, 2);

    int x1 = digitke1.toInt();
    int x2 = digitke2.toInt();
    int x4 = digitke4.toInt();
    int x5 = digitke5.toInt();
    int x6 = digitke6.toInt();

    lcd.print("Berat: ");
    lcd.print(x6);
    lcd.print(x5);
    lcd.print(x4);
    lcd.print(",");
    lcd.print(x2);
    lcd.print(x1);
    lcd.print(" Kg");

    inString = "";
    delay(80);
    }
    }
    }

    displaynya mau ane ganti dengan panel p10. mohon pencerahannya.bisa kontak agan kemana ? ini wa ane 0857 1792 3756

    BalasHapus
    Balasan
    1. saya belum pernah lsg make panel p10, agak mahal soalnya hehhe

      tapi klo sistemnya sama-sama pake sensor analog sih mungkin bisa diliat di sini

      http://kiosline.com/arduino-menampilkan-suhu-lm35-ke-panel-p10-led/

      Hapus
  3. gan, ganti settingan xbee ke API/AT gmn? ane mau hubungin arduino(pengirim data) dengan raspberry pi(gateway)..
    ane pake xctu yg terbaru agak bingung...

    BalasHapus
  4. coba ini gan http://www.instructables.com/id/Configuring-XBees-for-API-Mode/

    BalasHapus
  5. coba ini gan http://www.instructables.com/id/Configuring-XBees-for-API-Mode/

    BalasHapus
  6. kalau menampilkan suhu di lcd menggunakan arduino dan xbee itu gimana gan?

    BalasHapus
  7. punten bang, setau ane xbee itu module yang komunikasi data nya menggunakan radio frequency, bukan bluetooth

    BalasHapus

Posting Komentar