{"id":574,"date":"2026-10-26T05:38:44","date_gmt":"2026-10-26T05:38:44","guid":{"rendered":"https:\/\/kuliahelektro.org\/?p=574"},"modified":"2026-10-26T05:38:45","modified_gmt":"2026-10-26T05:38:45","slug":"tutorial-esp32-cara-membuat-sistem-pintu-air-otomatis-kontrol-manual-berbasis-sensor-ultrasonik-hc-sr04-motor-servo-layar-lcd-i2c-blynk-iot-pada-wokwi","status":"publish","type":"post","link":"https:\/\/kuliahelektro.org\/?p=574","title":{"rendered":"Tutorial ESP32: Cara Membuat Sistem Pintu Air Otomatis &amp; Kontrol Manual Berbasis Sensor Ultrasonik HC-SR04, Motor Servo, Layar LCD I2C, &amp; Blynk IoT pada WOKWI"},"content":{"rendered":"\n<p>Pada bagian ini akan dibahas pembuatan sistem pengendali pintu air otomatis dan manual (Smart Flood Gate System) berbasis mikrokontroler ESP32, sensor jarak ultrasonik HC-SR04 untuk memantau ketinggian permukaan air, motor servo penggerak pintu air, tombol fisik darurat (hardware button), layar LCD 16&#215;2 I2C, serta platform Blynk IoT pada software simulasi WOKWI. Skematik rangkaian ditunjukkan pada Gambar 1, program Arduino pada Kode 1, dan video pembuatan pada tautan Video 1. Sistem bekerja secara cerdas memantau ketinggian air secara real-time. Jika ketinggian air melewati ambang batas bahaya (tinggi >= 85 cm), sistem secara otomatis membuka pintu air (90 derajat), memicu status bahaya, dan mengirimkan push notification log ke aplikasi Blynk. Selain mode otomatis, pengguna dapat mengontrol buka-tutup pintu air secara manual melalui tombol fisik lokal maupun secara jarak jauh melalui dashboard aplikasi Blynk.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.youtube.com\/watch?v=AivoUyWnb_Y&amp;lc=Ugwg5jtRcxYVByH8lt54AaABAg\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" loading=\"lazy\" width=\"941\" height=\"529\" src=\"https:\/\/kuliahelektro.org\/wp-content\/uploads\/2026\/10\/Screenshot-2026-03-18-192902-edited.png\" alt=\"\" class=\"wp-image-576\" srcset=\"https:\/\/kuliahelektro.org\/wp-content\/uploads\/2026\/10\/Screenshot-2026-03-18-192902-edited.png 941w, https:\/\/kuliahelektro.org\/wp-content\/uploads\/2026\/10\/Screenshot-2026-03-18-192902-edited-300x169.png 300w, https:\/\/kuliahelektro.org\/wp-content\/uploads\/2026\/10\/Screenshot-2026-03-18-192902-edited-768x432.png 768w\" sizes=\"(max-width: 941px) 100vw, 941px\" \/><\/a><\/figure>\n\n\n\n<p class=\"has-text-align-center\"><strong>Gambar 1. Skematik rangkaian sistem<\/strong><\/p>\n\n\n\n<p><strong>List Pin:<\/strong><\/p>\n\n\n\n<ul>\n<li>Sensor Ultrasonik HC-SR04 (Pengukur Ketinggian Air)<br>Trig Pin =&gt; GPIO 5 (trigPin)<br>Echo Pin =&gt; GPIO 18 (echoPin)<br>VCC =&gt; 5V \/ 3.3V<br>GND =&gt; GND<\/li>\n\n\n\n<li>Display LCD 16&#215;2 I2C (Alamat: 0x27)<br>GND =&gt; GND<br>VCC =&gt; 5V \/ 3.3V<br>SDA =&gt; GPIO 21<br>SCL =&gt; GPIO 22<\/li>\n\n\n\n<li>Aktuator Motor Servo &amp; Indikator\/Tombol Lokal<br>Signal Servo (Pintu Air) =&gt; GPIO 12 (servoPin)<br>VCC Servo =&gt; 5V<br>GND Servo =&gt; GND<br>Buzzer Alarm =&gt; GPIO 13 (buzzerPin)<br>Tombol Fisik (Manual Button) =&gt; GPIO 14 (buttonPin &#8211; dengan internal pull-up)<\/li>\n<\/ul>\n\n\n\n<p><strong>List Virtual PIN:<\/strong><\/p>\n\n\n\n<ul>\n<li>V0 =&gt; Status Bahaya Banjir (Integer 0\/1) &#8211; Indikator Widget LED \/ Keadaan Darurat Banjir<\/li>\n\n\n\n<li>V1 =&gt; Tinggi Permukaan Air (Integer dalam cm) &#8211; Widget Gauge \/ Grafik Ketinggian Air Real-Time<\/li>\n\n\n\n<li>V2 =&gt; Status Pintu Air (String) &#8211; Menampilkan Kondisi Posisi Pintu (&#8220;TERBUKA&#8221; atau &#8220;TERTUTUP&#8221;)<\/li>\n\n\n\n<li>V3 =&gt; Status Sistem Keseluruhan (String) &#8211; Menampilkan Keterangan Kondisi (&#8220;AMAN&#8221; atau &#8220;BAHAYA!!&#8221;)<\/li>\n\n\n\n<li>V4 =&gt; Tombol Kontrol Manual &amp; Sinkronisasi Pintu (Integer 0\/1) &#8211; Sakelar Tombol Blynk untuk Membuka\/Menutup Pintu Air Jarak Jauh<\/li>\n<\/ul>\n\n\n\n<p class=\"has-text-align-center\"><strong>Kode Arduino 1. Kode Program<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ ============================= \r\n\/\/ ALFIAN CENTER \r\n\/\/ SUBSCRIBE \r\n\/\/ Pintu Air Otomatis dengan Fitur Manual Control ESP32 &amp; Blynk Menggunakan Servo dan LCD\r\n\/\/ PROGRAM BAKAL AKU KIRIM DENGAN SYARAT DIBAWAH \r\n\/\/ 50 LIKE, 20 KOMEN DAN *WAJIB SUBSCRIBE*\r\n\/\/ PROGRAM DIKIRIM VIA KOMENTAR \r\n\/\/ =============================\r\n\r\n#define BLYNK_TEMPLATE_ID \"TMPL6kPszu55o\"\r\n#define BLYNK_TEMPLATE_NAME \"Pintu Air Otomatis dan Manual\"\r\n#define BLYNK_AUTH_TOKEN \"PfKKFuXcKX6HkzS0cH57PWlN_bbqQd1k\"\r\n\r\n#include &lt;WiFi.h>\r\n#include &lt;BlynkSimpleEsp32.h>\r\n#include &lt;LiquidCrystal_I2C.h>\r\n#include &lt;ESP32Servo.h>\r\n\r\n\/\/ --- KONFIGURASI PIN ---\r\nconst int trigPin = 5;\r\nconst int echoPin = 18;\r\nconst int buzzerPin = 13;\r\nconst int servoPin = 12;\r\nconst int buttonPin = 14; \/\/ Pin Tombol Fisik\r\n\r\n\/\/ --- PARAMETER ---\r\nconst int tinggiMaksimal = 100;\r\nconst int ambangBahaya = 85;\r\nchar auth&#91;] = BLYNK_AUTH_TOKEN;\r\nchar ssid&#91;] = \"Wokwi-GUEST\";\r\nchar pass&#91;] = \"\";\r\n\r\n\/\/ --- OBJEK ---\r\nLiquidCrystal_I2C lcd(0x27, 16, 2);\r\nServo pintuAir;\r\nBlynkTimer timer;\r\n\r\n\/\/ --- VARIABEL KONTROL ---\r\nbool sedangBanjir = false;\r\nbool manualMode = false; \/\/ Status apakah sedang dikontrol manual\r\nint statusPintu = 0;    \/\/ 0 = Tutup, 1 = Buka\r\n\r\n\/\/ Fungsi Kendali Pintu\r\nvoid kendaliPintu(int perintah) {\r\n  if (perintah == 1) {\r\n    pintuAir.write(90);\r\n    statusPintu = 1;\r\n    Blynk.virtualWrite(V2, \"TERBUKA\");\r\n  } else {\r\n    pintuAir.write(0);\r\n    statusPintu = 0;\r\n    Blynk.virtualWrite(V2, \"TERTUTUP\");\r\n  }\r\n}\r\n\r\n\/\/ Handler Tombol dari Aplikasi Blynk (V4)\r\nBLYNK_WRITE(V4) {\r\n  statusPintu = param.asInt();\r\n  manualMode = true; \/\/ Aktifkan mode manual saat tombol Blynk ditekan\r\n  kendaliPintu(statusPintu);\r\n}\r\n\r\nvoid monitoringSistem() {\r\n  \/\/ 1. Baca Sensor Ultrasonik\r\n  digitalWrite(trigPin, LOW);\r\n  delayMicroseconds(2);\r\n  digitalWrite(trigPin, HIGH);\r\n  delayMicroseconds(10);\r\n  digitalWrite(trigPin, LOW);\r\n  long durasi = pulseIn(echoPin, HIGH);\r\n  int jarakSensor = durasi * 0.034 \/ 2;\r\n  int tinggiAir = tinggiMaksimal - jarakSensor;\r\n  if (tinggiAir &lt; 0) tinggiAir = 0;\r\n\r\n  \/\/ 2. Cek Tombol Fisik (Hardware)\r\n  if (digitalRead(buttonPin) == LOW) { \/\/ Jika tombol ditekan\r\n    delay(200); \/\/ Debounce sederhana\r\n    statusPintu = !statusPintu; \/\/ Toggle status\r\n    manualMode = true;\r\n    kendaliPintu(statusPintu);\r\n    Blynk.virtualWrite(V4, statusPintu); \/\/ Sinkronisasi ke aplikasi\r\n  }\r\n\r\n  \/\/ 3. Logika Otomatis (Hanya jalan jika tidak sedang manual atau saat banjir parah)\r\n  if (tinggiAir >= ambangBahaya) {\r\n    if (!sedangBanjir) {\r\n      kendaliPintu(1); \/\/ Paksa buka saat banjir\r\n      Blynk.virtualWrite(V0, 1);\r\n      Blynk.virtualWrite(V3, \"BAHAYA!!\");\r\n      Blynk.virtualWrite(V4, 1);\r\n      Blynk.logEvent(\"peringatan_banjir\", \"WASPADA! Air kritis, pintu dibuka otomatis!\");\r\n      sedangBanjir = true;\r\n      manualMode = false; \/\/ Reset ke auto jika kondisi kritis\r\n    }\r\n  } else {\r\n    if (sedangBanjir) {\r\n      Blynk.virtualWrite(V0, 0);\r\n      Blynk.virtualWrite(V3, \"AMAN\");\r\n      sedangBanjir = false;\r\n    }\r\n    \/\/ Jika tidak banjir dan tidak mode manual, pastikan pintu tertutup\r\n    if (!manualMode &amp;&amp; statusPintu == 1) {\r\n      kendaliPintu(0);\r\n      Blynk.virtualWrite(V4, 0);\r\n    }\r\n  }\r\n\r\n  \/\/ 4. Update LCD &amp; Blynk\r\n  lcd.setCursor(0, 0);\r\n  lcd.print(\"Air: \"); lcd.print(tinggiAir); lcd.print(\"cm   \");\r\n  lcd.setCursor(0, 1);\r\n  lcd.print(sedangBanjir ? \"STAT: BAHAYA!!\" : \"STAT: AMAN    \");\r\n  \r\n  Blynk.virtualWrite(V1, tinggiAir);\r\n}\r\n\r\nvoid setup() {\r\n  Serial.begin(115200);\r\n  lcd.init();\r\n  lcd.backlight();\r\n  \r\n  pinMode(trigPin, OUTPUT);\r\n  pinMode(echoPin, INPUT);\r\n  pinMode(buzzerPin, OUTPUT);\r\n  pinMode(buttonPin, INPUT_PULLUP); \/\/ Gunakan internal pull-up\r\n  \r\n  pintuAir.attach(servoPin);\r\n  pintuAir.write(0);\r\n\r\n  Blynk.begin(auth, ssid, pass);\r\n  timer.setInterval(1000L, monitoringSistem);\r\n}\r\n\r\nvoid loop() {\r\n  Blynk.run();\r\n  timer.run();\r\n}<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.youtube.com\/watch?v=AivoUyWnb_Y&amp;lc=Ugwg5jtRcxYVByH8lt54AaABAg\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"576\" src=\"https:\/\/kuliahelektro.org\/wp-content\/uploads\/2026\/10\/Screenshot-2026-03-18-192902-1024x576.png\" alt=\"\" class=\"wp-image-575\" srcset=\"https:\/\/kuliahelektro.org\/wp-content\/uploads\/2026\/10\/Screenshot-2026-03-18-192902-1024x576.png 1024w, https:\/\/kuliahelektro.org\/wp-content\/uploads\/2026\/10\/Screenshot-2026-03-18-192902-300x169.png 300w, https:\/\/kuliahelektro.org\/wp-content\/uploads\/2026\/10\/Screenshot-2026-03-18-192902-768x432.png 768w, https:\/\/kuliahelektro.org\/wp-content\/uploads\/2026\/10\/Screenshot-2026-03-18-192902-1536x864.png 1536w, https:\/\/kuliahelektro.org\/wp-content\/uploads\/2026\/10\/Screenshot-2026-03-18-192902.png 1919w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p class=\"has-text-align-center\"><strong>Video 1. Video tutorial pembuatan<\/strong><\/p>\n\n\n\n<h1 class=\"wp-block-heading\">TAG:<\/h1>\n\n\n\n<p class=\"has-text-align-left\">pintu air otomatis esp32, smart flood gate iot, pengendali banjir otomatis blynk, sensor ultrasonik hc-sr04 esp32, motor servo pintu air, monitoring ketinggian air blynk, tutorial esp32 blynk, iot mitigasi bencana banjir, pintu air cerdas esp32, koding pintu air otomatis, tombol fisik manual override, ultrasonik ukur tinggi air, status banjir bahaya blynk, virtual pin blynk flood gate, datastream blynk tinggi air, tutorial blynk iot esp32, library esp32servo, gpio 5 18 ultrasonik air, gpio 12 servo pintu air, gpio 14 tombol fisik, proyek iot esp32 mitigasi, tutorial wokwi indonesia, simulasi iot pintu air, pemantauan air jarak jauh, blynk app flood gate, smart city iot esp32, proyek teknik elektro iot, mekatronika sistem kendali air, tugas akhir iot pintu air, skripsi iot flood control, ide proyek esp32 iot, skematik pintu air esp32, diagram rangkaian ultrasonik servo lcd, source code pintu air esp32, program arduino blynk flood, simulasi iot tanpa hardware, platform simulasi wokwi, wokwi esp32 flood gate, blynk auth token esp32, pengendali banjir berbasis iot, telemetry data ultrasonik air, proyek sains iot elektro, portofolio iot esp32, praktikum mikrokontroler esp32, modul esp32 wroom 32, pinout esp32 ultrasonik servo, gpio esp32 sensor servo button, indikator tinggi air blynk, grafik banjir blynk, smart flood control esp32, efisiensi manajemen air, panduan iot pintu air esp32, belajar mikrokontroler online, simulator komponen elektronik, wokwi custom chip esp32, blynk iot platform disaster management, internet of things indonesia, iot smk teknik elektro, iot universitas teknik, prototipe pintu air esp32, alat pendeteksi banjir otomatis, iot smart environment, esp32 arduino ide blynk, tutorial iot pemula, proyek elektro smart environment, panduan lengkap wokwi blynk, sensor hc-sr04 jarak air akurat, sistem peringatan dini banjir, logika ambang batas bahaya air, notifikasi blynk logevent banjir, sistem manajemen air sungai, otomatisasi infrastruktur publik, proyek mekatronika elektro, simulasi hardware pintu air, sistem pintu air esp32, proyek iot populer, kodingan pintu air otomatis, sensor ultrasonik digital esp32, rangkaian hc-sr04 servo dan tombol, tutorial mikrokontroler iot, wawasan teknik elektro, aplikasi iot smart city, pintu air otomatis esp32, koding logika tinggi air 85cm, pemantauan ketinggian air real time, iot flood management system<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pada bagian ini akan dibahas pembuatan sistem pengendali pintu air otomatis dan manual (Smart Flood Gate System) berbasis mikrokontroler ESP32, sensor jarak ultrasonik HC-SR04 untuk memantau ketinggian permukaan air, motor servo penggerak pintu air, tombol fisik darurat (hardware button), layar LCD 16&#215;2 I2C, serta platform Blynk IoT pada software simulasi WOKWI. Skematik rangkaian ditunjukkan pada Gambar 1, program Arduino pada&#8230;<\/p>\n","protected":false},"author":3,"featured_media":575,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"_links":{"self":[{"href":"https:\/\/kuliahelektro.org\/index.php?rest_route=\/wp\/v2\/posts\/574"}],"collection":[{"href":"https:\/\/kuliahelektro.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kuliahelektro.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kuliahelektro.org\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/kuliahelektro.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=574"}],"version-history":[{"count":1,"href":"https:\/\/kuliahelektro.org\/index.php?rest_route=\/wp\/v2\/posts\/574\/revisions"}],"predecessor-version":[{"id":577,"href":"https:\/\/kuliahelektro.org\/index.php?rest_route=\/wp\/v2\/posts\/574\/revisions\/577"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kuliahelektro.org\/index.php?rest_route=\/wp\/v2\/media\/575"}],"wp:attachment":[{"href":"https:\/\/kuliahelektro.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=574"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kuliahelektro.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=574"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kuliahelektro.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=574"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}