Proyek Rumah Pintar Arduino: Maket Rumah, Sensor, Kode, dan Aplikasi
Buat proyek rumah pintar Arduino langkah demi langkah: denah maket, lampu PIR, alarm gas dan api, pintu RFID, lampu relay, kendali ponsel dengan ESP32, dan kode lengkap.
Proyek rumah pintar Arduino mengubah lampu, pintu, jendela, dan alarm sebuah maket rumah menjadi sistem yang berjalan sendiri berdasarkan sensor, dan kalau mau, semuanya juga bisa kamu kendalikan dari ponsel. Wajar kalau ini menjadi salah satu proyek sekolah yang paling populer. Lampu lorong yang menyala ketika mendeteksi gerakan, alarm yang berbunyi ketika gas bocor, kipas yang mulai berputar ketika udara hangat, dan pintu yang terbuka dengan kartu, semuanya membentuk tiruan kecil tapi berfungsi dari sistem rumah pintar sungguhan. Dengan Arduino Uno atau ESP32, sekitar sepuluh modul, dan satu akhir pekan, kamu juga bisa membuatnya.
Di panduan ini kita mulai dari denah maket rumah: modul mana masuk ke ruangan mana, anggaran habis untuk apa, bagaimana merencanakan daya, dan bagaimana membagi pin. Lalu kita merakit dan menguji setiap modul satu per satu, dan menulis sketch Arduino lengkap yang menjalankan semuanya bersamaan tanpa memakai delay(). Di bagian akhir kamu akan belajar cara mengendalikan rumah dari ponsel dengan web server ESP32 atau Blynk, cara memperbaiki kesalahan yang paling umum, dan cara membuat juri terkesan ketika presentasi di sekolah.






Bagaimana cara kerja sistem rumah pintar?
Setiap rumah pintar berjalan dengan siklus tiga bagian yang sama. Sensor mengukur lingkungan: apakah ada yang bergerak, apakah sudah gelap, seberapa hangat, apakah ada gas atau api di dapur, kartu mana yang ditempelkan ke pintu? Pengendali, yaitu Arduino atau ESP32, membandingkan informasi ini dengan aturan: “kalau gelap dan ada gerakan, nyalakan lampu”, “kalau suhu naik di atas 28 °C, nyalakan kipas”. Aktuator menjalankan keputusannya: relay menyalakan lampu dan kipas, servo memutar pintu dan jendela, buzzer berbunyi, dan layar menampilkan status. Kendali lewat ponsel hanya menambah satu input lagi ke siklus ini; kali ini ketukanmu yang mengambil keputusan, bukan aturan.
| Ruangan / area | Modul | Fungsinya |
|---|---|---|
| Pintu depan | RFID RC522 + servo SG90 | Membuka pintu ketika kartu yang diizinkan dipindai dan menutupnya 5 detik kemudian |
| Lorong / ruang tamu | HC-SR501 PIR + LDR + relay | Menyalakan lampu ketika mendeteksi gerakan dalam gelap dan mematikannya setelah 20 detik tanpa gerakan |
| Dapur | Sensor gas MQ-2 + sensor api + buzzer | Membunyikan alarm berbunyi bip ketika mendeteksi gas atau api |
| Jendela | Servo SG90 | Membuka jendela untuk ventilasi ketika gas terdeteksi |
| Kamar tidur | DHT11 + relay + kipas | Menyalakan kipas ketika mencapai 28 °C dan mematikannya di 26 °C |
| Ruang teknis | Arduino, LCD I2C, catu daya | Menampilkan suhu, kelembapan, pembacaan gas, dan pesan status |
Merencanakan maket rumah
Rancang maket di sekitar elektroniknya; jangan mencoba menjejalkan elektronik belakangan. Alas berukuran sekitar 50×40 cm cukup untuk dua atau tiga ruangan dan satu pintu masuk. Untuk dinding, foam board 5 mm atau PVC foam board (seperti Forex) mudah dipotong dengan cutter; MDF 3–4 mm lebih kokoh tapi butuh gergaji atau mesin laser cutting. Skala 1:20 adalah titik awal yang bagus: langit-langit 2,6 m menjadi dinding 13 cm dan pintu 90 cm menjadi selebar 4,5 cm. Buat atapnya bisa dilepas atau tidak usah dipasang sama sekali; juri pasti ingin melihat isi ruangan.
- Ruang teknis atau lantai ganda: taruh Arduino, breadboard, modul relay, dan input daya di kompartemen bagian belakang rumah atau di bawah lantai ganda setinggi 3–4 cm. Kalau ditutup dengan akrilik bening, rangkaiannya terlindungi sekaligus tetap terlihat.
- Jalur kabel: bor lubang 6–8 mm di bawah setiap sensor dan salurkan kabelnya di bawah alas ke ruang teknis. Daripada menyambung-nyambung kabel pendek, pilih kabel sensor yang cukup panjang sejak awal.
- Pintu: pasang pintu ke dinding dengan engsel kecil atau selotip, lalu hubungkan lengan (horn) SG90 ke pintu dengan kawat yang dibengkokkan dari klip kertas. Rekatkan RC522 di sisi dalam dinding luar; pembacanya biasanya tetap bisa membaca kartu menembus papan 5 mm.
- Dapur: di rumah sungguhan, detektor gas alam (metana) dipasang dekat langit-langit karena lebih ringan dari udara, sedangkan detektor gas elpiji dipasang dekat lantai karena elpiji lebih berat; untuk maket, posisi dekat langit-langit sudah cukup. Arahkan sensor api ke kompor.
- Sensor lain: pasang PIR di sudut yang melihat jalur masuk dari samping, LDR di dinding luar atau jendela yang tidak terkena cahaya lampu, dan DHT11 jauh dari lampu dan badan MQ-2 yang hangat.
Daftar komponen dan biaya
| Komponen | Jumlah | Kegunaan | Tingkat harga |
|---|---|---|---|
| Arduino Uno R3 (klon juga boleh) atau ESP32 DevKit | 1 | Otak rumah | Sedang |
| Set breadboard dan kabel jumper (male-male, male-female) | 1 set | Sambungan | Rendah |
| Sensor gerak PIR HC-SR501 | 1 | Lampu lorong | Rendah |
| LDR dan resistor 10 kΩ | 1 + 1 | Deteksi gelap | Sangat rendah |
| Modul sensor gas MQ-2 | 1 | Alarm gas dan asap | Rendah |
| Modul sensor api (LM393) | 1 | Alarm kebakaran | Rendah |
| Modul suhu dan kelembapan DHT11 | 1 | Kendali kipas | Rendah |
| Modul RFID RC522 (dengan kartu dan gantungan kunci) | 1 | Pintu berkartu | Rendah |
| Motor servo SG90 | 2 | Pintu dan jendela | Rendah |
| Modul relay 5 V 2 kanal | 1 | Lampu dan kipas | Rendah |
| Buzzer aktif | 1 | Suara alarm | Sangat rendah |
| Layar LCD I2C 16x2 | 1 | Tampilan status | Rendah – sedang |
| Kipas mini 5 V dan lampu LED 5 V atau LED strip | 1 + 1 | Beban untuk relay | Rendah |
| Adaptor daya 5 V 2–3 A dan jack DC atau terminal blok | 1 | Daya untuk servo, relay, dan sensor | Sedang |
| Foam board atau PVC foam board, cutter, lem tembak | – | Badan rumah | Sedang |
Harga sering berubah tergantung penjual dan waktu, jadi kami tidak mencantumkan angka; tabel ini menunjukkan seberapa besar porsi setiap komponen dalam anggaran. Sensor dan modulnya masing-masing murah; sebagian besar anggaran habis untuk board, LCD, adaptor daya, dan bahan maket. Kalau kamu punya starter kit Arduino, board, breadboard, kabel, LDR, buzzer, dan sering juga servo dan LCD sudah tersedia. Kalau anggarannya pas-pasan, kamu bisa melewatkan LCD dan servo kedua: pakai Serial Monitor sebagai pengganti layar dan tunda jendelanya ke tahap berikutnya. DHT22 yang lebih akurat sebagai pengganti DHT11 harganya sedikit lebih mahal, tapi membuat hasil pengukuranmu lebih meyakinkan ketika presentasi.
Rencana daya: kenapa butuh adaptor 5 V terpisah?
Di maket rumah pintar, hampir setiap keluhan seperti “sesekali reset sendiri”, “servonya bergetar”, atau “muncul karakter aneh di LCD” ujung-ujungnya soal daya. Port USB komputer memberi sekitar 500 mA, dan ketika board berjalan dari USB, pin 5V Uno juga berada di balik batas itu. Jumlahkan nilai di bawah dan kamu akan melihat total arusnya dengan mudah melewati 1 A ketika kedua servo bergerak bersamaan.
| Komponen | Perkiraan arus di 5 V |
|---|---|
| Arduino Uno | 45–50 mA |
| MQ-2 (pemanas selalu menyala) | Sekitar 150 mA |
| Modul relay (per kanal, relay aktif) | 70–80 mA |
| Servo SG90 (bergerak / terbebani) | 100–250 mA / sampai 0,5–0,7 A |
| LCD I2C (lampu latar menyala) | 20–30 mA |
| RC522 (dari pin 3.3V) | 13–26 mA |
| Buzzer aktif, DHT11, PIR, dan sensor api | Total 30–40 mA |
| Kipas mini 5 V dan lampu LED | 100–400 mA tergantung modelnya |
Rencana pin: Arduino Uno dan ESP32
Modul sebanyak ini hampir menghabiskan pin Uno, jadi kamu perlu merencanakannya sejak awal. RC522 memakai SPI hardware, jadi jalur MOSI, MISO, dan SCK-nya terikat ke D11, D12, dan D13. LCD hanya memakai A4 dan A5 lewat I2C, karena itulah kita memilih layar dengan modul I2C, bukan LCD paralel. Pin analog juga bisa berfungsi sebagai pin digital kalau perlu, sehingga servo jendela bisa dihubungkan ke A2. Biarkan D0 dan D1 kosong: jalur serial ini dipakai ketika kamu meng-upload kode dan ketika membaca nomor kartu di Serial Monitor. Kamu bisa melihat susunan pin board-mu di alat Pinout.
| Pin modul | Arduino Uno | ESP32 |
|---|---|---|
| PIR OUT | D2 | GPIO 16 |
| DO sensor api | D3 | GPIO 17 |
| DHT11 DATA | D4 | GPIO 13 |
| Buzzer aktif (+) | D5 | GPIO 25 |
| Servo pintu (sinyal) | D6 | GPIO 32 |
| Relay IN1 (lampu) | D7 | GPIO 26 |
| Relay IN2 (kipas) | D8 | GPIO 27 |
| RC522 RST | D9 | GPIO 4 |
| RC522 SDA (SS) | D10 | GPIO 5 |
| RC522 MOSI / MISO / SCK | D11 / D12 / D13 | GPIO 23 / 19 / 18 |
| MQ-2 AO | A0 | GPIO 34 (lewat pembagi tegangan) |
| Titik tengah pembagi LDR | A1 | GPIO 35 (pembagi diberi daya dari 3V3) |
| Servo jendela (sinyal) | A2 | GPIO 33 |
| I2C LCD SDA / SCL | A4 / A5 | GPIO 21 / 22 |
Merakit langkah demi langkah
- Buat badan maket dan siapkan posisi modul serta lubang kabel; pasang elektroniknya paling akhir.
- Siapkan jalur daya: hubungkan adaptor 5 V ke jalur daya breadboard, sambungkan GND adaptor ke GND Arduino, dan cek tegangan 5 V dengan multimeter.
- Hubungkan LCD I2C dan tampilkan sebuah teks. Kalau alamat layarnya tidak ketemu, pakai sketch scanner dari artikel LCD I2C.
- Tambahkan sensor satu per satu: DHT11, LDR, PIR, MQ-2, dan sensor api. Coba masing-masing dengan sketch tes pendek di Serial Monitor dan catat pembacaannya di udara bersih, dalam gelap, dan dalam terang.
- Tambahkan aktuator: uji relay dulu tanpa beban sambil memperhatikan bunyi klik dan LED-nya, lalu servo dengan daya eksternal, dan terakhir hubungkan RC522. Pindai kartumu dan catat nomornya.
- Upload sketch utama dan atur ambang GAS_LIMIT, DARK_LIMIT, dan FAN_ON berdasarkan catatanmu.
- Kunci kabel-kabelnya dengan lem tembak dan label, lalu biarkan sistem menyala selama setengah jam sambil memperhatikan reset, panas berlebih, atau alarm palsu.
Lampu otomatis dengan PIR dan LDR
Sensor PIR HC-SR501 mendeteksi perubahan radiasi inframerah yang dipancarkan tubuh manusia dan membuat output-nya HIGH ketika melihat gerakan. Kalau hanya memakai PIR, lampu akan menyala juga di siang hari, jadi aturan kita punya dua syarat: nyalakan kalau ada gerakan dan gelap. LDR dirangkai sebagai pembagi tegangan dengan resistor 10 kΩ (5V → LDR → A1 → 10 kΩ → GND), dan pembacaan di A1 turun ketika makin gelap. Kode menyimpan waktu gerakan terakhir dan mematikan lampu setelah 20 detik tanpa gerakan baru; selama masih ada orang yang lalu lalang, timer-nya mulai ulang setiap kali. Atur jumper sensor ke H (repeat trigger) dan potensiometer Tx-nya ke waktu terpendek, lalu biarkan kode yang mengatur waktunya. Selengkapnya di artikel sensor gerak PIR dan sensor cahaya LDR.
Alarm gas dan kebakaran
Di dalam MQ-2 ada lapisan timah dioksida yang dijaga tetap panas oleh pemanas; elpiji, metana, butana, hidrogen, alkohol, dan asap mengubah hambatan lapisan ini. Pin AO modul mengeluarkan tegangan yang naik seiring naiknya kadar gas. Sensor ini perlu pemanasan setiap kali dinyalakan, jadi kode mengabaikan alarm gas selama 60 detik pertama. Sensor api mendeteksi cahaya inframerah 760–1100 nm yang dipancarkan api; di kebanyakan modul, output DO menjadi LOW dan LED kedua di modul menyala ketika api terlihat, tapi selalu cek modulmu sendiri dengan korek api yang dipegang dari jarak tertentu. Ketika gas terdeteksi, alarm berbunyi dan jendela terbuka untuk ventilasi; ketika api terdeteksi, jendela tetap tertutup, karena udara segar justru menyuburkan api. Cara mengatur ambang dan sensor MQ lainnya dibahas di artikel sensor gas MQ-2.
Suhu, kelembapan, dan kipas otomatis
DHT11 mengukur suhu dari 0 sampai 50 °C dengan akurasi ±2 °C dan kelembapan dari 20 sampai 90% dengan akurasi ±5%, dan paling sering bisa dibaca sekali per detik; kode membacanya setiap dua detik. Alih-alih satu ambang untuk kipas, kita memakai histeresis: kipas menyala di 28 °C tapi baru mati ketika suhu turun ke 26 °C. Dengan satu ambang, relay akan terus berbunyi klik ketika suhu naik-turun di antara 27 dan 28 °C, sehingga relay dan kipasnya sama-sama cepat aus. Kalau sensor gagal membaca dan mengembalikan “nan”, kode melewati pengukuran itu dan menyimpan nilai valid terakhir. Untuk pengukuran yang lebih akurat, DHT22 bekerja dengan kode yang sama; cukup tulis DHT22 sebagai pengganti DHT11. Selengkapnya di artikel Sensor Suhu dan Kelembapan DHT11.
Pintu kartu RFID dengan servo
RC522 membaca kartu dan gantungan kunci MIFARE 13,56 MHz dari jarak 3–5 cm. Setiap kartu punya nomor identitas sendiri (UID), dan kode membandingkan UID yang terbaca dengan daftar kartu yang diizinkan. Kalau cocok, servo mengayunkan pintu ke 90 derajat, terdengar bunyi bip pendek, dan LCD menampilkan “Hos geldin!” (bahasa Turki untuk “Selamat datang!”); 5 detik kemudian pintu menutup sendiri. Kartu yang tidak dikenal mendapat bunyi bip panjang. Untuk mengetahui UID kartumu sendiri, upload kodenya, buka Serial Monitor di 9600 baud, lalu pindai kartu: kamu akan melihat baris seperti “UID: A1 B2 C3 D4”. Tulis byte-byte ini ke daftar CARDS dalam bentuk 0xA1, dan tambahkan nol di depan byte yang tampil sebagai satu digit (0x05, bukan 5). Kunci yang hanya mengecek UID cukup untuk belajar, tapi tidak memberi keamanan sungguhan; alasannya kami jelaskan di artikel RFID RC522.
Jendela dan tirai
Untuk jendela, satu SG90 lagi sudah cukup: hubungkan jendela akrilik kecil berengsel ke lengan servo dengan kawat, dengan 0 derajat berarti tertutup dan 90 derajat berarti terbuka. Memanggil write(0) sebelum attach() mencegah servo melompat ke 90 derajat ketika dinyalakan dan membanting jendelanya. Tirai butuh gerakan yang lebih panjang: kainnya digulung pada batang tipis lalu batangnya diputar. Motor stepper 28BYJ-48 dengan driver ULN2003 senyap dan presisi untuk ini, tapi butuh 4 pin; karena pin Uno sudah habis, masuk akal kalau tirainya disimpan untuk versi ESP32 atau Arduino Mega. Kalau harus cukup dengan satu pin, servo putaran kontinu FS90R juga bisa, tapi karena ia tidak tahu posisinya, tirai dibuka dan ditutup berdasarkan waktu. Menambahkan sensor hujan agar jendela menutup otomatis ketika hujan juga pengembangan yang menarik.
Lampu dan kipas dengan relay

Satu pin Arduino hanya aman memberi arus sekitar 20 mA (batas mutlaknya 40 mA), sedangkan kipas atau lampu butuh jauh lebih banyak. Karena itu modul relay dipasang di antaranya: sinyal di pin IN-nya mengaktifkan elektromagnet yang menutup kontak di rangkaian terpisah. Hubungkan beban ke terminal COM dan NO supaya lampu tetap mati selama Arduino mati atau sedang restart. Kebanyakan modul seperti ini aktif LOW, artinya relay menyala ketika kamu menulis LOW; itulah gunanya konstanta RELAY_ON dan RELAY_OFF di kode. Di setup(), kode menulis HIGH sebelum menjadikan pin sebagai output, sehingga relay tidak berbunyi klik walau sesaat ketika Arduino mulai. Kita memakai histeresis supaya kipas tidak terlalu sering menyala-mati, sedangkan lampu tetap menyala sampai timer PIR habis.
Sketch lengkap (Arduino Uno)
Aturan terpenting di kode rumah pintar adalah tidak ada modul yang menunggu modul lain. Kalau kamu menahan pintu tetap terbuka selama 5 detik dengan delay(5000), alarm gas tidak akan bekerja dan PIR tidak akan terbaca selama waktu itu. Karena itu setiap modul kita taruh di fungsinya sendiri, dan loop() memanggil fungsi-fungsi ini satu per satu ratusan kali per detik. Semua yang berkaitan dengan waktu diukur dengan millis(), dan keadaan setiap modul disimpan di variabel seperti lightOn, fanOn, doorOpen, dan alarmOn. Semua pengaturan ada di bagian atas kode sebagai konstanta, jadi kamu tidak perlu mengubek-ubek kode untuk mengganti satu ambang. Logika di balik pendekatan ini bisa kamu temukan di artikel millis() vs delay(). Untuk meng-compile kodenya, instal library MFRC522, DHT sensor library dari Adafruit, dan LiquidCrystal I2C dari Frank de Brabander lewat Library Manager, dan instal semua dependensinya ketika diminta. Servo, SPI, dan Wire sudah ikut dengan Arduino IDE.
1#include <SPI.h>
2#include <MFRC522.h>
3#include <Servo.h>
4#include <DHT.h>
5#include <Wire.h>
6#include <LiquidCrystal_I2C.h>
7
8// Pinler / Pins
9const byte PIR_PIN = 2, FLAME_PIN = 3, DHT_PIN = 4, BUZZER_PIN = 5, DOOR_PIN = 6;
10const byte LAMP_RELAY = 7, FAN_RELAY = 8, RST_PIN = 9, SS_PIN = 10;
11const byte GAS_PIN = A0, LDR_PIN = A1, WINDOW_PIN = A2;
12
13// Ayarlar / Settings
14const byte RELAY_ON = LOW, RELAY_OFF = HIGH; // aktif LOW röle / active-LOW relay
15const byte FLAME_ACTIVE = LOW; // alev görünce DO LOW olur / DO goes LOW on flame
16const int GAS_LIMIT = 400; // temiz havaya göre ayarla / tune in clean air
17const int DARK_LIMIT = 300; // bunun altı karanlık / below this is dark
18const float FAN_ON = 28.0, FAN_OFF = 26.0; // fan histerezisi (°C) / fan hysteresis (°C)
19const unsigned long LIGHT_MS = 20000; // son hareketten sonra ışık / light after last motion
20const unsigned long DOOR_MS = 5000; // kapı açık kalma süresi / door open time
21const unsigned long WARMUP_MS = 60000; // MQ-2 ve PIR ısınması / MQ-2 and PIR warm-up
22
23const byte CARDS[][4] = { // yetkili kart UID'leri / authorised card UIDs
24 {0xA1, 0xB2, 0xC3, 0xD4},
25 {0x12, 0x34, 0x56, 0x78}
26};
27
28MFRC522 rfid(SS_PIN, RST_PIN);
29Servo door, window;
30DHT dht(DHT_PIN, DHT11);
31LiquidCrystal_I2C lcd(0x27, 16, 2);
32
33float tempC = 0, hum = 0;
34int gas = 0;
35bool lightOn = false, fanOn = false, doorOpen = false, alarmOn = false;
36unsigned long lastMotion = 0, doorAt = 0, lastDht = 0, lastLcd = 0, beepUntil = 0;
37
38void setup() {
39 Serial.begin(9600);
40 digitalWrite(LAMP_RELAY, RELAY_OFF); pinMode(LAMP_RELAY, OUTPUT); // açılışta kapalı / off at boot
41 digitalWrite(FAN_RELAY, RELAY_OFF); pinMode(FAN_RELAY, OUTPUT);
42 pinMode(PIR_PIN, INPUT);
43 pinMode(FLAME_PIN, INPUT);
44 pinMode(BUZZER_PIN, OUTPUT);
45 door.write(0); door.attach(DOOR_PIN); // önce açı, sonra attach / angle first, then attach
46 window.write(0); window.attach(WINDOW_PIN);
47 dht.begin();
48 SPI.begin();
49 rfid.PCD_Init();
50 lcd.init();
51 lcd.backlight();
52 lcd.print(F("BlueGrays Ev"));
53}
54
55void loop() {
56 unsigned long now = millis();
57 handleLight(now);
58 handleClimate(now);
59 handleSafety(now);
60 handleDoor(now);
61 bool beep = (long)(beepUntil - now) > 0;
62 digitalWrite(BUZZER_PIN, beep || (alarmOn && (now / 250) % 2)); // alarmda kesik bip / pulsed beep on alarm
63 updateLcd(now);
64}
65
66// 1) Hareketle ışık / motion light
67void handleLight(unsigned long now) {
68 if (now < WARMUP_MS) return; // PIR ısınıyor / PIR warming up
69 if (digitalRead(PIR_PIN) == HIGH) {
70 lastMotion = now;
71 if (analogRead(LDR_PIN) < DARK_LIMIT) lightOn = true; // yalnız karanlıkta yak / only when dark
72 }
73 if (lightOn && now - lastMotion > LIGHT_MS) lightOn = false;
74 digitalWrite(LAMP_RELAY, lightOn ? RELAY_ON : RELAY_OFF);
75}
76
77// 2) Sıcaklık ve fan / temperature and fan
78void handleClimate(unsigned long now) {
79 if (now - lastDht < 2000) return; // DHT11'i sık okuma / don't read DHT11 too often
80 lastDht = now;
81 float t = dht.readTemperature();
82 float h = dht.readHumidity();
83 if (isnan(t) || isnan(h)) return; // okuma hatası / read error
84 tempC = t;
85 hum = h;
86 if (tempC >= FAN_ON) fanOn = true;
87 if (tempC <= FAN_OFF) fanOn = false;
88 digitalWrite(FAN_RELAY, fanOn ? RELAY_ON : RELAY_OFF);
89}
90
91// 3) Gaz ve yangın / gas and fire
92void handleSafety(unsigned long now) {
93 gas = analogRead(GAS_PIN);
94 bool gasAlarm = now > WARMUP_MS && gas > GAS_LIMIT;
95 bool fire = digitalRead(FLAME_PIN) == FLAME_ACTIVE;
96 alarmOn = gasAlarm || fire;
97 window.write(gasAlarm && !fire ? 90 : 0); // gazda aç, yangında kapalı tut / open on gas, shut on fire
98}
99
100// 4) RFID kapı / RFID door
101void handleDoor(unsigned long now) {
102 if (doorOpen && now - doorAt > DOOR_MS) {
103 door.write(0); // süre dolunca kapat / close when time is up
104 doorOpen = false;
105 }
106 if (!rfid.PICC_IsNewCardPresent() || !rfid.PICC_ReadCardSerial()) return;
107 Serial.print(F("UID:")); // yeni kartın UID'sini öğren / learn a new card's UID
108 for (byte i = 0; i < rfid.uid.size; i++) {
109 Serial.print(' ');
110 Serial.print(rfid.uid.uidByte[i], HEX);
111 }
112 Serial.println();
113 if (isAllowed(rfid.uid.uidByte)) {
114 door.write(90);
115 doorOpen = true;
116 doorAt = now;
117 beepUntil = now + 100; // kısa bip: hoş geldin / short beep: welcome
118 } else {
119 beepUntil = now + 800; // uzun bip: yetkisiz kart / long beep: unknown card
120 }
121 rfid.PICC_HaltA();
122}
123
124bool isAllowed(const byte *uid) {
125 for (byte i = 0; i < sizeof(CARDS) / 4; i++) {
126 if (memcmp(uid, CARDS[i], 4) == 0) return true;
127 }
128 return false;
129}
130
131// 5) Ekran / display
132void updateLcd(unsigned long now) {
133 if (now - lastLcd < 1000) return;
134 lastLcd = now;
135 lcd.setCursor(0, 0);
136 lcd.print(F("T:"));
137 lcd.print(tempC, 0);
138 lcd.print(F("C Nem:%"));
139 lcd.print(hum, 0);
140 lcd.print(F(" "));
141 lcd.setCursor(0, 1);
142 if (alarmOn) {
143 lcd.print(F("!! ALARM !! "));
144 } else if (doorOpen) {
145 lcd.print(F("Hos geldin! "));
146 } else {
147 lcd.print(F("Gaz:"));
148 lcd.print(gas);
149 lcd.print(F(" "));
150 }
151}| Fungsi | Tugas | Seberapa sering? |
|---|---|---|
| handleLight() (lampu) | Menyalakan relay lampu berdasarkan PIR dan LDR, lalu mematikannya setelah 20 detik tanpa gerakan | Setiap loop (kecuali 60 detik pertama) |
| handleClimate() (iklim) | Membaca DHT11 dan mengendalikan kipas dengan histeresis 28/26 °C | Setiap 2 detik |
| handleSafety() (keamanan) | Membaca MQ-2 dan sensor api, lalu mengatur alarm dan jendela | Setiap loop |
| handleDoor() (pintu) | Membaca kartu, menampilkan UID di Serial Monitor, membuka dan menutup pintu | Setiap loop |
| updateLcd() (layar) | Menampilkan suhu, kelembapan, pembacaan gas, atau pesan status | Sekali per detik |
| Baris buzzer di dalam loop() | Menghasilkan bunyi bip kartu dan suara alarm yang berdenyut | Setiap loop |
Setelah di-compile, kode ini memakai sekitar 38% memori program dan 28% RAM Uno, jadi memorinya masih tersisa, tapi dari pin-pinnya hanya A3 yang masih kosong. Kamu bisa menghubungkan tombol atau sensor hujan ke A3; untuk lebih dari itu kamu perlu pindah ke Arduino Mega atau ESP32. Menaruh teks tetap di dalam F() adalah cara termudah untuk menekan pemakaian RAM.
Kendali lewat ponsel: web server ESP32

Uno tidak punya Wi-Fi; cara termudah untuk mengendalikan rumah pintar dari ponsel adalah mengganti otaknya dengan ESP32. Kode di bawah menghubungkan ESP32 ke jaringan rumahmu dan menjalankan web server kecil. Dengan ponsel di jaringan Wi-Fi yang sama, buka alamat IP yang tampil di Serial Monitor di browser, dan kamu akan melihat empat tombol besar untuk lampu, kipas, pintu, dan jendela, plus suhu, kelembapan, dan pembacaan gas terkini; halamannya memuat ulang sendiri setiap 10 detik. Setiap tombol mengirim permintaan singkat ke ESP32 yang menyebut perangkat mana yang harus diubah; ESP32 mengganti keadaannya lalu mengarahkanmu kembali ke halaman utama. Untuk servo, instal library ESP32Servo dari Library Manager, karena library Servo standar tidak bekerja di ESP32.
1#include <WiFi.h>
2#include <WebServer.h>
3#include <ESP32Servo.h>
4#include <DHT.h>
5
6const char* ssid = "AgAdi"; // Wi-Fi adın / your Wi-Fi name
7const char* password = "Sifre123"; // Wi-Fi şifren / your Wi-Fi password
8
9const int LAMP_RELAY = 26, FAN_RELAY = 27;
10const int DOOR_PIN = 32, WINDOW_PIN = 33;
11const int DHT_PIN = 13, GAS_PIN = 34; // GPIO 34: ADC1, bölücüyle / ADC1, through a divider
12const int RELAY_ON = LOW, RELAY_OFF = HIGH; // aktif LOW röle / active-LOW relay
13
14WebServer server(80);
15Servo door, window;
16DHT dht(DHT_PIN, DHT11);
17
18bool lamp = false, fan = false, doorOpen = false, windowOpen = false;
19float tempC = NAN, hum = NAN;
20unsigned long lastDht = 0;
21
22void apply() { // durumu donanıma uygula / push the state to the hardware
23 digitalWrite(LAMP_RELAY, lamp ? RELAY_ON : RELAY_OFF);
24 digitalWrite(FAN_RELAY, fan ? RELAY_ON : RELAY_OFF);
25 door.write(doorOpen ? 90 : 0);
26 window.write(windowOpen ? 90 : 0);
27}
28
29String button(const char* id, const char* label, bool on) {
30 return String("<a class='b ") + (on ? "on" : "off") + "' href='/set?d=" + id +
31 "&v=" + (on ? "0" : "1") + "'>" + label + (on ? ": ON" : ": OFF") + "</a>";
32}
33
34void handleRoot() {
35 String html = "<!DOCTYPE html><html><head><meta charset='utf-8'>"
36 "<meta name='viewport' content='width=device-width,initial-scale=1'>"
37 "<meta http-equiv='refresh' content='10'><title>BlueGrays Ev</title>"
38 "<style>body{font-family:sans-serif;text-align:center}"
39 ".b{display:block;margin:12px auto;padding:18px;max-width:320px;border-radius:10px;"
40 "color:#fff;text-decoration:none;font-size:20px}"
41 ".on{background:#2e7d32}.off{background:#607d8b}</style></head><body>"
42 "<h2>BlueGrays Akıllı Ev</h2>";
43 html += "<p>" + String(tempC, 1) + " °C | %" + String(hum, 0) +
44 " | Gaz/Gas: " + String(analogRead(GAS_PIN)) + "</p>";
45 html += button("lamp", "Lamba / Lamp", lamp);
46 html += button("fan", "Fan", fan);
47 html += button("door", "Kapı / Door", doorOpen);
48 html += button("window", "Pencere / Window", windowOpen);
49 html += "</body></html>";
50 server.send(200, "text/html", html);
51}
52
53void handleSet() { // /set?d=lamp&v=1
54 String d = server.arg("d");
55 bool v = server.arg("v") == "1";
56 if (d == "lamp") lamp = v;
57 else if (d == "fan") fan = v;
58 else if (d == "door") doorOpen = v;
59 else if (d == "window") windowOpen = v;
60 apply();
61 server.sendHeader("Location", "/"); // ana sayfaya dön / back to the main page
62 server.send(303);
63}
64
65void setup() {
66 Serial.begin(115200);
67 door.attach(DOOR_PIN, 500, 2400);
68 window.attach(WINDOW_PIN, 500, 2400);
69 pinMode(LAMP_RELAY, OUTPUT);
70 pinMode(FAN_RELAY, OUTPUT);
71 apply(); // her şey kapalı başlar / everything starts off
72 dht.begin();
73 WiFi.begin(ssid, password);
74 while (WiFi.status() != WL_CONNECTED) {
75 delay(500);
76 Serial.print('.');
77 }
78 Serial.println();
79 Serial.println(WiFi.localIP()); // bu adresi telefonda aç / open this address on your phone
80 server.on("/", handleRoot);
81 server.on("/set", handleSet);
82 server.begin();
83}
84
85void loop() {
86 server.handleClient();
87 if (millis() - lastDht > 2000) { // 2 sn'de bir ölç / measure every 2 s
88 lastDht = millis();
89 float t = dht.readTemperature();
90 float h = dht.readHumidity();
91 if (!isnan(t) && !isnan(h)) {
92 tempC = t;
93 hum = h;
94 }
95 }
96}Kode ini hanya berisi bagian yang kamu kendalikan dari jauh. Fungsi handleLight(), handleSafety(), dan handleDoor() dari sketch Uno juga bisa kamu pindahkan ke sini: ganti nomor pin sesuai kolom ESP32 di tabel, pakai ESP32Servo sebagai pengganti Servo, dan ukur ulang ambang GAS_LIMIT dan DARK_LIMIT karena ADC ESP32 mengembalikan nilai dari 0 sampai 4095. Halamannya tidak memakai kata sandi, jadi siapa pun di jaringan rumahmu bisa membuka pintunya; menambahkan kata sandi sederhana dengan fungsi authenticate() dari library WebServer adalah kebiasaan yang baik. Untuk panel yang diperbarui secara real time, lihat artikel WebSocket ESP32.
Kendali dari mana saja dengan Blynk
Web server ESP32 hanya bisa dijangkau dari jaringan yang sama. Kalau kamu juga ingin mengendalikannya dari luar rumah lewat data seluler, platform cloud seperti Blynk IoT memudahkannya: antarmukanya kamu susun dengan drag and drop di aplikasi ponsel, dan ESP32 terhubung ke server Blynk. Buat template di Blynk.Cloud, tambahkan tiga datastream bernama V0 (integer, 0–1, lampu), V1 (double, suhu), dan V2 (double, kelembapan), tambahkan perangkat, lalu tempel Template ID, Template Name, dan Auth Token yang diberikan di bagian atas kode. Di aplikasinya, cukup tautkan sebuah Switch ke V0 dan masing-masing satu Gauge ke V1 dan V2. Paket gratisnya membatasi jumlah perangkat, datastream, dan pesan per bulan, karena itulah data sensor kita kirim setiap lima detik, bukan setiap detik. Pengaturan lengkapnya ada di panduan Blynk IoT dengan ESP32.
1#define BLYNK_TEMPLATE_ID "TMPLxxxxxxx" // Blynk konsolundan kopyala / copy from the Blynk console
2#define BLYNK_TEMPLATE_NAME "Akilli Ev"
3#define BLYNK_AUTH_TOKEN "TokenBuraya"
4
5#include <WiFi.h>
6#include <BlynkSimpleEsp32.h>
7#include <DHT.h>
8
9const int LAMP_RELAY = 26; // aktif LOW röle / active-LOW relay
10DHT dht(13, DHT11);
11BlynkTimer timer;
12
13BLYNK_WRITE(V0) { // uygulamadaki anahtar / switch widget in the app
14 digitalWrite(LAMP_RELAY, param.asInt() ? LOW : HIGH);
15}
16
17BLYNK_CONNECTED() {
18 Blynk.syncVirtual(V0); // bağlanınca son durumu al / restore the last state
19}
20
21void sendSensors() {
22 float t = dht.readTemperature();
23 float h = dht.readHumidity();
24 if (isnan(t) || isnan(h)) return;
25 Blynk.virtualWrite(V1, t); // sıcaklık / temperature
26 Blynk.virtualWrite(V2, h); // nem / humidity
27}
28
29void setup() {
30 pinMode(LAMP_RELAY, OUTPUT);
31 digitalWrite(LAMP_RELAY, HIGH); // açılışta kapalı / off at boot
32 dht.begin();
33 Blynk.begin(BLYNK_AUTH_TOKEN, "AgAdi", "Sifre123");
34 timer.setInterval(5000L, sendSensors); // 5 sn'de bir: mesaj kotasını korur / every 5 s saves quota
35}
36
37void loop() {
38 Blynk.run();
39 timer.run();
40}Metode kendali mana yang sebaiknya dipilih?
| Metode | Yang dibutuhkan | Dari luar rumah | Tingkat kesulitan | Paling cocok untuk |
|---|---|---|---|---|
| Web server ESP32 | ESP32 dan Wi-Fi rumah | Tidak, hanya jaringan yang sama | Sedang | Presentasi sekolah, demo tanpa internet, kode yang sepenuhnya milikmu |
| Blynk IoT | ESP32, internet, dan akun Blynk | Ya | Mudah | Antarmuka siap pakai, grafik, dan notifikasi |
| Bluetooth (HC-05) | Uno, HC-05, dan aplikasi Android | Tidak, sekitar 10 m | Mudah | Tetap memakai Uno (tidak bisa dengan iPhone) |
| Bot Telegram | ESP32 dan internet | Ya | Sedang | Notifikasi alarm dan perintah singkat |
| MQTT + Home Assistant | ESP32 dan server lokal (misalnya Raspberry Pi) | Ya, perlu diatur dulu | Mahir | Otomasi rumah sungguhan |
Untuk presentasi sekolah, web server ESP32 adalah pilihan paling aman: tidak bergantung pada internet atau cloud, dan tetap bekerja di jaringannya sendiri meskipun di aula tidak ada Wi-Fi. Kalau kamu ingin tetap memakai Uno dan hanya menambahkan Bluetooth, kamu bisa membuat aplikasi Android sendiri dengan App Inventor; tapi karena pin Uno sudah habis, kamu harus mengorbankan LCD atau servo jendela untuk memberi tempat bagi HC-05. Kamu bisa menerima pesan di ponsel ketika alarm berbunyi dengan bot Telegram ESP32, dan menghubungkan rumah ke perangkat sungguhan dengan MQTT dan Home Assistant.
Rumah pintar dengan Raspberry Pi Pico
Sistem yang sama juga bisa kamu buat di MicroPython dengan Raspberry Pi Pico, dan Pico W yang punya Wi-Fi bisa dikendalikan dari ponsel persis seperti ESP32 (lihat web server Pico W). Karena Pico bekerja di 3,3 V, aturan ESP32 juga berlaku di sini: beri daya pembagi LDR dari 3V3, turunkan output analog 5 V dengan pembagi tegangan, dan pilih modul relay yang bisa dipicu di 3,3 V. Input analognya hanya GP26, GP27, dan GP28. Kode di bawah adalah versi MicroPython dari modul lampu yang menyala karena gerakan:
1from machine import Pin, ADC
2import time
3
4pir = Pin(15, Pin.IN) # PIR OUT (3,3 V çıkış / 3.3 V output)
5ldr = ADC(26) # GP26: bölücü 3V3'ten / divider fed from 3V3
6relay = Pin(14, Pin.OUT, value=1) # aktif LOW röle, kapalı başla / active-LOW relay, start off
7
8LIGHT_MS = 20000 # son hareketten sonra ışık / light after last motion
9DARK = 20000 # bunun altı karanlık / below this is dark
10last = time.ticks_ms()
11on = False
12
13while True:
14 now = time.ticks_ms()
15 if pir.value():
16 last = now
17 if ldr.read_u16() < DARK: # yalnız karanlıkta yak / only when dark
18 on = True
19 if on and time.ticks_diff(now, last) > LIGHT_MS:
20 on = False
21 relay.value(0 if on else 1)
22 time.sleep_ms(50)Tips untuk presentasi sekolahmu
- Mulai dari masalah: jelaskan masalah nyata dalam satu kalimat, misalnya “lampu yang lupa dimatikan di rumah kosong, kebocoran gas yang tidak disadari siapa pun, orang tua yang sering kehilangan kunci”, lalu tunjukkan bagaimana maketmu menjawabnya.
- Siapkan diagram blok: sensor di kiri, Arduino di tengah, dan aktuator di kanan; beri label aturan pada panah-panahnya (“gelap + gerakan → lampu”). Juri tidak akan membaca kodemu, tapi mereka akan mengingat diagram ini.
- Susun skenario demo langsung: pindai kartu dan tunjukkan pintu yang terbuka, lambaikan tangan di depan PIR, dekatkan kapas yang dibasahi alkohol gosok ke MQ-2 (alkohol juga memicu sensor ini), dan hangatkan DHT11 dengan jarimu. Batasi setiap demo 10–20 detik.
- Tanpa api terbuka: jangan menyalakan korek api atau lilin di dalam maket kardus. Kebanyakan sensor api juga bereaksi terhadap cahaya inframerah remote TV yang didekatkan; uji dulu sebelumnya dan pakai cara itu ketika demo.
- Sesuaikan ambang dengan ruangan: kalau suhu aula hari itu 22 °C, menunggu 28 °C akan merusak demo kipas; atur FAN_ON 2–3 derajat di atas suhu ruangan supaya kipas menyala ketika kamu menghangatkan sensor dengan jari.
- Ukur dan pakai angka: misalnya, catat berapa menit lampu menyala dalam sehari dengan dan tanpa PIR, lalu sampaikan penghematannya dalam persen. Hasil dengan angka jauh lebih kuat daripada sekadar bilang “berhasil”.
- Punya rencana cadangan: rekam video sistem yang sedang bekerja, bawa kabel, servo, dan adaptor cadangan, dan tulis nomor kartu serta pengaturan Wi-Fi di selembar kertas.
- Siap menjawab pertanyaan juri: untuk pertanyaan “Bagaimana cara kerjanya di rumah sungguhan?”, siapkan jawaban singkat soal keamanan listrik PLN, detektor bersertifikat, keamanan RFID, dan apa yang terjadi pada pintu ketika listrik padam.
Kesalahan umum dan cara memperbaikinya
| Gejala | Kemungkinan penyebab | Solusi |
|---|---|---|
| Arduino reset atau LCD kacau ketika servo bergerak | Servo dan relay diberi daya dari pin 5V Arduino | Adaptor 5 V 2–3 A terpisah, GND bersama, kapasitor 470–1000 µF di catu daya servo |
| Relay bekerja terbalik dan menyala ketika dinyalakan | Modulnya aktif LOW | Tukar nilai RELAY_ON dan RELAY_OFF |
| Alarm berbunyi setiap kali dinyalakan | MQ-2 sedang pemanasan dan PIR sedang mempelajari lingkungannya | Pertahankan jeda WARMUP_MS; biarkan MQ-2 menyala lama sebelum pemakaian pertama |
| Lampu menyala di siang hari atau mati lalu langsung menyala lagi | DARK_LIMIT salah atau LDR terkena cahaya lampu | Atur ambang dari pembacaan di Serial Monitor dan pindahkan LDR ke dinding luar |
| Kartu tidak terbaca | Pengkabelan RC522 salah atau modul dihubungkan ke 5 V | Cek pin SPI dan uji modul dengan contoh DumpInfo |
| DHT11 mengembalikan nan | Kabel DATA di pin yang salah atau sensor tanpa modul tidak punya resistor pull-up | Cek pin, pakai versi modul, atau tambahkan 10 kΩ antara DATA dan VCC |
| Servo sesekali bergetar | Catu daya lemah; interrupt berhenti sebentar ketika DHT11 dibaca | Perbaiki catu daya; kalau perlu, detach() servo setelah selesai bergerak |
| Di ESP32 pembacaan gas selalu 0 atau 4095 | Pin ADC2 bentrok dengan Wi-Fi atau tidak ada pembagi tegangan | Pakai pin ADC1 seperti GPIO 34 atau 35 dan pembagi tegangan |
| Ponsel tidak bisa membuka halaman ESP32 | Ponsel ada di jaringan tamu atau data seluler, atau jaringannya 5 GHz | Bergabung ke jaringan 2,4 GHz yang sama dan ambil alamat IP dari Serial Monitor |
Proyek rumah pintar Arduino menggabungkan pembacaan sensor, pengambilan keputusan, penggerakan motor dan relay, perencanaan daya, dan kendali nirkabel dalam satu rakitan, sehingga menjadi topik yang bagus untuk dipelajari sekaligus dipresentasikan. Mulailah dari satu modul, uji setiap langkah, dan kembangkan sistemnya sedikit demi sedikit. Di aplikasi BlueGrays kamu akan menemukan proyek Lampu Tangga dan Koridor Pintar, Lampu Pintar dengan PIR dan LDR, Alarm Sensor Api dan Gas, Kunci Pintu RFID, dan web server ESP32 langkah demi langkah, lengkap dengan skema rangkaian dan kode.
Pertanyaan umum
Apa saja yang kubutuhkan untuk membuat proyek rumah pintar Arduino?
Untuk maket dasar, cukup Arduino Uno atau ESP32, sensor gerak PIR, LDR, sensor gas MQ-2, sensor api, DHT11, modul RFID RC522, dua servo SG90, modul relay 2 kanal, buzzer, dan LCD I2C. Tambahkan breadboard, kabel jumper, adaptor daya 5 V 2–3 A, dan bahan untuk membuat maket. Kebanyakan modulnya murah; board, layar, adaptor, dan maketnya sendiri yang memakan sebagian besar anggaran.
Lebih baik Arduino atau ESP32 untuk proyek rumah pintar?
Kalau tidak butuh kendali lewat ponsel, Arduino Uno lebih mudah: langsung bekerja dengan modul 5 V dan kebanyakan contoh ditulis untuknya. Pilih ESP32 kalau kamu butuh kendali Wi-Fi dari ponsel, notifikasi, atau pin yang lebih banyak, tapi karena pin-pinnya bekerja di 3,3 V, kamu perlu lebih hati-hati dengan modul relay dan sensor analog 5 V.
Bagaimana cara mengendalikan rumah pintar Arduino dari ponsel?
Cara termudah adalah memakai ESP32 dan menyiapkan web server; setelah itu kamu bisa mengendalikan lampu, kipas, dan pintu dengan tombol di browser ponsel yang terhubung ke jaringan Wi-Fi yang sama. Untuk akses dari luar rumah, kamu bisa memakai aplikasi cloud seperti Blynk IoT, atau kalau ingin tetap memakai Arduino Uno, modul Bluetooth HC-05 dan aplikasi Android.
Bahan apa yang paling bagus untuk maket rumah pintar?
Bahan yang paling praktis adalah foam board atau PVC foam board 5 mm; bisa dipotong dengan cutter dan direkatkan dengan lem tembak. Untuk badan yang lebih kokoh, kamu bisa memakai MDF 3–4 mm. Alas berukuran sekitar 50×40 cm, atap yang bisa dilepas, dan kompartemen teknis terpisah untuk elektronik membuat pekerjaannya jauh lebih mudah.
Bisakah Arduino menyalakan dan mematikan lampu listrik PLN?
Bisa, dengan modul relay 5 V yang memisahkan rangkaian listrik PLN secara elektris dari Arduino. Tapi tegangan listrik PLN bisa mematikan: sambungkan hanya ketika steker sudah dicabut, taruh rangkaiannya di kotak tertutup yang terisolasi, dan jangan pernah mengerjakannya di proyek siswa tanpa pengawasan orang dewasa. Untuk maket, lampu 5 V atau 12 V sudah cukup.
Apakah rumah pintar Arduino proyek yang bagus untuk lomba sains?
Rumah pintar adalah topik yang sangat umum, jadi maket yang berfungsi saja sering kali belum cukup. Kalau proyekmu dikaitkan dengan pertanyaan penelitian yang bisa diukur, misalnya berapa banyak energi yang dihemat oleh lampu yang menyala karena gerakan atau seberapa cepat alarm gas merespons, proyek itu jadi jauh lebih kuat di mata juri.
Proyek untuk dibuat setelah membaca ini
Lihat semua proyek
Suhu dan Kelembapan dengan DHT11
Seberapa hangat kamarmu, dan apakah udaranya lembap atau kering? Sensor DHT11 mengukur suhu dan kelembapan, dan Arduino menulis nilainya di layar LCD dua baris, diperbarui setiap beberapa detik. Jika

Lampu Tangga dan Koridor Pintar
Injak tangga atau masuk ke lorong, dan lampu menyala satu per satu ke arah kamu berjalan. Ada sensor jarak di setiap ujung; sensor mana pun yang kamu lewati, delapan LED menyala satu per satu dari uju

Lampu Pintar ESP32 (PIR + LDR + Relay + OLED)
Ubah lorong, kamar mandi, atau gudangmu menjadi lampu pintar dengan ESP32! Dengan sensor gerak PIR, sensor cahaya LDR, dan modul relay, kita membuat skenario klasik "lampu menyala ketika ada gerakan dalam gelap"; jika sudah terang, gerakan TIDAK menyalakan lampu, jadi energi hemat di siang hari. Lampu menyala 30 detik; jika gerakan berlanjut, timer diulang. OLED SSD1306 menampilkan status dengan font besar (NYALA / SIANG / MENUNGGU) dan hitung mundur.

Bel Pintu dan Lampu dengan Sensor Gerak
Ketika ada orang datang ke pintumu, kamu sudah tahu bahkan sebelum ia membunyikan bel. Begitu sensor gerak melihat seseorang, LED menyala dan buzzer memainkan bunyi bel tiga nada dari tinggi ke rendah

Alarm Sensor Api dan Gas
Penjaga kecil yang langsung memperingatkanmu ketika ada gas bocor atau nyala api di suatu tempat. Sensor gas mengawasi gas di udara dan sensor api mengawasi cahaya api; selama semuanya aman LED hijau

Kunci Pintu RFID ESP32 (RC522 + Servo + OLED + Buzzer + LED)
Kita membuat kunci pintu pintar dengan ESP32, modul RFID RC522, motor servo SG90, layar OLED SSD1306, buzzer aktif, dan 2 LED. Ketika sebuah kartu dipindai, UID-nya dibandingkan dengan daftar kartu resmi yang disimpan di kode; jika resmi, motor servo berputar untuk membuka kunci (LED hijau + 2 bunyi bip pendek), dan pintu otomatis terkunci lagi setelah 5 detik. Untuk kartu tidak resmi, LED merah menyala, peringatan diberikan dengan 3 bunyi bip cepat, dan UID yang terbaca ditampilkan di layar.

Menyalakan Bohlam 220V dengan Remote Control
Nyalakan dan matikan bohlam sungguhan di rumahmu dengan remote TV, tanpa beranjak dari sofa. Arduino membaca sinyal cahaya tak terlihat dari remote; tombol power membuat relay berbunyi klik dan menyal

Web Server Asinkron ESP32 (dengan Tampilan IP di LCD)
Di proyek ini, kita mengubah ESP32 menjadi web server asinkron yang bisa kamu kendalikan dari ponsel atau komputer di jaringan Wi-Fi yang sama. Berkat library ESPAsyncWebServer, server bisa memproses beberapa permintaan bersamaan (berbeda dengan WebServer.h klasik, yang memblokir pada satu permintaan). Kamu bisa membuka alamat IP ESP32 di browser dan mengklik tombol ON/OFF (rute /on dan /off) untuk menyalakan dan mematikan LED yang tersambung ke GPIO 5.
Artikel lainnya
Aplikasi BlueGrays
Rakit rangkaian ini langkah demi langkah di ponselmu
Skema pengkabelan, kode, dan daftar komponen dalam satu layar. 200+ proyek Arduino, ESP32, dan Pico siap dibuat.
Pindai dengan ponselmu
Arahkan kamera ke kode ini dan toko aplikasi di ponselmu akan terbuka.
atau buka toko aplikasi

