- Proyek yang mengendalikan jam kuarsa analog murah dengan modul ESP8266 dan sketsa Arduino agar tersinkron ke waktu internet
- Mengambil waktu dari server NTP setiap 15 menit untuk menjaga akurasi, serta menyertakan fitur penyesuaian otomatis daylight saving time
- Koil motor stepper Lavet pada jam dipisahkan agar bisa dikendalikan ESP8266, dan chip EERAM digunakan untuk menyimpan posisi jarum jam, menit, dan detik meski daya terputus
- Saat pengaturan awal, posisi jarum ditentukan melalui antarmuka halaman web yang disediakan ESP8266, lalu status jam divisualisasikan lewat SVG atau HTML Canvas pada halaman status
- Contoh open source yang menunjukkan bagaimana jam sinkronisasi jaringan yang akurat dapat dibuat dengan perangkat keras murah, sekaligus memperlihatkan penerapan praktis teknik kontrol IoT embedded
Gambaran proyek
- ESP8266 WiFi Analog Clock adalah sistem yang menggunakan modul WEMOS D1 Mini ESP8266 dan sketsa Arduino untuk otomatis mengambil dan menampilkan waktu lokal dari server NTP (Network Time Protocol)
- Terhubung ulang ke server NTP setiap 15 menit untuk menjaga akurasi jam
- Menyertakan fitur penyesuaian otomatis daylight saving time (DST)
- Proyek ini berbasis jam kuarsa analog murah dan menggabungkan modifikasi perangkat keras dengan kontrol perangkat lunak
Konfigurasi perangkat keras
- Jam yang digunakan adalah jam kuarsa analog yang dibeli di Walmart seharga $3,88
- Mekanisme kuarsa jam dibuka, lalu koil motor stepper Lavet di dalamnya dipisahkan dari osilator kuarsa, dan kabel disolder ke masing-masing lead untuk koneksi ke ESP8266
- Sebagian besar mekanisme dirakit dengan sistem snap tanpa sekrup
- Kabel koil lebih tipis dari rambut, jadi perlu penanganan yang sangat hati-hati
- Rangkaian akhirnya disusun di atas perfboard bersama IC EERAM dan komponen lainnya
Cara kerja perangkat lunak
- Sketsa AnalogClock.ino membuat ESP8266 membandingkan waktu aktual dengan waktu yang ditampilkan jam sebanyak 10 kali per detik
- Jika jam terlambat, jarum detik dipercepat untuk sinkronisasi
- Jika jam terlalu cepat, sistem menunggu sampai waktu aktual menyusul
- Pergerakan jarum detik dilakukan dengan memberikan pulsa bipolar ke koil motor Lavet
- Sesuai karakteristik motor, konstanta PULSETIME perlu disesuaikan, dan dari percobaan nilai 30ms dianggap cocok
- Jam murah tidak memiliki umpan balik posisi jarum, sehingga informasi posisi hilang saat daya terputus
- Untuk mengatasinya, digunakan Microchip 47L04 Serial EERAM (SRAM 4Kbit + backup EEPROM)
- Posisi jarum jam, menit, dan detik disimpan setiap detik lalu dipulihkan saat daya kembali menyala
Pengaturan awal dan antarmuka web
- Saat sketsa dijalankan pertama kali, ESP8266 menyediakan halaman web sederhana agar pengguna dapat menentukan posisi awal jarum jam
- Setelah itu, ESP8266 mengingat posisi jarum menggunakan data yang disimpan di EERAM
- Saat beroperasi, tersedia halaman status (status page) dengan tiga mode tampilan berikut
- Grafik dial jam berbasis SVG
- Tampilan dial jam berbasis HTML Canvas
- Tampilan status teks saja
Lisensi dan informasi teknis
- Proyek ini dirilis dengan lisensi MIT
- Komposisi bahasa utama: C++ 64.1% , C 35.9%
- Repositori GitHub memiliki 252 star dan 2 fork
- Tag topik terkait: arduino, esp8266, clock, analog-clock, ntp, hardware-construction
Makna
- Contoh praktis mengubah jam murah menjadi jam pintar sinkronisasi Wi-Fi
- Contoh implementasi kontrol waktu presisi dan antarmuka berbasis web dengan ESP8266 dan lingkungan Arduino
- Referensi open source untuk mempelajari modifikasi perangkat keras IoT dan teknik sinkronisasi firmware
1 komentar
Komentar Hacker News
Bagian yang paling menarik adalah chip "SRAM with EEPROM backup"
Chip ini memungkinkan posisi jarum jam disimpan secara permanen setiap kali digerakkan, tanpa menghabiskan umur tulis seperti EEPROM biasa
Harganya juga di bawah 1 dolar, jadi komponen ini berguna untuk hobi atau proyek skala kecil
SRAM dan EEPROM berada dalam satu paket bersama kontroler, dengan kapasitor kecil (4.7µF) di dekatnya
SRAM menyimpan data selama daya tetap ada, sedangkan EEPROM menyimpan data secara permanen meski daya mati, tetapi punya batas jumlah penulisan
Saat kontroler mendeteksi tegangan mulai turun, isi SRAM langsung di-dump ke EEPROM
Kapasitor menyuplai daya pada momen itu agar data bisa ditulis ke EEPROM
Saat daya kembali, data dari EEPROM disalin lagi ke SRAM
Kekurangannya, kapasitasnya kecil, hanya 4 kilobit, tetapi jika masalah seperti ini bisa diselesaikan dengan 1 dolar, itu sudah sangat layak
Terutama jika log debug disimpan sebagai ring buffer, itu berguna untuk menyimpan crash log sistem embedded meski tidak terhubung ke PC pengembangan
Tautan produk
Namun di tempat tinggalku sekarang, sinyalnya terlalu lemah sehingga pengaturan manual sangat merepotkan
Karena itu aku membuat sendiri kode Arduino yang memakai ESP32 dan server NTP untuk mengemulasi sinyal jam atom dari seluruh dunia
Mempelajari sejarah dan perbedaan sinyal siaran jam atom di berbagai negara juga cukup menarik
Kecerahan proyeksi merahnya pas untuk malam hari, tetapi tidak ada sinkronisasi Wi-Fi, jadi waktunya tidak bisa disetel lewat NTP atau GPS
Bagian proyektornya terhubung ke unit utama lewat kabel pita, jadi akan seru kalau di-reverse engineer
Idealnya, akan bagus jika matriks LED di langit-langit bisa menampilkan informasi selain waktu
Produk seperti itu memang ada, tetapi sangat mahal seperti buyfrixos.com
Tautan proyek buatanku
Aku juga memakai beberapa jam dinding murah seperti ini, dan penyimpangan waktunya hampir tidak ada
Menurutku bahkan jitter-nya bisa lebih kecil daripada NTP
Tidak pernah perlu menyetel waktu sama sekali, dan tetap cocok dengan jam NTP dalam selisih kurang dari 1 detik
Hanya saja, jam oven atau microwave rasanya ingin kumatikan saja
Dalam sebulan bisa maju sekitar 1 menit, jadi akan bagus kalau ada sinkronisasi Wi-Fi
Produk zaman sekarang makin tertutup, jadi aku rindu membuat sendiri benda-benda sederhana yang mudah diutak-atik
Kalau suatu hari lepas dari pekerjaan utama, aku ingin membuat sendiri peralatan rumah tangga yang sederhana, andal, dan ramah hacker
Proyek seperti ini benar-benar mengagumkan
Aku membelinya untuk putriku, tetapi bunyi tik-tok yang tidak teratur mengganggu saat belajar, jadi sekarang sedang tidak dipakai
Meski begitu, pengalamannya cukup menyenangkan
Hanya saja, kalau ada banyak jam di rumah, kita harus memutuskan untuk mengikuti yang satu itu saja agar efektif
Pengenalan Gents Turret Movement
Aku pernah memakainya untuk membuat jam elektromekanis berbasis tuning fork
Alih-alih sumber waktu presisi, jam itu digerakkan dengan tuning fork dan logika 74xx
Aku heran kenapa Accutron masih tidak membuat jam seperti ini
Pendekatan yang memakai frekuensi resonansi ini mirip dengan jam kuarsa tetapi lebih menarik secara visual
Kalau tidak, lonjakan bisa menyebabkan malfungsi atau bahkan merusak mikrokontroler
Idealnya, tegangan gate dipisahkan dengan optotransistor, dan catu daya motor disuplai terpisah
Ada juga proyek GitHub
Masih banyak dek lama atau kontroler LANC yang tersisa, jadi nilainya untuk dimanfaatkan cukup besar
Walaupun jam mengetahui waktu yang benar, jika kecepatan gerak aktualnya sedikit meleset terus-menerus, kesalahan kumulatif bisa membesar
Terutama jika konstanta PULSETIME salah disetel hanya 1 ms, selisihnya bisa terlihat dalam sehari
Memang, stepper motor Lavet secara teori menjaga langkah berbasis frekuensi osilasi yang konsisten, tetapi keausan atau noise bisa menimbulkan bias
Namun untuk tingkat jam dinding, mungkin penyimpangan itu bisa diabaikan
Penjelasan di Wikipedia membantu untuk memahaminya
Selama tidak ada langkah yang terlewat, tidak akan ada kesalahan kumulatif
Jadi, cukup menjaga hitungan langkah tetap akurat