Tuesday, May 19, 2015

Prototipe Sirkuit AVR (dengan breadboard)


A. Prototyping

Belajar mikrokontroller mengharuskan anda untuk praktek langsung. Tidak mungkin bisa memahami elektronik, apalagi mikrokontroller tanpa praktek. Pemahaman akan didapat lebih cepat dengan mepraktekkan teori melalui pemakaian secara fisik komponen dan sirkuit
Prototipe yang saya maksud disini adalah pembuatan sirkuit sementara dengan menggunakan breadboard. Sementara karena mikrokontroller, komponen, kabel, dll. pada sirkuit ini tidak disolder, namun cukup lengket sehingga hampir tidak bisa copot dengan sendirinya

B. Tentang Breadboard

Seperti terlihat diatas, breadboard (plastik dengan jaringan lubang) telah dibuat sedemikian rupa sehingga kita tidak usah menggunakan solder dalam membuat sirkuit (tentu saja sirkuit sementara, atau prototipe)

Jarak antar lubang pada breadboard mengikuti jarak pin IC umumnya, yaitu 1/10 inch, atau 2.54mm, yang juga merupakan jarak pin mikrokontroller AVR.

Untuk pembuatan prototipe, gunakanlah AVR dengan bentuk DIP sehingga bisa dicolok ke breadboard (achtung: bentuk SMD hanya untuk solder!).
Untuk pembelian komponen yang memiliki pin berjarak permanen gunakan selalu yang berukuran kelipatan dari 0.1 inch, seperti misalnya switch, header (jantan, betina), potensiometer, soket, dll. Dan juga nantinya saat anda beli PCB berlubang atau protoboard.

Untuk kabel, gunakanlah kabel inti tunggal dengan ukuran inti 22 AWG (diameter 0.644mm) agar mudah dipasang dan cukup mudah dilepas dari breadboard. Gunakanlah warna berbeda untuk fungsi berbeda, paling tidak gunakan merah untuk VCC dan hitam untuk ground.

Untuk ISP, saya rekomendasikan penggunaan ISP helper siap pakai, agar tidak ruwet. Contoh yang saya kenal adalah ISP breakout board dari Sparkfun dan Adafruit, juga Adafruit IDC helper.


Adafruit 6-pin AVR ISP Breadboard Adapter Mini Kit
Adafruit IDC Breakout Helper - 2x3 (6 pin)
SparkFun AVR Programming Adapter
(tapi sepertinya baru-baru ini sudah tidak lagi diproduksi)

C. Breakout Board Siap Pakai

Berikut beberapa contoh development board yang sempat saya temukan. "Do not re-invent the wheel" kata orang, jangan malu mencontoh hasil pemikiran orang lain yang lebih ahli.


Atmega328 target board dari Evil Mad Scientist Laboratories (dijual oleh Adafruit)
ATmega8 Development Board dari YouriTronics, simpel dan indah...
Simple evaluation board for ATtiny2313 microcontroller dari en.radzio.dxp.pl
Tiny Proto Boards, sirkuit AT tiny, cantik sekali...
AVR Development board, Step-by-Step-Tutorial, dari RobotPlatform, simpel namun indah...

Friday, April 24, 2015

Bagaimana Memulai Belajar AVR



A. URUTAN PEMBUATAN PRODUK AVR

Agar bisa "menghidupkan" AVR, kita harus lakukan hal-hal berikut :
  1. Dari ide yang muncul, siapkan konsep produk akhirnya (fungsi, input-output)
  2. siapkan device (chip AVR) dan sirkuit elektroniknya (sumber tenaga DC, LED, resistor, kapasitor, breadboard, kabel, ...) agar fungsi yang diinginkan terpenuhi
  3. Siapkan programnya (menggunakan programming seperti AVR-GCC atau Atmel Studio). » programming AVR.
  4. Kirim program tersebut ke sirkuit » pengiriman data ke AVR : ISP programmer dan Avrdude
  5. Debug (cek terhadap "bug"), dan revisi
  6. » Produk "hidup" !!!
Semua akan kita lihat pada contoh-contoh Proyek di bawah.

B. PILIHAN JENIS AVR

