Isi kandungan:

Jam Perduaan Betul Dengan Penyegerakan NTP: 4 Langkah
Jam Perduaan Betul Dengan Penyegerakan NTP: 4 Langkah

Video: Jam Perduaan Betul Dengan Penyegerakan NTP: 4 Langkah

Video: Jam Perduaan Betul Dengan Penyegerakan NTP: 4 Langkah
Video: ASAS SAINS KOMPUTER TINGKATAN 1 : PENUKARAN NOMBOR PERPULUHAN KEPADA NOMBOR PERDUAAN 2024, Julai
Anonim
Jam Perduaan Sebenar Dengan Penyegerakan NTP
Jam Perduaan Sebenar Dengan Penyegerakan NTP
Jam Perduaan Betul Dengan Penyegerakan NTP
Jam Perduaan Betul Dengan Penyegerakan NTP

Jam binari yang betul memaparkan waktu dalam sehari sebagai jumlah pecahan binari sepanjang hari, berbanding dengan "jam binari" tradisional yang memaparkan waktu sebagai digit perpuluhan yang dikodkan binari sepadan dengan jam / minit / saat. "Jam binari" tradisional benar-benar menggunakan binary-encoded-decimal-encoded-sexagesimal. Kekacauan! Jam binari yang benar mempermudahkan perkara.

Dalam jam binari yang benar, digit pertama memberitahu anda adalah setengah hari, digit kedua adalah seperempat hari, digit ketiga adalah kelapan hari, dan lain-lain. Ia dapat dibaca ke resolusi apa pun dengan cepat (dengan latihan tentu saja). Digit pertama dengan berkesan mengekod AM berbanding PM, digit kedua mengekod sama ada AM awal / PM atau AM / PM lewat, dan seterusnya.

Dalam merancang jam binari sebenar saya, saya menggunakan dua belas digit resolusi, sehingga hari dibahagikan kepada 2 ^ 12 = 4096 bahagian (setiap kenaikan kira-kira 20 saat). Daripada menyimpan semua digit dalam satu baris, 12 digit dipisahkan menjadi 3 baris 4 digit. Walaupun digit binari sebenarnya tidak berubah, ini membolehkan jam dibaca sebagai 3 digit hex yang dikodkan binari, baris pertama menunjukkan 16 hari dalam sehari (1.5 jam), baris kedua menunjukkan 256 hari (~ 5 minit), dan baris ketiga menunjukkan 4096 hari dalam sehari (~ 20 saat).

Jam disegerakkan ke NTP (Network Time Protocol) menggunakan ESP8266. ESP8266 dikonfigurasi sehingga, pada permulaan, menekan butang pada jam akan menghantarnya ke mod tetapan. Dalam mod pengaturan, jam akan membuat jaringan WiFi yang melayani halaman web yang dapat digunakan untuk memasukkan pengaturan wifi, pelayan NTP, dan zona waktu anda sendiri. Maklumat ini disimpan di EEPROM ESP8266 dan dibaca ketika jam dimulakan dalam mod jam sehingga dapat menyambung ke internet dan mengambil masa.

Bekalan:

  • NodeMCU ESP8266
  • Jalur LED WS2812B
  • Tekan butang
  • 470 perintang Ohm
  • Perintang 10m Ohm
  • Kapasitor 470 uF
  • Tongkat papops
  • Guli
  • Kayu (atau kepingan bahan lain) untuk beg itu

Langkah 1: Litar

Litar
Litar
Litar
Litar
Litar
Litar
Litar
Litar

Untuk mempunyai paparan, projek ini menggunakan jalur LED RGB yang diletakkan dalam 3 baris. Saya memotong 3 helai 8 led dari jalur led WS2812B dan menyoldernya bersama-sama. (Mereka rapuh dan menyolder bantalan kecil boleh menjadi sukar. Saya membalut hujung pemateri dengan pita elektrik untuk melindungi mereka dari sebarang lenturan.) Walaupun saya hanya memerlukan 4 led setiap baris, saya memotong jalur 8 sehingga saya boleh mempunyai jarak yang lebih besar antara lampu dengan hanya menggunakan setiap lampu yang lain. Jalur ini kemudian dilekatkan pada pangkal rata yang terbuat dari tongkat es loli. Di antara setiap baris, satu lapisan tongkat popsicle memberikan profil sehingga wajah depan dapat tersekat di bahagian dalam casing jam (lihat foto).

Jalur yang dipimpin dikuasakan dari VU dan GND NodeMCU. VU berkuasa hampir (hampir) langsung dari USB, jadi ia menyediakan 5V ke LED WS2812B walaupun ESP8266 berfungsi pada 3.3V. Saya meletakkan kapasitor 470 uF di seluruh kuasa untuk jalur WS2812B untuk melindungi led. Data untuk jalur dipimpin disambungkan ke pin D3 NodeMCU melalui perintang 470 Ohm. Rujuk arahan ini untuk mendapatkan maklumat lebih lanjut mengenai cara mengawal led WS2812B dengan ESP8266. Litar itu disolder ke papan proto dengan beberapa tajuk lelaki-ke-wanita untuk NodeMCU.

Tombol tekan juga dipasang pada D6 dari NodeMCU. Tombol tekan ini dapat ditekan ketika jam mulai mengirimnya ke mod tetapan (di mana tetapan wifi, pelayan NTP, dan pilihan zon waktu dapat diubah). Pada satu hujung tombol tekan disambungkan ke D6 dan juga ke GND melalui perintang Ohm 10K dan di hujung yang lain disambungkan ke kuasa. Apabila butang tidak ditekan, D6 berbunyi rendah; apabila ditekan, D6 membaca tinggi.

Langkah 2: Perisian

Perisian
Perisian

Perisian untuk ESP8266 ditulis menggunakan kod Arduino. LED dikendalikan menggunakan perpustakaan FastLED dan penyegerakan NTP dilakukan oleh perpustakaan Pelanggan NTP. Masa disegerakkan oleh NTP setiap jam.

Pada permulaan fungsi penyediaan, program memeriksa untuk melihat apakah butang yang disambungkan ke D6 ditekan. Jika ya, ESP8266 membuat rangkaian wifi (SSID dan kata laluan boleh diubah dalam kod, SSID lalai adalah "TrueBinary" dan kata laluan adalah "thepoweroftwo"). Sambungkan ke rangkaian ini dari mana-mana peranti dan pergi ke 192.168.1.1. ESP8266 akan menyediakan laman web dengan borang di mana anda boleh memasukkan SSID dan kata laluan wifi anda, pelayan NTP pilihan, dan pengimbangan zon waktu dari UTC. Setelah borang-borang ini dihantar ke ESP8266, ia akan menyimpan maklumat tersebut ke penyimpanan EEPROM dalamannya.

Sekiranya butang tidak ditekan, jam akan mulai normal, membaca tetapan dari EEPROM, menyambung ke wifi untuk menggunakan NTP, dan mulai menunjukkan waktunya.

CATATAN: fungsi setDisplay (indeks int) mengambil nombor digit dari 0-11 di mana 0 adalah digit pertama (setengah hari) dan 11 adalah yang terakhir (1/4096 sehari) dan menghidupkan LED yang sesuai menggunakan susunan leds. Fungsi ini harus diisi sesuai dengan cara Anda mengkonfigurasi tampilan. Contoh komen saya sesuai dengan bagaimana saya menyolder baris dengan cara zig-zag daripada hujung ke hujung dan melewatkan setiap LED lain.

Langkah 3: Perumahan

Perumahan
Perumahan
Perumahan
Perumahan
Perumahan
Perumahan

Untuk menempatkan jam, saya menggunakan sudut kayu dicat yang kebetulan saya miliki. Pada satu bahagian luar, saya menggerudi 12 lubang di grid yang sesuai dengan kedudukan LED. Saya kemudian memasang LED ke bahagian dalam sudut dengan menempelkan permukaan batang popsicle yang terangkat di antara baris ke kayu (seperti yang ditunjukkan). Untuk menyebarkan cahaya dari LED, saya melekatkan guli kaca di atas lubang. Saya berjaya melakukannya dengan mencelupkan separuh bahagian bawah setiap guli dalam resin epoksi dan kemudian meletakkannya di dalam lubang. NodeMCU dan papan proto dimasukkan ke muka sudut yang lain. Sisi ditutup dengan segitiga kecil kayu, dilekatkan dengan gam kayu. Salah satu sisi mempunyai lubang untuk port USB mikro NodeMCU dan potongan di sudut untuk menekan butang.

Langkah 4: Selesai

Selesai!
Selesai!
Selesai!
Selesai!

Jam binari sebenar kami sudah selesai! Untuk menyiapkannya, terus tekan butang sambil memasangnya untuk memasukkannya ke mod tetapan dan kemudian masukkan kelayakan WiFi di halaman webnya. Setelah disiapkan, jam boleh dipasang di mana sahaja dan secara automatik akan menyambung ke internet dan mula memaparkan waktu dalam binari.

Memerlukan waktu untuk membaca waktu dalam format binari yang sebenarnya, tetapi ini adalah latihan yang menyeronokkan dan setelah beberapa saat ia menjadi cara cepat untuk mendapatkan masa dengan sekejap sahaja!

Disyorkan: