Atmel ATTINY817 Xplained MINI

Dulu saya suka sekali ngoprek ATTiny, terutama ATtiny85 dan ATTiny84. Menurut saya, chip-chip ini sangat sederhana dan mudah dipelajari. Kalau mau bikin piranti elektronika simpel (embedded) bisa menggunakan chip kecil ini. Selain murah, juga bisa praktis & ringkas.

Walau pun demikian, ATTiny memang punya keterbasan, terutama di spesifikasinya. Tapi memang sebenarnya Attiny tidak ditujukan untuk aplikasi yang kompleks. Attiny biasanya digunakan untuk mengendalikan tugas-tugas ringan yang spesifik. Tidak seperti chip yang kompleks seperti ATMega328 yang digunakan di Arduino versi awal atau SAM3X8E yang menggunakan arsitektur ARM yang bisa multi purpose dengan kecepatan tinggi.

Terakhir saya sempat ngoprek Radio dengan Attiny85 dan berakhir mentok karena keterbatasan memori-nya yang cuma 8 KB. Itu pun sudah berkurang menjadi sekitar 6 KB karena digunakan untuk bootloader. Dan saya pun kehabisan memori karena harus menggunakan beberapa library, hiks…

Lalu beberapa waktu lalu saya dapat email dari Atmel tentang kehadiran beberapa seri ATtiny, yaitu ATtiny417, ATtiny814, ATtiny816 dan ATtiny817. Saya pun memesan ATtiny817 XMini yang merupakan evaluation board untuk ATtiny817.

Apa sih istimewanya ATtiny817 ini? Yang jelas, ATtiny817 ini tetap minimalis dengan memori flash cuma 8 KB, SRAM 512 byte, EEPROM 128 byte, kecepatan clock meningkat sampai 20 MHz/20 MIPS, punya 2 buah timer/counter 10-bit, tetap menggunakan 8-bit DAC, analog comparator, accurate internal oscillator dan multiple calibrated voltage references. Dan yang menarik karena ada Peripheral Touch Controller (PTC), custom logic, 10-bytes unique ID dan bentuk packagingnya 24 pin. Detail spesifikasi bisa dilihat di: ATTINY817 (www.microchip.com) dokumen komplit: Datasheet.

Nah, Evaluation Kit ATtiny817 Xplained Mini (Xmini) yang saya beli ini sudah dilengkapi debugger terintegrasi, 2 buah tombol kapasitif (terintegrasi QTouch Peripheral Touch Controller), Auto-ID, akses ke semua sinyal ATtiny817, 1 LED status berwarna hijau, 1 tombol mekanik, virtual port COM (CDC), ditenagai USB, punya pin yang kompatibel dgn Arduino, header SPI. Tuh lihat saja di foto di atas. Jadi mudah ngopreknya karena pin jadi kompatibel dgn Arduino UNO.

Jujur saja saya masih belum tau mau dibikin apa, dan kapan ngopreknya, secara saat ini lagi sibuk dengan pekerjaan. Semoga saja dalam waktu dekat bisa segera ngoprek lagi. Soalnya yang menarik dari Attiny817 ini adalah adanya 2 tombol kapasitifnya. Sepertinya bisa luas aplikasinya.

Iklan

Digital Temperature with ATTiny85 & LM35

Baiklah, saya sudah punya display 7-segment mungil, lalu mau dibuat apa? Saya pun memutuskan membuat “digital temperature” sederhana. Kebetulan saya punya spare LM35 sisa ngoprek Ngepot84.

Sebenarnya sederhana, hanya saja kabelnya itu yang bikin tampak ruwet
Sebenarnya sederhana, hanya saja kabelnya itu yang bikin tampak ruwet

Hanya saja saya ingin proyek ini sesederhana mungkin, dalam arti tidak menggunakan Arduino yang relatif lebih mahal. Maklum, saya ingin proyek ini cuma mengukur suhu, tidak lebih. Toh display yang tersedia cuma 7-segment standard nan mungil yang tentu saja tidak bisa menampilkan info yang kompleks.

Ada 4 opsi microcontroller yang tersedia, yaitu: ATTiny85, ATTiny84, ATtiny2313 dan ATtiny4313. Karena pertimbangannya adalah kesederhanaan, maka pilihan jatuh pada ATTiny85 yang cuma punya 8 kaki dengan 5 I/O. Tentu saja 5 pin I/O kurang untuk men-drive 2 digit 7-segment. Syukurlah saya punya stock chip shift register 74HC595 untuk membantu ATTiny85 men-drive display 7-segment.

Cukup menggunakan ATTiny85
Cukup menggunakan ATTiny85

Walau pun sederhana, saya ingin hasil dari proyek ini baik terutama dalam hal display-nya. Oleh karena itu saya mengambil 2 buah shift register 74HC595 untuk ke-2 digit display. Dengan 2 buah IC shift register, saya tidak perlu menggunakan teknik scanning. Kedua shift register ini dirangkai cascading. Walau pun menggunakan 2 buah shift register, pemrogramannya mudah kok. Cukup panggil 2 kali fungsi shiftOut di antara pemicuan pin latch (lihat source code untuk detailnya).

2 digit 7-segment untuk display suhu ruangan
2 digit 7-segment untuk display suhu ruangan

Di bawah ini adalah skema dari Digital Temperature with ATTiny85 ini. Jangan terkecoh dengan ruwetnya kabel. Sebenarnya ini proyek sederhana dengan beberapa komponen saja. Anda bisa merangkaikannya di breadboard dalam waktu kurang dari 30 menit.

Cuma membutuhkan beberapa komponen
Cuma membutuhkan beberapa komponen

(Klik pada gambar untuk memperbesar gambar)

Jika ada waktu luang, rencananya akan saya buatkan PCB-nya supaya sirkuit ini permanen. Juga penggunaan baterai supaya bisa lebih portabel.

Tampilan Temperature Digital versi breadboard
Tampilan Temperature Digital versi breadboard

Read More »

Programming ATtiny84

Setelah belajar Attiny85 dan membuat programmer versi socket Nano, saya pun melanjutkan pembelajaran ke pemrograman ATtiny84. Chip sample dari Atmel ini adalah versi kaya dari ATtiny85 karena ATtiny84 (dan ATtiny44) memiliki 12 pin I/O. Bandingkan dengan ATtiny85 yang cuma punya 6 pin I/O. Lebih kaya 2 kali lipat sehingga memungkinkan penggunaannya untuk hal yang lebih kompleks.

Programmer ATtiny84 with Arduino Nano
Programmer ATtiny84 with Arduino Nano

Seperti biasa, saya mengandalkan Arduino Nano dan breadboard. Di atas adalah foto programmer sederhana hasil adaptasi ke ATtiny84. Untuk referensi dasar bisa merujuk ke: Program an ATtiny with Arduino (instructable) atau ke Programming an ATtiny w/ Arduino 1.0.1 (high-low tech). Prinsipnya sama, hanya saja saya menggunakan Arduino Nano untuk memprogram ATtiny84.

Test Program ATtiny84
Test Program ATtiny84

Programmer ini dapat berjalan dengan baik dan lancar. Hanya saja ada sedikit catatan dari saya, saat mencoba PWM (pulse width modulator) yang mensimulasikan keluaran analog, pin 5 dan 6 yang bisa digunakan untuk output analog ternyata tidak menghasilkan output yang smooth. Incremental dan decremental tidak smooth ditampilkan di LED. Mungkin karena pin 5 & 6 ini digunakan juga sebagai pin yang digunakan untuk pemrograman (MISO dan MOSI).

Berbeda dengan pin 7 dan 8 yang bisa menghasilkan output PWM yang smooth karena kedua pin ini didedikasikan utk I/O dan tidak nyambi keperluan lain. Mungkin secara visual (via LED) akan nampak sekali bedanya antara yang smooth dengan yang tidak. Tapi mungkin secara elektronika tidak terlalu berpengaruh. Namun untuk keperluan visual atau jika berhubungan dengan piranti lain yang peka, sebaiknya menggunakan pin 7 dan 8.

ATtiny85 Programmer with Arduino Nano Socket

Semenjak menerima sample dari Atmel, saya jadi sering ngoprek ATtiny85 yang imut itu. Lebih mengasyikkan karena untuk memprogramnya bisa menggunakan Arduino Nano yang juga imut. Penggunaan Arduino Nano menjadikan pemrograman ATtiny lebih praktis karena Nano bisa langsung tancap di breadboard sehingga koneksi pengkabelan lebih kuat.

