Tentang proyek ini
Inilah yang membuat saya masuk ke Arduino. Saya menemukan Jam Kata LED Nick, dan berpikir saya ingin membuatnya.
Sejak mengunduh kodenya, saya telah memodifikasinya untuk menyertakan sensor dan tombol tambahan serta menambahkan ESP01.
BH1750 digunakan untuk meredupkan layar secara otomatis, tergantung pada kondisi cahaya, dan dapat mematikan layar di malam hari. BME280 menunjukkan suhu, kelembaban dan tekanan. ESP01 digunakan untuk mendapatkan waktu dari pool.ntp.org.
Tombol tambahan ada untuk memudahkan penyesuaian pengaturan. Anda dapat menyesuaikan setelan sensor cahaya menggunakan tombol, serta mengubah font dan setelan NTP/DST/UTC.
Enam font baru telah ditambahkan, saya membuat font menggunakan:http://dotmatrixtool.com/.
Saya telah membuat sedikit perubahan pada jam kata, sekarang memiliki lebih banyak kata dan telah pindah sedikit ke PROGMEM untuk menghemat RAM.
Halaman proyek Nick:https://123led.wordpress.com/mini-led-clock/
Kode saya:https://github.com/Ratti3/miniclock
Kodenya sekarang sudah lengkap, terlepas dari bug yang tidak diketahui dan tweak di sana-sini, saya akan membuat kasus untuk itu.
Anda perlu menyesuaikan kode sensor cahaya agar sesuai dengan kondisi cahaya Anda, saya mengkodekannya saat sinar matahari cerah berada di samping jendela.
Sebuah ESP01 digunakan untuk mendapatkan waktu melalui NTP, ESP01 dikodekan untuk tidur (wifi mati) saat tidak diperlukan, dan dibangunkan melalui serial untuk mendapatkan waktu dalam format UNIX. Nama SSID dan kata sandi diteruskan melalui kode Arduino untuk kemudahan.
Versi ini juga memiliki perhitungan DST/UTC dan BST. Pengaturan ini dapat disesuaikan atau dinonaktifkan melalui menu.
Pengaturan disimpan ke EEPROM, ini berarti jika Anda mematikan dan menghidupkan kembali perubahan yang dilakukan melalui menu akan disimpan.
Ini adalah file kode di Github:
Kode di Github [https://github.com/Ratti3/miniclock]:Arduino LEDClock32x8.ino ProgmemData.hArduino ESP-01_NTP.ino LEDClock32x8_ESP01-NTP.ino ProgmemData.h
Saat ESP01 sedang berjalan, Serial Arduino akan menampilkan ini:
Arduino :Mengirim permintaan NTP ke ESP01ESP01 :Permintaan NTP diterima dari Arduino[usaha 1 dari 3]Menghubungkan ke SSID:TheInternets....connectedSSID:TheInternets, Alamat IP:192.168.0.135Kekuatan Sinyal (RSSI):-42 dBmMengirim paket NTP ke:195.195.221.100 [percobaan 1]Mengirim paket NTP ke:195.195.221.100 [percobaan 2]UNIX1562848457Menonaktifkan WiFi....ok
Lebih banyak gambar dan instruksi akan datang...
Menyatukan semuanya:
Pengkabelan:
DS3231, BH1750 dan BME280:PIN SCL =A5 PIN SDA =A4 VCC =3.3vLED Matriks:CLK =D11 CS =D10 DIN =D12 VCC =5vSwitch:D2 - Menu D3 - Tanggal / + D4 - Temp / - D5 - Opsi tampilanESP01 - Opsional D7 - Pin TX dari ESP01 D6 - Pin RX dari ESP01
Ini adalah variabel global yang dapat Anda ubah:
// Variabel global (default yang dapat diubah), angka dalam kurung [] adalah lokasi penyimpanan EEPROM untuk nilai tersebut// Pengaturan jam// [200] Intensitas/kecerahan default (0-15), dapat diatur melalui intensitas menubyte =2;// [201] Mode jam default. Default =0 (basic_mode)byte clock_mode =0; // [206] Tentukan mode acak - mengubah jenis tampilan setiap beberapa jam. Default =0 (mati)bool random_mode =0; // [207] Tentukan mode acak font - mengubah font setiap beberapa jam. 1 =font acak onbool random_font_mode =0; // [208] Tentukan waktu 12 atau 24 jam. 0 =24 jam. 1 =12 jam air amp =0; // Pengaturan cahaya// [202] Mode hidup/mati tampilan default, digunakan oleh sensor cahaya. 0 =normal, 1 =selalu aktif, 2 - selalu nonaktif, 3 - 5 =ditentukan oleh hour_off_1,2,3byte display_mode =5; // [209] Pengaturan intensitas cahaya otomatis defaultbool auto_intensity =1; // Ketiganya menentukan sensor cahaya jam yang dapat mematikan tampilan jika cukup gelap, formatnya adalah 24 jam, rutin untuk // ini memeriksa antara 8.00 dan salah satu dari nilai-nilai ini byte hour_off_1 =21; byte jam_off_2 =22; byte hour_off_3 =23;// Pengaturan font - ini diatur melalui menu pengaturan Font, lihat rutin set_font_case() untuk semua nilai default:// [203] Jam default font besar stylebyte font_style =2; // [204] Jam default besar font offset adjustmentbyte font_offset =1; // [205] Jam default, kolom font besar, adjustmentbyte font_cols =6; // Pengaturan DST NTP dan UTC// [210] Mengaktifkan fungsi DST, 1 =mengaktifkan, 0 =menonaktifkanbool dst_mode =1; // [211] Aktifkan fungsi NTP, 1 =aktifkan, 0 =nonaktifkanbool ntp_mode =1; // Jumlah detik untuk menyesuaikan nilai NTP sebelum menerapkan ke DS3231, membutuhkan beberapa ratus milidetik untuk memproses byte data ESP01 ntp_adjust =1; // [213] penyesuaian offset UTC, hoursint8_t utc_offset =0; // Waktu sinkronisasi NTP/DST harian terjadi, harus dibiarkan pada jam 2 pagi jika menggunakan modebyte DST ntp_dst_hour =2; // Jumlah waktu untuk mencoba kembali permintaan NTP 1 =35 detik (ish) secara total, nilai 1 - 9byte ntp_max_retry =3; // Digunakan untuk menghitung kapan harus keluar dari ntp() saat tidak menerima data, nilai dalam detik, dikalikan dengan ntp_max_retrybyte ntp_timeout =45; // Konstanta global - SSID dan kata sandi untuk WiFi, diteruskan ke ESP01 melalui SoftwareSerial// Gabungan SSID dan panjang kata sandi tidak boleh melebihi 72 karakter// Panjang nama SSID Anda, misalnya SSID =MyWifi, ssid_len =6const byte ssid_len =8; // Nama SSID Anda, misalnya MyWificonst char ssid[] ="YourSSID"; // Panjang kata sandi SSID Anda, misalnya kata sandi =kata sandi, pass_len =8const byte pass_len =12; // Kata sandi SSID Anda, misalnya passwordconst char pass[] ="YourPassword";
Kode
Github Ratti3
https://github.com/Ratti3/miniclock Skema
Tidak ada BH1750, terhubung dengan cara yang sama seperti BME280