Atau ruang tamu ingin dinyalakan jam 5 sore sampai jam 10 malam saja, kemudian nyala lagi pagi jam 4 sampai jam 6.
Sebenarnya ada banyak produk saklar dengan timer yang dijual dipasaran, namun kalo kita bisa bikin sendiri kan keren.. :D selain itu bisa kita atur programnya semau kita
Daftar isi [sembunyikan]
Komponen
Rangkaian
Software
Instalasi
Catatan
Komponen
Komponen-komponen yang kita butuhkan sebagai berikut
Arduino Nano
Modul TinyRTC
Breadboard
Kabel-kabel
Sebenarnya hanya 3 komponen utama saklar lampu dengan timer. RTC, Relay dan Timer
1. RTC Module
RTC atau Real Time Clock module ini berfungsi seperti jam, menyimpan dan penunjuk waktu. Module ini berikut baterainya, sehingga jika mikrokontrollernya kehilangan daya waktunya tidak tereset.
2. Relay
Relay ini fungsinya sebagai saklar elektronik. Sinyal dari tegangan rendah 5V digunakan untuk mengontrol lampu 220V
3. Mikrokontroller atau dalam hal ini Arduino
Mikrokontroller adalah otaknya, dimana sinyal INPUT dari modul RTC berupa waktu akan diolah disini. Dan OUTPUT berupa sinyal digital ke relay dikirimkan sesuai jadwal yang kita buat untuk
Supaya lebih mudah, mikrokontroller yang kita gunakan adalah Arduino, lebih mudah merangkainya dan lebih mudah memprogramnya.
Dan yang akan kita gunakan sekarang adalah Arduino Nano, baru denger ya? Secara fungsi sama, mirip dengan Uno. Memang tidak sepopuler Arduino Uno, tapi karena bentuknya yang lebih kecil,
kabel male-female
kabel jumper breadboard
Rangkaian
Dari komponen-komponen tersebut Kita rangkaikan sebagai berikut:
RTC modul dihubungkan ke Arduino menggunakan I2C, yaitu pin SDA dan SCL, di Arduino Nano dan Arduino Uno pin SDA adalah A4, pin SCL adalah A5.
Pilih satu pin digital sebagai OUTPUT, disini kita gunakan pin 11 (pastikan sesuai dengan codingan)
(-) kelemahannya jika saklar lampu kita nyalakan, maka saklar otomatis ini tidak akan berjalan
Software
Untuk memprogram arduino dengan RTC ini langkah-langkahnya sebagai berikut:
5. Upload ke Arduino
Berikut source code saklar lampu dengan timer pukul 18 sampai 6 pagi
1 /*
2 Program : Lampu Teras Otomatis 18 - 6
3 https://ndoware.com
4 */
5
6 #include <Wire.h>
7 #include <RTClib.h>
8
9 RTC_DS1307 rtc;
10 const int pinRelay = 11; // definisikan Relay pada pin digital 11
11
12 void setup() { // SETUP: dijalankan sekali.
13 rtc.begin(); // aktifkan module RTC
14 pinMode(pinRelay, OUTPUT); // definisikan pinRelay sebagai OUTPUT
15 //Serial.begin(9600); // #debug, aktifkan komunikasi serial
16 }
17
18 void loop() { // LOOP: dijalankan berulang-ulang selama board hidup
19
20 DateTime now = rtc.now(); // ambil waktu sekarang dari module RTC
21
22 if ((now.hour() >= 18) || (now.hour() < 6)) { // kondisi pukul 18 - 6
23 digitalWrite(pinRelay, HIGH); // relay HIGH, lampu nyala
24 //Serial.print("Lampu nyala"); // #debug
25 } else {
26 digitalWrite(pinRelay, LOW); // relay LOW, lampu mati
27 //Serial.print("Lampu mati"); // #debug
28 }
29
30 /*
31 // #debug, untuk debugging tampilkan data waktu melalui serial port
32 Serial.print(now.year(), DEC);
33 Serial.print('/');
34 Serial.print(now.month(), DEC);
35 Serial.print('/');
36 Serial.print(now.day(), DEC);
37 Serial.print(" ");
38 Serial.print(now.hour(), DEC);
39 Serial.print(':');
40 Serial.print(now.minute(), DEC);
41 Serial.print(':');
42 Serial.print(now.second(), DEC);
43 Serial.println();
44 */
45 delay(1000); // delay 1s
46 }
Copy dan paste program di atas ke Arduino IDE, hubungkan Arduino ke PC, lalu tekan tombol upload.
Jika belum pernah upload program dari Arduino IDE, cek cara uploadnya di project Arduino Flip-flop.
Penjelasan Program
Dari program di atas kita menggunakan library RTClib.h dan Wire.h untuk menghubungkan modul RTC dengan Arduino menggunakan I2C
SETUP
Pada setup() kita tidak perlu mendefine pin-pin untuk koneksi ke TinyRTC. Menggunakan I2C default pin yang digunakan adalah pin SDA dan SCL, dimana di Arduino Nano ada di pin A4 dan A5.
Dan pastikan tidak salah memasang pin, kaki SDA modul TinyRTC ke pin A4 dan SCL ke A5.
Yang perlu diseting adalah pin yang akan kita gunakan sebagai OUTPUT ke relay. Di program ini kita gunakan pin 11. pinMode(pinRelay, OUTPUT); dan sebelumnya konstanta pinRelay ini didefine
LOOP
now.hour() berisi jam. Jam inilah yang kita pakai untuk pembandingan. output jam nya bernilai 0 sampai 24
Kondisi ini dibaca jika jam sekarang lebih besar atau sama dengan jam 18, atau jam sekarang sebelum jam 6.
Kamu bisa variasikan kondisi ini tergantung kebutuhanmu, misal hanya pada pukul 4, now.hour() == 4, dan sebagainya.
Pada kondisi TRUE inilah kita hidupkan relay, dengan mengirim sinyal HIGH ke pin 11
digitalWrite(pinRelay, HIGH);
sebaliknya jika kita kirim LOW ke pin 11, maka lampu akan mati.
Debugging
Terkadang program tidak berjalan sesuai keinginan, maka perlu dilakukan debug atas program tersebut.
Caranya matikan komentar dengan menghilangkan // atau /* di depan baris dengan tag #debug pada source diatas.
Sambungkan ke pc kemudan buka serial monitor di Arduino IDE untuk melihat apakah tanggal jam sudah benar atau belum.
Instalasi
Untuk instalasi kita pasangkan relay secara paralel dengan saklar lampu. Dan membutuhkan colokan untuk mensuply power Arduino.
Akan memudahkan jika saklar dan colokan berdekatan, seperti foto berikut
Saklar & colokan
220V
Catatan
Beberapa catatan dari project ini
Hati-hati dengan tegangan tinggi. Bila tidak ditutup semua, minimal amankan kaki relay yang terhubung ke tegangan tinggi.
kelebihan:
kekurangan:
tidak bisa mematikan manual jika lampu dihidupkan oleh Arduino (solusinya dengan mematikan Arduino)
saklar otomatis tidak bekerja jika saklar manual dalam keadaan close (selalu hidup)
Rangkaian ini sangat sederhana, jauh dari sempurna dan masih sangat bisa ditingkatkan lagi kemampuannya. Beberapa ide untuk improvement:
Demikian proyek lampu timer dengan arduino semoga bisa dicoba, jika kesulitan bisa hubungi di kolom komentar.
Dan semoga teman-teman bisa mendapatkan inspirasi untuk membut yang lebih baik lagi.
Selamat berkarya.