Daftar Isi:

Arduino Pengatur Waktu Senja/fajar: 15 Langkah
Arduino Pengatur Waktu Senja/fajar: 15 Langkah

Video: Arduino Pengatur Waktu Senja/fajar: 15 Langkah

Video: Arduino Pengatur Waktu Senja/fajar: 15 Langkah
Video: Jadwal Waktu Sholat (JWS) Otomatis Menggunakan RTC Berbasis Arduino Uno 2024, Juli
Anonim
Arduino Pengatur Waktu Senja/fajar
Arduino Pengatur Waktu Senja/fajar

Ringkasan:

Timer berbasis Arduino ini dapat mengganti satu lampu 220V saat senja, fajar atau waktu yang ditentukan.

Pengantar:

Beberapa lampu di rumah saya secara otomatis menyala saat senja, hingga waktu yang telah ditentukan sebelumnya atau hingga fajar (sepanjang malam).

Lokasi lampu tidak memungkinkan penggunaan sensor cahaya. Pengatur waktu jam reguler yang tersedia menyala pada waktu tertentu. Oleh karena itu, untuk menyalakan sekitar senja, diperlukan penyesuaian pengaturan program timer secara teratur.

Sebagai tantangan yang bagus, saya memutuskan untuk membuat timer stand alone berbasis Arduino sebagai gantinya. Ini menggunakan jam waktu nyata dan perpustakaan Dusk2Dawn untuk menentukan waktu di mana lampu harus dinyalakan atau dimatikan. Enklosur untuk pengatur waktu ini dicetak 3D dan dapat ditemukan di Thingiverse. Kode Arduino untuk proyek ini dapat ditemukan di GitHub.

Dalam pembuatan timer ini saya mendapat inspirasi dari banyak desain dan sirkuit di internet. Terima kasih saya untuk semua kontributor yang tidak disebutkan secara eksplisit.

Untuk keterbacaan diagram parsial ditampilkan dalam langkah-langkah di mana diperlukan, bukan diagram sirkuit lengkap.

Solusi alternatif:

Alih-alih timer yang berdiri sendiri, ada banyak solusi di mana sistem otomasi rumah pintar mengarahkan lampu. Tujuan saya adalah memiliki solusi independen, yang tidak bergantung pada konektivitas WIFI (atau lainnya).

Pembatasan:

Kode yang diberikan dengan proyek ini termasuk implementasi perubahan waktu musim panas berdasarkan sistem penghematan waktu siang hari Eropa.

Langkah 1: Daftar Bagian dan Alat

Daftar Suku Cadang dan Alat
Daftar Suku Cadang dan Alat

Bagian:

Total biaya suku cadang (tidak termasuk cetak 3d) sekitar €30, -.

  • Arduino Nano V3 (kompatibel) tanpa header
  • Catu daya 5V 0,6A (34 x 20 x 15mm)
  • Relai solid-state 5V - Aktif rendah - 2A 230VAC
  • Jam waktu nyata DS3231 (kecil)
  • Layar OLED 0.96” SPI 128*64 piksel
  • Enkoder putar - EC11 - 20mm
  • Knob 6mm poros 15mm * 17mm
  • Papan sirkuit tercetak papan tempat memotong roti,
  • 4 * sekrup M3x25mm
  • kandang cetak 3d
  • Tabung panas-menyusut
  • kabel
  • Blok terminal sekrup (untuk menghubungkan kabel netral)

Alat yang dibutuhkan:

  • Solder Besi
  • Kawat Solder
  • Pompa pematrian
  • Penari telanjang kawat
  • Pemotong
  • Printer 3D (untuk mencetak enklosur)
  • Aneka Alat Kecil

PERINGATAN

Sirkuit ini bekerja pada 230v AC dan jika Anda tidak terbiasa bekerja dengan tegangan listrik atau tidak memiliki pengalaman yang cukup dalam bekerja dengan Tegangan Listrik 230v AC, silakan menjauh dari proyek ini

Saya tidak bertanggung jawab atas kehilangan atau kerusakan yang timbul langsung dari atau sebagai akibat dari mengikuti proyek ini

Selalu disarankan untuk berhati-hati dan berhati-hati saat bekerja dengan Sumber Listrik AC

Langkah 2: Siapkan Tampilan OLED dan Jam Waktu Nyata

Siapkan Tampilan OLED dan Jam Waktu Nyata
Siapkan Tampilan OLED dan Jam Waktu Nyata

Enklosur cetak 3D dirancang untuk ukuran minimal. Akibatnya, tajuk tampilan OLED dan jam waktu nyata perlu dihapus.

Sebagai persiapan untuk langkah berikutnya, bersihkan sisa solder dari lubang dengan pompa pematrian.

Langkah 3: Siapkan Rotary Encoder

Siapkan Rotary Encoder
Siapkan Rotary Encoder

Rotary encoder memiliki konektor yang tipis. Untuk mencegah kerusakan, pasang sepotong papan sirkuit tercetak ke enkoder.

Pada gambar sambungan ground (ke kanan atas dan tengah bawah) sudah disiapkan juga.

Catatan: Pastikan rotary encoder dengan papan sirkuit tercetak pas dengan enklosur tanpa menyentuh Arduino. Mungkin diperlukan untuk menggiling papan sirkuit tercetak agar pas.

Langkah 4: Kandang

Lampiran
Lampiran
Lampiran
Lampiran

Cetak tiga bagian enklosur dengan printer 3d. Lihat petunjuk di Thingiverse.

Langkah 5: Nonaktifkan Arduino Power LED (opsional)

Nonaktifkan LED Daya Arduino (opsional)
Nonaktifkan LED Daya Arduino (opsional)

Untuk mencegah lampu hijau menyala di timer, LED daya Arduino dapat dinonaktifkan.

Perhatikan bahwa modifikasi ini opsional.

Modifikasi Arduino Nano terdiri dari melepas resistor di sebelah led daya (lihat lingkaran merah pada gambar).

Langkah 6: Catu Daya + Relai Keadaan Padat

Catu Daya + Relai Keadaan Padat
Catu Daya + Relai Keadaan Padat

Pada langkah ini catu daya dan relai solid-state digabungkan dan dipasang di bagian bawah enklosur.

Sambungan antara catu daya dan relai dibuat di bagian bawah komponen ini. Blok terminal sekrup relay akan digunakan untuk menghubungkan ke Arduino.

Catatan: Saat membuat sambungan, pastikan lubang pemasangan relai solid-state tetap bebas.

  • Solder kabel koneksi antara solid state relay A1 ke salah satu koneksi AC dari catu daya
  • Solder kabel ke koneksi AC lain dari catu daya (ini akan dihubungkan ke blok terminal sekrup netral pada langkah 7)
  • Solder kabel antara catu daya -Vo ke relai DC-
  • Solder kabel untuk menghubungkan catu daya +Vo ke relai DC+

Catatan: Mungkin diperlukan untuk memperpendek kabel pada catu daya dan relai agar dapat masuk ke dalam enklosur.

Langkah 7: Arduino Nano + Catu Daya + Relay Solid-state

Arduino Nano + Catu Daya + Relay Solid-state
Arduino Nano + Catu Daya + Relay Solid-state

Pada langkah ini, Arduino Nano terhubung ke catu daya dan relai solid-state.

  • Potong dua kabel dengan panjang sekitar 70mm. Lepaskan isolasi 30mm di satu sisi, dan 4mm di sisi lain.
  • Solder sisi dengan isolasi strip 30mm ke Arduino +5V dan GND, dengan kabel yang menempel
  • Potong dua tabung heat-shrink dengan panjang 20mm dan pasang di atas bagian 25mm yang dilucuti. Ini mengisolasi kabel hingga sambungan dengan blok terminal sekrup pemasangan DC+ dan DC- dari relai solid-state.
  • Perhatikan bahwa kabel untuk GND dan +5V harus bersilangan agar dapat terhubung dengan benar ke blok terminal sekrup relai.
  • Potong kawat dengan panjang kira-kira 40mm dan lepaskan isolasi 4mm dari kedua ujungnya. Solder satu sisi ke koneksi A2 di BELAKANG Arduino, dan sambungkan sisi lain ke koneksi CH1 dari blok terminal sekrup pemasangan solid-state.

PERINGATAN

Arduino ditenagai langsung dari catu daya +5V yang stabil alih-alih menggunakan regulator daya internal Arduino. Oleh karena itu, tidak aman untuk menghubungkan USB ketika Arduino menerima daya dari catu daya.

Selalu putuskan sambungan listrik 230VAC sebelum menggunakan koneksi USB Arduino.

Langkah 8: Arduino Nano + Jam Waktu Nyata

Arduino Nano + Jam Waktu Nyata
Arduino Nano + Jam Waktu Nyata

Pada langkah ini jam real time terhubung ke Arduino, sebagian dengan menggunakan kabel yang disiapkan pada langkah sebelumnya.

  • Solder kabel yang berasal dari Arduino GND (juga terhubung ke DC- relai) ke ‘–‘jam waktu nyata.
  • Solder kabel yang berasal dari Arduino +5V (juga terhubung ke DC+ relai) ke '+' jam waktu nyata.
  • Potong dua kabel dengan panjang sekitar 40mm dan lepaskan isolasi 4mm dari kedua ujungnya.
  • Solder kabel antara Arduino A4 dan jam waktu nyata D (SDA).
  • Solder kabel antara Arduino A5 dan jam waktu nyata C (SCL).
  • Bentuk kabel jam waktu nyata untuk memastikan kabel tidak mengganggu enkoder putar. Untuk ini, kabel harus berada di bagian bawah selungkup.

Langkah 9: Hubungkan Layar OLED

Hubungkan Layar OLED
Hubungkan Layar OLED

Pada langkah ini tampilan OLED SPI ditambahkan ke Arduino.

  • Potong 2 kabel dengan panjang 65mm dan lepaskan isolasi 4mm dari kedua ujungnya.
  • Solder kabel ke koneksi GND layar OLED. Solder kabel ini ke kabel isolasi heat-shrink tubing yang berasal dari Arduino GND (lihat langkah 4) dan sambungkan kedua kabel ke blok terminal sekrup pemasangan DC dari solid-state relay.
  • Solder kabel ke koneksi VCC layar OLED. Solder kabel ini ke kabel terisolasi tabung heat-shrink yang berasal dari Arduino +5V (lihat langkah 4) dan sambungkan kedua kabel ke blok terminal sekrup pemasangan DC+ dari relai solid-state.
  • Potong 5 kabel dengan panjang 65mm dan lepaskan isolasi 4mm dari kedua ujungnya.
  • Solder kabel untuk menghubungkan D0 (CLK) ke Arduino D10
  • Solder kabel untuk menghubungkan D1 (MOSI / DATA) ke Arduino D9
  • Solder kabel untuk menghubungkan RES (RT) ke Arduino D8
  • Solder kabel untuk menghubungkan DC ke Arduino D11
  • Solder kabel untuk menghubungkan CS ke Arduino D12

Catatan: Urutan kabel tampilan tidak logis. Ini adalah hasil pertama menggunakan contoh Adafruit, dan kemudian mengubah koneksi karena menggunakan D13 menghasilkan LED merah di Arduino sepanjang waktu.

Alternatif

Dimungkinkan untuk menggunakan urutan 'normal' untuk koneksi SPI. Untuk ini, definisi output digital program Arduino di oledcontrol.cpp harus disesuaikan:

// Menggunakan perangkat lunak SPI

// definisi pin

#tentukan CS_PIN 12

#tentukan RST_PIN 8

#tentukan DC_PIN 11

#tentukan MOSI_PIN 9

#tentukan CLK_PIN 10

Langkah 10: Rotary Encoder

Rotary Encoder
Rotary Encoder

Diagram menunjukkan koneksi Arduino ke rotary encoder (encoder dilihat dari atas).

  • Potong 4 kabel 45mm dan lepaskan isolasi 4mm dari kedua ujungnya.
  • Hubungkan Arduino GND ke konektor kanan atas dan tengah bawah encoder
  • Hubungkan Arduino D2 ke kiri bawah encoder
  • Hubungkan Arduino D3 ke kanan bawah encoder
  • Hubungkan Arduino D4 ke kiri atas encoder

Langkah 11: Instalasi di Enclosure

Pemasangan di Enclosure
Pemasangan di Enclosure

Pasang semua elektronik di bagian bawah enklosur:

  • Geser Arduino pada slot vertikal
  • Geser jam waktu nyata di kompartemen bawah
  • Geser catu daya dan relai di kompartemen atas, pastikan relai duduk di dudukannya.

Langkah 12: Menghubungkan ke Listrik / Lampu untuk Dialihkan

Menghubungkan ke Listrik / Lampu untuk Dialihkan
Menghubungkan ke Listrik / Lampu untuk Dialihkan
Menghubungkan ke Listrik / Lampu untuk Dialihkan
Menghubungkan ke Listrik / Lampu untuk Dialihkan

PERINGATAN

Pastikan melakukan perawatan dan tindakan pencegahan yang tepat saat bekerja dengan Sumber Listrik AC, pastikan bahwa Sumber Listrik AC terputus

Saya tidak bertanggung jawab atas kehilangan atau kerusakan yang timbul secara langsung dari atau sebagai akibat dari mengikuti proyek ini

  • Hubungkan fase listrik AC ke blok terminal sekrup A1 (kiri) dari relai.
  • Hubungkan fase lampu yang akan dialihkan ke blok terminal sekrup B1 (kanan) dari relai.
  • Gunakan blok terminal sekrup terpisah untuk menghubungkan kabel netral listrik AC, kabel netral ringan dan kabel netral catu daya.
  • Untuk menghilangkan ketegangan, pasang bungkus dasi di sekitar masing-masing kabel daya.

Langkah 13: Menyelesaikan Enclosure

Menyelesaikan Enklosur
Menyelesaikan Enklosur

Pada langkah ini pemasangan di enklosur selesai

  • Geser layar OLED melalui lubang pemasangan layar di bagian tengah enklosur.
  • Geser rotary encoder melalui lubang di bagian tengah, pastikan anti-rotasi berbaris. Pasang rotary encoder menggunakan washer dan mur yang disertakan.
  • Pasang bagian atas enklosur dan tutup enklosur dengan memasang keempat sekrup M3x25mm dari bawah.

Langkah 14: Pemrograman Arduino

PERINGATAN

Arduino ditenagai langsung dari catu daya +5V yang stabil alih-alih menggunakan regulator daya internal Arduino. Oleh karena itu, tidak aman untuk menghubungkan USB ketika Arduino menerima daya dari catu daya.

Selalu putuskan sambungan listrik 230VAC sebelum menggunakan koneksi USB Arduino.

Ambil program pengatur waktu Arduino dari GitHub.

Program ini menggunakan Arduino IDE, yang dapat diperoleh di sini.

Program ini menggunakan perpustakaan tambahan berikut:

SSD1303Ascii

perpustakaan Kawat Arduino

Perhatikan bahwa perpustakaan senja2dawn juga digunakan, tetapi disertakan sebagai kode karena perubahan antarmukanya.

Untuk memastikan perhitungan senja / fajar yang benar, garis bujur dan lintang dan zona waktu harus ditetapkan.

Seperti yang dijelaskan dalam contoh senja2dawn, cara mudah untuk menemukan garis bujur dan lintang untuk lokasi mana pun adalah dengan menemukan tempat di Google Maps, klik kanan tempat di peta, dan pilih "Apa yang ada di sini?". Di bagian bawah, Anda akan melihat kartu dengan koordinat.

Bujur dan lintang dikodekan dalam program, di Dusk2Dawn.cpp baris 19 dan 20:

/* Lintang dan bujur lokasi Anda harus disetel di sini.

* * PETUNJUK: Cara mudah untuk menemukan garis bujur dan garis lintang untuk setiap lokasi adalah * menemukan tempat di Google Maps, klik kanan tempat di peta, dan * pilih "Apa yang ada di sini?". Di bagian bawah, Anda akan melihat kartu dengan koordinat *. */ #define LISTRIK 52.097105; // Utrecht #define PANJANG 5.068294; // Utrecht

Zona waktu juga di-hardcode di Dusk2Dawn.cpp baris 24. Secara default diatur ke Belanda (GMT + 1):

/* Masukkan zona waktu Anda (offset ke GMT) di sini.

*/ #menentukan ZONA WAKTU 1

Saat memprogram Arduino untuk pertama kalinya, memori EEPROM perlu diinisialisasi. Untuk ini, ubah timer.cpp baris 11 untuk melakukan inisialisasi EEPROM:

// ubah menjadi true untuk pemrograman pertama kali

#define INITIALIZE_EEPROM_MEMORY salah

Unggah program ke Arduino dan boot Arduino.

Nonaktifkan inisialisasi EEPROM dan unggah program ke Arduino lagi. Timer sekarang akan mengingat pengaturan waktu sakelar saat reboot.

Langkah 15: Mengatur Waktu dan Mengganti Waktu

Konsep interaksi pengguna:

  • Tekan sebentar digunakan untuk mengkonfirmasi pilihan. Selanjutnya, di layar pengatur waktu utama, tekan sebentar untuk menyalakan atau mematikan lampu.
  • Tekan lama digunakan untuk masuk ke menu dari layar pengatur waktu utama. Di mana saja dalam menu, tekan lama akan kembali ke layar pengatur waktu utama.
  • ‘>’ Kursus seleksi. Kursor ini menunjukkan opsi yang dipilih dalam menu.

Layar pengatur waktu utama

Layar pengatur waktu utama menunjukkan:

Hari dalam seminggu Su

Waktu saat ini 16:00

Status timer saat ini dan waktu sakelar berikutnya Timer OFF hingga 17:12

Waktu fajar dan senja Fajar 08:05 Senja 17:10

Mengatur waktu yang tepat

Tekan lama untuk masuk ke menu. Opsi berikut ditampilkan:

BackSet timeProgram hari mingguProgram akhir pekanPilihan

Pilih atur waktu untuk mengatur tanggal dan waktu jam waktu nyata. Masukkan nilai yang benar untuk:

TahunBulanHariWaktu

Timer secara otomatis menentukan hari kerja. Pergantian waktu musim panas juga dilakukan secara otomatis. Musim panas hanya diterapkan untuk zona waktu Eropa.

Mengatur program pengatur waktu

Timer memiliki 2 program, satu untuk hari kerja, satu untuk akhir pekan. Perhatikan bahwa hari Jumat dianggap sebagai bagian dari akhir pekan, lampu dapat menyala sedikit lebih lama.

Setiap timer memiliki momen sakelar hidup dan mati. Momen tersebut dapat berupa:

  • Waktu: Tepat waktu yang ditentukan
  • Fajar: Beralih berdasarkan waktu fajar yang dihitung
  • Senja: Beralih berdasarkan waktu senja yang dihitung

Untuk senja dan fajar dimungkinkan untuk memasukkan nilai koreksi 59 menit sebelum atau sesudahnya.

Contoh:

Untuk menyalakan lampu sepanjang malam, pilih nyalakan pada (senja + 10 menit), matikan pada (fajar - 10 menit)

Untuk menyalakan lampu di malam hari, pilih nyalakan saat senja, matikan pada waktu: 22:30.

Pilihan

Di layar opsi, batas waktu dapat diatur untuk beralih layar.

Saat layar dimatikan, menekan kenop encoder putar akan kembali ke layar pengatur waktu utama.

Direkomendasikan: