Description

Sebuah jam tangan dengan sistem bilangan biner untuk menyampaikan informasi kepada penggunanya. Emang ga efektif sih wkwk.

Latest Version: 2.1

Project Status: ACTIVE

Difficulty

  • Intermediate (< version 2.0)
  • Advanced (> version 2.1)

Creation Date: February 4, 2017

Last Update: January 18, 2018

Logs

Version 1.0  Version 1.1 Version 1.2

Maaf banget yaa ketika versi ini dibuat kurang lebih setahun yang lalu emang belum ada niatan buat mendokumentasikan prosesnya jadi cuman sedikit yang gw ingat dan hanya ini yang bisa diingat

Version 1.0

  • Awal rilis banyak bug
  • Jam ga bisa disetting dan harus diprogram
  • Sering reset
  • Daya tahan baterai 1 minggu
  • Belum terdapat port ISP dalam PCBnya jadi IC harus bener bener dicopot untuk di program
  • Mengguanakan CTC (Clear Timer on Compare) yang pada akhirnya penggunaan delay() harus dihindari karena tidak boleh kehilangan satu atau lebih interrupt flag yang meyebabkan pergeseran waktu sebesar 1 detik setiap flagnya
  • Format jam 1-12 dan menit 1-12 (akurasi 5 menit)
  • Yang penting tujuan utama sudah tersampaikan yaitu bisa nampilin jam dengan dua buah lampu biner 0 dan 1 kwkw

Version 1.1

Niatnya ganti rangkaian, pakai double layer tapi kenyataannya malah semakin sulit untuk memasang IC ke PCB dikarenakan tempat yang terbatas dan penempatan via yang kurang cocok. Sebagai catatan “jangan pernah menempatkan via dibawah IC” dan langsung skip ke 1.2 🙂

Version 1.2

  • Merupakan paling stabil (free run berbulan-bulan).
  • Semi OOP
  • Menggunakan fungsi millis daripada CTC dengan tantangan yang sama yaitu penggunaan delay() tetap dilarang
  • IC tertanam.
  • Port ICSP secara langsung dari PCB.
  • Jam udah bisa disetting secara langsung melalui hardware tanpa perlu di program ulang.
  • Jam masih sering reset.
  • Daya tahan baterai -+ 2 minggu.
  • Konsumsi Arus saat stanby 6mA dan 20mA saat digunakan
  • Pergeseran waktu 5 menit/hari
  • Akurasi Waktu +- 5 menit (dengan kompensasi 5 menit/hari)
  • Tanpa kalibrasi internal clock

 

Version 2.0 [A Hope 👊]

Sebenernya gw udah sangat puas dengan versi 1.2, gw sendiri ngerti masih banyak bug yang harus dibenahi. Meskipun banyak bug tapi gw berusaha untuk membatasi kalau project ini udah cukup sampai di situ saja. Disisi lain gw juga yakin kalau sebenarnya jam biner ini bisa jadi lebih advance. Suatu hari secara ga sengaja nemuin crystal quartz 37kHz di salah satu toko online meskipun crystal dengan frekuensi ini banyak dipasaran tapi ukuranya itu lho masih cukup besar. Ga ngerti tipenya (ga kelihatan tulisannya -_-) tapi yang jelas kecil banget dan sesuai dengan apa yang gw cari selama ini ketika masih nyangkut di 1.2. Dan untungnya jam yang 1.2 itu hilang ntah pas pulang dari jogja atau pas dikampus wkwk. Yaudah sekalian aja bikin perubahan mayor dengan kolaborasi IC 1307 dan crystal 37khz yay! Dan pikiran pikiran brutal tentang keberlanjutan jam ini pun dimulai bwahahahaha

Day 1

Hari pertama aja udah bingung wkwk (ngga lah) jadi masalahnya adalah bagaimana cara memasang ic 1307 agar bisa masuk ke rangkaian PCB karena udah jelas ATTiny85 hanya memiliki total 8 port, 2 untuk power, 1 untuk reset dan hanya tersisa 5 untuk input output. Dan sisa dari 5 tersebut udah gw bikin 2 untuk input (tombol kanan dan kiri) dan 2 output (LED kanan dan kiri) yang menyisakan 1 port I/O. Padahal untuk berkomunikasi dengan IC 1307 diperlukan dua port yaitu SCL dan SDA karena menggunakan protocol I2C.

Day 2 sampai berapa lupa hehe…

Masalahnya tetep sama, sampai barang udah datang dan gw belum nemu solusinya -_-. Sebenarnya banyak hal yang bisa dilakukan hanya saja gw mencoba mencari cara yang lebih efektif dikarenakan ada rencana lain untuk kedepannya hehe

Day 3 (Setelah Stuck 😩)

Akhirnya ketemu juga uyy. Jadi gini, sebenernya MK sejenis ATTiny itu ga punya hardware I2C jadi pin SDA dan SCL dilakukan secara software, hal ini memungkinkan untuk memanipulasi port SCL dan SDA sebagai input maupun output, jadi strateginya adalah menggabungkan port I2C dengan port input. Daannn impactnya adalah pemrograman menjadi lebih hmm… sulit karena penggunaan port harus benar benar diperhatikan dan ga boleh terdapat miskom yang memungkinkan IC menjadi reset. Dan kesalahan fatalnya adalah sangat mungkin IC 1307 mengganti state dari pin menjadi high atau low diluar program yang ditulis, jika ini terjadi ketika mode ISP maka ATTiny mungkin sekali untuk ng-brick karena perubahan lock fuse dan udah kejadian beberapa kali -_- Dan untungnya rencana ini berjalan (sedikit agak ngga) mulus dan BERHASIL WAW!!! MANTAP QOLBU

Masalah lain yang sempat gw hadapin adalah waktu satu detik yang diberikan dari IC 1307 itu ga sesuai dengan 1 detik di dunia nyata, selisih 2 detik!!!. Dan setelah browsing sana sini masalahnya ada pada jalur rangkaian, emang dalam ranah high speed signal processing panjang track sangat berpengaruh terhadap sinyal. Alhasil crystal di solder langsung dengan kali xtal1 dan xtal 2 dari 1307 untuk menghindari adanya noise atau cacat sinyal. Selain itu penggunaan pullup pada jalur I2C juga memberikan transmisi data menjadi stabil. Selain itu Polling udah dihilangkan dan delay udah diperbolehkan karena udah ada si cakep 1307. Waktu jadi lebih akurat bahkan sama dengan jam yang kalian pakai huehuehue

Kesimpulan yang gw dapet dari hari ini, Memang internal clock dari ATTiny ga sestabil yang diinginkan, tetapi ada cara yang bisa dilakukan yaitu dengan kalibrasi internal clock menggunakan register CLKCALL. Karena kondisi lingkungan kalibrasi pabrik tentunya tidak sama dengan kondisi lingkungan sekarang ini. Kalian bisa cek datasheet untuk mengetahui konsidi ruang pabrik ketika dilakukan kalibrasi.

Day 4

Hanya mengubah stuktur program yang dulunya cupu bet jadi full OOP, emang sebelumnya udah paham dengan OOP, cuman OOP yang di C++ emang beda -_-

Day 5

Bikin PCB, etching, solder dan

ITS WORKS!

Konsumsi arus jadi 4mA dikarenakan polling yang udah dihilangkan. Hmm tapi ketika versi ini selesai daya tahan baterai kurang dari 1 hari, entah apa penyebabnya belum diketahui 🙂

Selain itu juga ada fitur buat biar tambah keren aja yaitu lampu bisa dimainin entah itu buat kedip cepet, blink, SOS, yaa buat asik-asikan aja apa lagi pas gelap gelap, tapi siap siap aja batre cepet habis wkwkw

Yap gw tutup versi 2.0 karena tujuan udah tercapai

  • Kalibrasi internal clock
  • DS1307 terintegrasi secara mantap qolbu
  • Konsumsi arus jadi lebih rendah
  • Akurasi waktu jadi setara dengan jam pada umumnya
  • Code udah OOP
  • Lampu bisa dimainin wkwk

Version 2.1

Tujuan dari versi ini sederhana yaitu mengatasi masalah daya tahan barterai. Sebelumnya sempat gw test lagi dan ternyata daya tahan batrenya masih sama dengan versi 1.2 yaitu sekitar 1 minggu cuman bedanya waktu yang ditunjukkan dari versi 2.0 lebih akurat dan dari sini gw menemukan pergeseran waktu sebesar 1-2 menit disetiap minggunnya (emang datasheet jug menyatakan itu) tetapi itu bisa diatasi dengan kompesasi waktu

Day 1

Jadi Strateginya adalah dengan memanfaatkan fitur mode sleep dari avr. Emang impact dari mode ini adalah code harus selesai dieksekusi dalam sekali loop. Jika ada yang lolos maka secara langsung masuk ke mode sleep dan ga bisa hidup lagi (wiw serem) tapi bisa dihidupkan lagi kok dengan mereset avr hehe. Oleh karena itu flow dari program harus benar-benar terarah agar ga masuk mode sleep secara diam diam. Dan hmm fitur ini emang parah konsumsi arus turun dari 4mA menjadi 0.02mA dan WAAAW!! Tahan berapa lama ini jam biner wkwkwk.

Oh iya ketika menginjak ke versi ini fitur untuk setting jam secara langsung melalui hardware dihilangkan. Jadi untuk mensettingnya, jam harus dihubungkan ke laptop melalui perantara Arduino atau lainnya gampang kok (niatnya kepengen bikin alat untuk kalibrasi waktu secara otomatis sih, tapi entar aja ya) dan secara otomatis waktu di jam sama dengan waktu di laptop hingga milisecondnya sama wkwkw mampus lu…

Dulunya cuman buat iseng nampilin jam dalam sistem bilangan biner dan sekarang menginjak 2.1 udah sama semperti jam beneran dan struktur code jadi lebih kompleks (banget malah) dan spesifikasi jadi lebih dari apa yang pernah gw kira. Padahal juga proyek ini juga sepele dan ga ada banget manfaatnya wkwk malah kelihatan useless, tapi sungguh gw belajar banyak dari proyek ini 🙂

Day 2

Eh ternyata cuman selesai dalam sehari wkwk.

Version 2.2

Revisi lebih lanjut akan gw tambahin di sini. Statusnya masih aktif dikembangkan yaaa

 

Resources

Buat kalian yang penasaran tentang source code/program jam biner ini bisa kalian cek ke github

https://github.com/triqadafi/Binary_Watch

Jangan lupa sertakan link ke github atau halaman ini jika kalian tertarik untuk mengembangkan project ini lebih lanjut

 

References

Yang ingin belajar lebih lanjut bisa coba kunjungi link berikut

  • a
  • b
  • c