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 »

Membuat Jam Digital Sendiri

Dulu saat kelas 2 SMP saya pernah membuat jam digital dengan display seven segment besar. Jaman tahun segitu betapa bangganya saya bisa membuatnya sendiri. Memang sih dulu membeli PCB yang sudah jadi, jadi tinggal beli komponen dan solder-solder komponen saja. Sayangnya dulu kristal yang dibutuhkan tidak ada yang nilainya pas sehingga jam menjadi terlambat beberapa menit setelah beberapa hari. (*wah jam kok tidak akurat?*)

Kini setelah puluhan tahun kemudian saya diminta untuk membuat jam lagi. Kali ini saya mendesainnya dengan microcontroller Atmega328. Jam ini didesain memiliki alarm yang bisa menyalakan suara biasa atau bisa diset untuk menyalakan radio. Selain itu jam ini didesain memiliki sensor suhu. Saya mendesainnya menggunakan LM35, kebetulan ada stoknya. Tadinya mau pakai DHT11 tapi saya pikir tidak perlu sensor kelembaban. Selain menghemat biaya, pemakaian LM35 juga menghemat memori karena tidak perlu library khusus untuk pemrogramannya.

Masih 1/2 selesai
Masih 1/2 selesai

Untuk display saya menggunakan LCD 16×2. Terus terang ini solusi yang paling praktis bagi saya, karena saya sudah beberapa kali menggunakan display ini dan berjalan dengan baik. Lagi pula dengan LCD 16×2 lebih fleksibel tampilannya karena bisa menampilkan banyak karakter/angka.

Mungkin proyek selanjutnya saya akan coba pakai 7-Segment. Kebetulan harga 7-segment kecil tidak terlalu mahal.

Selain sulitnya mendesain rangkaian, tantangan terbesar adalah mendesain tampilan akhir produk. Ini yang paling sulit, bagaimana membuat produk yang enak dipandang dan dipakai. Banyak produk bagus (apa pun produknya) yang gagal di pasaran hanya karena tampilannya tidak menarik dan/atau tidak enak dipakai, padahal fiturnya canggih.

Untuk sementara ini saya memilih untuk memprioritaskan fungsionalitas. Untuk tampilan nanti sajalah saat membuat versi selanjutnya. Hehehe…

Oh iya, dalam desain jam ini masih tersisa beberapa pin, yaitu 2 pin analog dan 4 pin digital (2 di antaranya PWM). Jadi ke depannya jam ini masih bisa dioprek untuk menambahkan fitur, misalnya menambahkan sensor gas/LPG, cahaya, soil moisture (oh bisa jadi ngepot), atau bisa juga ditambahkan relay untuk lampu/AC atau motor untuk membuka/menutup tirai jendela.

Kebetulan saya pakai ATmega328 yang punya memori 32KB, yang berarti 4x lebih besar dari pada ATmega8.

Foto di atas adalah tampilan jam-nya. Masih setengah jadi. Baru bisa menampilkan tanggal dan jam saja. RTC dengan DS1307 didesain embedded. Nanti malam akan dilanjutkan untuk memasang tombol-tombol dan sensor suhu LM35. Sebenarnya saya sangat penasaran untuk segera bisa memasang modul radio (dengan breakout Si4703 dari Sparkfun). Sayangnya pesanan saya belum tiba. Hiks…

nge-Pot 84 with LCD (Pot Elektronik)

Ini adalah salah satu jawaban dari tantangan terhadap produksi alternatif Garduino yang lebih murah dan terjangkau. Jika sebelumnya saya telah berhasil membuat versi sederhana dengan nge-Pot 85 yang menggunakan Atmel Attiny85, maka sekarang saya menggunakan Atmel seri Attiny 84 yang lebih kaya I/O. Dengan Attiny84 ini saya bisa menambahkan LCD sebagai display bagi nilai penginderaan kelembaban tanah dan suhu sekitar.

Tampilan Ngepot 84
Tampilan Ngepot 84

Sayangnya jumlah pin I/O Attiny84 banyak terpakai untuk mengendalikan LCD yang butuh 6 pin. Jadi hanya tersisa 5 dari pin yang bisa dipakai. Sisa 5 ini terpakai untuk 1 sensor Soil Moisture, 1 relay, dan 3 tombol (tombol ini digunakan untuk membuat referensi digital). Kurang 1 I/O untuk termometer. Pikir punya pikir, akhirnya saya mengakalinya dengan berbagi pakai 1 pin untuk tombol plus dan sensor temperatur LM35 DZ. Saat beroperasi normal, pin ini akan dipakai untuk membaca suhu sekitar yang diindera oleh LM35 DZ. Sedangkan pada mode edit, maka pin ini digunakan untuk tombol plus.

Tombol pengatur ambang dan sensor suhu udara sekitar
Tombol pengatur ambang dan sensor suhu udara sekitar

Tampak pada gambar di sebelah kanan LCD ada sebuah sensor suhu udara LM35 DZ dan di bawahnya berjejer 3 tombol untuk mengganti mode edit, tombol plus dan tombol minus.

Bagian sebelah kiri
Bagian sebelah kiri

Di sebelah kiri LCD tampak banyak komponen berjejal. Hehehe, berat sebelah ya? Di sebelah kiri ini ada port untuk menancapkan sensor Soil Moisture, jack power supply 6-12V, LED indikator nyala (warna hijau), LED indikator relay aktif (warna merah), dan relay untuk pompa air. Sedangkan tepat di sebelah kiri LCD ada 2 potensiometer yang bisa digunakan untuk mengatur kecerahan lampu latar belakang LCD dan pengatur kejelasan karakter LCD.

Ngepot 84 in action
Ngepot 84 in action

Tampak pada foto di atas saat relay pompa aktif. Selain ditunjukkan di LCD berupa tulisan “Pump: ON”, juga direpresentasikan oleh penyalaan LED merah. Nampaknya saya salah menggunakan resistor sebagai penurun arus sehingga LED merah nampak terlalu cerah.

Pump On dan LED merah menyala
Pump On dan LED merah menyala

Sebenarnya desain awal Ngepot 84 ini menempatkan relay di sebelah kanan board, tapi saya pikir kalau diletakkan di sebelah kanan akan membahayakan pengguna terutama saat melakukan edit nilai ambang yang ke-3 tombolnya ada di sebelah kanan. Takutnya relay yang terhubung dengan tegangan tinggi AC akan tersentuh secara tidak sengaja.

Tampilan keseluruhan Ngepot 84
Tampilan keseluruhan Ngepot 84

Foto di bawah ini menampilkan bentuk Ngepot 85 yang sederhana dengan Ngepot 84 yang lebih informatif dengan LCD. Kedua rangkaian prototype ini jatuhnya lebih murah dari pada Garduino (gardening Arduino ala Dewo).

Ngepot 85 dan Ngepot 84+LCD
Ngepot 85 dan Ngepot 84+LCD

Memang sih akan lebih mudah menggunakan Arduino. Tapi rasanya terlalu mahal jika untuk merawat tanaman saja harus menggunakan Arduino yang mahal harganya. Toh dengan Attiny 85 atau 84 yang jauh lebih murah bisa dilakukan hal yang sama. Walau memang ada beberapa batasan, misalnya kecepatan prosesor yang lebih rendah, kapasitas memori program yang lebih kecil sehingga tidak bisa diprogram untuk hal yang kompleks, dan jumlah pin yang lebih sedikit dari pada Arduino. Tapi ternyata saya bisa membuat Ngepot (Pot elektronik) versi murah yang bisa digunakan untuk merawat tanaman.

Bagi saya, mendesain dan membuat Ngepot 85 dan 84 memiliki kepuasan tersendiri. Di samping tujuan untuk membuat alternatif Garduino yang lebih murah dan praktis, juga karena hobi saya tersalurkan. Ini merupakan bentuk ekspresi diri bahwa saya mampu membuat versi saya sendiri dan dapat bekerja dengan baik. Walau pun sangat sederhana, saya cukup bahagia lohhh…

Saya akan mencoba mendokumentasikan desain proyek saya ini di blog. Hanya saja harus saya akui, saya malas merapikan skema rangkaian, hehehe. Jadi seperti yang sudah-sudah, cukup tampilan layout PCB yaaa… Cara membuatnya akan saya susulkan. Semoga proyek-proyek ini dapat berguna bagi orang banyak.

PERINGATAN:

  • Rangkaian Garduino, Ngepot 85 dan Ngepot 84+LCD dipublikasikan dengan lisensi Open Source Hardware. Semua pihak bisa mempelajarinya dan memproduksi/mengembangkan sendiri.
  • Rangkaian Garduino, Ngepot 85 dan Ngepot 84+LCD menggunakan relay yang bisa digunakan untuk mengontrol piranti lain dengan tegangan tinggi (s/d 240 Volt), misalnya pompa air, solenoid valve/kran, lampu, dll. Harap berhati-hati dalam menggunakan tegangan tinggi karena dapat mencelakakan diri sendiri atau orang lain. Selain berhati-hati, harap perhatikan potensi kecelakaan kerja dan operasional. Karena tegangan tinggi dapat mengakibatkan kecelakaan yang mematikan.

Membuat nge-Pot 85 (Open Hardware, Open Source)

Kalau kemarin membahas pengalaman mendesain & membuat nge-Pot 85 (Pot Elektronik), kini tibalah saatnya saya membagikan detail rangkaiannya. Namun mohon maaf, saya belum merapikan skema-nya dan tidak menyertakannya. Sekedar untuk diketahui, saya memulai desain justru dari layout PCB. Sedangkan layout breadboard dan skema otomatis tergambar di Fritzing. Hanya saja bertumpukan sehingga perlu dirapikan lagi tampilannya.

Layout PCB nge-Pot 85 tampak atas
Layout PCB nge-Pot 85 tampak atas

Di atas adalah tampilan atas dari PCB nge-Pot 85. Jika ingin membuat PCB sendiri, silakan download layout untuk etsa (etch) di sini: PCB copper bottom. Sedangkan di bawah ini daftar komponennya ditampilkan dalam 2 daftar, yaitu dalam format penamaan utk perakitan dan daftar belanjaan. Oh iya, jangan lupa menambahkan socket untuk ATtiny85 dan header female untuk titik-titik pengukuran.

Read More »

nge-Pot 85 (Pot Elektronik)

Setelah sebelumnya intensif bereksperimen dengan ATtiny85, kini tibalah saatnya membuat produk jadinya. Semalaman membuat PCB, menyolder, mengetest dan memperbaiki sehingga jadilah nge-Pot 85 (*ehm, tadinya mau diberi nama e-Pot. Tapi kok dikira nebeng popularitas produknya Apple*). Angka 85 diambil dari nomer seri microcontroller ATTiny85 dari Atmel.

Nge-Pot 85 adalah sebuah alat yang dapat membantu kita dalam menyirami tanaman. Nge-Pot 85 memiliki sensor Soil Moisture yang akan membaca kelembaban tanah. Pada titik bawah tertentu yang mengindikasikan tanah kekeringan dia akan memicu relay yang akan menyalakan pompa. Pada titik atas yang mengindikasikan tanah telah lembab dia akan mematikan pompa.

PCB Nge-Pot 85 sebelum direvisi
PCB Nge-Pot 85 sebelum direvisi

Penentuan titik referensi tanah kekeringan dan lembab menggunakan cara analog seperti yg saya tuliskan di “Membuat Nilai Referensi Analog”. Rupanya menggunakan ATtiny85 relatif lebih stabil pembacaan sensor dan penetapan nilai referensi.

Tampilan ngepot 85 sebelum direvisi
Tampilan ngepot 85 sebelum direvisi

Setelah jadi, tibalah saatnya mengetest Nge-pot 85 dan menentukan ambang batas bawah dan atas untuk menentukan pemicuan relay dan mematikannya. Untuk menentukannya, saya dibantu oleh multimeter digital. Kebetulan saya mendesain nge-Pot 85 untuk memiliki header pengukuran. Berikut urutan pin pengukuran:

Pin 1. Pengukuran tegangan sensor Soil Moisture
Pin 2. Pengukuran ambang batas bawah
Pin 3. Pengukuran ambang batas atas
Pin 4. Ground

Hasil pengukuran sensor Soil Moisture yang tertancap di tanah pot memberikan pembacaan antara 0.5 s/d 0.6 Volt. Kemudian saya mulai menentukan ambang batas bawah dan atas dengan memutar-mutar 2 potensiometer di sebelah kiri chip ATtiny 85. Ternyata sulit sekali menentukan ambang batas dengan potensiometer karena rentang tegangan dari potensio berkisar 0 s/d 5 Volt. Ternyata saya melupakan 1 hal, yaitu bahwa sensor memberikan feedback ke nge-Pot dalam bentuk tegangan 0 s/d 1.1 Volt. Jadi tegangan ambang seharusnya memiliki rentang penentuan segitu. Sebelumnya saya tidak memperhitungkan hal ini.

Penentuan nilai ambang setelah board direvisi jadi lebih mudah
Penentuan nilai ambang setelah board direvisi jadi lebih mudah

Jadi saya pun merevisi board nge-Pot 85 dengan menambahkan 2 resistor yang berfungsi sebagai pembagi tegangan. Hasil berhitung seharusnya menggunakan resistor 39K ohm. Tapi saya tidak punya resistor nilai segitu. Jadi saya pakai saja yang nilainya mendekati, yaitu 22K Ohm. Dengan resistor 22K Ohm bisa merevisi pembacaan tegangan referensi menjadi kurang lebih 1.2 Volt. Cukup mendekati angka 1.1 Volt. Dan penentuan nilai referensi bawah dan atas pun bisa dilakukan dengan mudah.

Tampilan nge-Pot 85 setelah direvisi
Tampilan nge-Pot 85 setelah direvisi

Kebetulan saya pakai sensor Soil Moisture dari DFRobot yang terdokumentasi dengan baik di sini. Dari situ saya mendapatkan angka:

0 ~300 : dry soil
300~700 : humid soil
700~950 : in water

Ini adalah angka pembacaan untuk Arduino. Jika kita ingin menyalakan pompa pada nilai ambang bawah 300, maka kita harus mengkonversinya terlebih dahulu ke tegangan untuk kemudian mengeset potensiometer penentu ambang batas bawah. Caranya dengan menggunakan formula ini:

Vsensor = ADC * (1100mV/1023)

Vsensor = 300 * 1.075 = 322.5mV atau 0.3225 Volt

Angka 1100mV itu tegangan output maksimal dari Soil Moisture Sensor (CMIIW). Kalau di DFRobot dituliskan output-nya 0~4.2V tapi saya menyangsikan hal ini. Karena dari pembacaan sensor tidak pernah menyentuh angka lebih dari 1.1 Volt. Mungkin nanti sore saya akan teliti lebih lanjut tentang tegangan output sensor ini dengan mencelupkannya ke air. Untuk sementara ini saya mengambil nilai umum output sensor yang biasanya di angka 1.1 Volt.

Tampilan nge-Pot 85 disandingkan dengan pot yg dirawatnya
Tampilan nge-Pot 85 disandingkan dengan pot yg dirawatnya

Saya menentukan nilai ambang bawah di tegangan 0.3 Volt sedangkan ambang atas di 0.4 Volt. Untuk mensimulasikan nge-Pot 85, saya menancapkan sensor dan kemudian mencabutnya. Saat mencabut setengah nge-Pot menganggap tanah kekeringan dan kemudian memicu relay. Saya menancapkan sensor kembali perlahan-lahan. Saat tertancap dengan baik, relay dimatikan. Pada saat itu sensor telah membaca nilai sensor di atas ambang atas sehingga relay dimatikan.

Pada program Nge-Pot 85 ini saya tidak menambahkan proteksi pompa seperti yang saya lakukan di Prototype Garduino ala Dewo versi 1. Mungkin nanti akan saya oprek lagi untuk menambahkan proteksi ini.

Untuk cara pembuatan Nge-Pot 85 akan saya tuliskan dalam postingan terpisah.

Terima Kasih Atmel

Baru saja tadi pagi menulis tentang penerimaan 4 paket dan menuliskan kalau saya menunggu paket sample dari Atmel, ternyata sehabis makan siang paket dari Atmel datang. Horeee…

Paket sample dari Atmel
Paket sample dari Atmel

Ini adalah paket sample ke-2 dari Atmel untuk saya. Seperti biasa, saya mintanya tidak tanggung-tanggung, yaitu 4 seri microcontroller masing-masing 10 biji. Ke-4 seri tersebut adalah:

  1. ATTINY2313A-PU
  2. ATTINY4313-PU
  3. ATMEGA328P-PU
  4. ATMEGA32-16PU

Dan wow, yang termahal adalah ATMEGA32-16PU yang punya 40 pin. Sungguh betapa baiknya Atmel karena telah memberikan sample untuk keperluan research kecil-kecilan saya ini. Bahkan tidak ada syarat dan ketentuan (term & condition) rumit kecuali hanya tulisan: “SAMPLE, NOT FOR COMMERCIAL SALE”. Baik hati kan? Terima kasih Atmel.