Iklan

Manusia secara alami diprogram untuk bangun dengan matahari terbit; sayangnya kehidupan modern didikte oleh jam yang sewenang-wenang, seringkali memaksa kita untuk bangun ketika tidak ada cahaya alami. Hari ini, kami akan membuat jam alarm matahari terbit, yang akan dengan lembut dan perlahan membangunkan Anda tanpa menggunakan mesin pembuat kebisingan ofensif.

Jika membuat jam alarm matahari terbit sedikit terlalu banyak untuk Anda, periksa iPhone ini dan Aplikasi Android Gunakan Aplikasi Ini untuk Membantu Anda Tidur Lebih Baik [Android & iOS]Setelah hari yang sibuk, hal terbaik yang dapat Anda lakukan adalah mendapatkan jumlah tidur yang bermanfaat. Selalu ada studi baru yang membuktikan betapa pentingnya tidur bagi seseorang, meningkatkan ... Baca lebih banyak yang mendeteksi saat terbaik untuk membangunkan Anda dengan gerakan tubuh Dapatkah Aplikasi Benar-Benar Membantu Anda Tidur Lebih Baik?Saya selalu menjadi semacam eksperimen tidur, karena sepanjang hidup saya menyimpan buku harian mimpi yang cermat dan belajar sebanyak mungkin tentang tidur dalam proses itu. Ada sebuah...

instagram viewer
Baca lebih banyak , memastikan Anda tidak menjauh dari mimpi yang luar biasa itu tetapi sebaliknya, bangun dengan perasaan cerah dan segar - itu benar-benar berhasil.

Garis besar proyek

Bagian utama dari proyek ini adalah sekitar 5 meter strip lampu LED diletakkan di sekitar tempat tidur. Kami akan memberinya daya dengan suplai eksternal 12 volt, diaktifkan menggunakan beberapa transistor MOSFET N. Pengaturan untuk bagian ini akan identik dengan sistem pencahayaan yang dinamis Bangun Pencahayaan Ambient Dinamis Anda Sendiri Untuk Pusat MediaJika Anda menonton banyak film di PC atau pusat media, saya yakin Anda telah menghadapi dilema pencahayaan; apakah Anda benar-benar mematikan semua lampu? Apakah Anda menyimpannya dalam ledakan penuh? Atau... Baca lebih banyak Saya membangun sebelumnya.

Pengaturan waktu akan menjadi masalah - karena ini adalah prototipe, saya akan mengatur Arduino untuk menghitung mundur dari setiap kali diatur ulang. Secara teori, kita seharusnya hanya kehilangan satu atau dua detik setiap hari, tetapi idealnya kita akan memasukkan chip "real time clock" untuk melakukan ini dengan lebih andal. Alarm matahari terbit akan mulai 30 menit sebelum waktu bangun, dan perlahan-lahan meningkatkan level output hingga mencapai 100% kecerahan - ini seharusnya cukup untuk membangunkan kami, meskipun itu adalah ide yang baik untuk tetap menggunakan jam alarm reguler Anda sampai tubuh Anda terbiasa Itu.

Saya juga akan memasukkan cahaya malam ke dalam proyek ini, yang mendeteksi pergerakan dan mengaktifkan level rendah yang tersembunyi cahaya di bawah tempat tidur dengan waktu 3 menit, terpisah dengan lampu LED karena itu akan menyebabkan saya dan istri saya terbangun naik. Pencahayaan di bawah tempat tidur akan menjadi unit listrik komersial, jadi saya akan meretas relay di dalam soket steker untuk menghidupkan dan mematikannya. Jika Anda merasa tidak nyaman bekerja dengan daya listrik AC 110-240v dalam kondisi apa pun (dan itu umumnya aturan yang baik untuk dimiliki), kemudian pasang pemancar nirkabel 433 MHz dengan soket pengganti, seperti yang dijelaskan pada Proyek otomasi rumah Raspberry Pi Arduino Panduan Otomatisasi Rumah Dengan Raspberry Pi dan ArduinoPasar otomatisasi rumah dibanjiri dengan sistem konsumen yang mahal, tidak kompatibel satu sama lain dan mahal untuk dipasang. Jika Anda memiliki Raspberry Pi dan Arduino, Anda pada dasarnya dapat mencapai hal yang sama di ... Baca lebih banyak .

Daftar Bagian dan Skema

  • Arduino
  • Set lampu strip LED RGB
  • Catu daya 12 volt
  • 3 x transistor MOSFET N (saya menggunakan tipe STP16NF06FP)
  • Relay dan soket daya, atau soket yang dikendalikan nirkabel dan pemancar yang sesuai
  • Lampu malam pilihan Anda (listrik biasa dengan plug baik-baik saja)
  • Sensor gerakan PIR (HC-SR501), atau sonar SC-04 (tidak seefektif)
  • Sensor cahaya
  • Kode proyek - tetapi baca terus untuk memastikan Anda memahami cara menyesuaikan semuanya.

Inilah skema lengkapnya.

sirkuit matahari terbit-alarm

Memasang Relay

Catatan: Lewati bagian ini jika Anda juga ingin menggunakan lampu RGB sebagai lampu malam - ini khusus untuk menyalakan lampu bertenaga listrik terpisah.

Untuk mengalihkan daya listrik, relai Anda perlu diberi nilai untuk tegangan - 110V atau 240V AC tergantung di mana Anda tinggal - dan lebih dari total arus listrik Anda akan beralih. Yang saya gunakan dari paket sensor ini (penafian: itu toko saya) adalah 250VAC / 10A, jadi kita harus aman. Relay memiliki a com port, biasanya di tengah, yang harus terhubung ke kabel langsung yang masuk ke steker; kemudian hubungkan terminal live socket ke terminal TIDAK (biasanya terbuka). Saya tidak harus mengatakan kepada Anda untuk tidak melakukan ini karena itu dicolokkan ke outlet, atau Anda akan mati. Jika Anda takut mengotak-atik daya listrik, gunakan soket sakelar nirkabel sebagai gantinya.

relay-kabel

Kabel pentanahan dan netral harus langsung menuju ke soket dan tidak akan menyentuh relai. Anda mungkin tidak memiliki garis pembumian di AS. Merupakan tanggung jawab Anda untuk mengetahui kode warna kabel di area lokal Anda - jika Anda tidak bisa memasang soket biasa di rumah Anda atau memasang ulang steker, jangan coba menyematkan relay ke dalamnya!

Untuk mengujinya, pasang pin sinyal relai ke 12, kemudian jalankan program kedip sederhana yang dimodifikasi untuk bekerja pada pin 12, bukan 13 seperti default. Soket Anda harus hidup dan mati setiap beberapa detik. Alasan mengapa saya tidak menggunakan pin 13 adalah karena selama proses pengunggahan, LED onboard menyala secara berurutan untuk menunjukkan aktivitas serial, yang akan menyebabkan relai juga aktif.

Melakukan Pengaturan Waktu dengan Benar

Fungsi pengaturan waktu dan jam sulit tanpa akses ke koneksi jaringan atau khusus Jam Waktu Nyata (Ini termasuk baterai mereka sendiri untuk menjaga jam berjalan bahkan ketika Arduino utama tidak memiliki daya). Untuk menjaga biaya tetap rendah, saya akan berbuat curang. Saya akan membuat hardcoding waktu mulai untuk Arduino untuk memulai hitungan mundurnya; Oleh karena itu pengaturan waktu akan relatif terhadap waktu mulai ini. Setiap 24 jam, jam akan diatur ulang. Kode fungsi jam di bawah memastikan variabel global currentMillis dan menit saat ini benar setiap hari. Arduino tidak boleh kehilangan lebih dari beberapa detik setiap 45 hari; namun, gaya pengaturan waktu yang sulit ini sangat terbatas karena pemadaman listrik atau pengaturan ulang yang tidak disengaja akan menghancurkan segalanya, jadi ini tentu saja merupakan salah satu area yang dapat diperbaiki. Jika pengaturan waktu tidak sinkron, cukup atur ulang Arduino pada waktu mulai yang Anda tentukan.

Kode harus mudah dimengerti.

membatalkan jam () {if (millis ()> = beforeMillis + 86400000) {// sehari penuh telah berlalu, setel ulang jam; sebelumnyaMillis + = 86400000; } currentMillis = millis () - previousMillis; // ini membuat currentMillis kita tetap sama setiap hari currentMinutes = (currentMillis / 1000) / 60; }

Fungsi Lampu Malam

Saya sudah memisahkan loop utama menjadi fungsi yang berbeda sehingga lebih mudah untuk membaca dan menghapus atau menyesuaikan. Itu cahaya malam() fungsi hanya beroperasi antara jam ketika Arduino diatur ulang (saya berasumsi Anda mungkin akan melakukan ini pada atau sekitar waktu tidur, ketika gelap), dan sampai alarm matahari terbit akan dimulai. Saya awalnya mencoba menggunakan resistor yang tergantung pada cahaya, tetapi mereka tidak terlalu peka terhadap cahaya biru (yang kebetulan merupakan warna yang saya gunakan untuk cahaya malam), dan sulit dikalibrasi dengan benar. Lagi pula, menggunakan jam lebih masuk akal. Kami akan menggunakan global menit saat ini variabel, yang akan direset setiap hari.

Sensor PIR bisa menjadi sedikit aneh jika Anda belum pernah menggunakannya sebelumnya, meskipun menghubungkannya tidak sulit - Anda akan menemukan VCC, GND, dan DI LUAR diberi label dengan jelas di bagian belakang. Ada dua variabel resistor kamu juga; yang berlabel RX menentukan rentang (hingga sekitar 7 m), dan TX berlabel lainnya menentukan penundaan. Penundaan 5 detik pada pengaturan terendahnya (sepenuhnya berlawanan arah jarum jam), dan berarti setiap gerakan sesaat akan memicu setidaknya 5 detik status "aktif" dari sensor. Namun, ini juga menentukan penundaan antara status aktif - jadi jika 5 detik berlalu dan tidak ada gerakan terdeteksi, sensor akan mengirimkan sinyal rendah selama minimal 5 detik bahkan jika ada gerakan selama itu Titik. Jika Anda memiliki waktu tunda yang sangat tinggi sekitar 30 detik, sepertinya sensornya rusak.

sensor pir

Jika Anda tidur sendirian dan tidak keberatan menggunakan lampu strip RGB yang sama untuk alarm matahari terbit dan lampu malam, Anda harus dapat menyesuaikan kode dengan cukup mudah.

void nightlight () {// Hanya bekerja di antara jam reset -> sunrise. if (currentMinutes 

Alarm Matahari Terbit

Untuk kesederhanaan, saya akan menggunakan nilai warna RGB 255.255,0 untuk matahari terbit kuning pekat - dengan cara ini kenaikan pada kedua saluran warna akan sama. Jika Anda merasa itu membangunkan Anda terlalu dini, pertimbangkan mulai dengan warna merah tua dan pudar menuju kuning atau putih. Jalur naik yang saya gunakan hanya linier - Anda mungkin ingin menyelidiki menggunakan kurva yang lebih alami untuk nilai kecerahan.

Fungsinya sederhana - menghitung berapa banyak cahaya harus bertambah setiap detik sehingga penuh kecerahan setelah 30 menit; kemudian mengalikannya hingga detik saat ini saat matahari terbit. Jika sudah dalam kecerahan penuh, tetap selama 10 menit untuk memastikan Anda bangun (dan jika Anda masih belum bangun, Anda mungkin harus memasang alarm cadangan).

void sunrisealarm () {// setiap detik selama periode 30 menit harus meningkatkan nilai warna dengan: float increment = (float) 255 / (30 * 60); // red 255, green 255 memberi kita kecerahan penuh kuning jika (currentMinutes> = minutesUntilSunrise) {// sunrise dimulai! float currentVal = (float) ((currentMillis / 1000) - (menitUntilSunrise * 60)) * kenaikan; Serial.print ("Nilai saat ini untuk matahari terbit:"); Serial.println (currentVal); // selama ramp up, tulis nilai saat ini dari kenaikan kecerahan X menit jika (currentVal <255) {analogWrite (RED, currentVal); analogWrite (GREEN, currentVal); } lain jika (currentMinutes - menitUntilSunrise <40) {// begitu kita dalam kecerahan penuh, nyalakan lampu selama 10 menit lebih lama analogWrite (RED, 255); analogWrite (GREEN, 255); } else {// setelah itu, kita nuking mereka kembali ke state analogWrite (RED, 0); analogWrite (GREEN, 0); } } }

Perangkap dan Peningkatan Masa Depan

Saya telah menggunakan ini selama beberapa minggu terakhir sekarang dan itu benar-benar membantu untuk bangun dengan perasaan lebih segar dan pada waktu yang baik; lampu malam juga bekerja dengan sangat baik. Ini tidak sempurna, jadi di sini ada beberapa hal yang membutuhkan pekerjaan dan pelajaran selama konstruksi.

matahari terbit-alarm

Saat membuat proyek ini, saya menghadapi banyak masalah berurusan dengan angka besar, jadi jika Anda berencana memodifikasi kode, harap ingat ini. Dalam bahasa C, the mengetik variabel Anda sangat penting - Angka tidak selalu hanya angka. Misalnya, lama tidak ditandatangani variabel harus digunakan untuk menyimpan angka super besar seperti yang kita hadapi ketika berbicara tentang milidetik, tetapi bahkan jumlah sekecil 60.000 tidak dapat disimpan sebagai integer biasa (int yang tidak ditandatangani akan dapat diterima hingga 68.000). Intinya adalah, baca tentang tipe variabel Anda saat menggunakan angka besar, dan jika Anda menemukan bug aneh, itu mungkin karena salah satu variabel Anda tidak memiliki bit yang cukup!

Saya juga menemukan masalah dengan kebocoran tegangan kecerahan sangat rendah - yang mengarah ke jumlah terkecil cahaya yang dipancarkan bahkan ketika digitalWrite (RED, 0) sinyal dipancarkan - Saya tidak berpikir itu masalah perangkat keras dengan strip karena mereka bekerja dengan baik dengan pengontrol resmi. Jika ada yang bisa menyelesaikan masalah ini, gambar di bawah, saya akan sangat berterima kasih. Saya sudah mencoba menarik resistor, dan membatasi tegangan output dari pin Arduino. Saya mungkin perlu menambahkan rangkaian switching daya sederhana untuk hanya memasok tegangan ke strip LED ketika benar-benar diperlukan; atau bisa juga MOSFET yang salah.

kebocoran cahaya

Untuk pekerjaan di masa mendatang, saya berharap dapat menambahkan penerima IR dan menduplikasi beberapa fitur dari kontroler asli - di Setidaknya kemampuan untuk mengubah warna sebagai cahaya penggunaan umum, seperti sekarang proyek ini mengubah strip menjadi malam khusus cahaya. Saya bahkan dapat menambahkan fungsi batas waktu 30 menit otomatis.

Sudahkah Anda mencoba ini, melakukan perbaikan, atau punya ide lain? Beri tahu saya di komentar!

James memiliki gelar BSc dalam Artificial Intelligence, dan bersertifikat CompTIA A + dan Network +. Dia adalah pengembang utama MakeUseOf, dan menghabiskan waktu luangnya bermain VR paintball dan boardgames. Dia telah membangun PC sejak dia masih kecil.