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 project. Tampilkan semua postingan
Tampilkan postingan dengan label project. Tampilkan semua postingan

Rabu, 26 April 2017

News Ticker - Teks Berjalan Untuk Inhouse Channel TV Kabel dengan LiveTwitter


APA SIH SOFTWARE INI ?
Software ini merupakan pengembangan lanjutan dari aisi555 untuk menjawab kebutuhan broadcaster amatir terhadap news ticker atau teks berjalan. Pengembangan yang dimaksud adalah menjawab fenomena sosial media yang sangat berkembang, khususnya twitter dimana kini beberapa acara TV sering menampilkan komentar pemirsa di sosial media langsung pada layar TV.



BENTUK TAMPILANNYA KAYAK GIMANA ?
Software kami mengambil feed twitter yg bisa dimoderasi terlebih dahulu kemudian akan dimasukkan kedalam news ticker / teks berjalan seperti gambar berikut:



KEBUTUHAN PERANGKAT ?
Untuk tampilan ke TV LCD single / sendirian, hanya butuh komputer dan layar TV LCD , sedangkan jika akan disebar melalui TV kabel atau broadcast maka butuh perangkat penyiaran TV kabel atau TV Siaran. Jangan lupa jaringan Internet untuk dapat mengunduh feed dari twitter. Kira-Kira seperti ini nih gambarannya untuk Tv Kabel :


KOK ADA VGA TO AV CONVERTER ?
Karena display dari komputer adalah VGA atau HDMI dan modulator TV kabel umumnya input komposit / AV / RCA , jadi perlu dirubah dulu.



Kecuali Modulator kamu ada input VGA / HDMI dan alat ini bisa di skip.


KEBUTUHAN SOFTWARE ?
Gunakan versi windows apa saja. Software ini berbasis Flash jadi jangan lupa jika belum punya harap install active X nya … Unduh Disini


CARA PENGGUNAAN ?
Install Software teks berjalan seperti menginstall pada umumnya, tinggal lanjut klik next-next aja sudah bisa, kemudian setelah selesai jalankan dengan klik shortcut pada desktop atau start menu. Sebaiknya langsung jalankan editor teks berjalan nya saja terlebih dahulu.



Langkah :


  1. Masukkan Keyword atau Mention yang akan diambil Feed twitter nya
  2. Judul Awal dan Isi Awal dimaksud sebagai intro atau perkenalan terhadap tema teks berjalan yg ditampilkan. Sesuaikan dengan konteks acara TV.
  3. Lakukan Editting / perubahan pada kolom hasil unduhan feed twitter, hapus bila perlu  jika dianggap isinya tidak sesuai atau tidak sopan.
  4. Jangan lupa apabila selesai mengedit maka tekan Update Teks Berjalan untuk menampilkan teks berjalan pada layar
  5. Gunakan mouse , klik pada teks berjalan dan tekan F2 apabila ingin menyembunyikan teks berjalan. Tekan F12 untuk menutup teks berjalan.





BISA DIGUNAKAN DIMANA NIH ?
Siaran TV yang memutar video player apa saja. Seperti contoh di bawah ini, Komputer memutar video melalui playlist VLC player dan kemudian ditambahkan teks berjalan tentunya dengan isi twitternya. Youtube juga bisa ..bahkan apa pun bisa ! Karena akan di timpa oleh software teks berjalan







WAH … MOUSE SAYA KELIHATAN ..BAGAIMANA  AGAR TIDAK TAMPAK DI SIARAN ?

Silahkan menggunakan extended display, dimana layar utama tampil ke modulator atau pemancar TV …sedangkan Layar extended jalankan editor TV berjalannya …bisa juga menggunakan Teamviewer / Remote desktop dan bisa diremote melalui ANDROID ! 


Untuk pemanfaatan layar kedua bisa dilihat di tulisan saya sebelumnya( klik disini atau klik Disini ).


CONTOH HASIL PEMANFAATAN SOFTWARE





DOWNLOAD DIMANA ?


Silahkan download disini ya .. KLIK DISINI

Kontak: 081331339072 / 08155737755 (whatsapp)



SELAMAT MENCOBA

Share:

Selasa, 03 September 2013

Project: Digital Gear Indicator Untuk Suzuki Smash



Gear display di motor kamu masih jadul ? Hanya indikator lampu doang ? Kalau punya duit dan waktu lebih boleh nih dipraktekin. Ide ini muncul dari seorang pembaca blog yang ingin merubah dial digit Gear/Gigi motor Susuki Smash nya menjadi display 7 segmen. Sebenernya penulis agak merasa mubazir tapi bagi anak muda mungkin bisa membuat keren motornya...asal jangan ngawur aja perkabelannya ya ....


BAHAN-BAHAN :


  1. IC 4511 (CMOS BCD - 7 segmen decoder) 
  2. IC ULN2003 (Transistor array isi 7 transistor, bisa diganti dengan transistor NPN umum seperti 2N2222/BC337/9012 x 7pcs)
  3. 7Segmen Common Anoda
  4. Resistor 1K (7 pcs), 10K(3pcs), 100 ohm (3pcs)
  5. Dioda 1N4148 (10 pcs)
  6. PCB Lubang IC
  7. Solder, Timah, socket IC, Kabel wrapping dsb.




SKEMATIK




*)klik untuk memperjelas
**)Jika menggunakan transistor, tambahkan resistor 1K ohm pada tiap basis (biar awet)


PENJELASAN

Suzuki smash memiliki gear indicator berupa lampu kecil yang akan menyala sesuai sensor yg ada di dalam gearbox. Common atau simpul dari kesemua lampu indicator ini adalah 12v (+) dan sensor pada gear akan memberikan ground kepada lampu yang sesuai dan akan menyalakan lampu, sehingga untuk menterjemahkan ke dalam bentuk digital maka yang akan diteksi adalah perubahan dari 12v menuju 0v (ground). Jika lampu menyala atau sensor gear ON  maka tegangan 0 volt pada sisi (-) pada lampu harus diterjemahkan sebagai "AKTIF" oleh system, sedangkan ketika sensor gear mati dan lampu padam maka tegangan pada konektor lampu (-) akan mempunyai tegangan 12v dan system menterjemahkannya sebagai "MATI"

IC CMOS 4511 dipilih karena merupakan ic decoder biner ke 7 segment yang bekerja pada range tegangan 3-15 volt sehingga akan menghemat penggunaan regulator tegangan 5v apabila menggunakan IC TTL semaca 74LS47. Input dari ic ini berupa 4 bit binary coded decimal, dimana 4 bit ini mewakili angka 0-9 (9 = 1001). Karena gear yang diteksi hanya maksimum 4 + 1(netral) maka pemilihan binary cukup dengan memanfaatkan kombinasi dioda 1N4148 (dioda jenis lain pun ok). Dengan sifat dioda yang hanya satu arah maka kondisi biner yg dikehendaki dapat disusun.




Karena sifat output dari IC CMOS 4511 adalah active high , maka dibutuhkan 7 segmen Common Cathode. Akan tetapi Common Cathode memiliki kekurangan pada pengaturan keseragaman nyala segmen, jadi ketika banyak segmen maka dia nyala redup, sedangkan ketika sedikit segmen yg nyala maka led menyala terang sekali. Untuk itu kita memilih menggunakan 7 segmen Common  Anode dengan pertimbangan tiap segmen akan gampang diatur arus yang mengalir padanya menggunakan transistor. Kebetulan saja transistor yg dipakai NPN yang akan mendrive tiap segmen ke ground. Tambah klop lagi jika menggunakan ic transistor array ULN2003 sehingga urusan menyolder menjadi lebih simple.


HASIL

Dari percobaan diatas breadboard oleh pembaca yang memiliki ide awal, didapatkan hasil seperti berikut ini...







Saya tunggu hasil praktek dari pembaca lainnya dan dengan senang hati akan saya tampilkan pada blog ini.

SELAMAT MENCOBA


Share:

Jumat, 05 Juli 2013

Trik : Membuat Komputer Server Langsung Menyala Setelah Listrik Mati menggunakan ic 555 + 4017


Sebuah komputer server yang handal umumnya memiliki perangkat tambahan berupa UPS yang dapat memberikan tenaga cadangan ketika listrik mati. Masalahnya UPS yang umum dijual memiliki baterai / aki yang kecil dan hanya bertahan beberapa menit saja. Setelah listrik kembali menyala siapakah yang akan menyalakan si server (kalau tidak ada orang yang menjaga) ? Apalagi servernya tidak tersedia fasilitas auto power on di motherboardnya seperti halnya server high end sekelas sun atau dell, dan biasanya server kelas rakyat (biasanya untuk server pulsa) ini menggunakan komputer "jangkrik" .

Di internet terdapat beberapa saran untuk menyambung / short beberapa pin, tapi ini hanya berlaku pada motherboard tertentu saja dengan power supply yang tentunya support juga. Jadi kali ini kita akan membuat rangkaian yang akan melakukan fungsi seperti penekanan ke tombol power pada motherboard PC sesaat setelah listrik menyala kembali.  Perhatikan rangkaian sederhana berikut yang menggunakan prinsip timer 555 dan counter 4017.

klik untuk memperjelas
optocoupler dapat diganti dengan relay 5V


Prinsip dari rangkaian diatas adalah membuat delay pulsa ONE SHOT (sekali hidup) yang akan mentriger switch si motherboard seperti halnya ketika terjadi penekanan pada tombol power. Pada umumnya komputer akan on jika pin (PW+) dari motherboard terhubung ke ground (kaki satunya itu adalah ground tetapi umumnya diberi nama PW-).





Bagaimana dengan power/catu ke rangkaian? Jangan khawatir, power standar ATX dilengkapi tegangan 5V standby, jadi manfaatkan saja kabel berwarna ungu sebagai +5V (catuan vcc ke rangkaian) dan kabel hitam sebagai GND. Pada motherboard terdapat konektor header dan kabel 2 buah yang akan menuju ke tombol power. Carilah header yang bertuliskan PW+ dan PW- (atau GND) dan kemudian buatlah connector dengan menggunakan blackhousing, atau jika ada sisa konektor yg memiliki 2 kabel dapat juga digunakan.

Konektor dihubungkan ke Header motherboard (PW+ ,  PW- /GND) dan ke header pada rangkaian yg terhubung dengan optocoupler/relay. Switch power diparalel dengan kabel ini melalui header yg terhubung  paralel atau disambung langsung. Pada rangkaian yang dicontohkan diatas menggunakan OPTOCOUPLER bukan memakai RELAY jadi tidak boleh kebalik antara (+) power on dengan (-) , sebab optocoupler prinsipnya Dioda/searah. Sedangkan jika menggunakan relay maka tidak perlu kawatir terbalik arahnya (bebas yang mana saja).

Dan hasilnya anda akan tidak khawatir server tidak menyala yang mungkin menyebabkan transaksi server pulsa anda terhambat. Kerugian dapat ditekan hanya dengan bermodalkan bahan-bahan sederhana yang tidak mahal ya kira-kira habis 30 ribu rupiah saja.


SELAMAT MENCOBA
Share:

Rabu, 03 Juli 2013

PROJECT: PIANO SEDERHANA DENGAN IC 555




Project IC timer 555 yang kita bahas kali ini saya dapatkan dari youtube dimana penulis tertarik dengan pemanfaatan 555 sebagai pembangkit sinyal suara dan frekuensi suaranya dapat dirubah hanya dengan menggunakan pensil. Pensil seperti 2B/HB dsb berbahan dasar graphite yang dapat menghantarkan dan menghambat arus listrik seperti halnya resistor sehingga dengan menebalkan pensil pada kertas akan menghasilkan hambatan yang akan merubah perumusan frekuensi dari pembangkitan suara ic 555.

Oke stop bertele-tele di teori..langsung saja menuju skematik dan bahan2 seperti gambar dibawah (klik untuk memperjelas)








Bahan-bahan : 

  • Breadboard
  • IC 555
  • Resistor 1K, 6K8 , 51 ohm (bila kesusahan bisa diganti dengan 1K, 4K7 , 47 ohm atau angka yang mendekati) , gunakan watt yang kecil saja (1/4 watt) agar lebih murah
  • Kapasitor 100 nano Farad (0.1 micro Farad), Elco 100 micro farad
  • Buzzer (umum nya 12v atau pilih yang range nya gede 3v - 24v )
  • Baterai 6v (sebenernya 555 kuat sampai 12v) serta tempatnya 
  • Kabel jumper dari kabel tunggal (ukuran bebas asal gampang nancep di breadboard)
  • Kabel dengan jepit buaya (untuk menghubungkan ke graphite pensil)
  • Pensil 2B/4B dan kertas



Penyusunan diatas breadboard seperti dibawah ini:






Untuk menyusun "tuts keyboard" dilakukan dengan mengarsir pensil 2B diatas kertas kemudian salah satu ujung klip buaya (ke resistor 6K8) dan kabel merah (ke pin 7) akan ditempelkan pada arsiran. Semakin jauh jaraknya akan menghasilkan resistansi lebih tinggi sehingga nada yang dihasilkan lebih rendah frekuensinya. Untuk itu perlu sebuah alat musik lainnya untuk melakukan tuning/penyamaan nada yang lebih bagus semisal dengan pianika/piano atau gitar.

Tandai letak nada-nada yang sesuai pada kertas, dan kemudian kamu bisa memainkan musik sesuai keinginan. Jangan lupa mengambil buku notasi lagu-lagu dan coba memainkannya. Ingat, frekuensi dari rangkaian ini sangat dipengaruhi tegangan, jadi jika baterai agak soak mungkin saja suara akan lebih rendah.



SELAMAT MENCOBA
Share:

Sabtu, 22 Juni 2013

Project: Metal Detector Pulse Induction


courtesy of : Sascho Varna Bulgaria , www.thunting.com , www.geotech1.com


Metal detector yang dibahas kali ini adalah berbasis Pulse Induction. Apakah pulse induction ? Yang dimaksud adalah efek flyback dari rangkaian inductive / lilitan. Ketika suatu tegangan diberikan kepada lilitan dan kemudian tiba-tiba sumber tegangan ini dihilangkan maka mendadak muncul suatu tegangan terbalik yang nilainya tinggi dalam waktu yang sesaat. Effect flyback ini banyak digunakan pada pembangkitan tegangan tinggi pada tabung katoda untuk mempercepat larinya elektron. Tabung katoda ini lazimnya dinamakan televisi Tabung.

Bagaimana dengan metal detecting ? perhatikan gambar grafik dibawah ini :




Gambar diatas menunjukkan perbandingan waktu decay (menuju 0)  vs Tegangan yang dihasilkan oleh efek flyback. Level tegangan yang berbeda akan muncul ketika ada benda logam yang mempengaruhi induktansi lilitan. Karena ada perbedaan inilah maka pendeteksian logam dapat dilakukan dengan melakukan komparasi tegangan standar tanpa logam disekitar lilitan(tegangan referensi) dengan tegangan yang dihasilkan saat ada benda logam yang berada dekat induktor. Prinsipnya adalah sebagai berikut :

1. Rangkaian timer untuk menandakan pemutusan tegangan ke lilitan dan timer untuk melakukan pencuplikan sinyal decay/flyback (contoh pada grafik sinyal akan dibandingkan pada saat 30uS)
2. Transistor daya sebagai pengatur tegangan flyback yang tinggi
3. Voltage clipper sehingga tegangan flyback yang tinggi dapat dibaca opamp 
4. Komparator tegangan decay dan tegangan referensi/tanpa logam (low noise opamp)
5. Amplifier sinyal output komparator yang sangat kecil (high gain opamp)
6. Penanda / sound generator yang akan berbunyi ketika ada logam terdeteksi



skematik :
(klik buat memperbesar)


replacement (ga ada di ps. genteng surabaya 2N4393 => 2N3288 atau yg lain)
coil inductor 25 lilitan kawat enamel(dinamo) 0.5mm , diameter 20-30 cm



layout komponen :



Tantangan yang akan dihadapi pada perancangan berdasarkan rangkaian dari orang bulgaria ini adalah penggunaan voltage doubler menggunakan transistor untuk menghasilkan tegangan (+) , GND dan (-). Clock yang dibuat untuk mengerjakan fungsi timer dan fungsi voltage doubler sangatlah tidak stabil. Sehingga untuk menghasilkan kesatabilan, komponen yang digunakan , semisal resistor harus dipilih resistor film atau capacitor yang berkualitas setara tantalum atau MKV. 

Penentuan tegangan referensi , terlihat pada gambar yaitu trimpot multiturn warna biru, sangatlah menuntut kesabaran. Jauhkanlah benda logam ketika melakukan setting ! Penulis sampai dibuat pusing, ternyata ada kunci motor yang ada disaku celana yang menyebabkan referensi berubah-rubah terus (terdeteksi terus). 


Hasil dari project ini seperti pada video berikut :





Logam terdeteksi dengan jarak maksimum 50 cm (jarak udara)


NB: Penulis menerima pembelian komponen dan layout PCB pun akan dikasikan, tapi jangan suruh untuk membuatnya karena kapok ...komponen yang dijual di pasaran membuat frustasi...dari 3 buah detector yang dibuat, hanya 1 yang berhasil jalan...cape dehh...
Share:

Jumat, 21 Desember 2012

AISI555 in action di Majalah Reload Vol.17

Majalah Reload merupakan majalah komunitas AIRSOFTGUN yang terbit dua bulan sekali. Terdapat rubrik Do IT Yourself dimana para pembaca diajak untuk membuat modifikasi atau alat khusus dari bahan-bahan yang mudah didapat. Aisi555 diberi kesempatan untuk mengisi rubrik DIY pada vol. 17 - desember 2012 . Pembahasan timer ini akan dibahas 2 bulan kedepan , jika berminat merangkai diharap membeli majalahnya saja !




Segera dapatkan Majalahnya di toko buku terdekat !

Share:

Rabu, 19 Desember 2012

PALANG PINTU KERETA API OTOMATIS DENGAN ATTINY2313


Palang pintu kereta api yg kita bahas kali ini pernah saya buat kira-kira setahun yang lalu dalam rangka membantu teman yang kesusahan mengerjakan tugas. Dia mewanti-wanti saya agar tidak menyebarkannya di blog sampai saatnya dia lulus kuliah. Dan saatnya kini kita bahas karena teman saya itu sudah lulus akhirnya.


Bahan utama yang kita perlukan adalah motor stepper. Dipasaran komponen elektronika, motor stepper dijual umumnya memiliki kumparan berjenis BIPOLAR, dimana nantinya diperlukan sebuah driver H-bridge untuk merubah polaritas kumparannya. Sedangkan jika beruntung (cari di loakan) atau punya duit berlebih, maka motor stepper UNIPOLAR tentunya menjadi pilihan yang lebih simple.

Cara mudah membedakan jenis motor steep adalah jumlah kabel, untuk bipolar biasanya memiliki kabel 4 , sedangkan unipolar memiliki kabel 5 dimana 1 kabel sebagai common (supply)



File:Drive.png
cara menggerakkan motor stepper (courtesy wikipedia)



Prinsip sensor yang digunakan untuk mendeteksi kereta datang dan pergi maka diletakkan sensor "cahaya terhalang" menggunakan pasangan LED INFRARED & PHOTODIODA yang biasanya digunakan sebagai transmiter & receiver untuk remote TV. Kedua led ini diposisikan berhadap-hadapan (sebaiknya diberi casing/ penghalang cahaya dari samping) sehingga ketika tanpa halangan, dengan rangkaian tambahan resistor pull down dan anoda ke 5v , photodioda akan memberikan logika 1 (seperti tehubung langsung ke 5v). Kondisi ketika sinar infre merah terhalang maka photo dioda akan memutus hubungan dari 5V dan rangkaian menjadi logika 0 karena terhubung melalui resistor 10k ohm menuju ground (0v).

Untuk mendeteksi kedatangan kereta api, maka sensor "kedatangan" akan mendeteksi perubahan dari 1 ke 0 (falling edge) sehingga dalam script ditunjukkan dengan INTERUPT 0 yang diinisialisasikan sebagai falling edge. Sedangkan sensor untuk "kereta sudah lewat" menggunakan logika interupt rising edge (0 ke 1), dimana ketika kereta masih berada di perlintasan akan menghalangi sinar led infra (kondisi logika 0). Setelah semua rangkaian lewat maka sinar akan kembali mengaktifkan logika 1 pada photodioda.



MCUCR |= (1<<ISC01) | (0<<ISC00) |(1<<ISC11) | (1<<ISC10); 



Sensor yang ketiga merupakan sensor posisi awal dari palang pintu, diletakkan pada posisi palang pintu terbuka penuh (90 derajat) , sehingga ketika alat dihidupkan atau direset maka motor stepper akan bergerak ke kiri sampai posisi palang pintu menghalangi sinar led menuju photodioda ke 3.






Kereta api kan bolong-bolong, ada jeda antar gerbong ...nah looo...error dah....pintunya kebuka baru 1 gerbong lewat?? Tenang saja, ini hanya simulasi..kita anggap bahwa kereta api itu benda yang full kontinyu tanpa lubang jeda antar gerbong. Jika ingin menerapkan ke dunia nyata dimana ada jarak antar gerbong, maka diperlukan suatu timer yang akan mendeteksi waktu berapa milli second sinar infra yang dilewatkan lubang tersebut. Jika gerbong terakhir yang lewat tentunya waktunya lebih lama ketimbang sinar melalui celah - celah rangkaian kereta api, nah inilah pembedanya.


Trus pertanyaan lainnya, bagaimana jika yang diinginkan adalah palang pintu keretanya 2 arah ? Sekali lagi kita sebaiknya menggunakan metode timer saja, jadi kita perkirakan jika cahaya tidak terhalang selama selang waktu (misal 5 detik)  maka pintu akan terbuka.


Skematik dari palang pintu otomatis seperti berikut : 



 (klik untuk memperbesar)



Harap diperhatikan jenis motor yang digunakan dan sesuaikan driver motor yang tepat.



FULL SCRIPT METODE INTERUPT  1 ARAH:
/*

Pintu Kereta Api Otomatis
Dengan motor stepper
by: ahocool@gmail.com
SURABAYA - 2012
1 arah saja
*/


#define F_CPU 100000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>


#define SPEED _delay_ms(10)  // ubah nilai delay sesuai kecepatan yang diinginkan

//stepper FULL STEP, bisa dirubah sesuai keinginan
void puter_kanan(void)

{ 
   PORTB |=_BV(PB0);
   PORTB &= ~_BV(PB1) & ~_BV(PB2) & ~_BV(PB3) ;
   SPEED;


   PORTB |=_BV(PB1);
   PORTB &= ~_BV(PB0) & ~_BV(PB2) & ~_BV(PB3) ;
   SPEED;


   PORTB |=_BV(PB2);
   PORTB &= ~_BV(PB1) & ~_BV(PB0) & ~_BV(PB3) ;
   SPEED;


   PORTB |=_BV(PB3);
   PORTB &= ~_BV(PB1) & ~_BV(PB2) & ~_BV(PB0);
   SPEED;

   PORTB |=_BV(PB0) | _BV(PB2);
   PORTB &= ~_BV(PB1)  & ~_BV(PB3) ;
}

void puter_kiri(void)

{ 
   PORTB |=_BV(PB3);
   PORTB &= ~_BV(PB1) & ~_BV(PB2) & ~_BV(PB0) ;
   SPEED;


   PORTB |=_BV(PB2);
   PORTB &= ~_BV(PB0) & ~_BV(PB1) & ~_BV(PB3) ;
   SPEED;


   PORTB |=_BV(PB1);
   PORTB &= ~_BV(PB2) & ~_BV(PB0) & ~_BV(PB3) ;
   SPEED;


   PORTB |=_BV(PB0);
   PORTB &= ~_BV(PB1) & ~_BV(PB2) & ~_BV(PB3) ;
   SPEED;

   PORTB |=_BV(PB0) | _BV(PB2);
   PORTB &= ~_BV(PB1)  & ~_BV(PB3) ;

}

SIGNAL (SIG_INT0)
{
  int a;

   //ubah nilai max looping berikut sampai posisi berhenti yg pas
   for(a=0;a<3;a++) puter_kanan();

}

SIGNAL (SIG_INT1)
{
int a;

   //ubah nilai max looping berikut sampai posisi berhenti yg pas
   for(a=0;a<3;a++) puter_kiri();

}




int main(void)
{


   PORTB |= _BV(PB0) | _BV(PB1) | _BV(PB2) | _BV(PB3) ; //OUTPUT Stepper pin A,B,C,D
   PORTD &= ~_BV(PD4); //sensor posisi awal
    
   //aktifkan interupt

   MCUCR |= (1<<ISC01) | (0<<ISC00) |(1<<ISC11) | (1<<ISC10); 
   // interupt 0 (datang) falling edge, interupt 1 (pergi) rising edge

   GIMSK |= (1<<INT0) |(1<<INT1); 

   sei();

   //inisialisasi awal saat dihidupkan , pintu membuka sampai sensor posisi OFF


     
     while (bit_is_set(PIND, PIND4) )
  {
      puter_kiri(); //steper naik sampe sensor awal terhalang
      
  }

 while(1)
  {

  }

return 0;
}




FULL SCRIPT METODE TIMER - 2 ARAH :
/*
Pintu Kereta Api Otomatis
Dengan motor stepper
by: ahocool@gmail.com
SURABAYA - 2012
versi timer -- 2 arah
*/

#define F_CPU 100000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>

#define SPEED _delay_ms(10)  // ubah nilai delay sesuai kecepatan yang diinginkan
#define TIMER 5 // timer dari gerbong terakhir menlewati sensor dan membuka palang pintu

int detik, posisi, depan;

void init_timer(void)
{
   TCCR1B |= (1 << WGM12); // Configure timer 1 for CTC mode
   TIMSK |= (1 << OCIE1A); // Enable CTC interrupt 
   OCR1A  = 7812; //compare the CTC A 
   TCCR1B |= (1 << CS11)|(1 << CS10); // Start timer at Fcpu/64
   TCNT1 = 0;
   detik=0;
   sei();
}

void init_sensor_fall(void)
{
    
   cli();

   //aktifkan interupt
   MCUCR |= (1<<ISC01) | (0<<ISC00) |(1<<ISC11) | (0<<ISC10); 
   // interupt 0 & 1   falling edge , untuk deteksi 2 arah

   GIMSK |= (1<<INT0) |(1<<INT1); 

   sei();

   posisi = 0 ; // sebagai penanda kalo posisi pintu terbuka
}


void init_sensor_rise(void)
{
   cli();
   //aktifkan interupt
   MCUCR |= (1<<ISC01) | (1<<ISC00) |(1<<ISC11) | (1<<ISC10); 
   // interupt 0 & 1   rising edge , untuk deteksi akhir gerbong

   GIMSK |= (1<<INT0) |(1<<INT1); 

   sei();

   posisi = 1 ; // sebagai penanda kalo posisi pintu tertutup
}


void puter_kanan(void)

{ 
   PORTB |=_BV(PB0);
   PORTB &= ~_BV(PB1) & ~_BV(PB2) & ~_BV(PB3) ;
   SPEED;


   PORTB |=_BV(PB1);
   PORTB &= ~_BV(PB0) & ~_BV(PB2) & ~_BV(PB3) ;
   SPEED;


   PORTB |=_BV(PB2);
   PORTB &= ~_BV(PB1) & ~_BV(PB0) & ~_BV(PB3) ;
   SPEED;


   PORTB |=_BV(PB3);
   PORTB &= ~_BV(PB1) & ~_BV(PB2) & ~_BV(PB0);
   SPEED;

   PORTB |=_BV(PB0) | _BV(PB2);
   PORTB &= ~_BV(PB1)  & ~_BV(PB3) ;
}

void puter_kiri(void)

{ 
   PORTB |=_BV(PB3);
   PORTB &= ~_BV(PB1) & ~_BV(PB2) & ~_BV(PB0) ;
   SPEED;


   PORTB |=_BV(PB2);
   PORTB &= ~_BV(PB0) & ~_BV(PB1) & ~_BV(PB3) ;
   SPEED;


   PORTB |=_BV(PB1);
   PORTB &= ~_BV(PB2) & ~_BV(PB0) & ~_BV(PB3) ;
   SPEED;


   PORTB |=_BV(PB0);
   PORTB &= ~_BV(PB1) & ~_BV(PB2) & ~_BV(PB3) ;
   SPEED;

   PORTB |=_BV(PB0) | _BV(PB2);
   PORTB &= ~_BV(PB1)  & ~_BV(PB3) ;

}

SIGNAL (SIG_INT0)
{
  int a;
  
  
   //jika pintu terbuka dan kereta lewat  
   if( posisi == 0) {
       depan = 1; //berarti sensor 1 jadi yg didepan
       init_sensor_rise(); //mode interupt berubah
  
   //ubah nilai max looping berikut sampai posisi berhenti yg pas
       for(a=0;a<3;a++) puter_kanan();
     
                 }
   else {
   //jika ada kondisi celah gerbong (0 -> 1) maka reset timer
     if(depan == 1)init_timer(); 
   
        }
}

SIGNAL (SIG_INT1)
{
int a;
   
    //jika pintu terbuka dan kereta lewat 
     if( posisi == 0) {
       depan = 2; //berarti sensor 2 jadi yg didepan
       init_sensor_rise();//mode interupt berubah 
  
   //ubah nilai max looping berikut sampai posisi berhenti yg pas
       for(a=0;a<3;a++) puter_kanan();
     
                 }
   else {
   //jika ada kondisi celah gerbong (0 -> 1) maka reset timer
     if(depan == 2)init_timer(); 
   
        }
}



ISR(TIMER1_COMPA_vect) // interupt timer detik

{ 
int a;


detik++;

if(detik >= TIMER ) // jika lebih dari timer yg ditentukan maka pintu terbuka

  {

    init_sensor_fall(); //kembalikan sensor sebagai interupt fall edge
    TIMSK=0; //matikan timer


   //ubah nilai max looping berikut sampai posisi berhenti yg pas
   for(a=0;a<3;a++) puter_kiri();
   
  }
}



int main(void)
{


   PORTB |= _BV(PB0) | _BV(PB1) | _BV(PB2) | _BV(PB3) ; //OUTPUT Stepper pin A,B,C,D
   
   PORTD &= ~_BV(PD2) & ~_BV(PD3) & ~_BV(PD4); //sensor sebagai input
    
   init_sensor_fall(); //awal sebagai interupt fall

   //inisialisasi awal saat dihidupkan , pintu membuka sampai sensor posisi OFF

  
     while (bit_is_set(PIND, PIND4) )
  {
      puter_kiri(); //steper naik sampe sensor awal terhalang
      
  }



 while(1)
 {

 }
 
   
return 0;
}





SELAMAT MENCOBA !

Share:

Rabu, 12 Desember 2012

BELAJAR ACCESS SD CARD CARA SIMPLE DENGAN ATTINY2313 - Part3


ATTINY2313 TALKING MACHINE 





Disclaimer : collected from various source on Google, writer read and modify for educational purpose only. Free to use !


Sebaiknya anda baca Part2 agar tidak kebingungan




sebelum lanjut, kita ingat project wav player dengan memory I2C  (silahkan baca disini), kapasitasnya kecil banget dan sagat pendek, kenapa tidak kita pakai SD card saja ?

ternyata kita tidak perlu pusing2, karena jika memainkan attiny pada clock 8mhz, maka waktu access SD card dan PWM sangatlah pas sehingga cukup memainkan beberapa nilai delay saja sudah mendapatkan suara yang cukup bagus (file wav PCM 6000hz 8bit)

kita ingat dulu code untuk membuat audio via PWM - OC1A, kita hilangkan sekarang beberapa pembagian dan script jadi lebih simple

Code:
void pwm_init(void)

{

    /* use OC1A pin as output */

    DDRB = _BV(PB3);



    /*

    * clear OC1A on compare match

    * set OC1A at BOTTOM, non-inverting mode

    * Fast PWM, 8bit

    */

    TCCR1A = _BV(COM1A1) | _BV(WGM10);

   

    /*

    * Fast PWM, 8bit

    * Prescaler: clk/1 = 8MHz

    * PWM frequency = 8MHz / (255 + 1) = 31.25kHz

    */

    TCCR1B = _BV(WGM12) | _BV(CS10);

   

    /* set initial duty cycle to zero */

    OCR1A = 0;

}






dan kita mainkan delay pada code pembacaan SD CARD melalui USI, untuk clock 8mhz dan file format 6000hz 8bit mengggunakan delay seperti berikut

Code:


unsigned char SPI_write(unsigned char ch){

 USIDR = ch;

    USISR |= (1<<USIOIF);

 

 do {

 USICR |= (1<<USIWM0) | (1<<USICS1) | (1<<USICLK) | (1<<USITC);



   _delay_us(9);

   

    } while((USISR & (1<<USIOIF)) == 0);



 return USIDR;

}




THAT"S IT ....hanya itu yang dirubah, selanjutnya simpan file wav pada SD card dan dengan bantuan software winhex, kita dapat membaca sector dimana file dimulai. Jika format SD card adalah FAT16, maka jika file dicopy setelah di format ulang akan diletakkan di posisi sector 555. Karena memory attiny yang kecil, maka ga usah dibingungkan dengan pembacaan root, FAT1, FAT2 dan sebagainya. Kita baca dulu saja via winhex kemudian dimanfaatkan. Seperti pada skematik berikut, saya akan memutar audio setelah tombol dipencet...file audio saya rekam dari laptop.



(klik biar tambah gede)

audio output pada OC1A bisa menggunakan amplifier sederhana seperti diatas, atau bisa juga membuat yg lebih paten, semisal menggunakan opamp LM386 atau TDA2003 (googling aja)


Langkah selanjtunya adalah memformat SDcard dan membuat file audio yang akan diputar (bisa dipotong dari mp3 atau direkam dan jangan lupa diconvert ke WAV PCM 6000Hz 8 bit). Sebagai contoh saya mempunyai 4 file dan copykan ke SD card. Selanjutnya buka SD menggunakan winhex seperti gambar berikut :



dan tampilan snapshot SD card dan file-filenya seperti berikut:



untuk mengetahui awal dan akhir sector dari file maka kita baca FAT1 atau FAT2 yang berisikan informasi dari isi file. Tiap file yg ada pada SD card memiliki "alokasi" pada FAT ini dimana 2byte berarti 1 cluster dari file. Untung saja winhex memberitahu pada layar sebelah kiri kalau sedang klik pada alokasi file apa dan nomer sector berapa. seperti pada gambar diatas , kita hanya perlu mencari awal cluster dan akhir cluster (ditandai dengan FF FF). Kemudian kita catat seperti yang saya dapatkan.

Code:
tombol3.wav =  cluster  2 - 18    

silahkan.wav = cluster 19 - 43   

tombol1.wav = cluster  44 - 62    

tombol2.wav =  cluster 63 - 82      



ingat cluster = sector





sedangkan untuk physical sector, cukup dengan menambahkan 553 (bukan 555 karena sector 0-1 dianggap tidak ada oleh FAT16)



selanjutnya scriptnya kita tweak biar tambah maknyus seperti berikut , karena ada beberapa bagian dari file yang digenerate oleh wavepad editor kudu di skip biar halus.

Code:




void SD_play(unsigned long  sector_start, unsigned long  sector_end) {



char i;

int byte=0;

    SD_begin(sector_start); 

  

  for(i=0; i<100; i++) {

       SPI_write(0xFF);



    byte++;

    } //biar tidak njebluk pas pencet

    

 while(1) {





      OCR1A=SPI_write(0xFF);



    byte++; 



    if(byte>= 512 && byte<515)OCR1A=0x80; //silent 



    if(byte >= 515) { 

      OCR1A=0x80;//silent

         

      CS_DISABLE();



   byte =0;

         sector_start++;

         

        if(sector_start > (sector_end -7))break; //biar halus

  else SD_begin(sector_start);

        }  

      } 

}






selanjutnya semua script bisa didownload dimari


hasilnya kayak gini gan ....



SELAMAT MENCOBA !!
Share:

BELAJAR ACCESS SD CARD CARA SIMPLE DENGAN ATTINY2313 - PART2


Disclaimer : collected from various source on Google, writer read and modify for educational purpose only. Free to use !


Silahkan Baca Part1 terlebih dahulu agar tidak kebingungan


SPI via USI



SPI merupakan serial peripheral interface yang dapat mengkomunikasikan antara master dan slave. Kecepatan transfer data bergantung dari pembagian clock yang diberikan . Sedangkan USI adalah SPI mode simple, dimana clock diberikan manual secara software atau input dari luar. Pin SS (slave select ) juga tidak disediakan tapi bisa di akali dengan PIN & software



dari gambar diatas dapat dilihat mode 3 wire USCK, DO (MOSI) , DI (MISO)
USCK diberikan secara software (manual) dengan toogling register USICR pada USICLK dan USITC
ada 3 buah register yg perlu diperhatikan yaitu USIDR = Data register , USICR =Control register dan USISR = Status Register

Berikut script untuk inisialisasi dari USI sebagai SPI

Code:
//definisi port

#define SPI_DDR DDRB

#define MOSI (1<<PB6)

#define MISO (1<<PB5)

#define SCK (1<<PB7)



#define CS_DDR DDRD

#define CS (1<<PD6) // PD6 sebagai slave/chip select

#define CS_ENABLE() (PORTD &= ~CS)

#define CS_DISABLE() (PORTD |= CS)



//inisialisasi port SPI

void SPI_init() {

 CS_DDR |= CS; // SD card circuit select as output

 SPI_DDR |= MOSI + SCK; // MOSI and SCK as outputs

}



//Pembacaan SPI

unsigned char SPI_write(unsigned char ch) {

    USIDR = ch; // data yang akan dikirim

    USISR |= (1<<USIOIF); // aktifkan interrupt Overflow

 

 do {

//Kirim USCK8 x

 USICR |= (1<<USIWM0) | (1<<USICS1) | (1<<USICLK) | (1<<USITC);

 _delay_us(100);

       } while((USISR & (1<<USIOIF)) == 0); // selesai jika overflow

 return USIDR; // baca data reply yg masuk

}






gampang bukan ? selanjutnya kita dapat mengirim perintah ke SD card melalui port USI dan kita siap untuk membaca data dari SD CARD.

Jika bahan-bahan sudah siap dan tersusun di breadboard (jangan lupa set fusebit memakai clock 8MHZ , clk_div jangan dipake, bisa meakai xtal atau internal RC) kita akan membaca file text yang telah dicopy ke dalam SD card

Pertama kita bahas cara read (CMD 51) dari isi file SDCARD , langkahnya seperti berikut:

1. Pull CS low (select)
2. Send 0×51
3. Send 0x00000000 (Sector x 512)
4. Send 0×FF
5. Baca data yg dikirim 520 kali (sambil kirim 0xFF ke kartu)
6. Pull CD low (deselect)

kenapa 520 kali ? karena format reply per sector seperti ini :



yang garis merah diatas merupakan header awal (6 byte) yang menyatakan data ready, jadi di script nantinya kita akan mendeteksi 00 dan FE , sedangkan 2 terakhir merupakan CRC yang bisa di abaikan.

jadi kita susun script seperti berikut :

Code:
void SD_command(unsigned char cmd, unsigned long arg, unsigned char crc, unsigned char read) {

 unsigned char i;

 //berfungsi mengirim perintah ke SD card

 CS_ENABLE();

 SPI_write(cmd);

 SPI_write(arg>>24); //geser byte

 SPI_write(arg>>16);//karena format

 SPI_write(arg>>8);//0x00000000

 SPI_write(arg);//alias 4 bit argumen

 SPI_write(crc);

  

 for(i=0; i<read; i++) SPI_write(0xFF); //kirim & baca

 CS_DISABLE();  

}



char SD_init() {

    char i;

//berfungsi inisialisasi SD card        

    CS_DISABLE();

    for(i=0; i<10; i++) SPI_write(0xFF);   

     _delay_ms(500);

// langkah 1  0x40

    SD_command(0x40, 0x00000000, 0x95, 8);

        _delay_ms(500);

// langkah 2  0x41                        

    SD_command(0x41, 0x00000000, 0xFF, 8);

        _delay_ms(500);

// langkah 3  0x50           

    SD_command(0x50, 0x00000200, 0xFF, 8);  

    _delay_ms(500);

        

    return 0;

}



void SD_begin(unsigned long  sector) {

    uint8_t i = 0;

//berfungsi untuk membaca data SD card    

    CS_ENABLE();

 SPI_write(0x51); //perintah baca 0x51

     //selanjutnya geser2 byte sector

        SPI_write(sector>>15); // sector*512 >> 24

 SPI_write(sector>>7);  // sector*512 >> 16

 SPI_write(sector<<1);  // sector*512 >> 8

 SPI_write(0);          // sector*512

        SPI_write(0xFF);

    

    for(i=0; i<10 && SPI_write(0xFF) != 0x00; i++) {} // wait for 0

    for(i=0; i<10 && SPI_write(0xFF) != 0xFE; i++) {} // wait for data start

    

    // baca SD& kirim melalui serial

    for(i=0; i<512; i++)   USART_Tx(SPI_write(0xFF));

    //2 kali checksum

    SPI_write(0xFF);

    SPI_write(0xFF);    



    CS_DISABLE();   

}








Yah..begitulah...ga terlalu susah ....hanya masalah creativitas, ntar munculnya di layar (jika dihubungkan dengan serial via putty/hyperterminal) seperti ini :



atau jika data langsung dibaca, bisa langsung membaca text. Sesuai percobaan bahwa sector paling depan tempat file disimpan adalah sector 96,

kenapa ? karena SD CARD yang aku pake jadul , memakai system FAT12




sedangkan jika memakai Format pc terbaru maka otomatis menjadi system FAT16 dan File pertama berada di sector 555. Jadi sesuaikan dengan jenis format yang dipakai



semua source code dapat didownload dimari , untuk dapat membaca wav file dan memainkan suara kita lanjut ke post berikut disini


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 (15) 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 (92) 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