Bikin Sendiri Saklar Rumah dengan Timer
Saklar teras rumah biasanya kita nyalakan malam hari, sekitar jam 6 sore sampai jam 6 pagi.
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.. 😀 selain itu bisa kita atur programnya semau kita
Komponen
Komponen-komponen yang kita butuhkan sebagai berikut
- Arduino Nano
- Modul TinyRTC
- Modul Relay DPDT 5v 220v
- Charger / power supply 5v
- 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 menyalakan dan mematikan lampu.
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, harganyapun lebih hemat.

4. Lain-lain
Komponen tambahan lain yang kita butuhkan adalah breadboard, kabel-kabel, serta power supply 5v untuk arduino bisa diambil dari charger hp yang tidak terpakai.

Breadboard Mini

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.
Untuk board Arduino yang lain mengikuti tabel dibawah
Board | I2C / TWI pins |
Uno, Ethernet, Nano | A4 (SDA), A5 (SCL) |
Mega2560 | 20 (SDA), 21 (SCL) |
Leonardo | 2 (SDA), 3 (SCL) |
Due | 20 (SDA), 21 (SCL), SDA1, SCL1 |
- Pilih satu pin digital sebagai OUTPUT, disini kita gunakan pin 11 (pastikan sesuai dengan codingan)
- Relay dihubungkan secara PARALEL dengan saklar LAMPU
(-) kelemahannya jika saklar lampu kita nyalakan, maka saklar otomatis ini tidak akan berjalan
(-) lampu tidak dapat dinyalakan secara manual
(+) kelebihan instalasi lebih mudah
(+) lampu masih dapat dinyalakan secara manual


Software
Untuk memprogram arduino dengan RTC ini langkah-langkahnya sebagai berikut:
- Install Arduino IDE di PC kesayanganmu
- Install driver Arduino supaya board bisa berkomunikasi dengan PC
- Tambahkan Library RTC.lib di Arduino IDE, bisa didownload disini
- Copy source code dibawah,
- Upload ke Arduino
Berikut source code saklar lampu dengan timer pukul 18 sampai 6 pagi
/* Program : Lampu Teras Otomatis 18 - 6 https://ndoware.com */ #include &lt;Wire.h&gt; #include &lt;RTClib.h&gt; RTC_DS1307 rtc; const int pinRelay = 11; // definisikan Relay pada pin digital 11 void setup() { // SETUP: dijalankan sekali. rtc.begin(); // aktifkan module RTC pinMode(pinRelay, OUTPUT); // definisikan pinRelay sebagai OUTPUT //Serial.begin(9600); // #debug, aktifkan komunikasi serial } void loop() { // LOOP: dijalankan berulang-ulang selama board hidup DateTime now = rtc.now(); // ambil waktu sekarang dari module RTC if ((now.hour() >= 18) || (now.hour() < 6)) { // kondisi pukul 18 - 6 digitalWrite(pinRelay, HIGH); // relay HIGH, lampu nyala //Serial.print("Lampu nyala"); // #debug } else { digitalWrite(pinRelay, LOW); // relay LOW, lampu mati //Serial.print("Lampu mati"); // #debug } /* // #debug, untuk debugging tampilkan data waktu melalui serial port Serial.print(now.year(), DEC); Serial.print('/'); Serial.print(now.month(), DEC); Serial.print('/'); Serial.print(now.day(), DEC); Serial.print(" "); Serial.print(now.hour(), DEC); Serial.print(':'); Serial.print(now.minute(), DEC); Serial.print(':'); Serial.print(now.second(), DEC); Serial.println(); */ delay(1000); // delay 1s }
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. Hanya perlu menjalankan rtc.begin().
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 sebagai 11, const int pinRelay = 11;
LOOP
Pada loop(), pertama ambil waktu sekarang dari RTC
DateTime now = rtc.now(); membuat object now yang berisi waktu sekarang.
now.hour() berisi jam. Jam inilah yang kita pakai untuk pembandingan. output jam nya bernilai 0 sampai 24
if ((now.hour() >= 18) || (now.hour() < 6)) {
Kondisi ini dibaca jika jam sekarang lebih besar atau sama dengan jam 18, atau jam sekarang sebelum jam 6.
Artinya kondisi ini akan TRUE pada pukul 18 – 24 dan 0 – 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);
maka otomatis Lampu akan menyala.
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

Sebaiknya matikan terlebih dahulu sumber listrik dari PLN.
Hati-hati Tegangan Tinggi!!
220V
Buka sekrup saklar dan kendorkan.

Sambungkan kabel dari relay secara paralel ke saklar

Pasang kembali saklar ke rumahnya, dan colokkan Arduino.

Saklar timer sudah siap.
Catatan
Beberapa catatan dari project ini
- Hati-hati dengan tegangan tinggi. Bila tidak ditutup semua, minimal amankan kaki relay yang terhubung ke tegangan tinggi.
- Relay dihubungkan paralel dengan saklar
- kelebihan:
- saklar masih bisa digunakan manual (pada saat arduino OFF)
- lebih mudah uninstalasinya jika sudah tidak dipakai
- 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)
- kelebihan:
- Rangkaian ini sangat sederhana, jauh dari sempurna dan masih sangat bisa ditingkatkan lagi kemampuannya. Beberapa ide untuk improvement:
- Tambahkan LCD untuk menampilkan waktu
- Tambahkan tombol untuk mengatur waktu
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.
kalau keluar
exit status 1
RTClib.h: No such file or directory
itu maksudnya apa ?
Artinya Library RTCnya tidak ditemukan. Coba download dan install dulu library RTCnya. Bisa didownload disini
Jika pakai arduino uno, apakah port2 yg ditancapkan dari rtc sama?
Untuk Arduino UNO sama mas, A4(SDA) A5(SCL)
Asalaamuualaikkum.. terimakasih gan ilmunya sngt brmanfaat..
Waalaikumsalam, terimakasih kembali sudah berkunjung di ndoware
makasih ilmunya , sudah di coba berhasil, nanya dikit nih jika mau menuliskan jam on lampu bukan jam 18 tapi 17;30 gmn
ditambahkan AND mas, jadi seperti ini:
(now.hour() >= 17) && (now.minute() >= 30)
kalau relaynya ada 4 dimana setting nya mas ..? misal mau pakai di port 11,12,13,14
const int pinRelay = 11;
ditambahkan baris nerikutnya =12 sampai 14 atau 11,12,13,14
Berarti perlu ditambahkan 3 konstanta baru mas, sesuai pinnya, contohnya jadi seperti ini:
const int pinRelay = 11;
const int pinRelay2 = 12;
const int pinRelay3 = 13;
const int pinRelay4 = 14;
Maaf mau nanya mas , arduino nano nya jika ngatur nya pkek hp bukan pakek PC apakah bisa…? Klau bisa pakai aplikasi apa.
Trims
Harus dg modul tambahan, Bluetooth atau wifi
Bisa pakai hp android, nama aplikasinya bluino loader, kapan2 kita bahas disini.
ini cuma buat 1 lampu?
Di tutorial ini kebetulan hanya 1 lampu, tapi bisa kita kembangkan sampai banyak lampu, tak terbatas.