Daftar Isi:

Jam Biner Sejati Dengan Sinkronisasi NTP: 4 Langkah
Jam Biner Sejati Dengan Sinkronisasi NTP: 4 Langkah

Video: Jam Biner Sejati Dengan Sinkronisasi NTP: 4 Langkah

Video: Jam Biner Sejati Dengan Sinkronisasi NTP: 4 Langkah
Video: BTT Octopus V1.1 - TFT Firmware Upgrade 2024, Juli
Anonim
Jam Biner Sejati Dengan Sinkronisasi NTP
Jam Biner Sejati Dengan Sinkronisasi NTP
Jam Biner Sejati Dengan Sinkronisasi NTP
Jam Biner Sejati Dengan Sinkronisasi NTP

Jam biner sejati menampilkan waktu dalam sehari sebagai jumlah pecahan biner sehari penuh, berbeda dengan "jam biner" tradisional yang menampilkan waktu sebagai digit desimal berkode biner yang sesuai dengan jam/menit/detik. "Jam biner" tradisional benar-benar menggunakan biner-encoded-desimal-encoded-sexagesimal. Berantakan sekali! Jam biner sejati sangat menyederhanakan banyak hal.

Dalam jam biner sejati, digit pertama memberi tahu Anda adalah setengah hari, digit kedua adalah seperempat hari, digit ketiga adalah seperdelapan hari, dll. Dapat dibaca dengan resolusi apa pun dengan sangat cepat (tentu saja dengan latihan). Digit pertama secara efektif mengkodekan AM versus PM, digit kedua mengkodekan apakah itu AM/PM awal atau AM/PM terlambat, dan seterusnya.

Dalam merancang jam biner saya yang sebenarnya, saya menggunakan dua belas digit resolusi, sehingga hari dibagi menjadi 2^12=4096 bagian (setiap kenaikan kira-kira 20 detik). Alih-alih menyimpan semua digit dalam satu baris, 12 digit dipisahkan menjadi 3 baris 4 digit. Meskipun digit biner sebenarnya tidak berubah, ini memungkinkan jam untuk dibaca sebagai 3 digit heksadesimal yang dikodekan biner, baris pertama menunjukkan 16 hari (1,5 jam), baris kedua menunjukkan 256 hari (~ 5 menit), dan baris ketiga menunjukkan 4096 per hari (~ 20 detik).

Jam disinkronkan ke NTP (Network Time Protocol) menggunakan ESP8266. ESP8266 dikonfigurasi sehingga, saat startup, menekan tombol pada jam akan mengirimnya ke mode pengaturan. Dalam mode pengaturan, jam akan membuat jaringan WiFi yang menyajikan halaman web yang dapat digunakan untuk memasukkan pengaturan wifi Anda sendiri, server NTP, dan zona waktu. Informasi ini disimpan dalam EEPROM dari ESP8266 dan dibaca ketika jam dimulai dalam mode jam sehingga dapat terhubung ke internet dan mengambil waktu.

Perlengkapan:

  • NodeMCU ESP8266
  • Strip LED WS2812B
  • Tekan tombol
  • 470 Ohm resistor
  • Resistor 10K Ohm
  • 470 uF kapasitor
  • stik es krim
  • Kelereng
  • Kayu (atau lembaran bahan lainnya) untuk kasing

Langkah 1: Sirkuit

sirkuit
sirkuit
sirkuit
sirkuit
sirkuit
sirkuit
sirkuit
sirkuit

Untuk memiliki tampilan, proyek ini menggunakan strip led RGB yang diletakkan dalam 3 baris. Saya memotong 3 strip 8 led dari strip led WS2812B dan menyoldernya bersama-sama. (Mereka rapuh dan menyolder bantalan kecil bisa sulit. Saya membungkus ujung yang disolder dengan pita listrik untuk melindunginya dari pembengkokan apa pun.) Meskipun saya hanya membutuhkan 4 led per baris, saya memotong strip 8 sehingga saya bisa memiliki jarak yang lebih besar antara lampu dengan hanya menggunakan setiap led lainnya. Potongan-potongan ini kemudian ditempelkan pada alas datar yang terbuat dari stik es krim. Di antara setiap baris, lapisan ganda stik es krim menyediakan profil sehingga bagian depan dapat menempel di bagian dalam kotak jam (lihat foto).

Strip yang dipimpin ditenagai dari VU dan GND dari NodeMCU. VU adalah daya yang datang (hampir) langsung dari USB, sehingga memberikan 5V ke LED WS2812B meskipun ESP8266 bekerja pada 3.3V. Saya menempatkan kapasitor 470 uF di seluruh daya untuk strip WS2812B untuk melindungi led. Data untuk strip led terhubung ke pin D3 dari NodeMCU melalui resistor 470 Ohm. Lihat instruksi ini untuk info lebih lanjut tentang cara mengontrol led WS2812B dengan ESP8266. Sirkuit disolder ke proto-board dengan beberapa header male-to-female untuk NodeMCU.

Sebuah tombol juga dilampirkan ke D6 dari NodeMCU. Tombol tekan ini dapat ditekan saat jam dimulai untuk mengirimnya ke mode pengaturan (di mana pengaturan wifi, server NTP, dan preferensi zona waktu dapat dimodifikasi). Di satu ujung tombol tekan terhubung ke D6 dan juga ke GND melalui resistor 10K Ohm dan di ujung lainnya terhubung ke daya. Saat tombol tidak ditekan, D6 membaca rendah; saat ditekan, D6 berbunyi tinggi.

Langkah 2: Perangkat Lunak

Perangkat lunak
Perangkat lunak

Perangkat lunak untuk ESP8266 ditulis menggunakan kode Arduino. LED ditangani menggunakan pustaka FastLED dan sinkronisasi NTP dilakukan oleh pustaka NTPClient. Waktu disinkronkan oleh NTP setiap jam.

Pada awal fungsi pengaturan, program akan memeriksa apakah tombol yang terhubung ke D6 telah ditekan. Jika ya, ESP8266 membuat jaringan wifi (SSID dan kata sandi dapat diubah dalam kode, SSID default adalah "TrueBinary" dan kata sandi adalah "thepoweroftwo"). Sambungkan ke jaringan ini dari perangkat apa pun dan navigasikan ke 192.168.1.1. ESP8266 akan menyajikan halaman web dengan formulir tempat Anda dapat memasukkan SSID dan kata sandi wifi Anda, server NTP pilihan, dan offset zona waktu dari UTC. Setelah formulir ini dikirimkan ke ESP8266, itu akan menyimpan info ke penyimpanan EEPROM internalnya.

Jika tombol tidak ditekan, jam akan berjalan normal, membaca pengaturan dari EEPROM, terhubung ke wifi untuk menggunakan NTP, dan mulai menampilkan waktu.

CATATAN: fungsi setDisplay(int index) mengambil nomor digit dari 0-11 di mana 0 adalah digit pertama (setengah hari) dan 11 adalah yang terakhir (1/4096 hari) dan menyalakan LED yang sesuai menggunakan " led" array. Fungsi ini harus diisi sesuai dengan cara Anda mengonfigurasi tampilan. Contoh komentar saya sesuai dengan bagaimana saya menyolder baris dengan cara zig-zag daripada ujung ke ujung dan melewatkan setiap LED lainnya.

Langkah 3: Perumahan

Perumahan
Perumahan
Perumahan
Perumahan
Perumahan
Perumahan

Untuk menempatkan jam, saya menggunakan sudut kayu dicat yang kebetulan saya miliki. Di satu permukaan luar, saya mengebor 12 lubang di kotak yang sesuai dengan posisi LED. Saya kemudian menempelkan LED ke bagian dalam sudut dengan menempelkan permukaan stik es krim yang terangkat di antara baris ke kayu (seperti yang ditunjukkan). Untuk menyebarkan cahaya dari LED, saya menempelkan kelereng kaca di atas lubang. Saya menyelesaikan ini dengan mencelupkan bagian bawah setiap marmer ke dalam resin epoksi dan kemudian menempatkannya di dalam lubang. NodeMCU dan papan proto disekrupkan ke bagian dalam lain dari sudut. Sisi-sisinya ditutup menggunakan kayu segitiga kecil, direkatkan dengan lem kayu. Salah satu sisi memiliki lubang untuk port micro USB NodeMCU dan potongan di sudut untuk tombol tekan.

Langkah 4: Selesai

Selesai!
Selesai!
Selesai!
Selesai!

Jam biner kita yang sebenarnya sudah selesai! Untuk mengaturnya, terus tekan tombol saat mencolokkannya untuk memasukkannya ke mode pengaturan dan kemudian masukkan kredensial WiFi di halaman webnya. Setelah diatur, jam dapat dicolokkan di mana saja dan secara otomatis akan terhubung ke internet dan mulai menampilkan waktu dalam biner.

Dibutuhkan tempat latihan untuk membaca waktu dalam format biner yang sebenarnya, tetapi ini adalah latihan yang menyenangkan dan setelah beberapa saat itu menjadi cara cepat untuk mendapatkan waktu hanya dengan sekilas!

Direkomendasikan: