Social Icons

Pages

Tuesday, September 24, 2013

Bikin wireless murah meriah (RF transmitter dengan arduino part II)

Kemaren gw bikin pesawat yang bisa kirim SMS (pesan tulisan) dari komputer ke modul arduino Pro mini, bisa dibaca disini Bikin wireless murah meriah, RF transmitter yang sekarang dibuat adalah kendali jarak jauh untuk meng-on/off-kan lampu 4 LED.

433Mhz RF Low Cost Transmitter / Receiver

Musti diketahui dari kedua modul TX RX ini, karena voltase yang diberikan akan mempengaruhi daya jangkau sinyal yang lebih jauh :

Receiver input voltage : 3,3 - 6 volt (high voltage = more receiving power)
Transceiver input voltage : 3 - 12 volt (high voltage = more transmitting power)


Ada 2 pita frekuensi untuk modul ini yaitu 315Mhz dan 433Mhz, gw pake yang 433Mhz, lebihnya sama aja beda frekuensi kerja aja. Gw ulangi lagi harga modul ini patut diperhitungkan karena muat didompet, harganya cuman dibandrol Rp. 65.000.- sudah termasuk Transceiver dan Receiver, digambar diatas yang TX (transceiver) yang kecil, Rx (receiver) yang panjang, ati-ati diboard RX ada puteran (induktor), kalo lo puter-puter bagian ini nanti pita frekuensi modul RX akan berubah, so bukan haram untuk diputer-puter, pastinya pabrikan udah ngeset difrekuensi tertentu, so kalo mau muterin musti ada alasan yang jelas bukan iseng, tar rugi sendiri.

Ok sebelumnya kita siapin dulu komponen-komponen pentingnya :

Modul TX/RX, arduino, breadboard, batre
1. Modul TX/RX
2. Arduino Pro Mini sebagai TX
3. FTDI (untuk program arduino pro mini)
4. Arduino Nano sebagai RX
5. 2x Breadboard
6. Batre 9V
7. 4x LED 
8. 4x push button
9. Cemilan yang tidak mengandung lemak tinggi sebagai figuran

Skema rangkaiannya akan seperti gambar dibawah ini :

Arduino RF Transmitter and Receiver
Arduino RF Transmitter and Receiver
Kalo uda begini kita rangkai semuanya dibreadboard, penampakannya jadi kaya gini :

Rangkaian TX dengan Arduino Pro Mini
Rangkaian RX dengan Arduino Nano
Catu daya TX arduino pro mini menggunakan +5V dari USB komputer, sedangkan catu daya RX arduino nano menggunakan batre 9V, jadi dia lebih mandiri, hehe... modul RX ini batasan input tegangannya adalah 3,3 - 6 volt, .......lahh ini ko pake 9V?

Iya bener tadinya saya pake IC regulator 7805, tapi karena batre udah agak soak and minta di-charge ulang, so it's OK langsung disambungin ke modul RX, dia sih nerimo aja diapa-apain juga, yang penting pake cinta ngerjainnya, hahaha...

Mereka TX/RX meskipun diciptakan untuk bersama tapi mereka tidak diperuntukan untuk bersama dan berdekatan, memang terkesan kejam, gw aja sempet ampir ga jadi bikin rangkaian ini, karena hampir ga tega liat mereka harus berjauhan, tapi apa boleh dikata, demi ke egoisan diri ini gw pisahkan mereka, gw hanya izinkan mereka bertemu secara nirkabel cuman lewat udara, kaga boleh ketemuan secara langsung apalagi pegang-pegang tangan, hahaha....

Sesi foto-foto Pra-weeding sebelum dijauhkan
Neneng Pro mini(RX) dengan cahaya birunya "Like Woman from Venus" menandakan kesanggupannya untuk beraksi, Kakang Nano(TX) dengan cahaya merahnya "Like Man from Mars" menandakan kesanggupannya untuk beraksi, mereka tidak menyadari sehabis foto Pra-weeding mereka harus berpisah selamanya, .... drama banget ya, hahahaha....

Drama adegan hubungan Neng RX dan Kakang TX

Semoga saja dengan proses ENCODING dan DECODING hubungan TX dengan RX bisa harmonis selamanya, semoga jangan sampai TX mengirim sinyal ke yang lain, semoga jangan pula RX menerima sinyal dari yang lain, semoga mereka selalu sadar diri karena mereka dibuat memang khusus sebagai pasangan yang serasi.

CODE :
  • RX sketch program
#include <VirtualWire.h>

void setup()
{
    Serial.begin(9600);    //Debugging
    Serial.println("setup");

    //Inisial IO dan ISR
    vw_set_ptt_inverted(true); // ibutuhkan untuk DR3100
    vw_setup(2000);     //Bits per sec
    vw_set_rx_pin(2);
    vw_rx_start();       //memulai receiver

pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
}

void loop()
{
  digitalWrite(8, LOW);
  digitalWrite(9, LOW);
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
 
    uint8_t buf[VW_MAX_MESSAGE_LEN];
    uint8_t buflen = VW_MAX_MESSAGE_LEN;

    if (vw_get_message(buf, &buflen))
    {
    int i;

/*lampu menyala sebagai indikator pesan terkirim*/
        digitalWrite(13, true);
       // menerima pesan checksum
       Serial.print("Menerima: ");
   
    for (i = 0; i < buflen; i++)
    {
        Serial.print(buf[i]);
        if(buf[i] == '1'){digitalWrite(8, HIGH);}
        if(buf[i] == '2'){digitalWrite(9, HIGH);}
        if(buf[i] == '3'){digitalWrite(10, HIGH);}
        if(buf[i] == '4'){digitalWrite(11, HIGH);}
        Serial.print(" ");
    }
    Serial.println("");
        digitalWrite(13, false);

   }
}


  • TX sketch program
#include <VirtualWire.h>

void setup()
{
    Serial.begin(9600);      // Debugging
    Serial.println("setup");

    // inisial IO dan ISR
    vw_set_ptt_inverted(true); // dibutuhkan untuk DR3100
    vw_setup(2000);     // Bits per sec
    vw_set_tx_pin(3);
       
        pinMode(8, INPUT);
        pinMode(9, INPUT);
        pinMode(10, INPUT);
        pinMode(11, INPUT);

digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
}

void loop()
{
  char *msg;
 
  if(digitalRead(8) == LOW){
    char *msg = "1";


//lampu indikator untuk proses pengiriman
    digitalWrite(13, true);
    vw_send((uint8_t *)msg, strlen(msg));
    vw_wait_tx(); //menunggu hingga semua pesan hilang
    digitalWrite(13, false);}
  if(digitalRead(9) == LOW){
    char *msg = "2";

//lampu indikator untuk proses pengiriman
    digitalWrite(13, true); 
    vw_send((uint8_t *)msg, strlen(msg));
    vw_wait_tx(); //menungu hinga semua pesan hilang
    digitalWrite(13, false);}
  if(digitalRead(10) == LOW){
    char *msg = "3";

//lampu indikator untuk proses pengiriman 
    digitalWrite(13, true); 
    vw_send((uint8_t *)msg, strlen(msg));
    vw_wait_tx(); //menungu hinga semua pesan hilang
    digitalWrite(13, false);}
  if(digitalRead(11) == LOW){
    char *msg = "4";

//lampu indikator untuk proses pengiriman 
    digitalWrite(13, true); 
    vw_send((uint8_t *)msg, strlen(msg));
    vw_wait_tx(); //menungu hinga semua pesan hilang
    digitalWrite(13, false);}
  }


Sampai ketemu di tulisan-tulisan saya selanjutnya.

No comments: