Isi kandungan:

Jam Penggera Binari Arduino DIY: 14 Langkah (dengan Gambar)
Jam Penggera Binari Arduino DIY: 14 Langkah (dengan Gambar)

Video: Jam Penggera Binari Arduino DIY: 14 Langkah (dengan Gambar)

Video: Jam Penggera Binari Arduino DIY: 14 Langkah (dengan Gambar)
Video: Arduino NANO Propeller LED Analog Clock 2024, Julai
Anonim
Jam Penggera Binari Arduino DIY
Jam Penggera Binari Arduino DIY
Jam Penggera Binari Arduino DIY
Jam Penggera Binari Arduino DIY
Jam Penggera Binari Arduino DIY
Jam Penggera Binari Arduino DIY

Ini jam binari klasik lagi! Tetapi kali ini dengan lebih banyak fungsi tambahan! Dalam arahan ini, saya akan menunjukkan kepada anda cara membina jam penggera binari dengan Arduino yang dapat menunjukkan kepada anda bukan sahaja waktu, tetapi tarikh, bulan, bahkan dengan fungsi pemasa dan penggera yang juga dapat digunakan sebagai lampu tempat tidur! Tanpa berlengah lagi mari kita mulakan!

Catatan: Projek ini tidak menggunakan modul RTC, jadi ketepatan bergantung pada papan yang anda gunakan. Saya telah memasukkan mekanisme pembetulan yang akan membetulkan pergeseran waktu dalam jangka masa tertentu tetapi anda perlu bereksperimen untuk mencari nilai yang betul untuk jangka masa (Lebih lanjut mengenai ini di bawah), dan walaupun dengan mekanisme pembetulan, ia masih akan melayang. dalam jangka masa yang panjang (jika dibandingkan tanpa satu). Sekiranya ada yang berminat, sila gunakan modul RTC dalam projek ini

Bekalan

LED 5mm (dalam warna apa pun, saya menggunakan 13 LED putih dengan satu LED RGB sebagai penunjuk) --- 14 pcs

Arduino Nano (yang lain mungkin berfungsi) --- 1 pc

Suis mikro --- 1 pc

Sekeping kecil aluminium foil

Papan pemasangan (untuk kandang, tetapi jangan ragu untuk merancang sendiri)

Sekeping kertas putih (atau warna lain)

Sebilangan filem plastik (yang digunakan sebagai sampul buku)

Sekumpulan wayar

Buzzer --- 1pc

Transistor NPN --- 1pc

Perintang 6k8 --- 14 pcs, 500R --- 1 pc, 20R (10Rx2) --- 1 pc, 4k7 --- 1pc

Bekalan kuasa untuk projek (saya menggunakan bateri li-on)

Jalur LED 5050 dan suis slaid (pilihan)

Langkah 1: Sambungkan Litar

Sambungkan Litar!
Sambungkan Litar!

Saya akan membahagikan langkah ini kepada:

1) Bahagian buzzer

2) Panel LED

3) Suis (butang tekan)

4) Jalur LED

5) Sensor kapasitansi

6) Bekalan kuasa

7) Sambungkan semuanya ke Arduino

Selalunya, ini hanyalah langkah "ikuti skema". Oleh itu, lihat skema di atas atau muat turun dan cetak!

Langkah 2: Menyiapkan Bahagian Buzzer

Menyiapkan Bahagian Buzzer
Menyiapkan Bahagian Buzzer
Menyiapkan Bahagian Buzzer
Menyiapkan Bahagian Buzzer
Menyiapkan Bahagian Buzzer
Menyiapkan Bahagian Buzzer

Sekiranya anda pernah menggunakan bel dengan Arduino sebelumnya, anda akan tahu bahawa jika kami menghubungkannya terus ke Arduino, ia tidak akan cukup kuat. Oleh itu, kita memerlukan penguat. Untuk membina penguat, kita memerlukan transistor NPN (pada asasnya NPN akan berfungsi, saya menggunakan S9013 kerana saya mendapatkannya dari projek lama), dan beberapa perintang untuk mengehadkan arus. Untuk memulakan, kenal pasti pengumpul, pemancar dan pangkalan transistor terlebih dahulu. Sebilangan kecil data lembar data akan berfungsi untuk ini. Kemudian, pasangkan pemungut transistor ke terminal buzzer negatif. Di terminal positif buzzer, kami hanya memasangkan sepotong wayar kepadanya sehingga kami dapat menyoldernya ke Arduino kami kemudian. Selepas ini, pateri perintang 500R (atau nilai perintang yang serupa) ke pangkal transistor dan dari perintang, pateri sekeping wayar lain untuk kegunaan masa depan. Akhirnya, pateri dua perintang 10R secara bersiri ke pemancar transistor dan sambungkan wayar lain dari perintang.

Sungguh, rujuk skema.

p / s: Saya masih tidak tahu bagaimana memilih perintang untuk transistor pada masa menulis ini. Nilai yang saya gunakan dipilih secara empirikal.

Langkah 3: Menyiapkan Panel LED

Menyiapkan Panel LED
Menyiapkan Panel LED
Menyiapkan Panel LED
Menyiapkan Panel LED
Menyiapkan Panel LED
Menyiapkan Panel LED

Pasang LED dan perintang ke papan prototaip dengan betul dan pateri. Itu sahaja. Ikut skema. Sekiranya anda berminat dengan jarak yang saya gunakan, jarak 3 lubang untuk setiap lajur, dan jarak dua lubang untuk setiap baris (rujuk gambar). Dan LED penunjuk? Saya memasangnya secara rawak.

Setelah menyolder LED dan perintang ke papan, sambungkan semua terminal positif LED bersama-sama. Kemudian, kabel solder satu demi satu ke setiap perintang pada terminal negatif LED supaya kita dapat menyoldernya ke Arduino kemudian.

CATATAN: Anda mungkin keliru dengan langkah ini. Ingat, bukannya menyambungkan semua landasan bersama, kita menghubungkan semua terminal positif bersama-sama dan terminal negatif ke pin individu di Arduino. Oleh itu, kami menggunakan pin Arduino GPIO sebagai ground, bukan Vcc. Sekiranya anda menyambungkannya secara tidak sengaja, jangan risau. Anda boleh mengubah semua HIGH ke RENDAH dan RENDAH ke TINGGI dalam fungsi kawalan led.

Langkah 4: Menyiapkan Suis (Butang tekan Sebenarnya)

Menyiapkan Suis (butang tekan Sebenarnya)
Menyiapkan Suis (butang tekan Sebenarnya)
Menyiapkan Suis (butang tekan Sebenarnya)
Menyiapkan Suis (butang tekan Sebenarnya)
Menyiapkan Suis (butang tekan Sebenarnya)
Menyiapkan Suis (butang tekan Sebenarnya)

Untuk suis (saya akan memanggilnya suis kerana saya menggunakan suis mikro, tetapi anda tahu ia adalah butang tekan), kami memerlukan perintang tarik 4k7 dan tentu saja, suis itu sendiri. Ah, jangan lupa menyiapkan beberapa wayar. Mulakan dengan menyolder perintang dan sekeping wayar ke landasan bersama (COM) suis mikro. Kemudian, pasangkan satu lagi wayar ke suis mikro yang terbuka (TIDAK). Akhirnya, pasangkan wayar lain ke perintang. Lindungi dengan sedikit gam panas.

Sudut pengetahuan: Mengapa kita memerlukan perintang penarik?

"Sekiranya anda memutuskan pin I / O digital dari segala-galanya, LED mungkin berkedip tidak menentu. Ini kerana inputnya" terapung "- iaitu, ia akan mengembalikan secara rawak sama ada TINGGI atau RENDAH. Itulah sebabnya anda memerlukan penarikan atau perintang tarik di litar. " - Sumber: laman web Arduino

Langkah 5: Menyiapkan Jalur LED

Menyiapkan Jalur LED
Menyiapkan Jalur LED
Menyiapkan Jalur LED
Menyiapkan Jalur LED

Jalur LED adalah untuk lampu sisi katil, yang menjadi pilihan. Cukup sambungkan jalur LED dan suis slaid bersama secara bersiri, tidak ada yang istimewa.

Langkah 6: Menyiapkan Sensor Kapasitansi

Menyiapkan Sensor Kapasitansi
Menyiapkan Sensor Kapasitansi
Menyiapkan Sensor Kapasitansi
Menyiapkan Sensor Kapasitansi
Menyiapkan Sensor Kapasitansi
Menyiapkan Sensor Kapasitansi
Menyiapkan Sensor Kapasitansi
Menyiapkan Sensor Kapasitansi

Ok rujuk gambar. Pada asasnya kita hanya akan memasang wayar ke sekeping kecil aluminium foil (kerana aluminium foil tidak dapat disolder) kemudian pita pada sekeping kecil papan pelekap. Peringatan yang baik, pastikan anda tidak merekatkan aluminium foil sepenuhnya. Biarkan sebahagiannya terkena untuk dihubungi.

Langkah 7: Menyiapkan Bekalan Kuasa

Menyiapkan Bekalan Kuasa
Menyiapkan Bekalan Kuasa
Menyiapkan Bekalan Kuasa
Menyiapkan Bekalan Kuasa
Menyiapkan Bekalan Kuasa
Menyiapkan Bekalan Kuasa

Oleh kerana saya menggunakan bateri li-on sebagai bekalan kuasa, saya memerlukan modul TP4056 untuk pengecasan dan perlindungan, dan penukar rangsangan untuk menukar voltan menjadi 9v. Sekiranya anda memutuskan untuk menggunakan penyesuai dinding 9V, maka anda mungkin memerlukan bicu DC, atau sambungkannya secara langsung. Perhatikan bahawa nilai perintang untuk penguat adalah reka bentuk untuk 9V dan jika anda ingin menggunakan voltan lain, anda mungkin perlu menukar perintang.

Langkah 8: Menghubungkannya dengan Arduino

Menghubungkan Mereka dengan Arduino
Menghubungkan Mereka dengan Arduino
Menghubungkan Mereka dengan Arduino
Menghubungkan Mereka dengan Arduino
Menghubungkan Mereka dengan Arduino
Menghubungkan Mereka dengan Arduino

Ikut skema! Ikut skema! Ikut skema!

Jangan sambungkan pin yang salah atau perkara akan menjadi pelik.

Langkah 9: Penutup

Pagar
Pagar
Pagar
Pagar
Pagar
Pagar
Pagar
Pagar

Dimensi reka bentuk saya ialah 6.5cm * 6.5cm * 8cm, jadi sedikit besar. Ia terdiri daripada tingkap depan untuk paparan LED dan tingkap atas untuk lampu sisi tempat tidur. Untuk reka bentuk saya, rujuk gambar.

Langkah 10: Masa Pengaturcaraan

Image
Image
Masa Pengaturcaraan!
Masa Pengaturcaraan!

Muat turun lakaran saya di bawah dan muat naik ke Arduino anda. Sekiranya anda tidak tahu bagaimana melakukan ini, jangan repot-repot melakukan projek ini! Nah hanya bergurau, berikut adalah tutorial yang bagus: Muat naik lakaran ke arduino

Kemudian buka monitor bersiri, dan anda akan melihatnya mengeluarkan masa semasa. Untuk menetapkan masa, berikut adalah cara untuk melakukan ini.

Untuk menetapkan jam: h, XX - di mana xx adalah jam semasa

Untuk menetapkan minit: min, XX - xx adalah minit semasa

Untuk menetapkan kedua: s, XX

Untuk menetapkan tarikh: d, XX

Untuk menetapkan bulan: mon, XX

Apabila komen di atas dilaksanakan, ia akan mengembalikan nilai yang baru anda tetapkan. (Contohnya ketika anda menetapkan jam dengan jam h, 15, jam harus mengembalikan Jam: 15 di monitor bersiri.

Untuk sensor kapasitansi, anda mungkin perlu menentukurkannya sebelum berfungsi. Untuk melakukan ini, tekan suis mikro dua kali, dan lihat monitor bersiri. Ia mesti mengeluarkan sejumlah besar. Sekarang letakkan jari anda pada sensor kapasitansi, dan lihatlah perhatikan bilangannya. Seterusnya, ubah pemboleh ubah "captrigger". Katakan anda mendapat 20-30 ketika ditekan, kemudian tetapkan captrigger ke 20.

Sketsa menggunakan perpustakaan ADCTouch, pastikan anda memasangnya.

Langkah 11: Mekanisme Pembetulan

Tempoh masa untuk mekanisme pembetulan dalam kod saya ditetapkan kepada yang tepat bagi saya. Sekiranya waktunya masih tidak tepat, anda perlu mengubah nilai pemboleh ubah "cordur"

Cordur kini lalai ke 0 dalam kemas kini terkini.

Nilai cordur bermaksud berapa milisaat yang diperlukan untuk melambatkan satu saat

Untuk mengetahui nilai cordur, gunakan formula:

2000 / (y-x) / x)

di mana x = jangka masa sebenar yang berlalu dan y = tempoh masa yang berlalu dari jam, keduanya dalam detik

Untuk mencari nilai x dan y, anda perlu melakukan sedikit eksperimen.

Tetapkan waktu jam ke waktu sebenar dan catat waktu awal (waktu awal sebenar dan waktu awal jam harus sama). Selepas beberapa saat (beberapa jam), catat waktu sebenar akhir dan waktu akhir jam.

x = waktu akhir sebenar-waktu awal dan y = waktu akhir akhir-waktu awal

Kemudian ubah nilai cordur dalam kod dan muat semula ke Arduino.

Kemudian ulangi ujian dan kali ini formula berubah menjadi:

2000 / ((2 / z) + (y-x / x))

Di mana x dan y adalah sama seperti sebelumnya, sementara z adalah nilai cordur semasa.

Muat naik sekali lagi dan lakukan ujian berulang-ulang sehingga cukup tepat untuk anda.

Sekiranya jam anda masih laju bahkan cordur diatur ke 0 (bermaksud tidak ada mekanisme pembetulan), anda perlu menukar ++ ke kedua-- dalam mekanisme pembetulan bahagian kod (saya mengomentarinya), tetapkan cordur ke 0, kemudian cari no. milisaat yang diperlukan untuk mempercepat satu saat.

Langkah 12: Cara Menggunakan Semua Fungsi

Image
Image

Anda boleh menukar mod dengan menekan suis mikro.

Pada mod pertama, ia hanya memaparkan waktu. Sekiranya lampu penunjuk berkelip pada 1 waktu sesaat, penggera dimatikan. Sekiranya 2 kali sesaat, penggera dihidupkan. Anda boleh menunda penggera selama 10 minit dalam mod pertama dengan menekan sensor kapasitans.

Pada mod kedua, ia memaparkan tarikh. Menekan sensor kapasitansi tidak membuat apa-apa.

Pada mod ketiga, anda boleh menetapkan pemasa. Menekan sensor kapasitans akan menghidupkan pemasa dan anda akan melihat lampu penunjuk mula berkelip. Sensor kapasitansi juga digunakan untuk menetapkan waktu pemasa. Julat pemasa adalah 1 minit hingga 59 minit.

Pada mod keempat, anda boleh menetapkan jam penggera menggunakan sensor kapasitansi

Pada mod kelima, anda boleh menetapkan minit penggera menggunakan sensor kapasitansi.

Pada mod keenam, menekan sensor kapasitansi akan menetapkan semula minit ke 30 dan kedua hingga 0 tanpa mengubah jam. Itu bermakna selagi jam anda tidak bergerak lebih dari 30 minit, anda boleh mengkalibrasinya semula menggunakan mod ini.

Mod ketujuh adalah mod buat apa-apa sekiranya sensor kapasitansi tidak berfungsi semasa mengecas.

Oh, untuk menutup penggera, tekan saja suis mikro. (KEMASKINI TERKINI UNTUK TERMASUK ALARM SNOOZE)

Nah, bagaimana dengan membaca jam? Ia mudah! Membaca Jam Binari - Wikihow Anda mungkin berasa pelik pada mulanya, tetapi anda akan terbiasa!

Langkah 13: Kesimpulannya

Kesimpulannya
Kesimpulannya
Kesimpulannya
Kesimpulannya

Mengapa saya memulakan projek ini. Pada mulanya, kerana saya mempunyai jam tangan digital lama yang berbaring dan saya mahu menjadikannya jam penggera. Malangnya jam tangan lama itu rosak. Jadi saya seperti mengapa tidak membinanya menggunakan Arduino? Dengan sedikit carian google, saya dapati projek jam binari ini tanpa RTC diarahkan oleh Cello62. Walau bagaimanapun, ia tidak mempunyai ciri jam penggera yang saya mahukan, jadi saya mengambil kodnya dan mengubahnya sendiri. Dan projek itu lahir. Lebih-lebih lagi, saya melihat pertandingan jam berjalan pada waktu yang boleh diarahkan baru-baru ini yang memberi saya lebih banyak motivasi untuk melakukan ini. Bagaimanapun, ini masih merupakan projek pertama saya menggunakan Arduino, begitu banyak kemungkinan peningkatan.

Penambahbaikan masa depan:

1) Gunakan RTC

2) Tetapkan penggera atau masa atau pemasa tanpa wayar!

3) Apa sahaja ciri yang saya fikirkan

Langkah 14: Kemas kini: Selepas Satu Minggu Penggunaan

Kemas kini: Selepas Satu Minggu Penggunaan
Kemas kini: Selepas Satu Minggu Penggunaan
Kemas kini: Selepas Satu Minggu Penggunaan
Kemas kini: Selepas Satu Minggu Penggunaan
Kemas kini: Selepas Satu Minggu Penggunaan
Kemas kini: Selepas Satu Minggu Penggunaan

Selain daripada masalah yang jelas - masa berlalu, yang seterusnya saya katakan ialah penggunaan kuasa. Pertama sekali, saya menaikkan voltan hingga 9v, yang kemudian akan diturunkan oleh pengatur linier di Arduino. Pengatur linier sangat tidak cekap. Jam hanya berlangsung selama SATU HARI. Itu bermaksud saya mesti mengisinya setiap hari. Itu bukan kesepakatan terbesar sehingga anda menyedari bahawa keseluruhan sistem hanya sekitar 50% cekap. Memandangkan bateri saya adalah 2000mAh, saya dapat mengira kuasa yang terbuang setiap hari.

Kuasa terbazirkan = (7.4Wh * 10%) + (7.4Wh * 90% * 50%) = 4.07Wj sehari

Iaitu 1.486kWh setahun! Itu boleh digunakan untuk merebus, eh, 283 g air (dari 25 C hingga 100 C)? Tetapi bagaimanapun, saya akan meningkatkan kecekapan jam. Cara untuk melakukan ini adalah sama sekali tidak menggunakan pengatur linier. Ini bermakna kita harus menyesuaikan penukar boost ke output 5V terus ke pin 5V pada Arduino. Seterusnya, untuk meminimumkan kuasa yang terbuang lebih jauh, saya harus mengeluarkan kedua-dua LED on board (pin13 dan power), kerana mereka akan membuang 0.95Wh sehari. Malangnya, saya benar-benar hebat pada pematerian SMD jadi satu-satunya cara untuk saya melakukan ini adalah memotong rel di papan. Selepas ini, saya harus mengeluarkan perintang pemancar pada buzzer dan lampu sisi katil (jalur LED tidak berfungsi pada 5V). Tetapi adakah itu bermaksud anda harus melepaskan ciri yang luar biasa itu? Tidak! Anda mempunyai dua pilihan di sini: Gunakan diod LED 5mm biasa, atau gunakan jalur LED 5V. Tetapi bagi saya, saya sudah merasa letih kerana melaksanakan projek ini sepanjang minggu lalu, jadi saya memutuskan untuk melepaskan ciri ini. Walau bagaimanapun, saya menggunakan suis pada asalnya untuk ciri cahaya untuk menghidupkan atau mematikan panel jam untuk menjimatkan lebih banyak tenaga, tetapi akhirnya LED berkelip ketika saya mematikannya. Bug menjadi ciri? Saya tidak tahu (Ada yang tahu sila beritahu saya di bawah).

Pada akhir pengubahsuaian, jam sekarang bertahan lebih dari 2 hari!

Seterusnya saya menghadapi masalah jam yang kurang serius. Semasa mengecas, sensor kapasitansi akan menjadi gila, jadi saya menambah mod lain yang sama sekali tidak berfungsi.

Mengenai masa berlalu, kerana sangat menyusahkan untuk menyambung ke komputer setiap hari untuk menetapkannya semula, saya telah menambah mod lain yang akan menetapkan minit hingga 30 dan kedua hingga 0. Itu bermakna anda boleh menetapkannya semula setengah jam lagi!

Disyorkan: