Semua Tentang Belajar Teknologi Digital Dalam Kehidupan Sehari - Hari

  • IC Timer 555 yang Multifungsi

    IC timer 555 adalah sirkuit terpadu (chip) yang digunakan dalam berbagai pembangkit timer, pulsa dan aplikasi osilator. Komponen ini digunakan secara luas, berkat kemudahan dalam penggunaan, harga rendah dan stabilitas yang baik

  • Ayo Migrasi TV Digital

    Kami bantu anda untuk memahami lebih jelas mengenai migrasi tv digital, apa sebabnya dan bagaimana efek terhadap kehidupan. Jasa teknisi juga tersedia dan siap membantu instalasi - setting perangkat - pengaturan antena dan distribusi televisi digital ke kamar kos / hotel

  • Bermain DOT Matrix - LOVEHURT

    Project Sederhana dengan Dot Matrix dan Attiny2313. Bisa menjadi hadiah buat teman atau pacarmu yang ulang tahun dengan tulisan dan animasi yang dapat dibuat sendiri.

  • JAM DIGITAL 6 DIGIT TANPA MICRO FULL CMOS

    Jika anda pencinta IC TTL datau CMOS maka project jam digital ini akan menunjukkan bahwa tidak ada salahnya balik kembali ke dasar elektronika digital , sebab semuanya BISA dibuat dengan teknologi jadul

  • Node Red - Kontrol Industri 4.0

    Teknologi kontrol sudah melampaui ekspektasi semua orang dan dengan kemajuan dunia elektronika, kini semakin leluasa berkreasi melalui Node Red

Tampilkan postingan dengan label tutorial. Tampilkan semua postingan
Tampilkan postingan dengan label tutorial. Tampilkan semua postingan

Jumat, 23 Maret 2018

[Tutorial] Membangun System Distribusi TV Satelit Ke Banyak TV Untuk Kos2an / Hotel /Kantor



Jika pembaca pernah menginap di hotel, tiap kamar pada umumnya dilengkapi perangkat televisi. Siaran yg disajikan beragam, ada hotel yg hanya menampilkan siaran tv lokal dan ada juga hotel yg lebih bagus menyajikan siaran televisi luar negeri FTA / gratis maupun berbayar. Siaran ini diambil dari parabola dan disebarkan melalui perangkat MATV / CATV alias tv kabel analog.  Pernah suatu ketika penulis menginap di hotel yg bekerjasama dengan Telkom / Indihome dan siaran USEETV via iptv yg dipasang di tiap kamar, tentunya STB atau receiver useetv ada menancap dibelakang TV nya. Bayangkan saja jika kamar hotel berkisar 50 kamar, berapa biaya langganan bulanan yang harus dikeluarkan ? 




Beberapa tahun yg silam penulis pernah mendapatkan proyek pemasangan software display informasi  di sebuah hotel. Software ini akan digunakan sebagai konten dari salah satu channel informasi di hotel tersebut. Perangkat pada gambar diatas dinamakan HeadEnd CATV untuk hotel yg terdiri dari sumber siaran dari receiver parabola , kemudian menuju ke RF modulator - combiner - dan diakhiri dengan power amplifier di setiap titik yg dianggap kabelnya kejauhan dan  melemah penerimaannya. Hasil dari siaran TV di kamar kualitasnya sangat diluar harapan jika berada di kamar yg jauh dari "booster" dan si teknisi mengeluh kalau beberapa titik terdapat noise yg menyebabkan siaran bersemut dan berbayang.



Dengan modulator RF untuk MATV analog, jumlah siaran maksimal tidak bisa lebih dari jumlah ch TV pada spektrum VHF - UHF atau jumlah channel pesawat televisi analog yang umumnya berjumlah 60. Itupun jika dipikir-pikir untuk membuat 60 ch dibutuhkan perangkat penerima/decoder + RF Modulator parabola di perangkat HeadEnd berjumlah 60 juga . Akan menjadi kurang ekonomis semisal untuk hotel atau kos - kosan yg berkamar 20 , bisa dibayangkan berapa dana yg dibutuhkan untuk 60 receiver dan modulator? Jika mengurangi channel takutnya kualitas layanan ke hotel dianggap kurang lengkap.




BAGAIMANA KALAU RECEIVER NYA SAJA YG DIBAWA KE KAMAR  ?




Perangkat diatas dinamakan "MULTI SWITCH" yang berfungsi untuk membagi sinyal dari LNB ke beberapa receiver. Umumnya dipasaran terdapat 2 jenis yaitu "passive" dimana tegangan suply yg digunakan berasal dari receiver dan cocok untuk distribusi di rumah yg jarak antar receivernya tidak jauh. Sedangkan tipe lainnya adalah "Active" dimana power supply nya tersendiri dan cocok untuk pemakaian dengan banyak receiver dan jarak distribusi cukup panjang. Jenis yg lainnya adalah "Cascade-able" yg dimaksudkan nantinya sinyal LNB dari MultiSwitch ini dapat di "Repeat ulang" ke MultiSwitch yg lainnya (secara seri). Sehingga yg cascade-able dapat menghemat penggunaan Parabola dan tentunya lebih mudah pengaturan perkabelannya karena dapat dipecah-pecah semisal pemasangan multiswitch yg berbeda di tiap lantai gedung. Ini lebih mudah mengaturnya daripada terpusat di satu ruangan yang bisa jadi akan menyusahkan pengaturan kabel coaxialnya.





Untuk mempersingkat bahasan, saya akan ambil contoh proyek yg baru saja saya kerjakan yaitu system distribusi TV untuk kos2an elite  dengan 20 TV. Mari kita rancang terlebih dahulu diagram system distribusinya.





PERSIAPAN PERANGKAT :

1. PARABOLA jaring 7 feet.



Dipilih 7 feet karena alasan ekonomis dan 2 satelit yg akan dituju cukup bagus untuk 7 feet. Dipasaran parabola jaring 7 feet paling laris adalah  Venus AL7201 new .

2. LNB Dual Out - Polaritas Terpisah / Dual out


Multiswitch akan berfungsi sebagai pemilih / switching polaritas dari masing-masing siaran dari banyak reseiver, sehingga dibutuhkan LNB khusus yg polaritas V dan H nya berada pada port berbeda. Karena satelit yg kita akan tuju adalah palapa dan telkom maka dibutuhkan 2 LNB jenis ini. Dikarenakan kemampuan multiswitch sudah semakin bagus maka sekarang cuukup dibutuhkan LNB 2 out saja


3. Braket / Scalar Ring twin LNB.


Saya pilih Scalar twin LNB model baru yg tanpa pemisah atau ada jalur kosonh ditengahnya...kenapa? Keuntungannya saya jelaskan nanti.

4. Multiswitch  5 x 8/16/24/32 

Kebetulan saja yang 5 x 24 stok lagi kosong jadi saya menggunakan yg 5 x 32 . Kenapa 5 input? karena 4 input untuk LNB ke satelit palapa & telkom dan 1 input untuk antena UHF.



Jadi jika khawatir siaran digital parabolanya diacak maka jalur UHF nya bisa juga di gabungkan menggunakan multiswitch + diplexer.


5.  Kabel Coaxial, F Konektor, Sambungan F conector, Panel  Box dan peralatan pertukangan lainnya



PERAKITAN dan TREKING  ... 


bersambung ke halaman berikut  : KLIK DISINI Ya...




Tertarik memasang parabola distribusi ke kamar hotel/ kos/ kantor  Dengan LOW BUDGET? 
Hubungi kontak kami : 08155737755  - 081331339072 (WA)

coba   
Share:

Rabu, 19 November 2014

[TUTORIAL & SCRIPT BREAKDOWN] RPM - TACHOMETER HONDA dengan ATTINY2313




Akhirnya balik lagi ke blog ini setelah beberapa waktu vakum. Dan kali ini menjawab beberapa request yang masuk untuk membahas lebih lanjut mengenai RPM - TACHOMETER untuk sepeda motor yang pernah dibahas disini . Sebenernya jika selalu mengikuti perkembangan blog ini maka tidak terlalu susah asal dasar pengetahuan timer dan interupt nya lengkap. 

Intinya pada project ini adalah mendeteksi RADIASI pulsa CDI ke BUSI dan dimasukkan ke PIN INTERRUPT dan kemudian dihitung jumlah pulsa yang muncul vs waktu. Dan didapatkanlah RPM yang diinginkan. Kali ini kita juga akan membuat animasi graph / level sehingga tidak bosan dengan angka-angka saja.

Perhatikan skematik dibawah ini dan bahan2nya bisa dilihat dari gambar berikut (klik untuk gambar lebih jelas)



Jangan lupa juga untuk menyediakan motor yang akan di "HIAS" yang kali ini meminjam motor anak buah saya yaitu HONDA SUPRA VIT. Saya memiliki pengalaman jika bebek honda lebih bocor sinyal CDI nya ketimbang motor lain. Jadi jika menggunakan motor lain maka disesuaikan pemilihan resistor sebelum transistor pembaca pulsa (2N3904) dan pengalaman lainnya ketika menggunakan sepeda motor Yamaha Vega maka transistor yg digunakan adalah PNP 2N3906 dengan tanpa menggunakan resistor pada basis dan VCC ke EMITOR sedangkan INTERUPT ke COLECTOR (dibalik).





Langsung aja kita bahas script nya biar ga bingung, agak panjang tapi ga rugi kok



>>>HEADER<<

Attiny 2313 yang digunakan adalah default yg memiliki clock 1MHz. 

#define F_CPU 1000000UL // sesuaikan clock yang digunakan !!
#include <avr/io.h>
#include <util/delay.h>
#include <avr/eeprom.h>
#include <inttypes.h>
#include <avr/interrupt.h>

// ini untuk animasi kata awal, ubah sesuai keinginan atau hapus jika tidak mau
uint8_t angka1=16 ;
uint8_t angka2=17 ;
uint8_t angka3=20 ;
uint8_t angka4=15 ;


uint8_t segstep=0; // untuk pindah segmen

uint8_t kalibrasi=3; // kalibrasi awal

uint8_t valid=0; // variabel untuk mengatasi noise ke tombol

int number=0; // variabel menyimpan jumlah counter



>>>PENERJEMAH ANGKA ke SEGMEN<<

7 segmen yang digunakan merupakan common Anoda sehingga untuk menyalakan segmen dibutuhkan logic "LOW" atau 0 volt / Ground. Untuk animasi dan huruf dapat dikreasikan sendiri dengan kombinasi "LOW" untuk segmen menyala dan "HIGH" untuk segmen mati.

void conv_segmen(uint8_t digit)
// Rutin ini merubah angka dan animasi ke segmen
{
    switch (digit)        
          {
//angka biasa
  case 0 :  
     {
         PORTB &= ~_BV(PB0) & ~_BV(PB1) & ~_BV(PB2) & ~_BV(PB3) & ~_BV(PB4) & ~_BV(PB5); //PORT YG NYALA
         PORTB |= _BV(PB6) ; //PORT YG MATI 
      break;
           }
  case 1 :
     {
         PORTB &= ~_BV(PB1) & ~_BV(PB2) ;
               PORTB |= _BV(PB0) |  _BV(PB3) | _BV(PB4) | _BV(PB5) | _BV(PB6) ;
      break;
           }
  case 2 : 
     {
         PORTB &= ~_BV(PB0) & ~_BV(PB1) &  ~_BV(PB3) & ~_BV(PB4) & ~_BV(PB6) ;
               PORTB |= _BV(PB2) |  _BV(PB5)  ;
      break;
           }  
  case 3 : 
      {
         PORTB &= ~_BV(PB0) & ~_BV(PB1) &  ~_BV(PB2) & ~_BV(PB3) & ~_BV(PB6) ;
               PORTB |= _BV(PB4) |  _BV(PB5)  ;
      break;
           }
  case 4 :
     {
         PORTB &= ~_BV(PB1) & ~_BV(PB2) &  ~_BV(PB5) & ~_BV(PB6)  ;
               PORTB |= _BV(PB0) |  _BV(PB3) |  _BV(PB4) ;
      break;
           }
  case 5 : 
     {
         PORTB &= ~_BV(PB0) & ~_BV(PB2) &  ~_BV(PB3) & ~_BV(PB5)  & ~_BV(PB6)  ;
               PORTB |= _BV(PB1) |  _BV(PB4)  ;
      break;
           }
  case 6 : 
     {
         PORTB &= ~_BV(PB0) & ~_BV(PB2) &  ~_BV(PB3) & ~_BV(PB4)  & ~_BV(PB5) & ~_BV(PB6) ;
               PORTB |= _BV(PB1) ;
      break;
           }
  case 7 : 
     {
         PORTB &= ~_BV(PB0) & ~_BV(PB1) &  ~_BV(PB2)  ;
               PORTB |= _BV(PB3) |  _BV(PB4) |  _BV(PB5)|  _BV(PB6) ;
      break;
           }  
  case 8 : 
     {
         PORTB &= ~_BV(PB0) & ~_BV(PB1) & ~_BV(PB2) & ~_BV(PB3) & ~_BV(PB4) & ~_BV(PB5) & ~_BV(PB6);
      break;
           }
  case 9 : 
     {
         PORTB &= ~_BV(PB0) & ~_BV(PB1) & ~_BV(PB2) & ~_BV(PB3) & ~_BV(PB5) & ~_BV(PB6);
               PORTB |= _BV(PB4) ;
      break;
           }
  case 10 : //kosong
     {
    PORTB |= _BV(PB0) | _BV(PB1) |  _BV(PB2) |  _BV(PB3) | _BV(PB4) | _BV(PB5) | _BV(PB6) ;
      break;
           }
 //11 - 14 khusus untuk animasi level       
  case 11 : 
     {
         PORTB &= ~_BV(PB4); 
               PORTB |= _BV(PB0) | _BV(PB1) | _BV(PB2) | _BV(PB3) | _BV(PB5) | _BV(PB6);
      break;
           } 
   
   case 12 : 
     {
         PORTB &= ~_BV(PB4) & ~_BV(PB2); 
               PORTB |= _BV(PB0) | _BV(PB1)  | _BV(PB3) | _BV(PB5) | _BV(PB6);
      break;
           }
  case 13 : 
     {
         PORTB &= ~_BV(PB4) & ~_BV(PB2) & ~_BV(PB5); 
               PORTB |= _BV(PB0) | _BV(PB1)  | _BV(PB3) | _BV(PB6) ;
         break;
           } 
   
   case 14 : 
     {
         PORTB &= ~_BV(PB4) & ~_BV(PB1) & ~_BV(PB2) & ~_BV(PB5); 
               PORTB |= _BV(PB0) | _BV(PB3) | _BV(PB6) ;
         break;
           }
// kebetulan nama pemilik motor seperti ini, ubah sesuai keinginan
   case 15 : //r
     {
         PORTB &= ~_BV(PB6)  & ~_BV(PB4) ; 
                       PORTB |= _BV(PB0) | _BV(PB1) | _BV(PB3) | _BV(PB2) | _BV(PB5) ;
         break;
           }  

   case 16 : //i
     {
         PORTB &= ~_BV(PB4); 
               PORTB |= _BV(PB0) | _BV(PB1) | _BV(PB3) | _BV(PB2) | _BV(PB5) | _BV(PB6)  ;
         break;
           }   
   
   case 17 : //b
     {
         PORTB &= ~_BV(PB3) & ~_BV(PB4) & ~_BV(PB5) & ~_BV(PB2) & ~_BV(PB6); 
               PORTB |= _BV(PB0) |_BV(PB1)  ;
         break;
           }   

   case 18 : //y
     {

         PORTB &= ~_BV(PB1) & ~_BV(PB2) & ~_BV(PB3) & ~_BV(PB5) & ~_BV(PB6);
               PORTB |= _BV(PB4)| _BV(PB0);
      break;
           } 

   case 19 : //u
     {

         PORTB &= ~_BV(PB2) & ~_BV(PB3) & ~_BV(PB4) ;
               PORTB |= _BV(PB1)| _BV(PB0) | _BV(PB5) | _BV(PB6);
      break;
           } 

   case 20 : //0
     {
         PORTB &= ~_BV(PB3) & ~_BV(PB4) & ~_BV(PB2) & ~_BV(PB6); 
               PORTB |= _BV(PB0) |_BV(PB1) |_BV(PB5)  ;  
      break; 
     }


}

}




>>>ANIMASI LEVEL RPM<<

Nilai RPM akan diterjemahkan dari angka menjadi level / bar graph

void animasi(uint8_t posisi)

{

switch(posisi)  {  
       case 0 :{ angka4=10; angka3=10 ; angka2=10; angka1=10;
              break; }
       case 1 :{ angka4=11; angka3=10 ; angka2=10; angka1=10;
              break; }
       case 2 :{ angka4=12; angka3=10 ; angka2=10; angka1=10;
              break; }
       case 3 :{ angka4=12; angka3=11 ; angka2=10; angka1=10;
              break; }
       case 4 :{ angka4=12; angka3=12 ; angka2=10; angka1=10;
              break; }
       case 5 :{ angka4=12; angka3=12 ; angka2=11; angka1=10;
              break; }
       case 6 :{ angka4=12; angka3=12 ; angka2=12; angka1=10;
              break; }
       case 7 :{ angka4=12; angka3=12 ; angka2=12; angka1=11;
              break; }
       case 8 :{ angka4=12; angka3=12 ; angka2=12; angka1=12;
              break; }
       case 9 :{ angka4=13; angka3=12 ; angka2=12; angka1=12;
              break; }
       case 10 :{ angka4=14; angka3=12 ; angka2=12; angka1=12;
              break; }
       case 11 :{ angka4=14; angka3=13 ; angka2=12; angka1=12;
              break; }
       case 12 :{ angka4=14; angka3=14 ; angka2=12; angka1=12;
              break; }
       case 13 :{ angka4=14; angka3=14 ; angka2=13; angka1=12;
              break; }
       case 14 :{ angka4=14; angka3=14 ; angka2=14; angka1=12;
              break; }
       case 15 :{ angka4=14; angka3=14 ; angka2=14; angka1=13;
              break; }
       case 16 :{ angka4=14; angka3=14 ; angka2=14; angka1=14;
              break; }
       default :{ angka4=14; angka3=14 ; angka2=14; angka1=14;
              break; }
         }

}



>>>INISIALISASI COUNTER<<

Counter 0 adalah counter 8 bit, sedangkan Counter 1 adalah 16 bit. Silahkan membaca terlebih dahulu penjelasan mengenai counter dan timer disini.

void init_ctr(void) //COUNTER 0 8 BIT untuk pindah kolom 7 segmen
{
  
   
   TCCR0A |= (1 << WGM01); // Configure timer 0 for CTC mode
   TIMSK |= (1 << OCIE0A); // Enable CTC interrupt
   OCR0A   = 50; // Set CTC compare value  till blink disapear at 1MHz AVR clock, with a prescaler of 64
   TCCR0B |= (1 << CS01)|(1 << CS00); // Start timer at Fcpu/64
   
   
}


void init_ctr1(void) //COUNTER 1 untuk penghitung pulsa saat 600ms
{
   
   TCCR1B |= (1 << WGM12); // Configure timer 1 for CTC mode
   TIMSK |= (1 << OCIE1A); // Enable CTC interrupt 
   OCR1A  = 586; //compare the CTC A = 600ms =586
   TCCR1B |= ((1 << CS10) | (1 << CS12)); // Start timer at Fcpu/1024

}




>>>INTERRUPT TIMER<<


ISR(TIMER1_COMPA_vect) //interrupt timer 1 (16 bit)  untuk capture jumlah pulsa 

{ uint16_t rpm,anime; //variabel

anime=0;
rpm=0;

switch(kalibrasi) {  //Pemilih kalibrasi
      case 1 :{ 
          rpm=number/100;
    break; }

      case 2 :{ 
          rpm=number/10;
    break; }

      case 3 :{ 
          rpm=number;
    break; }

      case 4 :{ 
          rpm=number*10;
    break; }

      case 5 :{ 
          rpm=number*100;
    break; }
      
   case 6 :{ 
          anime=1;
    break; }
      
   case 7 :{ 
          anime=2;
    break; }

    }

  //Pemilih antara angka rpm atau animasi level
switch(anime) { 

case 0 : { //ANGKA RPM

OCR1A  = 586;
angka1 = rpm%10;

if(rpm>9) angka2 = ((rpm%100) - (rpm%10)) /10 ;
else angka2=10;

if(rpm>99) angka3 = ((rpm%1000) - (rpm%100)) /100 ;
else angka3=10;

if(rpm>999) angka4 = ((rpm%10000) - (rpm%1000)) /1000 ;
else angka4=10;
  
break ; }

case 1 : {  //ANIMASI MODE 1
OCR1A  = 100;
animasi(number/10);
  
break ; }
         
case 2 : {  //ANIMASI MODE 2
OCR1A  = 100;
animasi(number/50);

break ; }

  }


number=0;

}

ISR(TIMER0_COMPA_vect) // timer 0 (8 bit) untuk pindah kolom 7 segmen
{

//tiap segmen yg akan dinyalakan akan diberikan logic High

segstep++;

  switch(segstep) {  
      case 1 :{  conv_segmen(10);
              PORTD |= _BV(PD0);
                 PORTD &= ~_BV(PD1) & ~_BV(PD4) & ~_BV(PD5)  ;  
                    conv_segmen(angka4);
     break;
                  }
 
         case 2 :{  conv_segmen(10);
              PORTD |= _BV(PD1);
                 PORTD &= ~_BV(PD0) & ~_BV(PD4) & ~_BV(PD5)  ;  
                    conv_segmen(angka3);
     break;
                  }
         case 3 :{  conv_segmen(10);
              PORTD |= _BV(PD4);
                 PORTD &= ~_BV(PD1) & ~_BV(PD0) & ~_BV(PD5)  ;  
                    conv_segmen(angka2);
     break;
                  }
         case 4 :{  conv_segmen(10);
              PORTD |= _BV(PD5);
                 PORTD &= ~_BV(PD1) & ~_BV(PD4) & ~_BV(PD0)  ;  
                    conv_segmen(angka1);
     segstep=0;
     break; 
         }

                 }


}


>>>COUNTER INTERRUPT dari BUSI<<

SIGNAL (SIG_INT0) //INTERRUPT 0 menghitung pulsa dari radiasi CDI vs BUSI
{
number++;

}



>>>TOMBOL<<

void tombol(void)
{


if(bit_is_clear(PIND, PIND3)) //pembacaan pada pin D3

{ valid++;  //validasi penekanan
_delay_ms(10);
}

if( valid >= 50) //jika melebihi noise motor/getaran, ubah suai nilai ini
{ 

valid=0;
kalibrasi++; //ubah kalibrasi



if (kalibrasi >= 8) kalibrasi=1;

conv_segmen(10);


//Menulis nilai kalibrasi ke EEPROM 
eeprom_write_byte((uint8_t*)20, kalibrasi); 
_delay_ms(500);


  }
}


>>>MEMBACA EEPROM  nilai KALIBRASI<<

void baca_eeprom(void)
{

kalibrasi = eeprom_read_byte((uint8_t*)20);

if(kalibrasi == 0xFF) kalibrasi=3;


}



>>>MAIN PROGRAM<<

int main(void)
{

//Inisialisasi Interrupt
        GIMSK |= (1<<INT0) ; // inetrupt untuk hitung pulsa busi
   MCUCR |= (1<<ISC01)| (1<<ISC11); //fall edge 
//Inisialisasi PIN ATTINY2313 
 DDRD |= _BV(PD0) | _BV(PD1) | _BV(PD4) | _BV(PD5)  ; // segmen select / common scans
 DDRB |= _BV(PB0) | _BV(PB1) | _BV(PB2) | _BV(PB3) | _BV(PB4) | _BV(PB5) | _BV(PB6) ; // seg a,b,c,d,e,f,g
    
 DDRD &= ~_BV(PD3) ; // Input kalibrasi

init_ctr(); //hidupkan COUNTER0
sei();

_delay_ms(1000);


//tampilan kata ke 2, sesuaikan dengan kebutuhan atau hapus jika tidak mau

angka1=16 ;
angka2=1 ;
angka3=19 ;
angka4=18 ;


_delay_ms(1000);

init_ctr1(); //hidupkan COUNTER 1

baca_eeprom(); // baca nilai kalibrasi 



//muter terussssss
while(1)

{
tombol();

}


}




videonya....seperti dibawah ini





tips: Tegangan pada lampu depan/ langsung dari coil bisa berlebih jika akimu rusak/habis. Jadi usahakan mencari sumber tegangan yg tidak merusak regulator 7805


 Selamat Mencoba
Share:

Selasa, 24 Juni 2014

[ PROJECT ] Intercom PTT (push to talk) memanfaatkan kit amplifier





INTERCOM ...jadul amat sih boz...kata salah satu teman di kantor saya yg baru. Tapi capek juga kalau mesti turun tangga atau menghabiskan urat tenggorokan 'teriak' kalau ada keperluan mendesak dari lantai 1 ke lantai 2. Masalah yang agak terlalu "gampang" bagi penggemar elektronika...tinggal beli kit intercom atau wireless handy talkie. Ehhh ternyata di toko elektronika sebelah adanya cuman kit preamp mic dan kit amplifier OCL 100 watt. kata yang jualan " Jadul amat mas cari intercom, napa ga pake HP aja ?" ...iya juga sihh..di playstore android ada juga app nya kok dengan search kata kunci "PTT (push to talk)"...masa bodooo...kita ini orang elektronika...solder aja !!




Dan gambar diatas menunjukkan daftar belanjaan kami. Ada kit preamp + mic condenser, kit amplifier, push button DPDT, speaker kecil dan adaptor 12v. Mulailah merangkai dengan sangat gampang , tujuan pertamanya mengetest mic --> preamp --> ampli --> speaker ...setelah tersambung hasilnya mengecewakan, mic condensernya kurang sensitif terhadap suara atau mungkin pre-amp nya kurang gede. Sang arsitek yg bernama deni pun ga kalah akal dengan bimbingan master aisi555 kemudian dimanfaatkanlah speaker sebagai microphone. Kok bisa bos ? ya bisa lah..wong dalemannya mic sama aja dengan speaker.





Bagaimana dengan koneksi dan perkabelan nya ? ya perhatikanlah dengan seksama gambar dibawah ini, warna-warni dari koneksi menunjukkan hubungan yang berbeda dan hanya dibutuhkan 5 buah pasang kabel. Power suply dan bagian preamp/ampli bisa diletakkan dimana saja.

Klik pada gambar dibawah biar tambah jelas





Keterangan:


  • Speaker B dan switchnya di letakkan berjauhan dengan rangkaian utama, menggunakan sambungan 5 kabel ( 12v adaptor, suply 12v ke kit, input Mic preamp, output Amplifier, dan Ground)
  • Hubungkan kabel dengan warna sama dan nama yg sama. Hanya gunakan 1 Baterai/adaptor saja, jangan salah ya ... yg kodenya panah 12V itu nyambung .
  • Tekan switch untuk berbicara didepan speaker, otomatis speaker lawan akan terdengar suara juga



Prinsipnya adalah memanfaatkan switch DPDT untuk memilih speaker apakah sebagai input atau output dan juga memutus arus supply dari adaptor ke pre-amp/amplifier (agar lebih awet). Video demonya dapat dilihat pada video youtube berikut :





Jika alat ini diberikan box yg bagus bisa dipasang di depan gerbang/ pintu disebelah bel pintu sehingga bisa menyapa tamu yang akan berkunjung dan bisa saja mengusir marketing kartu kredit yg iseng ke rumah. Kalau ditambah kamera video kecil bagus juga tuh.


TIPS :

  • Untuk menghasilkan suara lebih jernih tanpa dengung maka pada output adaptor cukup diberi regulator tegangan 78xx (dalam contoh ini 7812), kecuali adaptornya memang sudah bagus outputnya semisal adaptor switching.
  • Switch DPDT seperti contoh yg digunakan aslinya memiliki latch/kunci atau kata lain bukan toggle yg akan kembali setelah di lepas. Jadi modifikasi kawat/besi pengait dengan menariknya dan kemudian cukup diletakkan disamping untuk menjadikannya toggle switch.



SELAMAT MENCOBA !!



.
Share:

Senin, 09 Juni 2014

[Tutorial] 4 Led Matrix dengan Mega8535/16




Bahan-Bahan:


  • ATMega 8535/16/32 
  • 4 buah Led matrix 7x5
  • 3 bh Resistor 10K
  • 2 Tombol tactile switch
  • Breadboard / projectboard
  • Kabel secukupnya



Dasar yg harus dikuasai:

Dasar I/O, Led Matrix Lovehurt ,  Counter/Timer


Skematik :



Klik untuk lebih jelas, baca keterangan pada gambar


Script Jam Led matrix


#define F_CPU 1000000UL //ubah sesuai clock micro
#include <avr/io.h>
#include <util/delay.h>
#include <avr/eeprom.h>
#include <inttypes.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h> 
#include <string.h>

//ARRAY UNTUK MENYIMPAN DATA ANGKA
const char textset[] PROGMEM  = 
{0x7f, 0x41, 0x7f, //0
0x80, 0x80, 0x7f, //1
0x79, 0x49, 0x4f, //2
0x49, 0x49, 0x7f, //3
0x0f, 0x08, 0x7f, //4
0x4f, 0x49, 0x79, //5
0x7f, 0x49, 0x79, //6
0x01, 0x01, 0x7f, //7
0x7f, 0x49, 0x7f, //8
0x4f, 0x49, 0x7f, //9
};



char titik_dua = 0x14;  // :
char blk = 0x80; // BLANK
char fulltext[22] ; //ARRAY TAMPILAN led matrix
char detik,menit,jam; //variabel jam

void cleartext(void)  // MEMBERSIHKAN datanya menjadi kosong
{  uint8_t i;

     
  for(i=0 ; i <20 ; i++)
    { fulltext[i] = 0 ; }  

}

void ubah_angka(char angka1, char angka2, char angka3, char angka4)
{
//routine mengubah angka waktu ke tampilan led matrix
uint8_t a,b;
//jam
  b=angka1*3;          
  for(a=b; a<b+3; a++) strncat_P(fulltext,&textset[a],1); //spasi
  strncat(fulltext,&blk,1);

  b=angka2*3;          
  for(a=b; a<b+3; a++) strncat_P(fulltext,&textset[a],1);
  strncat(fulltext,&blk,1);   strncat(fulltext,&blk,1);

 // untuk tampilan titik dua berkedip
  if(detik%2 == 0)strncat(fulltext,&titik_dua,1);
  else strncat(fulltext,&blk,1);
  
  strncat(fulltext,&blk,1);   strncat(fulltext,&blk,1);

//menit
  b=angka3*3;          
  for(a=b; a<b+3; a++) strncat_P(fulltext,&textset[a],1); 
  strncat(fulltext,&blk,1);

  b=angka4*3;          
  for(a=b; a<b+3; a++) strncat_P(fulltext,&textset[a],1);

 
}


//routine untuk scanning & menulis ke led matrix
void tulis_text(void)
{
uint8_t a;
int b,speed;

a=0;
speed=5;//UBAH NILAI speed sesuai kedip dan kecerahan yg diinginkan



while(a<21)

 {


for(b=0;b<speed;b++ ) 
{
   
if(a<8 ) 

{

PORTD = ~(1<<a) ;
PORTC =0b11111111;
PORTB =0b1111;

}
 
 else if(a>=8 && a<16)
{
   
   PORTC = ~(1<<(a-8)) ;
PORTD =0b11111111;
PORTB =0b1111;

}
else if(a>=16 && a<21)
{
   
   PORTB = ~(1<<(a-16)) ;
PORTD =0b11111111;
PORTC =0b11111111;

}

PORTA=fulltext[a];
_delay_us(50);   

   PORTA=0x80;  //biar tidak berbayang


 }

a++;
 } 


  
 }


ISR(TIMER1_COMPA_vect) //vector interupt untuk 1/2 detik

{ 
detik++; //dibuat 1/2 detik agar mudah menampilkan : kedap kedip

if(detik==120) // 1 menit
  {
     menit++;

 if(menit==60) //1 jam
 {
   jam++;

if(jam==24)jam=0; // 1 hari

       menit=0;
     }
    detik=0;
} 


cleartext();
ubah_angka(jam/10, jam%10, menit/10, menit%10); //tampilkan


}


void init_timer(void)
{

 TCCR1B |= (1 << CS11)|(1 << CS10); // Set up counter dengan prescale 64
  //Baca datasheet untuk mencari konfigurasi prescaler micro yg sesuai
  TCCR1B |= (1 << WGM12); // Configure timer 1 for CTC mode       
  TIMSK |= (1 << OCIE1A); // Enable CTC interrupt
  OCR1A = 7812; // nilai atas dari TCNT1, untuk perhitungan 1 detik

sei();   //hidupkan interupt


}
int main(void)
{
//bagian ini sesuaikan dengan port micro yg kamu gunakan
 DDRA = 0b11111111; // portA = data text dot matrix
 DDRC = 0b11111111; //scanning kolom
 DDRD = 0b11111111; //scanning kolom
 DDRB = 0b11001111; //scaning, PB5 & PB4 sebagai tombol
 
jam = 10; 
menit = 23;

init_timer();

while(1)
 {
    tulis_text();

  //ini untuk pembacaan tombol  
if (bit_is_clear(PINB, PINB4)) // membaca tombol jika port input B#4 di clear LOW / 0 
        {
         
           menit++;
           if(menit>=60) menit=0;
          _delay_ms(200);

        }
    
if (bit_is_clear(PINB, PINB5)) // membaca tombol jika port input B#5 di clear LOW / 0 

        {
         
            jam++;
            if(jam>=24) jam=0;
            _delay_ms(200);

        }


 }

return 0;
}



Hasil







SELAMAT MENCOBA 



.
Share:

Minggu, 08 Juni 2014

Dukun Fusebit Mengalahkan Fusebit Doctor !


Pernah mengalami masalah ic tidak response setelah mengubah fusebit clock pada microcontroler AVR ? 
Anda lupa clock yg digunakan atau Xtal yang akan disolder entah kemana ?
Duit cekak di penghujung bulan sementara tugas sudah deadline ?



DUKUN FUSEBIT AKAN MEMBANTU ANDA !



Anda tidak perlu menggunakan Fusebit Doctor yg dijual dipasaran atau rangkaian njlimet lainnya




Cukup Menggunakan Praktek dasar timer 555 yang ada disini



Dengan Menggunakan Rumus  Frequency = 1.44 / [C*(R2 + 2*R1)] 
Maka buatlah clock dengan frekuensi 500khz- 1Mhz dan hubungkan dengan kaki output (3) dari timer 555 menuju  XTAL1 pada ic microcontroller AVR anda.



Putar-putar VR/ Trimpot sehingga memiliki resistansi berkisar 20k - 30 k ohm dan hubungkan avr ke isp programmer seperti biasa ( disarankan menggunakan stk500/avrisk mk2, rangkai micro seperti biasa dan jangan lupa di beri vcc/gnd/pull up di rst). Jika Read signature berhasil maka lakukan perubahan Fusebit seperti biasa (ubah ke default internal RC saja)

Contoh ubah fusebit di avrstudio 4



Syarat dan ketentuan:

  • IC microcontroller dalam keadaan BAIK, hanya fusebit clock nya saja yg salah atau lupa
  • Port SPI masih dalam posisi ENABLE, jika tidak maka perlu HVPP (high Voltage Parallel Programming) atau menggunakan universal programmer (All-7/All-100) yg biasanya ada di toko yg melayani pengisian EEPROM Player DVD/TV




TUNGGU APALAGI ... 
SELAMAT MENCOBA !!
Share:

Selasa, 18 Maret 2014

[TUTORIAL] Clinometer (pengukur ketinggian) Sederhana Memanfaatkan ADC




Persiapan sebelum memulai project :

  • Tutorial ADC dapat dibaca disini
  • Dasar menulis ke LCD dapat dilihat disini

Bahan-bahan yang dibutuhkan :
  • Minimum System / ATmega 8535/ ATmega 16
  • Display LCD 16 x 2 
  • Potensiometer linear (nickel) 10K ohm(2 buah)
  • Resistor 1K (2 buah)

Project ini adalah request dari anak SMA yang mendapatkan tugas matematika dimana gurunya cukup "Gila" untuk menantang anak didiknya membuat alat clinometer atau pengukur ketinggian. Sang murid mencari di google dan didapatkan rangkaian yg menggunakan acelerometer tapi kendalanya harga yang mahal dan dia pun kesulitan mengerjakannya. Solusi saya cukup sederhana dengan memanfaatkan putaran sudut yg dikonversikan ke putaran potensiometer (variable resistor) yang kemudian dirubah ke dalam level tegangan dan dibaca ADC.


Gambar diatas merupakan ilustrasi trigonometri dari sebuah clinometer dengan mencoba memanfaatkan rumus trigonometri. Keuntungan rumus diatas adalah tidak perlu menentukan jarak pengamat ke benda yang diukur,akan tetapi karena mengandalkan rumus tangen maka dari grafik tangen berikut terjadi sedikit anomali pengukuran jika sudut mendekati kelipatan 90 derajat, dimana tangent 90 adalah tak berhingga !.

grafik tangen yang tidak linear sedikit mempengaruhi keakuratan


Pemilihan potensiometer yang akan digunakan sebagai penerjemah dari sudut ke tegangan (menggunakan prinsip pembagian tegangan) juga perlu diperhatikan karena pada umumnya potentiometer yg dijual dipasaran adalah potentiometer audio yg bersifat logaritmik. Jadi potentiometer yang dipilih adalah berjenis "wire wound" atau yang umum di pasaran bernama "potensiometer nikel".



Output dari project kali ini menggunakan lcd 16x2 yang akan menampilkan nilai sudut alpha, beta dan nilai hasil pengukuran ketinggian.



Perputaran sudut pengukuran vs tegangan yg dihasilkan dapat menggunakan rumus pembagian 10 bit adc (0 - 1023) sehingga didapat sudut yang mewakili per bit. Tentunya potensiometer tidaklah terlalu linear karena banyak faktor dan untungnya kita hanya menggunakan sudut 0-90 derajat saja untuk alpha maupun beta. Saya mendapatkan untuk sudut 0-90 dapat menggunakan pembagian nilai bulat per bit ADC yaitu  "pembacaan adc / 3". Jadi sesuaikan dulu dengan respon nilai potensiometer yang kamu punya dengan sudut yang dihasilkan.

Untuk pengukuran tangen pada WinAvr akan digunakan library "math.h" dimana pengukuran sudut akan dirubah menjadi satuan radian. Rumus yang digunakan tentunya akan sangat memakan memory akibat nilai "float" yang digunakan. Hal ini kita akali saja dengan menggunakan unsigned integer 32 bit dengan pendekatan seperti berikut :

  • tana = tan((M_PI*adcalpha)/180)*1000;
  • tanb = tan((M_PI*adcbeta)/180)*1000;
  • tinggi= (tanb/tana) + 1 ;

Kita ingat juga konversi dari derajat ke radian digunakan rumus :


  • RADIAN = (PI * sudut ) /180 


Pengali 1000 pada rumus diatas digunakan untuk mendapatkan nilai float (pecahan / koma) menjadi ratusan sehingga pembagian menjadi agak bulat.


Skematiknya adalah sebagai berikut ini :

klik untuk memperjelas


Script selengkapnya seperti dibawah ini, diasumsikan bahwa tinggi pengamat 1 meter :


#define F_CPU 4000000UL
#include <string.h>
#include <avr/io.h>
#include <util/delay.h>
#include <avr/eeprom.h>
#include <math.h>
#include "lcd.h"

char derajat = 0xDF; // karakter derajat

void reverse(char s[]) //rutin untuk merubah angka ke ascii
   int c, i, j; 
    
   for (i = 0, j = strlen(s)-1; i < j; i++, j--){ 
      c = s[i]; 
      s[i] = s[j]; 
      s[j] = c; 
   } 
void itoa(uint16_t n, char s[]) 
//rutin untuk merubah angka ke ascii
   uint16_t i;
   
   i = 0; 
   do {   // generate digits in reverse order 
      s[i++] = n % 10 + '0'; // get next digit 
   } while ((n /= 10) > 0); // delete it 

   s[i] = '\0'; // add null terminator for string 
   reverse(s); 


void initADC() //inisialisasi ADC
{
ADMUX=(1<<REFS0);// Aref=AVcc;
ADCSRA=(1<<ADEN)|(7<<ADPS0);
}


uint16_t ReadADC(uint8_t ch) //pembacaan ADC
{
   //Select ADC Channel ch must be 0-7
   ch=ch&0b00000111;
   ADMUX|=ch;

   //Start Single conversion

   ADCSRA|=(1<<ADSC);

   //Wait for conversion to complete
   while(!(ADCSRA & (1<<ADIF)));

   //Clear ADIF by writing one to it
   ADCSRA|=(1<<ADIF);

   return(ADC);
}

int main(void)
{

uint16_t baca1,baca2,tana,tanb,tinggi;
char dum;

lcd_init(LCD_DISP_ON);//inisialisasi LCD
lcd_clrscr(); //bersihkan LCD

   while(1)
   {
      initADC(); 

      baca1=ReadADC(6) / 3; //baca alpha
      if(baca1 <90){ //jika hasil tidak lewat 90 derajat

      lcd_gotoxy(0,0);
      lcd_putc(224); //ascii alpha
      lcd_puts(" =");

          itoa(baca1,&dum);
  lcd_puts(&dum);
 lcd_putc(derajat);
 lcd_putc(' ');
 
 }

 else{ //jika lebih 90 di warning
          lcd_gotoxy(0,0);
 lcd_putc(224);
 lcd_puts(" =max");
 }


     _delay_ms(100);

initADC();


     baca2= ReadADC(5) / 3; //baca beta

     if(baca2 <90){  // jika perhitungan < 90 derajat
 
 lcd_gotoxy(8,0);
 lcd_putc(226);
          lcd_puts(" =");

          itoa(baca2,&dum);
 lcd_puts(&dum);
 lcd_putc(derajat);
 lcd_putc(' ');
      }

      else{  //jika lebih 90 di warning
          lcd_gotoxy(8,0);
 lcd_putc(226);
 lcd_puts(" =max");
 }

      _delay_ms(100);
 lcd_gotoxy(0,1);
      

      if(baca1 <90 && baca2 <90){
          //PERHITUNGAN TINGGI
          tana = tan((M_PI*baca1)/180)*1000;
 tanb = tan((M_PI*baca2)/180)*1000;
 tinggi= (tanb/tana) + 1 ;
 
 lcd_puts(" TINGGI:");
          itoa(tinggi,&dum);
 lcd_puts(&dum);
 lcd_puts(" m");
 lcd_puts("        ");
 }

         else{
          lcd_gotoxy(0,1);
 lcd_puts(" TINGGI: Error !");
 }
   }
return 0;

}


SELAMAT MENCOBA  
Share:

Sabtu, 08 Februari 2014

[Tutorial] Remote Control dengan 38kHz Infra red Menggunakan NE555 dan HT12D/E


Semakin asyik dengan project non micro nih...ya tanpa micro biar orang yg sedikit jadul dan mungkin lemot (sorry ya) bisa berpartisipasi juga. Kali ini akan bermain dengan remote control berbasis inframerah, dimana ada sebuah modul Tx Rx 38khz saya beli di pasar genteng surabaya. Modul ini sangat simple dengan menggunakan pembangkit sinyal menggunakan IC favorit blog ini...timer NE555 !


38kHz Protocol for Infra Red


Ketika remote untuk televisi dikreasikan oleh zenith , para pemilik anjing peliharaan mengeluh karena anjing mereka terbangun atau menggonggong ketika ada yg memencet tombol remote. Saat itu frekuensi yg digunakan berupa audio ultrasonik diatas 20khz dan masih dapat didengar suaranya oleh anjing. Maka muncullah inovasi dari NEC dan Philips dengan menggunakan sinyal inframerah (yg tidak terlihat) dan frekuensi 36kHz-40kHz yg dipilih karena hampir tidak ada sumber alam yg menghasilkan atau terpengaruh oleh frekuensi di range ini. 

Saya menjadi bingung ..kenapa harus dimodulasikan menjadi 38kHz, padahal jika led infra di ON OFF saja sudah dapat memberikan sinyal clock/data serial. Ahh biarkan saja ini menjadi sejarah para engineer di NEC dan Philips..sebaiknya saya cari aja perbedaan antara INFRA tanpa modulasi dan yang termodulasi melalui modul buatan Innovative Electronics (DT-IO Infra Tx/Rx). Rangkaiannya simple kok...

Modul Tx (klik biar lebih jelas)

Modul transmitter menggunakan IC 555 sebagai pembangkit frekuensi dan IC TTL 7400 sebagai pembalik logika dari input yg diberikan. Input bisa diberikan dengan tegangan beragam baik TTL/CMOS/RS232. Perhatikan jumper harus dipasang sesuai dengan mode aktif dari sinyal input dan output infra red yg diinginkan.

Modul Rx (klik biar lebih jelas)


Komponen utama adalah phototransistor yg khusus digunakan untuk komunikasi infra merah yg umumnya ditemukan diremote televisi berkode TSOP4838. Komponen lainnya hanya sebagai pembatas tegangan dan pembalik logika. Saya kemudian menyusun kedua modul ini diatas breadboard dan menggunakan inputan berupa tombol / switch tactile.


Untuk mencocokkan frekuensi dari oscillator 38khz menggunakan 555 maka perlu dikalibrasikan melalui trimpot kecil (digambar warna putih). Jika menggunakan oscilloscop maka simple aja ketika input di ground ( jumper posisi 1-2 semua) maka output dari kaki led infra bernilai 38khz. Jika tidak mempunyai oscilloscop maka cukup dengan memasang receiver dan output dihubungkan ke LED dan input transmiter di groundkan. Putar trimpot transmitter sampai led di receiver menyala tanpa kedip.



Rangkaian diatas merupakan infra merah tanpa modulasi dan output dari receiver bisa nyala kok ! Lalu apa bedanya ? coba deh pantulkan infra rednya dan jauhkan dari receiver, lihat mana yg masih diterima oleh TSOP4838. Tentunya yg masih nyaut adalah yg termodulasi 38kHz. 

Ingat percobaan jam 6 digit yg dibahas di tulisan sebelumnya ? Ayo kita ganti saja input clock menggunakan penekanan tombol dari transmitter infra merah. 



Dan hasil yang didapatkan bisa dilihat pada video youtube berikut







ENCODER/ DECODER with HT-12E / HT-12D




Nahh..inilah IC yg saya cari-cari selama ini dan akhirnya dijual juga di eltech pasar genteng surabaya. IC yg legendaris ini merupakan encoder dan decoder data serial yg siap pakai, dengan hanya menambahkan 1 komponen Rosc sebagai penentu frekuensi clock data serial. ADDRESS A0-A7 digunakan sebagai pemilih "Channel" dari rangkaian remote, sehingga untuk dapat berkomunikasi maka addres di kedua sisi haruslah sama.  PIN AD8-AD11 pada sisi transmiter merupakan data 4 bit yg akan dikirim sat pin TE (14) mendapatkan GND. Semua pin memiliki pullup sehingga jika menginginkan logika HIGH cukup di ambangkan saja.

Bagaimana dengan pemilihan ROsc ? bacalah datasheet dan ikuti rumus nya sesuai grafik berikut :



Pilihlah Rosc yg menghasilkan frekuensi oscillator yg hampir sama , 5% kurang lebih tidak masalah. Kebetulan di rumah ada Resistor 2Mega Ohm lalu digunakan sebagai ROsc HT12E sehingga ROsc dari HT12D berkisar nilainya 56K ohm. Lanjut ke skematik yukkk...


klik untuk memperjelas


Pemilihan address menggunakan dip switch 8 pin, kemudian input data menggunakan tombol switch tactile yang hubungkan dengan dioda 1N4148 sehingga saat ditekan maka TE (transmit enable) juga terhubung ke ground. Ada penggunaan transistor NPN dan PNP pada output HT12E ini dimaksudkan untuk meningkatkan level logic (agak rendah tegangannya), karena yg saya gunakan adalah logic 1 yg akan mengkatifkan modul transmitter 38kHz ( Jumper di 2-3) . Jika transistor jenis ini susah didapatkan didaerah kamu dapat juga diganti dengan transistor NPN / PNP yg umum seperti 9012/9013.

Pada sisi receivernya input data berasal dari pin 4 (logika negasi, jumper lepas). Untuk kalibrasi 38khz maka ketika saat tombol transmitter ditekan maka led di pin 17 harus menyala. Dan hasilnya seperti video berikut:






Aplikasi yg mungkin dari tutorial ini adalah  sebagai pengontrol lampu rumah, semisal dengan memanfaatkan IC decoder 4 to 16 (74LS154) sehingga output HT12D yang cuman 4 bit dapat dibuat menjadi 16 pin yg kemudian dihubungkan ke relay. Masih banyak kok aplikasi lainnya....

SELAMAT MENCOBA 
Share:

Kontak Penulis



12179018.png (60×60)
+628155737755

Mail : ahocool@gmail.com

Site View

Categories

555 (8) 7 segmen (3) adc (4) amplifier (2) analog (19) android (12) antares (8) arduino (25) artikel (11) attiny (3) attiny2313 (19) audio (5) baterai (5) blog (1) bluetooth (1) chatgpt (2) cmos (2) crypto (2) dasar (46) digital (11) dimmer (5) display (3) esp8266 (25) euro2020 (13) gcc (1) iklan (1) infrared (2) Input Output (3) iot (58) jam (7) jualan (12) kereta api (1) keyboard (1) keypad (3) kios pulsa (2) kit (6) komponen (17) komputer (3) komunikasi (1) kontrol (8) lain-lain (8) lcd (2) led (14) led matrix (6) line tracer (1) lm35 (1) lora (5) MATV (1) memory (1) metal detector (4) microcontroller (70) micropython (6) mikrokontroler (1) mikrokontroller (14) mikrotik (5) modbus (9) mqtt (3) ninmedia (5) ntp (1) paket belajar (19) palang pintu otomatis (1) parabola (88) pcb (2) power (1) praktek (2) project (33) proyek (1) python (7) radio (17) raspberry pi (4) remote (1) revisi (1) rfid (1) robot (1) rpm (2) rs232 (1) script break down (3) sdcard (3) sensor (2) sharing (3) signage (1) sinyal (1) sms (6) software (18) solar (1) solusi (1) tachometer (2) technology (1) teknologi (2) telegram (2) telepon (9) televisi (167) television (28) transistor (2) troubleshoot (3) tulisan (93) tutorial (108) tv digital (6) tvri (2) vu meter (2) vumeter (2) wav player (3) wayang (1) wifi (3)

Arsip Blog

Diskusi


kaskus
Forum Hobby Elektronika