All posts by Angga Sudrahanggara Arly

Membuat Interface Gateway untuk Zello

Halo teman teman, kali ini saya akan coba membahas eksperimen membuat interface gateway untuk Zello. sebelumnya saya coba jelaskan dulu apa yang disebut zello, mungkin sebagian rekan2 masih belum mengenalnya.

Zello adalah sebuah software gratis yang bisa di download di internet,  aplikasi yang mirip dengan radio komunikasi biasa. hanya saja link yang digunakan tidak menggunakan sinyal radio frekuensi, melainkan menggunakan koneksi internet.  karena  aplikasi ini sama dengan radio komunikasi seperti HT / Rig yang biasa kita gunakan maka Zello ini sama memilki tombol PTT. kita harus menekan tombol PTT pada saat ingin berbicara / Transmit. kalo di radio biasa kita harus menentukan freqkuensi. pada zello ini kita harus menentukan lawan bicara berupa username. ataupun room atau channel untuk berbicara dengan beberapa orang dalam ruang yang sama.

Kelebihan Zello ini adalah software yang multiplatform. software nya tersedia untuk PC / Komputer biasa. juga untuk Ponsel seperti Blackberry, Android, atau iPhone. sehingga semua pengguna zello yang berbeda platform bisa saling berkomunikasi.

Lalu apa yang dimaksud dengan “interface gateway” ? interface gateway ini adalah alat yang digunakan untuk menghubungkan software Zello dengan Radio komunikasi yang biasa kita gunakan. seperti HT ( handyTalky ) atau pun RIG  base station.  sehingga efek nya lebih dahsyat yaitu Pengguna Radio bisa saling terhubung dengan pengguna software Zello ataupun sebaliknya.

dengan kata lain yaitu kita bisa berkomunikasi menggunakan ponsel dimanapun selama Zello kita terkoneksi ke internet berkomunikasi dengan rekan rekan kita di Udara. misalkan kita sedang berada di tempat kerja / dikantor / di luar kota, atau di kampus kita bisa berkomunikasi dengan rekan kita yang menggunakan HT di udara.

sehingga sudah tidak terbatas lagi jangkauan sinyal radio selama zello kita terkoneksi, memungkinkan kita dimana saja bisa berkomunikasi dengan mereka yang di radio. walaupun kita sedang berada di luar negri.

coba perhatikan gambar dibawah ini adalah ilustrasi komunkasi radio yang bisa saling terhubung dengan zello.

ilustrasi

OK kita cukupkan perkenalan Zello & Interface gateway nya, mari kita bahas di sisi teknis nya sekarang. silahkan perhatikan skema atau layout pcb dibawah ini.

zello-gateway

 

sebelumnya saya coba jelaskan secara umum rangkaian ini berfungsi untuk menghubungkan antara Radio dengan Komputer yang menjalankan software Zello untuk dijadikan gateway atau menjembatani pengguna radio dengan pengguna Zello.

terlihat di bagian atas kanan terdapat tulisan Radio & PC. tidak lain adalah sebagai input / output audio yang dihubungkan ke radio dan PC.

Line out audio dari komputer terhubung ke Line in atau Mic input Radio. melewati kopling kapasitor 10uF dan melewati Potensio. agar volume atau intensitas audio nya bisa kita atur ( potensio bawah kanan ) dan sebaliknya Line out / Speaker out dari Radio kita hubungkan ke Line in atau Mic input Komputer melalui kompling kapasitor dan Potensio ( kiri bawah ).

sehingga dengan crossing audio seperti diatas secara audio pada komputer dan radio sudah saling terhubung.

Kemudian kita bahas mengenai bagaimana tombol PTT di Zello dan di Radio bisa menekan otomatis pada saat ada ada yang berbicara.

kita mulai dari Radio ke PC terlebih dahulu. Zello pada PC terdapat tombol PTT yang harus kita tekan apabila kita ingin berbicara, dengan kata lain pada kasus ini tombol PTT ini harus ditekan pada saat Radio menerima sinyal atau pada posisi RX / receive. lalu bagaimana cara nya setiap kali radio RX harus menekan tombol PTT di zello? tombol PTT pada zello dapat kita ubah dengan trigger tombol pada Keyboard maupun Mouse, kita ambil contoh PTT kita aktifkan tombol trigger menggunakan tombol F9. atau tombol lainnya. pada kasus ini kita coba ubah settingan tombol PTT menggunakan middle button pada mouse, atau scroll button. kemudian scroll button kita sambungkan ke optocoupler yang digerakan oleh tegangan COR pada radio. titik  COR pada ini akan mengeluarkan tegangan pada saat radio posisi RX. ada 2 macam kondisi yaitu active Low atau active High pada saat radio RX.  tidak semua radio memiliki fitur COR out yang sudah tersedia pada jack diluar. beberapa radio yang sudah ada COR out antara lain adalah Alinco DJ196 / DJ496, Alinco DR135/DR135 ataupun radio Motorola seri GM seperti GM300, GM3188 dan GM lainya.

Sehingga kita harus mengorbankan 1 buah mouse untuk proyek kali ini. sebaiknya gunakan mouse yang diatas 40rb. karena percobaan saya menggunakan mouse yang murah meriah ternyata menimbulkan noise yang bisa mengganggu suara radio. noise dari ic mouse masuk ke radio. percobaan saya menggunakan mouse yang diatas 40rb tidak ada noise yang mengganggu.

pada Radio HT  Alinco jenis Alinco DJ196 / DJ496 titik COR bisa kita ambil pada jack microphone ( jack 2,5mm ) di titik tengah. gunakan jack 2,5 yang 3 pole atau stereo. titik ujung adalah Mic input, titik tengah adalah COR out.  dan yang terakhir adalah ground. mode COR pada radio ini adalah Active High dengan kata lain titik COR ini akan mengeluarkan tegangan 5 Volt pada posisi RX dan akan Low / 0 pada posisi standby.  ada menu yang harus kita aktifkan yaitu EXP=ON pada menu radio. cara nya dengan menekan tombol Function beberapa detik kemudian masuk ke menu setting cari menu EXP dan pindahkan ke posisi ON. titik COR out dari radio ini hubungkan dengan rangkaian diatas ke titik H. yang artinya active High COR input.  kemudian kita perhatikan pada skema / layout diatas dari titik H tersebut masuk ke basis transistor NPN ( transistor kanan bawah ). transistor ini berfungsi sebagai switch. Emittor terhubung ke Ground. kemudian Collector akan ke posisi low atau 0 pada saat tegangan masuk ke basis. kaki collector kita hubungkan ke optocoupler. dan output optocopuler kita sambungkan dengan tombol Mouse ( middle button atau scroll button ).

Untuk Radio RIG jenis Alinco DR135 / DR435 kita dapat ambil titik COR pada jack DB9 kaki nomor 1 ( silahkan cek buku manual ) DR135 / DR435 ini active Low pada saat RX. jadi silahkan hubungkan titik COR nya ke input active Low pada rangkaian diatas ( saya beri tanda L ) alur rangkaian nya sama seperti diatas. transistor akan menggerakan optocoupler pada saat COR active Low, dan optocopuler menggerakan tombol middle button pada Mouse.

Begitu juga dengan Radio Motorola GM series. titik cor default nya ada kaki nomor 8 pada konektor belakang. sama dengan DR135 yaitu active Low pada saat posisi RX, tetapi ada sebagian radio yang belum di setting cor out nya, silahkan setting terlebih dahulu menggunakan  software GM ini.

nah..selesai sudah sesi trigger tombol PTT Zello pada saat Radio posisi RX. mari kita lanjut ke Trigger PTT radio pada saat Zello kita RX atau pada saat menerima voice dari pengguna zello yang lain.

mungkin dari teman teman sudah ada yang mencoba software EQSO atau e10.25 cara kerja software ini untuk menekan tombol PTT yaitu melalui port COM pada komputer.  salah satu pin pada port COM ini mengeluarkan tegangan yang kemudian digunakan untuk men trigger tombol PTT pada radio.

Berbeda dengan Zello. Zello tidak ada fitur untuk mengeluarkan tegangan pada port COM.  lalu bagaimana meng “akali” nya ya? salah satu cara nya yaitu yaitu menggunakan VOX detektor atau menggunakan Nada DTMF yang di sisipkan pada saat voice message masuk dan voice masuk selesai.

yang akan kita bahas kali ini adalah menggunakan trigger nada DTMF, seperti kita lihat diatas ada 1 buah ic yaitu MT8870, adalah sebuah receiver DTMF dengan output BCD,  ada 4 pin output dari IC tersebut. Q1 Q2 Q3 Q4.

pada proyek ini kita hanya menggunakan 2 nada DTMF saja. yaitu nada DTMF nomor 1 dan nomor 1. pada saat IC menerima nada DTMF angka 1 pada output Q1 akan mengeluarkan sinyal Logic High dan pada saat IC menerima DTMF angka 2 action Q1 akan menjadi Low dan Q2 menjadi High.  sehingga bisa kita manfaatkan Q1 ini untuk menekan tombol PTT. seperti pada skema/layout diatas. kaki Q1 saya sambungkan ke basis transistor NPN,  emittor ke Ground. dan collector disambungkan ke PTT  Radio. untuk radio jenis RIG control ptt dipisahkan dengan MIC, kita bisa sambungkan langsung dari kaki colector kemudian melewati dioda yang dipasang terbalik, tetapi untuk jenis HT control PTT di umpankan bersamaan dengan MIC input.  Radio HT akan Transmit apabila rangkaian mic ini tertutup. sehinga cukup disambungkan dengan titik Mic in dengan tambahan 1 buah resistor setelah dioda agar HT tersebut mendeteksi rangkaian tertutup. sehingga radio menjadi transmit.

Pada software Zello harus kita setting untuk incoming message alert dan new message alert dengan menyisipkan nada DTMF angka 1.  dan incoming message ended alert menyisipkan nada DTMF angka 2. sehingga pada saat zello receive message akan mengeluarkan tone DTMF angka 1 terlebih dahulu… kemudian akan mengeluarkan tone DTMF angka 2 pada saat message nya selesai.  yang selanjutnya tone tersebut dimanfaatkan oleh IC MT8870 untuk menekan tombol PTT pada radio.

zello option

gambar diatas adalah setting Zello options yang sudah saya bahas diatas. silahkan rubah PTT menggunakan midle mouse button, kemudian sisipkan DTMF angka 1 pada New conversation alert dan Incoming message alert. juga sisipkan DTMF angka 2 pada Incoming message ended alert.

kemudian pada skema diatas terdapat VCC ( kiri atas ) silahkan sambungan ke tegangan 5 volt bisa diambil pada tegangan mouse yang mendapat supply dari PC. kemudian titik COM bisa kita gunakan kalau rangkaian diatas digunakan muntuk aplikasi EQSO.

Selesai sudah misi kita untuk menyambungkan Radio dengan Zello ini sehingga bisa kita sebut sebagai Gateway / Zello Radio gateway. komunikasi kita semakin seru dengan adanya gateway. karena kita bisa kapan saja dimana saja berkomunikasi melalui ponsel dan terhubung dengan teman teman kita di udara / radio.

berikut ini wiring nya untuk DJ196 & Rig DR135 / Motorola GM

wiring DJ196

wiring Motorola GM - DR135

berikut poto poto yang saya buat sudah dilengkapi Box.

zello

kotret-fix

Perkiraan biaya yang dibutuhkan untuk membuat Zello interface gateway ini kurang lebih sekitar 200rb termasuk mencetak PCB, komponen komponen, BOX, kabel., jack / konektor2 hingga siap digunakan.

untuk rekan rekan yang kesulitan menyolder atau tidak terbiasa membuat rangkaian elektronik kami siapkan yang sudah jadi siap pakai silahkan cek di tab product pada website ini.

Demikian tulisan saya ini tentang eksperimen membuat Zello Radio Gateway. terima kasih sudah berkunjung ke web ngoprekradio.com

 

Angga S Arly

Facebook-logo-PSD

8 Relay Remote DTMF

Jual 8 Relay Remote DTMF

beres

Spesifikasi Teknis :

Jumlah Relay : 8 + Led Indikator

Tegangan Supply : 12 Volt

Input  : tone DTMF

dilengkapi 1 relay untuk memutuskan audio pada saat kita memasukan  angka angka kombinasi  sehingga tone DTMF tidak bisa dibajak atau tidak bisa didengarkan pengguna radio lain.

password 3 digit dilengkapi nomor relay.

contoh ingin menyalakan atau mematikan relay nomor 3 dengan password 537

menekan tombol : *537#03

atau simak video sample berikut :

 

Harga
Rp 500.000 ( Belum termasuk ongkos kirim )
pengiriman menggunakan kurir JNE. untuk ongkos kirim silahkan cek Disini
bisa juga dilakukan COD di Bandung, di daerah JL Muara, atau Gading tutuka 2 Soreang.

Contact :
Angga S Arly
sms / call / whatsapp 081802279880
pin bbm : 5FC54392
email : angga@ngoprekradio.com
web : www.ngoprekradio.com

info Nomor Rekening :
atas Nama : Angga Sudrahanggara Arly
BCA 8100362245
BNI 0190860738

atau order via Tokopedia KLIK DISINI

Remote Relay menggunakan DTMF

Halo, ini tulisan pertama saya di tab eksperimen. seperti judul nya “Remote Relay menggunakan DTMF” project ini adalah membuat Relay yang bisa kita kendalikan secara remote atau jarak jauh. menggunakan link Radio.

Relay sendiri adalah sebuah komponen elektronik dengan fungsi utama nya adalah “switch” atau “saklar” hanya saja bukan dikendalikan secara manual. tetapi dikendalikan oleh tegangan listrik.

Lalu apa yang dimaksud dengan DTMF ? DTMF adalah singkatan dari “Dual Tone Multiple Frequency” adalah teknik mengirimkan angka melalui tone atau nada yang dikirimkan pada saat kita menekan salah satu tombol angka. mengapa dual tone karena saat kita menekan salah satu angka ada 2 tone yang berbunyi.

DTMF paling populer digunakan pada pesawat pesawat telepon rumahan.  kita sering mendengar bunyi nada pada saat kita menekan tombol2 angka untuk melakukan dial nomor tujuan “tet tot tet tot tet tot”  itulah salah satu pengaplikasian DTMF agar nomor yang kita tekan tadi di proses oleh mesin atau komputer di penyedia telekomunikasi sehingga kita bisa terhubung ke nomor telpon tujuan.

selain dari telepon rumahan yang menggunakan DTMF masih banyak perangkat lain yang masih menggunakan nada DTMF seperti  telepon selular atau Radio Komunikasi.

Dalam project ini kita lebih khususkan dibuat untuk pengaplikasian bersama radio komunikasi. Banyak sekali radio komunikasi yang menggunakan fitur DTMF pada tombol tombol angka. khusus nya HT.

OK saya rasa cukup perkenalan Relay dan DTMF nya, mari kita langsung ke pokok bahasan nya.

Remote Relay menggunakan DTMF

uln2803

 

bisa kita lihat pada gambar diatas, kita anggap terdiri dari 2 blok utama.  sebelah kanan ada blok Relay atau saklar dengan Led indikator. kemudian blok sebelah kiri adalah blok Control yang terdiri dari 3 IC yaitu MT8870 sebagai DTMF to BCD decoder, Atmega328 sebagai MCU, dan ULN2803 sebagai Relay Driver. kemudian di sebelah kiri atas ada tulisan input & 12V.  Input disambungkan dengan radio receiver yang akan menerima tone DTMF dari radio yang transmit atau dari radio pengendali jarak jauh. kemudian 12V disambungkan ke power supply.

cara kerja dari rangkaian diatas adalah menterjemahkan sinyal DTMF berupa angka kombinasi yang kita masukan. kita ambil contoh misal kita ingin menyalakan Relay nomor 1. angka kombinasi yang harus kita masukan adalah *123#01

dengan asumsi bahwa * adalah tombol awal kombinasi, disambung dengan 123 yaitu password kemudian # sebagai pembatas. dan terakhir adalah 01 yaitu nomor relay.  sehingga tidak semua orang bisa merubah kondisi relay. hanya yang mengetahui angka2 input kombinasi dan password nya saja yang bisa mengontrol relay relay diatas.

OK, kembali ke teknis. nada DTMF yang masuk pada input diterima oleh IC MT8870 kemudian sinyal dirubah dari nada DTMF menjadi BCD ( Binary Coded Desimal ). sehingga ada 5 titik output dari MT8870 yang kemudian di proses oleh MCU Atmega328. ke 5 titik output tersebut adalah Q1,Q2,Q3,Q4 & StD ( kaki 11 sampai 15 ). Q1 sampai Q4 adalah output BCD nya. semisal kita memberi input DTMF angka 1 output BCD nya adalah Q1= High, Q2 = Low, Q3 = LOW, Q4 = LOW.

atau perhatikan tabel dibawah, data dari datasheet sebagai referensi logic output dari Q1 hingga Q4 untuk setiap angka DTMF.

BCD

 

Kita ambil contoh lain semisal kita menkan angka 5 maka output dari Q1-Q4 adalah :

Q1 = HIGH

Q2 = LOW

Q3 = HIGH

Q4 = LOW

sama seperti datasheeet diatas. cukup mudah kan?

ok lanjut ke output StD pada kaki nomor 15 pada IC MT8870. pin tersebut meng indikasikan semua nada DTMF yang masuk, sehingga akan mengeluarkan Logic 1 pada saat menerima nada DTMF. dan Logic 0 pada saat standby tidak menerima nada DTMF.

dari ke 5 pin tersebut dimasukan ke Input Dijital Atmega328. (  kaki 2 sampai 6 ) silahkan perhatikan gambar layout pcb diatas.

Proses yang dilakukan MCU adalah mengenal semua input yang dimasukan kemudian memproses output nya ke relay.  mulai dari men decode output BCD sesuai tabel diatas menjadi angka2 kembali yang kemudian men seleksi angka2 yang dimasukan seperti *123#01 action nya adalah menghidupkan atau mematikan Relay nomor 1.

Bahasa Pemrograman Microcontroller yang saya gunakan adalah bahasa arduino,  berikut skrip lengkap yang dimasukan ke Atmega328 sebagai berikut :

[spoiler title=”Mantra”]

[pastacode lang=”c” message=”Remote DTMF ngoprekradio.com” highlight=”Remote DTMF ngoprekradio.com” provider=”manual”]

// 8 Relay Remote DTMF
// create by Angga S Arly  2014
// anggafunkadelic@gmail.com
// ngoprekradio.com
 
 
// load eeprom library
#include <EEPROM.h>
// alokasi pin BCD dari MT8870
const int BCDPin1 = 4;
const int BCDPin2 = 3;
const int BCDPin3 = 2;
const int BCDPin4 = 1;
const int BCDPinX = 0;
// state BCD dari MT8870
int BCDState1 = 0;
int BCDState2 = 0;
int BCDState3 = 0;
int BCDState4 = 0;
int BCDStateX = 0;
// state hasil decode ke desimal
int S0 = 0;
int S1 = 0;
int S2 = 0;
int S3 = 0;
int S4 = 0;
int S5 = 0;
int S6 = 0;
int S7 = 0;
int S8 = 0;
int S9 = 0;
int SB0 = 0; // bintang
int SP0 = 0; // pager
// state combination key
int D1 = 0; // *
int D2 = 0; // pass1
int D3 = 0; // pass2
int D4 = 0; // pass3
int D5 = 0; // *
int D6 = 0; // relaynumber
int D7 = 0; // ending
// alokasi pin output / relay
const int LedPin1 =  5;
const int LedPin2 =  6;
const int LedPin3 =  7;
const int LedPin4 =  8;
const int LedPin5 =  9;
const int LedPin6 =  10;
const int LedPin7 =  11;
const int LedPin8 =  12;
const int LedPin9 =  13;
// status relay
int rstat1 = 0;
int rstat2 = 0;
int rstat3 = 0;
int rstat4 = 0;
int rstat5 = 0;
int rstat6 = 0;
int rstat7 = 0;
int rstat8 = 0;
// loading status sebelum mati listrik
int lstat1 = 0;
int lstat2 = 0;
int lstat3 = 0;
int lstat4 = 0;
int lstat5 = 0;
int lstat6 = 0;
int lstat7 = 0;
int lstat8 = 0;
// bootstat
int bootstat0 = 0;
 
void setup() {
  //alokasi pin input ( BCD )
  pinMode(BCDPin1, INPUT);  
  pinMode(BCDPin2, INPUT);
  pinMode(BCDPin3, INPUT);
  pinMode(BCDPin4, INPUT);
  pinMode(BCDPinX, INPUT);  
  // alokasi pin output ( Relay )
  pinMode(LedPin1, OUTPUT);
  pinMode(LedPin2, OUTPUT);
  pinMode(LedPin3, OUTPUT);
  pinMode(LedPin4, OUTPUT);
  pinMode(LedPin5, OUTPUT);
  pinMode(LedPin6, OUTPUT);
  pinMode(LedPin7, OUTPUT);
  pinMode(LedPin8, OUTPUT);
  pinMode(LedPin9, OUTPUT);
 }
 
void checkboot() {
if (bootstat0 == 0) {
  lstat1 = EEPROM.read(1);
  lstat2 = EEPROM.read(2);
  lstat3 = EEPROM.read(3);
  lstat4 = EEPROM.read(4);
  lstat5 = EEPROM.read(5);
  lstat6 = EEPROM.read(6);
  lstat7 = EEPROM.read(7);
  lstat8 = EEPROM.read(8);
  if (lstat1 == 1) {
    digitalWrite(LedPin1, HIGH);
    rstat1 = lstat1;
  }
  if (lstat2 == 1) {
    digitalWrite(LedPin2, HIGH);
    rstat2 = lstat2;
  }
  if (lstat3 == 1) {
    digitalWrite(LedPin3, HIGH);
    rstat3 = lstat3;
  }
  if (lstat4 == 1) {
    digitalWrite(LedPin4, HIGH);
    rstat4 = lstat4;
  }
  if (lstat5 == 1) {
    digitalWrite(LedPin5, HIGH);
    rstat5 = lstat5;
  }
  if (lstat6 == 1) {
    digitalWrite(LedPin6, HIGH);
    rstat6 = lstat6;
  }
  if (lstat7 == 1) {
    digitalWrite(LedPin7, HIGH);
    rstat7 = lstat7;
  }
  if (lstat8 == 1) {
    digitalWrite(LedPin8, HIGH);
    rstat8 = lstat8;
  }
  bootstat0 = 1;
}
 
}
 
void reset() {  
 
 
D1 = 0; // *
D2 = 0; // pass1
D3 = 0; // pass2
D4 = 0; // pass3
D5 = 0; // *
D6 = 0; // relaynumber
D7 = 0;
}
 
void reset2() {
  S1 = 0;
  S2 = 0;
  S3 = 0;
  S4 = 0;
  S5 = 0;
  S6 = 0;
  S7 = 0;
  S8 = 0;
  S9 = 0;
  SB0 = 0;
  S0 = 0;
  SP0 = 0;
}
 
void exerelay1() {
  if (rstat1 == 0) {
    digitalWrite(LedPin1, HIGH);
    EEPROM.write(1,1);
    rstat1 = 1;
  }
  else if (rstat1 == 1) {
    digitalWrite(LedPin1, LOW);
    EEPROM.write(1,0);
    rstat1 = 0;
  }
}
 
 
void exerelay2() {
  if (rstat2 == 0) {
    digitalWrite(LedPin2, HIGH);
    EEPROM.write(2,1);
    rstat2 = 1;
  }
  else if (rstat2 == 1) {
    digitalWrite(LedPin2, LOW);
    EEPROM.write(2,0);
    rstat2 = 0;
  }
}
 
void exerelay3() {
  if (rstat3 == 0) {
    digitalWrite(LedPin3, HIGH);
    EEPROM.write(3,1);
    rstat3 = 1;
  }
  else if (rstat3 == 1) {
    digitalWrite(LedPin3, LOW);
    EEPROM.write(3,0);
    rstat3 = 0;
  }
}  
 
void exerelay4() {
  if (rstat4 == 0) {
    digitalWrite(LedPin4, HIGH);
    EEPROM.write(4,1);
    rstat4 = 1;
  }
  else if (rstat4 == 1) {
    digitalWrite(LedPin4, LOW);
    EEPROM.write(4,0);
    rstat4 = 0;
  }
}
 
void exerelay5() {
  if (rstat5 == 0) {
    digitalWrite(LedPin5, HIGH);
    EEPROM.write(5,1);
    rstat5 = 1;
  }
  else if (rstat5 == 1) {
    digitalWrite(LedPin5, LOW);
    EEPROM.write(5,0);
    rstat5 = 0;
  }
}  
 
void exerelay6() {
  if (rstat6 == 0) {
    digitalWrite(LedPin6, HIGH);
    EEPROM.write(6,1);
    rstat6 = 1;
  }
  else if (rstat6 == 1) {
    digitalWrite(LedPin6, LOW);
    EEPROM.write(6,0);
    rstat6 = 0;
  }
}
 
 
 
void exerelay7() {
  if (rstat7 == 0) {
    digitalWrite(LedPin7, HIGH);
    EEPROM.write(7,1);
    rstat7 = 1;
  }
  else if (rstat7 == 1) {
    digitalWrite(LedPin7, LOW);
    EEPROM.write(7,0);
    rstat7 = 0;
  }
}
 
void exerelay8() {
  if (rstat8 == 0) {
    digitalWrite(LedPin8, HIGH);
    EEPROM.write(8,1);
    rstat8 = 1;
  }
  else if (rstat8 == 1) {
    digitalWrite(LedPin8, LOW);
    EEPROM.write(8,0);
    rstat8 = 0;
  }
}
 
 
 
 
// final check
void check2() {
 
  if (D6 == 1) {
  if (S1 == 1) {
    exerelay1();    
     reset();
  }
}
 
  if (D6 == 1) {
  if (S2 == 1) {
    exerelay2();
    reset();
  }
}
 
  if (D6 == 1) {
  if (S3 == 1) {
    exerelay3();
    reset();
  }
}
 
  if (D6 == 1) {
  if (S4 == 1) {
    exerelay4();
    reset();
  }
}
 
  if (D6 == 1) {
  if (S5 == 1) {
    exerelay5();
    reset();
  }
}
 
  if (D6 == 1) {
  if (S6 == 1) {
    exerelay6();
    reset();
  }
}
 
  if (D6 == 1) {
  if (S7 == 1) {
    exerelay7();
    reset();
  }
}
 
  if (D6 == 1) {
  if (S8 == 1) {
    exerelay8();
    reset();
  }
}
 
}
 
 
void check() {
 
    BCDState1 = digitalRead(BCDPin1);
    BCDState2 = digitalRead(BCDPin2);
    BCDState3 = digitalRead(BCDPin3);
    BCDState4 = digitalRead(BCDPin4);
    BCDStateX = digitalRead(BCDPinX);
 
   
  if (BCDStateX == HIGH) {
        // detek 0    
        if (BCDState1 == LOW) {
          if (BCDState2 == HIGH) {
            if (BCDState3 == LOW) {
              if (BCDState4 == HIGH) {
                S0 = 1;
               
               
              }
            }
          }
        }
 
        // detek 1
        if (BCDState1 == HIGH) {
          if (BCDState2 == LOW) {
            if (BCDState3 == LOW) {
              if (BCDState4 == LOW) {
                S1 = 1;
               
              }
            }
          }
        }
       
        // detek 2
        if (BCDState1 == LOW) {
          if (BCDState2 == HIGH) {
            if (BCDState3 == LOW) {
              if (BCDState4 == LOW) {
                S2 = 1;
               
              }
            }
          }
        }
       
        // detek 3
        if (BCDState1 == HIGH) {
          if (BCDState2 == HIGH) {
            if (BCDState3 == LOW) {
              if (BCDState4 == LOW) {
                S3 = 1;
               
              }
            }
          }
        }
       
        // detek 4
        if (BCDState1 == LOW) {
          if (BCDState2 == LOW) {
            if (BCDState3 == HIGH) {
              if (BCDState4 == LOW) {
                S4 = 1;
               
              }
            }
          }
        }
       
        // detek 5
        if (BCDState1 == HIGH) {
          if (BCDState2 == LOW) {
            if (BCDState3 == HIGH) {
              if (BCDState4 == LOW) {
                S5 = 1;
               
              }
            }
          }
        }
       
        // detek 6
        if (BCDState1 == LOW) {
          if (BCDState2 == HIGH) {
            if (BCDState3 == HIGH) {
              if (BCDState4 == LOW) {
                S6 = 1;
               
              }
            }
          }
        }
       
        // detek 7
        if (BCDState1 == HIGH) {
          if (BCDState2 == HIGH) {
            if (BCDState3 == HIGH) {
              if (BCDState4 == LOW) {
                S7 = 1;
               
              }
            }
          }
        }
       
        // detek 8
        if (BCDState1 == LOW) {
          if (BCDState2 == LOW) {
            if (BCDState3 == LOW) {
              if (BCDState4 == HIGH) {
                S8 = 1;
               
              }
            }
          }
        }
       
        // detek 9
        if (BCDState1 == HIGH) {
          if (BCDState2 == LOW) {
            if (BCDState3 == LOW) {
              if (BCDState4 == HIGH) {
                SP0 = 1;
               
              }
            }
          }
        }
       
        // detek *
        if (BCDState1 == HIGH) {
          if (BCDState2 == HIGH) {
            if (BCDState3 == LOW) {
              if (BCDState4 == HIGH) {
                SB0 = 1;
               
              }
            }
          }
        }
       
        // detek #
        if (BCDState1 == LOW) {
          if (BCDState2 == LOW) {
            if (BCDState3 == HIGH) {
              if (BCDState4 == HIGH) {
                SP0 = 1;
               
              }
            }
          }
        }
 
// end of state BCDStateX
  }
 
 
 // end of check  
}
 
 
 
 
 
