Thursday, October 18, 2012

Reading IR Transmitter from Zyma Counter Rotation Heli 2

Contoh project hasil decoding untuk stik "Throttle".
Untuk stick "Rudder" dan "Elevator", harus digerakkan dulu stick throttle (tidak pada posisi terbawah) baru kedua stick tersebut menghasilkan command code.
Ini sesuai dengan fungsinya apabila baling2 utama belum berputar maka kedua fungsi tersebut tidak boleh diaktifkan.
Untuk bisa simultan 3 servo sesuai dengan channel remote (3 channel), dibutuhkan AVR dengan 2 buah 16 bit timer untuk menghasilkan pulsa (yang lebih teliti ketimbang 8 bit timer) untuk beberapa servo dan tinggal menyesuaikan hasil decoding dengan servo yang akan digerakkan.

Penampakan Transmiter dan decodernya

Videonya

Monday, October 15, 2012

Reading IR Transmitter from Zyma Counter Rotation Heli

Contoh penggunaan project IR Reader yang telah di post sebelumnya adalah membaca code yang dikirimkan oleh Remote control heli merk Zyma (kebetulan yg didapat penulis merk ini).
Project ini dibuat karena remote / kendalinya merupakan "Proportional Steering" alias linear control, dimana stick controlnya menghasilkan gerakan linear sesuai posisi stick, bukan "On / Off" saja seperti mobil remote mainan.
Pulsa yang dikirimkan beruntun selama stick "Throttle" tidak pada posisi mati / paling bawah.
Setiap pengiriman, ada 36 pulsa yang dikirim (tidak termasuk pulsa header), apabila posisi stick tidak berubah maka data yang dikirim akan sama.
Kita tinggal  menghitung ada berapa step pembagian pada tiap stick sehingga bisa direncanakan aplikasi software decodernya.
Dengan mengetahui lebar pulsanya maka bisa kita decode "command code" nya, karena itulah project IR Reader sangat membantu mendecode sinyal IR yang tidak diketahui protocolnya seperti remote Zyma ini.
Dengan demikian kita bisa membuat robot / mobil atau project lainnya yang bisa dikontrol oleh remote Zyma ini, untuk menggerakkan servo atau motornya, cukup mengasyikkan kan?

Berikut penampakan Heli Zyma:



Berikut hasil decodenya untuk throttle mid, stir kiri dan stir kanan
(hanya diambil 1 step saja)




Berikut step Throttle, terdapat 29 steps (karena dimulai dari 0)
Tampak pada step 29 dan 30 menghasilkan command code yang sama,
yaitu command code pada posisi throttle max.


Friday, October 12, 2012

Stackmat Big Display

Project merubah jam digital yang sudah lama dipakai menjadi Display Besar untuk Timer Stackmat.
Project jam digital yang digunakan disini adalah versi desain penulis sendiri yang tidak dipost karena sudah terlalu banyak project jam digital di internet.
Timer Stackmat banyak digunakan sebagai timer resmi pada pertandingan Rubiks ataupun Speed Stack di seluruh dunia.
Display aslinya berharga cukup mahal karena itu dicoba dibuat project ini.
Hasil tampilan display adalah "RealTime" alias tidak ada jeda antara Stackmat Timer dan Tampilan display.
Kalo pada video terlihat agak lag karena diambil menggunakan kamera smartphone.

Berikut penampakan Jam digital sebelum dirubah:





Setelah dijadikan display Stackmat, yang dipakai hanya 5 display seven segment, karena memang hanya itu yang dibutuhkan



Bagian RTC dilepas karena tidak dibutuhkan lagi


Videonya

Wednesday, October 10, 2012

USB HID (AutoTyping Keyboard)

Aplikasi HID Keyboard dengan libUSB dalam project "pengetikan keyboard otomatis" ini, akan mengetikkan pesan begitu device di-colok-kan ke Port USB dari PC.
Device secara otomatis akan mengetikkan message yang sudah disimpan sebelumnya dalam eeprom AVR. Disini penulis menggunakan 'notepad' agar ketikan dapat terbaca secara langsung, kecepatan pengetikan di setup oleh PC secara otomatis sesuai standar keyboard.
Project ini bisa juga digunakan untuk memasukkan password pada suatu program atau  password saat kita "Login" ke Windows.
Untuk device yang dapat membuka program tertentu dan mengisi data / mengambil data lalu menyimpannya  / melakukan task lainnya masih dalam ide penulis :)
Catu daya diambil langsung dari Port USB karena pengetikan langsung dilakukan setelah inisialisasi device dan hanya terjadi satu kali, kalau dengan catu daya tersendiri berarti kita harus meng-on/off-kan power supply atau me-reset device setiap kali device akan dicolokkan.

Berikut penampakannya:

Penambahan Header untuk pemilihan Catu daya, USB atau Regulator


Penampakan pada Device Manager, Keyboard disini adalah keyboard pada PC
 


Setelah Device dicolokkan akan ada tambahan HID Device dan Keyboard lagi 


Hasil ketikan pada notepad, setelah 3 kali plug/unplug 


Videonya

Tuesday, October 9, 2012

Using libUSB in Visual Studio 2010

Sama seperti project2 sebelumnya dengan libUSB, penulis mencoba mengaplikasikan GUI untuk libUSB Device menggunakan Visual Studio 2010 bukan menggunakan Delphi.
Semua fungsi sama hanya beda tampilan pada GUI nya saja.
Penulis belum menemukan ide project yang menarik untuk di posting sehubungan dengan penggunaan libUSB pada embedded system design.
Apabila ada saran / masukan dari pembaca / sesama hobbyist akan sangat membantu blog ini.

libUSB dipilih karena dapat digunakan di banyak seri AVR ATmega Microcontroller yang tidak mempunyai koneksi "USB Peripheral Included" yang mana harganya sudah tentu lebih murah dari yang included.
Hanya saja libUSB Device adalah USB 1.1 Device bukan USB 2.0 seperti yang seri included. Namun sudah cukup,  melihat speed AVR hanya 16 - 20MHZ saja dengan memory relatif kecil dibanding kecepatan transfer USB 1.1 yang 1.5Mbps (USB 2.0 mencapai 480Mbps untuk yang full speed).
Banyak produk dengan koneksi USB menggunakan USB to UART Converter (temasuk ARDUINO dan clone2nya), selain lebih mudah, pemrograman AVR juga tidak dipusingkan oleh komunikasi USB. Namun bagi yang menyukai otak-atik program lebih mengasyikkan dengan libUSB.

Berikut penampakan GUI Visual Studio 2010 untuk testing:


Friday, October 5, 2012

USB Keypad (HID) using libUSB

Contoh project membuat HID Device yaitu keypad menggunakan libUSB.
Driver yang digunakan bukan driver windows tapi driver libUSB.
Modul yang digunakan tetap sama seperti project2 sebelumnya.
Keypad yang digunakan type plastik dome tanpa metal dome (mekanik yang biasanya menghasilkan bunyi klik), menekan tombol harus sedikit keras baru bereaksi.
Seperti pada umumnya, penggunaan tombol seperti ini menghasilkan 'bouncing' jadi pendeteksian kecepatan penekanan tombol harus disesuaikan agar tidak menghasilkan repeated press yang berlebihan.
Prinsip kerjanya sama seperti project dengan tombol pada umumnya, hanya saja hasilnya dikirim ke PC lewat jalur USB (bukan jalur UART ).





Videonya ada disini

Thursday, October 4, 2012

USB Servo Controller using libUSB

Contoh lain aplikasi dengan libUSB yaitu project USB Servo Controller.
Servo yang dipakai merupakan servo bekas RC Heli yang sudah di repair, jadi akurasi sudah tidak bagus lagi. Karena itu tidak dibuat demoproject untuk penghitungan derajat kemiringan arm servo.
Kalau penulis sudah mendapatkan servo baru, akan dibuat demo untuk kepresisian derajat arm servo.
Project ini bisa digabungkan dengan project sebelumnya (USB Switch dan Linear Control). Namun port PWM dipakai untuk koneksi USB jadi harus merubah koneksi pada modul dan juga bitbang pada source codenya terlebih dahulu. Mungkin di lain waktu apabila ada ide project yang menarik dan harus merakit lagi modul baru, akan dibuat demoprojectnya :-)






Videonya ada disini




Wednesday, October 3, 2012

USB Control Switch and Linear Control using libUSB

Project ini dibuat sebagai contoh pemakaian libUSB pada project yang pernah dibahas sebelumnya.
Contoh project sederhana ini memanfaatkan sistem transfer data untuk menyelaraskan tombol yang ditekan dan menghasilkan kode untuk 7 segment, demikian juga dengan Linear Controlnya yang digunakan untuk mengatur kecerahan nyala LED.
Modul yang digunakan tetap sama dengan project sebelumnya.




Videonya ada disini

Monday, October 1, 2012

libUSB Device Data Transfer using Generic AVR

Project USB menggunakan Driver libUSB.
Data Transfer Speed yang disupport adalah USB versi 1.1 namun sudah lebih dari cukup untuk AVR.
libUSB biasa kita kenal digunakan dalam Downloader menggunakan ATmega8 yaitu USBASP.
Data yang dapat ditransfer dalam sekali transaksi mencapai 128 bytes, namun seperti project sebelumnya hanya dipakai 64 bytes untuk menghemat memory.
Banyak project yang bisa dibuat dengan driver ini, seperti USB Switch, USB RGB LED Controller / USB DMX Controller, USB to Serial, USB Stepper Motor Controller, USB Servo Controller dan masih banyak lagi.
Bisa juga dipakai sebagai HID Device (dengan tidak menggunakan driver dari Windows seperti project sebelumnya yaitu USB HID menggunakan ATmega32U4) namun yang dikendalikan bukan program dari Windowsnya tetapi software buatan kita sendiri (sebagai dongle).
Untuk bisa dipakai sebagai HID Device dengan driver libUSB tapi bertindak sebagai mouse atau keyboard (sebagai contoh saja), source code bisa dirubah untuk menyesuaikan kriteria HID dengan driver Windows.

Berikut penampakannya:

 DIY Modul USBASP


Dengan koneksi Serial


Penampakan pada device manager

 8 bytes Data Transfer

64 bytes Data Transfer


Videonya ada disini