Tipe AVR yang paling banyak digunakan oleh pemula mungkin adalah mikrokontroller 8 bit AVR ATtiny, terutama dengan ukuran 8 pin (misal ATtiny13, ATtiny85, dll) dan 20 pin (misal ATtiny2313), AVR ATmega terutama yang 28 pin (AVR 28 pin "Atmega328P" dipakai oleh Arduino Uno, sehingga sangat dikenal).
Untuk melihat perbandingan dari beberapa AVR yang mirip, baik ATtiny maupun ATmega bisa dilihat disini.
Atmel terus mengembangkan AVR sehingga didapatkan produk yang semakin efisien dalam pemakaian listrik. Juga proses pembuatan bisa semakin ekonomis sehingga muncul beberapa tipe untuk satu produk. Misal ATmega328P adalah Pico Power type (tipe energi efisien) dan ATmega328 (tanpa P). Juga ATtiny2313A yang lebih harganya lebih murah dari pada ATtiny2313 (tanpa A).

C. SIRKUIT AVR

Ditahap ini anda harus memahami pengetahuan yang paling dasar dari elektronika, seperti:
  • Arus DC, karena mikrokontroller menggunakan arus DC yang sangat kecil, umumnya 3.3 volt atau 5 volt,
  • untuk itu sudah mulai belajar menggunakan multimeter untuk mengukur voltase.
  • Anda diharapkan sudah mengerti cara kerja breadboard-tanpa-solder,
  • serta membuat kabel jumper single core wire 22 AWG (dengan diameter tembaga 0.644mm).
  • Memahami fungsi resistor dan memahami bahwa LED akan terbakar ketika langsung dihubungkan dengan sumber 5 volt
  • Sudah mengetahui dimana belanja AVR dan komponen elektronika
  • Pencarian di Google dan Youtube akan sangat membantu.

belanjanya dimana saja?

  • Jakarta: terutama di Lindeteves Trade Centre (LTC), Glodok
  • mungkin di sebagian besar ibukota provinsi ada toko komponen elektronik
  • secara online, cukup banyak toko yang menjual AVR dan komponen linnya, misal:

D. PROGRAMMING AVR

AVR sangat disukai, salah satu alasannya adalah karena tersedianya berbagai bahasa pemrograman yang gratis namun ruboust. Penulisan source code untuk AVR tersedia dalam berbagai bahasa seperti assembler, C, dan Basic.
Tabel dibawah memperlihatkan secara umum kekuatan dan kelemahan masing-masing bahasa.
        Bahasa Ukuran Code     Lama Pengembangan     Kecepatan Eksekusi
        Assembly    Kecil Paling lama Paling cepat
        C Kecil Menengah Cepat
        BASIC Paling besar Menengah Paling lambat

Pemilihan Compiler

Untuk proyek-proyek, saya menggunakan bahasa pemrograman yang sangat robust namun juga gratis dan dengan komunitas yang sangat besar, yaitu AVR C runtime library (AVR-Libc) dan Atmel Studio (untuk Windows saja). Kita akan belajar mem-program AVR secara bertahap dari yang mudah pada Proyek-1, dilanjutkan denga Proyek-2 yang sedikit lebih sulit, dan seterusnya...
AVR-Libc bahasa tanpa IDE (integrated development environment), dan untuk mempermudah perlu menginstall IDE, misal WinAVR. Ada sangat banyak tutorial untuk meng-install AVR GCC.
Atmel Studio sangat bagus, dirancang terutama untuk AVR programmer dari Atmel sendiri (namun perlu setting agar tidak bentrok dengan Avrdude.

Ke-khususan Bahasa Pemrograman untuk Embedded

Dalam membuat program untuk AVR dan mikroprosessor lainnya ada beberapa hal yang berbeda dengan programming aplikasi desktop :
  • Semua perintah bermuara pada AVR, melalui Port dan Pin nya
  • Input maupun output melalui tingkat voltase yang diterima oleh Pin (untuk aplikasi desktop: OnClick, untuk aplikasi AVR: on-voltage-high atau on-voltage-low)
  • Input umumnya berupa button switch, sensor, encoder, dll.
  • Output umumnya berupa LED, motor, layar (text atau grafis), dll.
  • Input dan output umumnya menggunakan binary dan hexadesimal, sesuai dengan alamiahnya pin mikrokontroller.
  • Pemrograman embedded seperti AVR ini sangat dimudahkan dengan adanya bit-wise operator, seperti AND (&), OR (|), EX-OR (^), inverter (~), shift-left (<<) dan shift-right (>>).
  • Programmer harus memperhatikan batasan kapasitas AVR (misal Flash memory yang tersedia, akurasi timer, speed, power source, ...).
  • Output program dalam format *.c di 'make' mejadi format yang dikenal oleh AVR, yaitu INTEL HEX (*.hex)

referensi:


E. PENYUNTIKAN PROGRAM KE AVR

Untuk mengirimkan source code ke AVR device (AVR IC), digunakan AVR PROGRAMMER (hardware) beserta softwarenya. Berikut adalah 4 dari berbagai jenis AVR Programmer yang dibuat oleh Atmel yang juga banyak dibuat clone-nya oleh berbagai fihak. Kalau anda bisa mendapatkan satu dari 3 alat pertama (STK600, atau AVRISP mkII, atau AVR Dragon) ada beberapa hal yang tidak bisa dilakukan oleh produk AVR Programmer yang lebih murah.
Catatan: di situs ini saya hanya menyinggung metoda ISP saja (karena saya belum pernah menggunakan metode JTAG, DebugWire, atau metode lainnya :) )

STK600 Starter Kit

Alat ini adalah yang tebaik untuk mulai belajar AVR, baik 8 bit maupun 32 bit. Sebelum masuk Indonesia harganya sekitar UD$90, agak mahal namun betul2 worth it, karena fitur2nya sangat bagus. Alat ini de facto standar untuk pengembangan AVR !

AVR Dragon Evaluation Tool

Dengan harga US$55 (sebelum masuk Indonesia), dengan fitur yang sangat komplit, hanya sedikit dibawah STK600, belajar AVR mwenggunakan programmer ini anda akan sangat terbantu.

AVRISP mkII In System Programmer

Dengan harga sekitar $30 (sebelum masuk Indonesia) programmer ini melakukan apa yang bisa dilakukan oleh USBtiny ISP dalam memprogram AVR 8 bit, plus pengecekan kebenaran sirkuit anda sebelum mulai uploading - hal yang sangat membantu. Tapi bagi yang tidak suka utak-atik setting, Programmer ini tidak akur dengan AVRDUDE, jadi kalau pakai Programmer ini agar sepenuhnya menggunakan Atmel Studio...

The Open Source USBtinyISP

Berbagai AVR ISP Programmer dibuat oleh berbagai fihak, umumnya dengan harga yang sangat murah (untuk ukuran dunia embedded). Di Indonesia AVR ISP Programmer dibuat oleh Depok Instrument, Innovative Electronics (lihat link di bawah), dan lain2.

Beli dimana?

  • Saya beli ISP Programmer Pocket AVR Programmer dari Sparkfun (USA) yang saya pesan online lewat distributor Jakarta Famosa Studio saat itu Rp 229.000,-
  • USBtinyISP yang juga sangat dikenal adalah produk Adafruit (USA) : USBtinyISP AVR Programmer Kit .
  • STK500 (produk Atmel pra-STK600, namun masih sangat disukai) sepertinya dijual oleh Digiware
  • AVRISP mkII sepertinya dijual oleh Digiware
  • AVRISP MK2 dari Olimex juga sangat banyak dibicarakan di internet.
  • Di Indonesia banyak toko menyediakan berbagai tipe AVR programmer, baik barang import (yang banyak disebut dibuku-buku seperti dari Sparkfun, dari Adafruit, dari Pololu dan dari Olimex) maupun lokal, seperti dari Depok Instruments , dan Innovative Electronics.
  • Bagi yang berkesempatan belanja di negara tetangga (Sg, My, Th : banyak toko besar punya cabang disana, seperti Mouser, Element14, dll)
  • Mau bikin sendiri ? Silahkan lihat disini.

F. UPLOAD HEX FILE KE AVR (FLASHING)

Kalau anda menggunakan Atmel Studio compiler dan menggunakan AVR programmer milik Atmel (seperti STK600, AVR Dragon atau AVRISP MKII) maka proses transfer hex file langsung bisa dilaksanakan.
Kalau anda menggunakan compiler AVR-GCC, maka anda memerlukan software uploader seperti Avrdude atau Atmel Studio Command Line untuk transfer HEX file ke chip AVR anda.
Avrdude merupakan software open source yang disupport oleh sebagian besar AVR Programmer, juga dipakai di Arduino IDE.
Atmel Studio Command Line tersedia saat anda install Atmel Studio.

G. APA YANG HARUS ANDA LAKUKAN SEKARANG ?

Saya telah terangkan bagaimana proses memulai proyek AVR, sekarang giliran Anda untuk mulai menerapkan pengetahuan baru Anda...
  1. Tentukan pilihan AVR anda. Kalau bingung ikut saya saja : ATtiny2313 dan ATmega328
  2. Mulai belanja :
    • AVR Programmer. Kalau bingung pilih yang mana, ikut saya saja, beli Sparkfun Pocket AVR Programmer lewat Famosa Studio. Di FamosaStudio anda juga bisa pesan ISP Programmer lain seperti Adafruit USBtinyISP
    • AVR chip beberapa buah
    • calon sirkuit pertama anda: breadboard (sebaiknya 2 atau 3 buah), kabel jumper (kalau mau praktis beli yg sudah siap pakai: male-male), beberapa jenis resistor (beberapa 330 ohm, 470 ohm, 1k ohm, 4.7k ohm), beberapa jenis kapasitor (beberapa kapasitor bipolar 0.1uF, 1uF, 100uF, dan non-polar 101, 102, 103, 104), beberapa LED (misal masing2 5 buah yang 5mm warna merah, hijau, kuning)
    • Multi-meter, pelajari cara penggunaannya
    • Power, paling sederhana mungkin adalah adaptor 5 Volt 1~2 Ampere
  3. Pelajari cara penggunaan AVR Programmer yang anda pilih. Biasanya ada tutorialnya, ikutilah dengan seksama.
  4. Lakukan upload Hex file (flashing) ke AVR chip anda (ini juga mestinya diberikan oleh tutorial AVR programmer diatas)
  5. Dan kalau OK: SELAMAT !!! Anda sudah qualified menjadi calon robotic engineer...
to top

H. REFERENSI


Wednesday, April 22, 2015

Tentang Mikrokontroller dan AVR


A. APA ITU MIKROKONTROLLER

Mikrokontroller (terkadang disingkat menjadi ┬ÁC, uC or MCU) adalah komputer kecil dalam sebuah integrated circuit (IC), berisi CPU, memory, timer, dan input/output. Program memory dalam bentuk Flash, RAM dan EEPROM. Microcontrollers dirancang untuk aplikasi embedded.

Penggunaan mikrokontroller ada pada alat-alat digital, telah ada dimana-mana, hingga kita mungkin tidak menyadarinya. Contoh: remote control, keyboard pc, mouse pc, jam tangan, mainan digital, kartu absensi, kartu masuk ruang, peralatan rumah tangga (misal bel, coffee maker, kulkas, sterio-set, televisi, A/C, dll.), kontrol di sepeda motor, kontrol di mobil, bahkan kartu ucapan digital.

Apa sebenarnya yang dilakukan oleh sebuah mikrokontroller?

  1. Mikrokontroller menjalankan hanya apa yang anda rancang untuk dilakukannya.
  2. Sebuah mikrokontroller menerima beberapa jenis masukan (input)
  3. Ia mengambil keputusan berdasarkan pada software yang telah anda tulis
  4. Keluaran (output) nya berubah berdasarkan keputusan pada langkah 3
  5. Ia melakukannya dengan cepat dan dengan handal.

B. KENAPA BELAJAR MIKROKONTROLLER

Bukan maksud saya untuk mengajak anda (atau anak anda) untuk menjadi ahli elektronika, tapi :

  • Dengan mencipta gadget atau robot yang sederhana, kita membuka cakrawala terhadap teknologi tinggi, baik software, hardware (sirkuit elektronika, termasuk berbagai sensor)
  • Internet of Things (IoT) hot, sangat hot, dan mikrokontroller berada pada posisi otak bagi IoT
  • Setiap tahun jutaan, bukan, MILYAR-an mikrokintroller diproduksi. Sebelum tahun 1983 sudah jutaan mikrokontroller TMS 1000 dijual oleh Texas Instruments setiap tahunnya.

C. KENAPA AVR

Ada berbagai macam mikrokontroller yang dirancang dengan fasilitas dan ukuran yang sesuai dengan fungsinya. Mikrokontroller dibuat oleh berbagai perusahaan diberbagai belahan bumi (sayang tidak satupun dibuat di Indonesia), seperti misalnya Intel, ARM (disain), Microchip, Atmel, Freescale (Motorolla), Renesas (Hitachi), Texas Instruments, dllsb.

AVR adalah nama dari satu seri mikrokontroller dari Atmel. Setiap mikrokontroller dalam serie ini berbagi set instruksi dan bagian inti yang sama. Ketika kebutuhan proyek kita perlu perubahan kita bisa memilih AVR berbeda yang lebih cocok berdasarkan pada berapa banyak Input/Output ynmg diperlukan, berapa banyak kebutuhan timer, kebutuhan ruang memory, kecepatan, serta fitur2 lainnya. AVR tersedia dalam berbagai variasi paket. Indahnya AVR adalah ketika anda memahami suatu tipe maka pada dasarnya anda mengetahui seluruh tipe yang ada.

Belajar AVR itu mudah dan murah. Mudah dalam mencari support, mudah dalam mencari chip AVR, mudah dalam membuat program karena banyak tersedianya compiler yang robust namun gratis, mudah karena AVR ISP dapat ditemukan dimana-mana.

Murah karena tersedia berbagai chip AVR yang ekonomis, murah karena harga AVR ISP sangat terjangkau.

Bagaiman Dengan Arduino

Arduino yang merupakan sirkuit dengan mikrokontroller dan dibuat sedemikian rupa untuk memudahkan belajar robotik dan elektronik telah berhasil menarik perhatian dunia teknologi elektronik dan robotik. Untuk "pemudahan" tersebut, banyak alat bantu yang diberikan Arduino, seperti "Arduino IDE" (sebenarnya adalah makro, agar programmingnya lebih mudah), "shield" (sirkuit bantuan yang snap-on ke Arduino, sehingga pengguna tidak usah membuat dan merangcang sendiri sirkuit bantuan ini).

Belajar mikrokontroller AVR adalah tahap berikutnya setelah belajar Arduino. Namun bukan berarti anda harus belajar Arduino sebelum belajar AVR, hanya saja anda dituntuk belajar programming dengan "bahasa C murni" dan membuat sendiri rangkaian sirkuit (harus memahami fungsi komponen elektronik, sensor, dan sebagainya), sehingga akhirnya kreasi anda tidak terbatas pada "shield" dan "makro" yang disediakan oleh Arduino.

Bagaimana Dengan Robot LEGO Mindstorms

LEGO Mindstorms dirancang untuk memanjakan anda dengan model snap-on ala "LEGO", termasuk komponen utama (mesinnya yang berisi mikrokontroller, berbentuk brick) motor, sensor, gears dan LEGO bricks, serta pemrograman yang juga snap-on.

Untuk memahami bagaimana membuat robot, mungkin LEGO Mindstorms sangat tepat dan anda bisa belajar cepat, terutama dengan tersedianya komponen mekanik dan berbagai sensor yang memberi kesempatan kreasi yang sangat luas.

Namun saat anda ingin membuat produk non-robotik, atau ingin belajar belajar tentang elemen dasar elektronik atau instrument, maka Mindstorms tidak lagi bisa memenuhi, maka AVR beserta komponen elektronik serta pemrogramannya siap untuk anda gunakan.

Belajar membuat robot AVR membutuhkan hal-hal yang sangat mendasar, tidak ada komponen dan programming yang snap-on, tapi itulah inti dari belajar AVR.

Berikut diskusi pendek tentang AVR (dalam hal ini NerdKit), Arduino dan LEGO MindStorms.

D. SEBERAPA JAUH BELAJAR HINGGA BISA MEMBUAT ROBOT?

Robot sangat variatif. Robot sederhana mungkin bisa segera kita cipta, makin canggih membutuhkan penguasaan hal yang lebih ruwet. Belasan tahun dibutuhkan oleh belasan engineer spesialis robot untuk mengembangkan robot Asimo (dari Honda) hingga level kemampuannya mencapai kondisi seperti sekarang.

  • Robot mobil sederhana yang bisa berjalan lurus, yang hanya membutuhkan pemahaman tentang menggerakkan 1 motor dan mekanik sederhana, robot mobil yang bisa berbelok membutuhkan pemahaman kontrol 2 atau 3 motor.
  • Robot mobil yang mengikuti jalur warna atau dinding, selain membutuhkan pemahaman tentang motor dan motor servo, juga sensor warna dan tactile switch (dengan debouncing), disertai mekanik yang lebih banyak.
  • robot biped (2 kaki) yang berjalan kaku memerlukan 3 motor servo dengan mekanik sederhana.
  • Pada motor matic untuk menghidupkan mesin kunci kontak harus pada posisi ON (otomatis lampu di dashboard menunjukkan lampu hijau), tapi tanpa rem tangan ditarik starter tidak bisa dilakukan » artinya motor menggunakan mikrokontroller untuk fungsi-fungsi tersebut.
  • Di mobil, ketika pintu supir dibuka, otomatis semua pintu menjadi un-lock, lampu plafon menyala, di dashboard muncul gambar pintu terbuka, kalau lampu sorot menyala maka beeper akan berbunyi. Ketika pintu ditutup lampu plafon meredup hingga mati, kemudian kalau tidak di-kunci menggunakan remote-control maka setelah beberapa saat pintu akan mengunci dengan sendirinya » Ini semua menunjukkan penggunaan mikrokontroller.
  • dst...

E. SEBERAPA SULITKAH BELAJAR AVR?

  • Bayangan bahwa mikrokontroller dan programming tidak mudah: ada benarnya, tetapi untuk menjangkau yang lebih tinggi bagaimanapun pasti membutuhkan usaha yang lebih besar.
  • Bayangan bahwa untuk memulai harus terlebih dahulu memahami elektronika: juga benar, tetapi sebenarnya cukup yang dasar-dasar saja. Bagi yang awam seperti saya artinya perlu belajar terlebih dahulu. Saya sendiri mengikuti kursus Elektronika Dasar selama 8x2 jam di Heartz Institute
  • Anda pikir mencari chip AVR dan komponen elektronika sulit: banar kalau anda tidak mau mencoba online shop. Di Indonesia banyak sekali online shop elektronika, diantaranya : (berikut 3 toko online yang saya kenal)  iwant electronicsDigiwareFamosa Studio.
  • Bahwa belajar teknologi tinggi harus bisa bahasa Inggris: tidak sepenuhnya benar, banyak buku terjemahan atau tulisan asli dalam bahasa Indonesia bisa ditemukan.
  • Bahwa belajar teknologi tinggi mahal: tidak sepenuhnya benar. Memang modal dasar harus dimiliki, seperti
    • PC (cukup PC tua, tidak harus berkecepatan tinggi, yang penting tersedia soket USB atau soket serial),
    • AVR device Programmer : dulu saya beli Rp 179.000,- (sekarang menjadi Rp 229.000,-)
    • AVR mikrokontroller : bervariasi, dari yang kecil (dengan harga dibawah Rp 30.000,- hingga yang AVR ATmega32A yang 40 pin dengan harga sekitar Rp 50.000,- ditoko online)
    • komponen elektronik (sangat tergantung jenis proyeknya) tidak begitu mahal, tapi proyek-proyek awal saya hanya membutuhkan belasan ribu rupiah.
  • saat mulai masuk ke ranah robotik, harga akan mulai meningkat, karena sensor, apalagi kontrol jarak jauh, harganya lumayan tinggi
  •  
    Jadi kalau yang anda cipta sederhana maka yang paling penting hanya kemauan anda, karena biayanya rendah. Ketika anda mulai mencipta yang canggih maka biaya akan lebih pula.

Referensi

Rekomendasi buku


Tuesday, April 21, 2015

Selamat datang...

Selamat Hari Kartini

Saya mencoba berbagi pemahaman saya tentang mikrokontroller AVR. Bukan berarti saya memiliki pemahaman yang luas tentang AVR, saya juga hanya pemula, namun dengan menulis dan berbagi moga pemahaman saya terus meningkat.


Saya baru mulai menulis secara ringkas tentang apa itu AVR dan bagaimana memulai belajarnya, yang telah saya tampilkan di header blog ini. Saya akan mulai memasukkan post berupa proyek2 saya, dan juga link ke proyek2 yang saya sukai (dan moga bisa konsisten).