void loop(){
 
 
 
 
checkboot();  
check();  
check2();
 
 
// password 123
// lengkap nya *123#0x
// x = nomor relay
 
 
// x & * menjadi D1
if (BCDStateX == HIGH) {
  if (SB0 == 1) {
    D1 = 1;
  }
}
 
// 1 & D1 menjadi D2
if (S1 == 1) {
  if (D1 == 1) {
    D2 = 1;
  }
}
 
 
// 2 dan D2 menjadi D3
if (S2 == 1) {
  if (D2 == 1) {
    D3 = 1;
  }
}
 
// S3 dan D3 menjadi D4
 
if (S3 == 1) {
  if ( D3 == 1) {
    D4 = 1;
  }
}
 
// pager & D4 menjadi D5
 
if (SP0 == 1) {
  if (D4 == 1) {
    D5 = 1;
  }
}
 
 
 
// detek password kao D nya sudah up tidak ada action tapi kalo D nya off langsung reset ajahhhh
 
if (S1 == 1) {
  if ( D2 == 1 ) {
    // no action
  }
  else {
    reset();
  }
}
 
if (S2 == 1) {
  if ( D3 == 1 ) {
    // no action
  }
  else {
    reset();
  }
}
 
if (S3 == 1) {
  if ( D4 == 1 ) {
    // no action
  }
  else {
    reset();
  }
}
 
 
if (SP0 == 1) {
  if ( D5 == 1 ) {
    // no action
  }
  else {
    reset();
  }
}
 
 
// selain angka2 password reset ajah sikat coyy
 
 
if (S4 == 1) {
  reset();
}
 
if (S5 == 1) {
  reset();
}
 
if (S6 == 1) {
  reset();
}
 
if (S7 == 1) {
  reset();
}
 
if (S8 == 1) {
  reset();
}
 
if (S9 == 1) {
  reset();
}
 
if (S0 == 1) {
  if (D5 == 1) {
    D6 = 1;
  }
  else {
    reset();
  }
}
 
 
if (D1 == 1) {
  digitalWrite(LedPin9, HIGH);
}
else if (D1 == 0) {
  digitalWrite(LedPin9, LOW);
}
 
 
reset2();
 
 
delay(10);
// end of state loop
  }

[/pastacode]

[/spoiler]

untuk rekan2 yang ingin membuat project ini silahkan copy paste kode kode aneh diatas ke software arduino IDE lalu upload ke IC atmega328 menggunakan downloader seperti USBasp.

selain dari 8 relay yg ada di blok sebelah kanan ada 1 relay lagi yg tempat nya terpisah paling kiri. relay tersebut bekerja untuk memutuskan sinyal audio apabila rangkaian ini digunakan untuk RPU. sinyal audio diputuskan pada saat menerima angka2 kombinasi DTMF dengan tujuan agar tidak bisa terdengar oleh semua pengguna RPU. sebagai contoh kita ingin menyalakan atau mematikan relay nomor 8.  kita harus mengetik *123#08. pada saat memasuki digit pertama yaitu * relay tersebut bekerja. sampai pengguna selesai menginput angka2 kombinasi diatas.  sehingga tone DTMF tidak bisa didengarkan orang lain.

ada fitur lain yaitu eeprom. posisi2 relay tersimpan di memory atmega, sehingga ketika mati listrik atau kehilangan supply. kemudian on lagi kondisi relay akan mengikuti pada saat sebelum mati listrik. misal kita ambil contoh relay yang menyala hanya nomor 5 dan 7… relay lain posisi off..  pada saat mati listrik dan kemudian listrik on kembali. relay 5 dan 7 akan kembali on. seperti sebelum mati listrik.

yang terakhir adalah IC ULN2803 yaitu 8 channel Darlington Array. berfungsi sebagai driver Relay.  karena output sinyal dari atmega ini cukup kecil. tidak mampu menggerakan relay secara langsung. sehingga dibantu oleh IC ini.

untuk rekan rekan yang ingin membuat alat ini dibutuhkan bahan sekitar 300 – 350rb dimulai dari bahan2 komponen, pembuatan PCB,  dan downloader AVR seperti USBasp.

Demikian sedikit tulisan saya tentang eksperimen “remote relay DTMF” ini.. saran dan masukan dengan senang hati dari rekan2 untuk berdiskusi.

berikut foto kit yang sudah jadi.

beres

berikut cuplikan Video nya teman teman :

bagi yang kesulitan membuat dan tidak terbiasa menyolder jangan berkecil hati karena kami siapkan kit sudah jadi dengan harga 500rb per unit dan sudah tested.

barang bisa diambil di bandung atau kirim via JNE

Contact :
Angga S Arly
sms / call / whatsapp 081802279880
pin bbm : 5FC54392
email : angga@ngoprekradio.com
web : www.ngoprekradio.com

info Nomor Rekening :
atas Nama : Angga Sudrahanggara Arly
BCA 8100362245
BNI 0190860738

atau order via Tokopedia KLIK DISINI