- Urutan pembuatan produk AVR.
- Pilihan jenis AVR
- Sirkuit AVR
- Programming AVR
- Penyuntikan program ke AVR lewat AVR Programmer (hardware)
- Proses pengiriman file HEX ke chip AVR
- Apa yang harus Anda lakukan sekarang ?
- Referensi
A. URUTAN PEMBUATAN PRODUK AVR
Agar bisa "menghidupkan" AVR, kita harus lakukan hal-hal berikut :
- Dari ide yang muncul, siapkan konsep produk akhirnya (fungsi, input-output)
- siapkan piranti (chip AVR) dan sirkuit elektroniknya (sumber
tenaga DC, LED, resistor, kapasitor, breadboard, kabel, ...)
agar fungsi yang diinginkan terpenuhi
- Siapkan programnya (menggunakan programming seperti AVR-GCC atau Atmel Studio). » programming AVR.
- Kirim program tersebut ke sirkuit » pengiriman data ke AVR : ISP programmer dan Avrdude
- Debug (cek terhadap "bug"), dan revisi
- » Produk "hidup" !!!
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).
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
arustegangan 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:
-
Toko online lokal yang saya pernah belanja iwant electronics, Digiware, Famosa Studio, TAMIYA Gading Serpong (mungkin terbesar di Jabodetabek), tel. 021 5421 6412
, Toko Komponen Elektro. I See Robot.
Toko online lokal yang saya belum pernah belanja, namun saya lihat ada di internet: Indo-ware, O.K. Electronics, Gerai Cerdas, Toko Robot, Kedai Robot, Toko-Robot, Indo Robotika, dll.
Belakangan Bukalapak.com dan Tokopedia.com juga banyak memfasilitasi penjualan online untuk mikrokontroller AVR, terkadang dengan harga miring.
Yang menarik, belanja di luar negeri secara online belum tentu mahal. Saya sudah mencoba belanja di eBay dan BangGood dari China. Untuk eBay, sebagian dari produknya gratis biaya pengiriman, sementara Banggood seluruh produknya pengirimannya gratis, sehingga terasa sekali harganya miring. Sepertinya banyak toko di Bukalapak.com dan Tokopedia.com mengambil barang dari sini.
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.
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.
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:
- AVR Libc online manual
- download buku Tutorial Pemrograman Mikrokontroler AVR dengan AVR Studio dan WinAVR GCC (oleh Dr. Agfianto Putra)
- Atmel - how to program AVR
- HACKADAY - AVR Programming
- Tutorial AVR GCC untuk mulai mengenal AVR GCC
- Tutorial AVR GCC ini juga untuk mulai mengenal AVR GCC
- Tutorial AVR GCC dari ScienceProg.com
E. PENYUNTIKAN PROGRAM KE AVR
Untuk mengirimkan source code ke piranti AVR (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 :) )
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.
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...
to top- Tentukan pilihan AVR anda. Kalau bingung ikut saya saja : ATtiny2313 dan ATmega328
- 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
- Pelajari cara penggunaan AVR Programmer yang anda pilih. Biasanya ada tutorialnya, ikutilah dengan seksama.
- Lakukan upload Hex file (flashing) ke AVR chip anda (ini juga mestinya diberikan oleh tutorial AVR programmer diatas)
- Dan kalau OK: SELAMAT !!! Anda sudah qualified menjadi calon robotic engineer...
H. REFERENSI
Referensi (bahasa Inggris)
- Link dari Cornell
- Adafruit AVR learn
- Sparkfun Beginning Embedded Electronics
- Avrdude
- Atmel Studio, Atmel - buku2 referensi
- MIT Media Arts
- Youtube - Programming AVR Microcontrollers in C - O'Reilly Webcast
- ExtremeElectronics - Getting Started with AVR Microcontrollers
- Micah Carric - ATtiny2313 Tutorial Introduction
- Embedds - AVR Tutorials
- NewbieHack - Microcontroller Tutorial
- NerdKits (meski situs ini tidur, namun sangat informatif)
- www.instructables.com/AVR
- Youtube - AVR Tutorials
- dan masih sangat-sangat banyak lagi, mungkin bahkan lebih bagus ...
Referensi (bahasa Indonesia)
- Situs Cara Mudah Belajar Elektronik Berkenalan dengan AVR Mikrokontroller
- Kursus AVR di Heartz Electronics Institute, Jakarta
- DSP & Embedded Electro
- AVR Circuit
- Komunitas Mikrokontroller Indonesia (sudah tidak aktif ?)
- Cara Mudah Belajar Elektronika Digital
- dan masih sangat-sangat banyak lagi, mungkin bahkan lebih bagus ...
Referensi Proyek AVR
- Tugas Akhir mahasiswa Cornell (2014 dan sebelumnya)
- Contoh2 dari buku Make: AVR ...
- Youtube - AVR Projects