Mikrokontroler ATMega 328 atau Arduino adalah sebuah nama produk desain sistem minimum mikrokontroler yang di buka secara bebas. Kelebihan dari arduino adalah Arduino mempunyai bahasa pemrograman sendiri, pemrograman
yang digunakan adalah bahasa C yang telah dipermudah dengan fungsi-fungsi yang sederhana sehingga pemula pun bisa mempelajarinya dengan cukup mudah.
Arduino juga memiliki program yang namanya boot loader yang sudah di tanam pada mikrokontrolernya, boot loader ini sendiri berfungsi untuk menjembatani antara software compiler arduino dengan mikrokontrolernya yang berfungsi untuk mengontrol dalam bentuk yang kecil. Di sini mikrokontroler memiliki memori sendiri, serta proses-proses yang dapat berdiri sendiri, sehingga ketika dihubungkan dengan input dan output yang lain, pengguna juga dapat mengontrol alat tersebut.
Arduino NANO adalah sebuah papan mikrokontroler yang didasarkan pada ATmega328.
Arduino NANO mempunyai 14 pin data input /output (6 di antaranya dapat digunakan sebagai output PWM), 6 pin input analog, sebuah osilator Kristal 16 MHz, sebuah koneksi USB, sebuah power jack , sebuah ICSP header dan sebuah tombol reset. Arduino NANO mudah sangat mudah untuk dihubungkan ke sebuah komputer dengan sebuah kabel USB atau mensuplainya dengan sebuah adaptor AC ke DC atau menggunakan baterai untuk memulainya.
Arduino NANO adalah sebuah seri terakhir dari board Arduino USB dan model referensi untuk papan Arduino Arduino NANO R3 merupakan board mikrokontroler yang didasarkan pada mikrokontroler jenis ATmega328. Konfigurasi bagian utama mikrokontroler dari Arduino Nano ditunjukkan pada Gambar 2.7 berikut ini.
Gambar 2.6 Konfigurasi Arduino Nano
Dari gambar 2.8 dijelaskan bahwa kofigurasi Arduino Nano yaitu sebagai berikut.
a. Universal Asynchronous Receiver/Transmitter (UART) adalah antar muka yang digunakanuntuk komunikasi serial seperti pada RS-232, RS-422 dan RS-485.
b. 2KB RAM pada memory kerja bersifat volatile (hilang saat daya dimatikan), digunakan oleh variable-variabel di dalam program.
c. 32KB RAM flash memory bersifat non-volatile, digunakan untuk menyimpan program yang dimuat dari komputer. Selain program, flash memory juga menyimpan bootloader. Bootloader adalah program inisialisasi yang ukurannya kecil, dijalankan oleh CPU saat daya dihidupkan. Setelah boot loader selesai dijalankan, berikutnya program di dalam RAM akan dieksekusi.
d. 1KB EEPROM bersifat non-volatile, digunakan untuk menyimpan data yang tidak boleh hilang saat daya dimatikan. Tidak digunakan pada papan Arduino.
e. Central Processing Unit (CPU), bagian dari mikrokontroler untuk menjalankan setiap instruksi dari program.
f. Port input/output, pin-pin untuk menerima data (input) digital atau analog, dan mengeluarkan data (output) digital atau analog.
Mikrokontroler ini memiliki beberapa fitur antara lain:
1. 130 macam instruksi yang hampir semuanya dieksekusi dalam satu siklus clock.
2. 32 x 8-bit register serba guna.
3. Kecepatan mencapai 16 MPS dengan clock 16 MHz.
4. 32 KB Flash memory dan pada arduino memiliki bootloader yang menggunakan 2KB dari flash memori sebagai bootloader. Memiliki EEPROM (Electrically Erasable Programmable Read Only Memory) sebesar 1 KB sebagai tempat penyimpanan data semi permanent karenaa EEPROM tetap dapat menyimpan data meskipun catu daya dimatikan.
5. Memiliki pin I/O digital sebanyak 14 pin 6 diantaranya PWM (Pulse Width Modulation) output.Mikrokontroler ATMega328 memiliki arsitektur Harvard, yaitu memisahkan memori untuk kode program dan memori untuk data sehingga dapat memaksimalkan kerja.
Gambar 2.7 Pin Mikrokontroler Atmega 328
Konfigurasi pin ATMega 328 dengan kemasan 28 pin DIP (Dual Inline Package) dapat dilihat pada gambar di atas. Dari gambar di atas dapat dijelaskan fungsi dari masing-masing pin ATMega328 sebagai berikut : ATMega328 memiliki 3 buah PORT utama yaitu PORTB, PORTC, dan PORTD dengan total pin input/output sebanyak 23 pin.[15] PORT tersebut dapat difungsikan sebagai input/output digital atau difungsikan sebagai periperal lainnya.
1. Port B
Port B merupakan jalur data 8 bit yang dapat difungsikan sebagai input/output. Selain itu PORTB juga dapat memiliki fungsi alternatif seperti di bawah ini.
a. ICP1 (PB0), berfungsi sebagai Timer Counter 1 input capture pin.
b. OC1A (PB1), OC1B (PB2) dan OC2 (PB3) dapat difungsikan sebagai keluaran PWM (Pulse Width Modulation).
c. MOSI (PB3), MISO (PB4), SCK (PB5), SS (PB2) merupakan jalur komunikasi SPI. Selain itu pin ini juga berfungsi sebagai jalur pemograman serial (ISP).
d. TOSC1 (PB6) dan TOSC2 (PB7) dapat difungsikan sebagai sumber clock external untuk timer.
e. XTAL1 (PB6) dan XTAL2 (PB7) merupakan sumber clock utama mikrokontroler.
2. Port C
Port C merupakan jalur data 7 bit yang dapat difungsikan sebagai input/output digital. Fungsi alternatif PORTC antara lain sebagai berikut.
a. ADC6 channel (PC0,PC1,PC2,PC3,PC4,PC5) dengan resolusi sebesar 10 bit. ADC dapat kita gunakan untuk mengubah input yang berupa tegangan analog menjadi data digital
b. I2C (SDA dan SDL) merupakan salah satu fitur yang terdapat pada PORTC. I2C digunakan untuk komunikasi dengan sensor atau device lain yang memiliki komunikasi data tipe I2C seperti sensor kompas, accelerometer nunchuck.
3. Port D
Port D merupakan jalur data 8 bit yang masing-masing pin-nya juga dapat difungsikan sebagai input/output. Sama seperti Port B dan Port C, Port D juga memiliki fungsi alternatif dibawah ini.
a. USART (TXD dan RXD) merupakan jalur data komunikasi serial dengan level sinyal TTL. Pin TXD berfungsi untuk mengirimkan data serial, sedangkan RXD kebalikannya yaitu sebagai pin yang berfungsiuntuk menerima data serial.
b. Interrupt (INT0 dan INT1) merupakan pin dengan fungsi khusus sebagai interupsi hardware. Interupsi biasanya digunakan sebagai selaan dari program, misalkan pada saat program berjalan kemudian terjadi interupsi hardware/software maka program utama akan berhenti dan akan menjalankan program interupsi.
c. XCK dapat difungsikan sebagai sumber clock external untuk USART, namun kita juga dapat memanfaatkan clock dari CPU, sehingga tidak perlu membutuhkan external clock.
d. T0 dan T1 berfungsi sebagai masukan counter external untuk timer 1 dan timer 0.
e. AIN0 dan AIN1 keduanya merupakan masukan input untuk analog comparator.
Hanya dengan menghubungkannya ke sebuah komputer melalui USB atau memberikan tegangan DC dari baterai atau adaptor AC ke DC sudah dapat membuanya bekerja. [16].
Setelah mengenal bagian-bagian utama dari mikrokontroler Atmega sebagai komponen utama, selanjutnya kita akan mengenal bagian-bagian dari papan Arduino seperti yang ditunjukkan pada Gambar 2.11.
Gambar 2.8 Papan Arduino Uno
Arduino Uno berbeda dari semua board Arduino yang telah dibuat sebelumnya, Arduino UNO tidak menggunakan chip driver FTDI USB-to-serial.
Sebaliknya, fitur-fitur Atmega16U2 (Atmega8U2 sampai ke versi R2) diprogram sebagai sebuah pengubah USB ke serial.
2.7.1 Komunikasi Serial Mikrokontroler
Komunikasi Serial adalah komunikasi yang pengiriman data per-bit secara berurutan dan bergantian. Komunikasi ini mempunyai kelebihan yaitu hanya membutukan satu jalur dan kabel yang sedikit dibandingkan dengan komunikasi
paralel. Pada prinsipnya komunikasi serial merupakan komunikasi dimana pengiriman data dilakukan per bit sehinga lebih lambat dibandingkan komunikasi paralel, atau dengan kata lain komunikasi serial merupakan salah satu metode komunikasi data dimana hanya satu bit data yang dikirimkan melalui seuntai kabel pada satu waktu tertentu. Pada dasarnya komunikasi serial adalah kasus khusus komunikasi paralel dengan nilai n = 1, atau dengan kata lain adalah suatu bentuk komunikasi paralel dengan jumlah kabel hanya satu dan hanya mengirimkan satu bit data secara simultan. Hal ini dapat disandingkan dengan komunikasi paralel yang sesungguhnya di mana n-bit data dikirimkan bersamaan, dengan nilai umumnya 8 ≤ n ≤ 128.
Komunikasi serial ada dua macam, asynchronous serial dan synchronous serial. Synchronous serial adalah komunikasi dimana hanya ada satu pihak (pengirim atau penerima) yang menghasilkan clock dan mengirimkan clock tersebut bersama-sama dengan data. Contoh pengunaan synchronous serial terdapat pada transmisi data keyboard. Asynchronous serial adalah komunikasi dimana kedua pihak (pengirim dan penerima) masing-masing menghasilkan clock namun hanya data yang ditransmisikan, tanpa clock. Agar data yang dikirimkan sama dengan data yang diterima, maka kedua frekuensi clock harus sama dan harus terdapat sinkronisasi.
Setelah adanya sinkronisasi, pengirim akan mengirimkan datanya sesuai dengan frekuensi clock penerima. Contoh penggunaan asynchronous serial adalah pada Universal Asynchronous Receiver Transmitter (UART) yang digunakan pada serial port (COM) komputer.
Antarmuka kanal serial lebih kompleks/sulit dibandingkan dengan antarmuka melalui kanal paralel, hal ini disebabkan karena :
1. Dari segi perangkat keras : adanya proses konversi data paralel menjadi serial atau sebaliknya menggunakan piranti tambahan yang disebut UART (Universal Asynchronous Receiver Transmitter).
2. Dari segi perangkat lunak : lebih banyak register yang digunakan atau terlibat.
Namun di sisi lain antarmuka kanal serial menawakan beberapa kelebihan dibandingkan secara paralel, antara lain :
1. Kabel untuk komunikasi serial bisa lebih panjang dibandingkan dengan paralel; data-data dalam komunikasi serial dikirimkan untuk logika „1‟ sebagai tegangan -3 s/d -25 volt dan untuk logika‟0‟ sebagai tegangan +3 s/d +25 volt, dengan demikian tegangan dalam komunikasi serial memiliki ayunan tegangan maksimum 50 volt, Hal ini menyebabkan gangguan pada kabel-kabel panjang lebih mudah diatasi dibandingkan pada paralel.
2. Jumlah kabel serial lebih sedikit; Anda bisa menghubungkan dua perangkat komputer yang berjauhan dengan hanya 3 kabel untuk konfigurasi null modem, yaitu TxD (saluran kirim), RxD (saluran terima) dan Ground, bayangkan jika digunakan teknik paralel akan terdapat 20 – 25 kabel. Namun pada masing-masing komputer dengan komunikasi serial harus dibayar “biaya”
antarmuka serial yang agak lebih mahal.
3. Banyaknya piranti saat ini (palmtop, organizer, hand-phone dan lain-lain)menggunakan teknologi infra merah untuk komunikasi data, dalam hal ini pengiriman datanya dilakukan secara serial.
IrDA-1 (spesifikasi infa merah pertama) mampu mengirimkan data dengan laju 115,2 kbps dan konsep komunikasi serial dibantu dengan piranti UART, hanya panajang pulsa berkurang menjadi 3/16 dari standar RS-232 untuk menghemat daya.
4. Untuk teknologi embedded system, banyak mikrokontroler yang dilengkapi dengan komunikasi serial (baik seri RISC maupun CISC) atau Serial Communication Interface (SCI); dengan adanya SCI yang terpadu pada IC mikrokontroler akan mengurangi jumlah pin keluaran, sehingga hanya dibutuhkan 2 pin utama TxD dan RxD (di luar acuan ground).
2.7.2 Pin Masukan dan Keluaran
Masing-masing dari 14 pin digital arduino uno dapat digunakan sebagai masukan atau keluaran menggunakan fungsi pinMode(), digitalWrite() dan digitalRead(). Setiap pin beroperasi pada tegangan 5 volt. Setiap pin mampu
menerima atau menghasilkan arus maksimum sebasar 40 mA dan memiliki 10 resistor pull-up internal (diputus secara default) sebesar 20-30 KOhm. Sebagai tambahan, beberapa pin masukan digital memiliki kegunaan khusus yaitu:
Komunikasi serial: pin 0 (RX) dan pin 1 (TX), digunakan untuk menerima(RX) dan mengirim(TX) data secara serial.
External Interrupt: pin 2 dan pin 3, pin ini dapat dikonfigurasi untuk memicu sebuah interrupt pada nilai rendah, sisi naik atau turun, atau pada saat terjadi perubahan nilai.
Pulse-width modulation (PWM): pin 3,5,6,9,10 dan 11, menyediakan keluaran PWM 8-bit dangan menggunakan fungsi analogWrite().
Serial Peripheral Interface (SPI): pin 10 (SS), 11 (MOSI), 12 (MISO) dan 13 (SCK), pin ini mendukung komunikasi SPI dengan menggunakan SPI library.
LED: pin 13, terdapat built-in LED yang terhubung ke pin digital 13. Ketika pin bernilai HIGH maka LED menyala, sebaliknya ketika pin bernilai LOW maka LED akan padam.
Arduino Uno memiliki 6 masukan analog yang diberi label A0 sampai A5, setiap pin menyediakan resolusi sebanyak 10 bit (1024 nilai yang berbeda). Secara default pin mengukur nilai tegangan dari ground (0V) hingga 5V, walaupun begitu dimungkinkan untuk mengganti nilai batas atas dengan menggunakan pin AREF dan fungsi analogReference(). Sebagai tambahan beberapa pin masukan analog memiliki fungsi khusus yaitu pin A4 (SDA) dan pin A5 (SCL) yang digunakan untuk komunikasi Two Wire Interface (TWI) atau Inter Integrated Circuit (I2C) dengan menggunakan Wire library.
2.7.3 Sumber Daya dan Pin Tegangan
Arduino uno dapat diberi daya melalui koneksi USB (Universal Serial Bus) atau melalui power supply eksternal. Jika arduino uno dihubungkan ke kedua sumber daya tersebut secara bersamaan maka arduino uno akan memilih salah satu sumber daya secara otomatis untuk digunakan. Power supplay external (yang bukan melalui USB) dapat berasal dari adaptor AC ke DC atau baterai. Adaptor dapat dihubungkan ke soket power pada arduino uno. Jika menggunakan baterai, ujung
kabel yang dibubungkan ke baterai dimasukkan kedalam pin GND dan Vin yang berada pada konektor POWER.
Arduino uno dapat beroperasi pada tegangan 6 sampai 20 volt. Jika arduino uno diberi tegangan di bawah 7 volt, maka pin 5V akan menyediakan tegangan di bawah 5 volt dan arduino uno munkin bekerja tidak stabil. Jika diberikan tegangan melebihi 12 volt, penstabil tegangan kemungkinan akan menjadi terlalu panas dan merusak arduino uno. Tegangan rekomendasi yang diberikan ke arduino uno berkisar antara 7 sampai 12 volt.
Pin-pin tegangan pada arduino uno adalah sebagai berikut:
a. Vin adalah pin untuk mengalirkan sumber tegangan ke arduino uno ketika menggunakan sumber daya eksternal (selain dari koneksi USB atau sumber daya yang teregulasi lainnya). Sumber tegangan juga dapat disediakan melalui pin ini jika sumber daya yang digunakan untuk arduino uno dialirkan melalui soket power.
b. 5V adalah pin yang menyediakan tegangan teregulasi sebesar 5 volt berasal dari regulator tegangan pada arduino uno.
c. 3V3 adalah pin yang meyediakan tegangan teregulasi sebesar 3,3 volt berasal dari regulator tegangan pada arduino uno.
d. GND adalah pin ground.
2.7.4 Arduino IDE
Arduino IDE Arduino adalah perangkat lunak IDE (Integrated Development Environment). Sebuah perangkat lunak yang memudahkan kita mengembangkan aplikasi mikrokontroler mulai dari menuliskan source program, kompilasi, upload hasil kompilasi, dan uji coba secara terminal serial. Arduino ini bisa dijalankan di komputer dengan berbagai macam platform karena didukung atau berbasis Java.
Source program yang kita buat untuk aplikasi mikrokkontroler adalah bahasa C/C++
dan dapat digabungkan dengan assembly.
Gambar 2.9 Logo Arduino
Gambar 2.10 Arduino IDE
Pada tampilan Arduino IDE terdapat tiga jendela yaitu menu, tombol icon, eitor dan pesan. Pada bagian bawah terlihat jenis mikrokontroler atau board arduino saat ini yaitu Board Arduino BT dengan mikrokontroler 328 dengan menggunakan kanal serial COM7 untuk upload hasil kompilasi dan koomunikasi konsole serial.
Arduino sangat kaya dengan library karena arduino sifatnya adalah opensoource.
Selain arduino IDE sebagai jantungnya, bootloader adalah jantung arduino lainnya yang berupa program kecil yang dieksekusi sesaat setelah mikrokontroler diberi catu daya. Bootloader ini berfungsi sebagai pemonitor aktifitas yang diiginkan oleh arduino. Jika dalam IDE terdapat file hasil kompilasi yang akan diupload, bootloader secara otomatis menyambutnya untuk disimpan dalam memori program. Jika pada saat awal mikrokontroler bekerja, bootloader akan mengeksekusi program aplikasi yang telah diupload sebelumnya. Jika IDE hendak mengupload program baru, bootloader seketika akan menghentikan eksekusi program berganti menerima data program untuk selanjutnya diprogramkan dalam memori program mikrokontroler.