Rupanya kerja di rumah itu sulit ya? Sulitnya bukan karena masalah teknis, tapi justru non teknis. Seperti karena banyaknya gangguan yang bisa mengalihkan perhatian kita dari pekerjaan (distraction). Dari tersedianya cemilan atau makanan dengan aroma menggoda, adanya TV atau film-film bagus yang siap ditonton, atau karena dekat dengan tempat tidur yang seolah melambai-lambai minta ditidurin.
Pendek kata, kerja di rumah lebih sulit untuk fokus. Asyiknya sih punya ruang kerja sendiri yang jauh dari segala gangguan.
Tapi suasana “bekerja” sulit didapatkan di rumah karena perlu dibangun secara kolektif. Maksudnya begini, kadang kita perlu rekan kerja yang dapat saling mendukung secara aktif mau pun pasif dalam bekerja. Bahkan rekan-rekan kerja yang diam bekerja di mejanya masing-masing sudah dapat membuat kita bersemangat untuk terus bekerja.
Akhirnya setelah lama melalui proses rekrutmen, kami bisa mendapatkan tambahan tenaga programmer baru. Merekrut programmer itu tidaklah mudah, terutama karena bisnis utama kami adalah di bidang kesehatan. Sedangkan kebanyakan fresh graduate lebih memilih kerja di perusahaan murni IT atau yang perusahaannya ada di segitiga emas.
Pengalaman yang tidak mengenakkan adalah ketika para calon ini menolak datang untuk psikotest/wawancara hanya karena lokasi pemanggilan di Tangerang. Hiks… mungkin Tangerang tidak dianggap sebagai kota yang menjanjikan bagi karir IT mereka. Padahal Tangerang hanya sebagai basis IT Corp saja, kenyataannya kami harus bekerja di banyak kota termasuk luar Jawa.
Jadi ketika kami berhasil merekrut 2 orang tahun ini, rasanya sangat melegakan. Sayangnya tahun ini 2 orang resign. Jadi penambahan ini cuma sebagai pengganti. Hiks…
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 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.
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
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
Jadinya tidak perlu membuat development board khusus untuk ATtiny seperti layaknya Arduino Board. Praktis ya?
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
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
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
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.
Sebagai seseorang yang berangkat dari latar belakang programmer dan developer, daku mesti banyak menganalisa masalah dan memecahkannya, tidak hanya di lapisan non teknis tapi sampai ke penelusuran teknis di programnya juga. Tidak jarang harus menganalisa code yang dibuat oleh orang lain, dan yaaa… itu pekerjaan yang sangat sulit karena kita harus mencoba memahami jalan pikiran orang dari kodenya untuk menangkap alur logikanya.
Di satu sisi, ada sesuatu yang menantang, yaitu memprediksi apa yang akan terjadi jika susunan kode atau alur logikanya seperti itu. Karena pemikiran orang tentu berbeda dengan jalan pikiran kita. Seringkali kita harus menjelaskan bahwa kodenya bermasalah, atau berpotensi menimbulkan masalah. Dan itu tidak bisa diutarakan jika tanpa bukti nyata. Kita harus bisa memprediksi potensi kemungkinan kesalahan dari kode sekaligus bisa membuktikannya dalam simulasi. Tidak mudah kan?
Karena jika argumen yang kita utarakan tidak bisa disimulasikan kebenarannya yang membuktikan bahwa sebuah algoritma orang lain itu salah, maka seolah kita hanya seorang peramal yang bisa dibilang tidak ada dasar teknisnya sama sekali. Tapi membuktikannya dalam sebuah simulasi sungguh sangat sulit karena sama saja kita berupaya membuktikan prediksi kita dan meruntuhkan algoritma orang.