Arduino Nano yang breadboard-friendly
Arduino Nano yang breadboard-friendly

Lebih lanjut, penggunaan Nano + Attiny dalam 1 breadboard bisa membuat experimen rangkaian lebih mengasyikkan. Komponen-komponen pendukung bisa langsung tancap di breadboard. Kalau ada kekurangan dalam program bisa langsung di-edit & upload.

Programmer ATTiny85 dengan Arduino Nano dalam 1 breadboard
Programmer ATTiny85 dengan Arduino Nano dalam 1 breadboard

Jadinya tidak perlu membuat development board khusus untuk ATtiny seperti layaknya Arduino Board. Praktis ya?

Tidak perlu development board khusus utk ATtiny85
Tidak perlu development board khusus utk ATtiny85

Tapi gara-gara surfing dan kemudian nyampai di sebuah artikel bertajuk _Attiny Programmer, saya jadi tertarik untuk membuat versi saya sendiri. Berbeda dengan pendekatan di artikel tersebut yang membuatnya sebagai shield programmer di board Arduino reguler, saya memilih membuat versi yang unik, yaitu versi soket untuk Nano.

Diisi dengan soket untuk Attiny & Nano plus LED
Diisi dengan soket untuk Attiny & Nano plus LED

Saya membuat soket untuk Arduino Nano dari pin header female. Untuk kaki kanan saya cuma menggunakan 4 pin sedangkan kaki kiri full soket. Kalau dibuat full semua pin bisa sulit nancapkan & mencabut Nano jika dibutuhkan untuk keperluan lain. Sedangkan socket untuk Attiny85 menggunakan socket standard 8 pin. Saya juga menambahkan 8 soket mandiri untuk kaki kiri dan kanan Attiny85 supaya bisa digunakan untuk development board sederhana. Oh iya, saya menambahkan juga resistor 220R dan socket untuk LED. Ini hanya untuk ngecek apakah programmer berhasil meng-upload program dengan baik. Programnya bisa menggunakan program blink dari contoh bawaan Arduino.

Pengkabelan di bagian bawah
Pengkabelan di bagian bawah

Supaya board programmer ini tampak rapi, saya menyolder kabel-kabel koneksi di bagian bawah board. Sempat salah koneksi sehingga programmer gagal berfungsi. Gara-garanya salah hitung pin, hehehe… Untunglah tidak membuat rusak Nano mau pun Attiny85.

Akhirnya berfungsi baik
Akhirnya berfungsi baik

Di atas adalah foto programmer yang berfungsi dengan baik. Program test adalah menyalakan LED dengan PWM sehingga LED bisa menyala & padam secara gradual.

Ini adalah programmer yang ditujukan hanya untuk upload program. Sebaiknya prototyping & development tetap di breadboard yang lebih fleksibel. Karena walau pun saya menambahkan beberapa pin seperti layaknya development board, tapi rasanya masih kurang nyaman untuk eksperimen.

Belajar ATtiny85

Senangnya dapat sample chip microcontroller ATtiny dari Atmel. Semaleman penuh semangat mempelajarinya. Dari datasheet, cara memprogram hingga menggunakannya untuk hal-hal sederhana.

Sedikit berbeda dengan tutorial memprogram ATtiny yang kebanyakan dengan board Arduino reguler (mis: Uno), saya lebih memilih menggunakan Arduino Nano yang kecil ukurannya dan bisa langsung ditancap di breadboard. Jadi Nano bisa didedikasikan sebagai programmernya ATtiny. Dengan demikian Nano bisa 1 breadboard dengan ATtiny. Jadi nampak lebih handal koneksinya.

Untungnya Arduino Nano ver3 ini kompatibel penuh dengan Uno R3 sehingga tutorial pemrograman ATtiny bisa diikuti dengan hanya sedikit penyesuaian, yaitu pemilihan board Nano saja. Koneksi pin sama, hanya layout pin Nano saja yg sedikit berbeda karena pin 13 letaknya nyeberang ke sisi kiri board.

Saking asyiknya ngoprek sampai kebablasan jam 1:30. Weks, saatnya tidur.