
Ingin tahu bagaimana cara membuat sistem parkir canggih seperti yang ada di Mobil jaman sekarang? Sekarang kamu bisa membuatnya sendiri dengan mudah menggunakan ESP8266, sensor ultrasonik, LCD I2C 16×2, dan buzzer. Proyek ini memungkinkan kamu untuk menciptakan sistem parkir pintar yang mampu mendeteksi jarak kendaraan dan memberi peringatan otomatis.Jadi, tunggu apa lagi? yuk Buat sistem parkir pintarmu sendiri, tingkatkan kreativitas, dan pelajari dunia mikrokontroler lebih dalam!
Daftar Isi
Komponen
- ESP8266
- Sensor Ultrasonik HC-SR04
- Buzzer
- LCD I2C 16×2
- Kabel Jumper
Diagram Wiring
Wiring Tanpa Trainer Kit Edutic.id dan Menggunakan Trainer Kit Edutic.id


Wiring Tanpa Trainer Kit Edutic.id
Sensor Ultrasonik HC-SR04
- VCC ke 3.3
- GND ke GND
- Trigger ke pin D6 (GPIO12)
- Echo ke pin D5 (GPIO14)
Buzzer
- Positif ke pin D7 (GPIO13)
- Negatif ke GND
LCD I2C 16×2
- SCL ke D1 (GPIO5)
- SDA ke D2 (GPIO4)
- VCC ke 5V
- GND ke GND
Wiring Dengan Trainer Kit Edutic.id
Trainer Kit Edutic.Id
- Buzz ke D7
- TRIG ke D6
- ECHO ke D5
- Jangan Lupa hubungkan pin 5v ke In(yang berada di samping LED merah)
LCD I2C 16×2
- SCL ke D1 (GPIO5)
- SDA ke D2 (GPIO4)
- VCC ke VCC
- GND ke GND
Implementasi
- Install Board ESP8266
- Buka File > Preferences di Arduino IDE.
- Tambahkan URL: http://arduino.esp8266.com/stable/package_esp8266com_index.json di Additional Boards Manager URLs.
- Pilih Tools > Board > Board Manager.
- Masukkan “esp8266” pada kolom pencarian, akan muncul pilihan board esp8266 by ESP8266 Community, untuk versi Board pilih 2.5.2/2.7.4, kemudian klik Install.
- Jika Instalasi benar, akan muncul board Esp8266.
- Pada menu pemilihan board Pilih board NodeMCU 1.0 (ESP-12E Module).
- Install Library LiquidCrystal_I2C
- Silahkan download terlebih dahulu Library LCD I2C, melalui link berikut: https://drive.google.com/drive/folders/1PtOuOhTfvxbggsAxXI6dKRldldp–5pa?usp=sharing
- Setelah di download, file .zip library tidak perlu di ekstrak ya. Tinggal ikuti langkah berikut :
- Pada Arduino IDE, klik Menu Sketch -> Include Library -> Add .ZIP Library…
- Cari file Library yang sudah di Download sebelumnya, lalu pilih dan klik Open.
Kode Program
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <LiquidCrystal_I2C.h>
#define TRIGGER_PIN 12 // D6
#define ECHO_PIN 14 // D5
#define buzzer 13 // D7
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
// Koneksi LCD -> SCL ke D1 dan SDA ke D2
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
LiquidCrystal_I2C lcd(0x27, 16, 2); // Inisialisasi LCD dengan alamat I2C
unsigned long previousMillis = 0; // Variabel untuk menyimpan waktu
bool buzzerState = false; // Status buzzer
void setup() {
Serial.begin(9600);
pinMode(TRIGGER_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(buzzer, OUTPUT);
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for (;;);
}
lcd.begin(16, 2); // Inisialisasi LCD dengan jumlah kolom dan baris
lcd.backlight(); // Menghidupkan lampu latar LCD
delay(2000);
display.clearDisplay();
display.setTextColor(WHITE);
}
void loop() {
long duration, distance;
// Mengirim sinyal ultrasonik
digitalWrite(TRIGGER_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIGGER_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIGGER_PIN, LOW);
// Menghitung durasi dan jarak
duration = pulseIn(ECHO_PIN, HIGH);
distance = (duration / 2) / 29.1; // Menghitung jarak dalam cm
// Menampilkan informasi di OLED
display.clearDisplay();
display.setTextSize(1);
display.setCursor(0, 0);
display.print("Sensor Parkir Mobil");
display.setTextSize(1);
display.setCursor(0, 17);
Serial.println("Jarak: " + String(distance) + " cm");
display.print("Jarak: " + String(distance) + " cm");
// Menampilkan jarak di LCD
lcd.setCursor(0, 0); // Mengatur kursor ke posisi awal LCD
lcd.print("Jarak: ");
lcd.print(distance); // Menampilkan jarak
lcd.print(" cm "); // Menampilkan unit cm (spasi tambahan untuk menghapus karakter lama)
// Mengatur peringatan berdasarkan jarak
if (distance < 20) {
display.setTextSize(3);
display.setCursor(0, 35);
display.print("Hati-hati!");
unsigned long currentMillis = millis();
if (distance >= 12) {
// Jarak 12 cm hingga 20 cm
int buzzerInterval = 500; // Buzzer menyala lebih lama
if (currentMillis - previousMillis >= buzzerInterval) {
previousMillis = currentMillis;
buzzerState = !buzzerState; // Mengubah status buzzer
digitalWrite(buzzer, buzzerState ? HIGH : LOW); // Menghidupkan atau mematikan buzzer
}
} else if (distance >= 10) {
// Jarak 10CM
int buzzerInterval = 300; // Buzzer menyala lebih cepat
if (currentMillis - previousMillis >= buzzerInterval) {
previousMillis = currentMillis;
buzzerState = !buzzerState; // Mengubah status buzzer
digitalWrite(buzzer, buzzerState ? HIGH : LOW); // Menghidupkan atau mematikan buzzer
}
} else if (distance < 9 && distance >= 7) {
// Jarak antara 9 cm hingga 5 cm
int buzzerInterval = 200; // Buzzer menyala lebih cepat
if (currentMillis - previousMillis >= buzzerInterval) {
previousMillis = currentMillis;
buzzerState = !buzzerState; // Mengubah status buzzer
digitalWrite(buzzer, buzzerState ? HIGH : LOW); // Menghidupkan atau mematikan buzzer
}
} else {
// Jarak kurang dari 5 cm
int buzzerInterval = 100; // Buzzer menyala lebih cepat lagi
if (currentMillis - previousMillis >= buzzerInterval) {
previousMillis = currentMillis;
buzzerState = !buzzerState; // Mengubah status buzzer
digitalWrite(buzzer, buzzerState ? HIGH : LOW); // Menghidupkan atau mematikan buzzer
}
}
} else {
digitalWrite(buzzer, LOW); // Mematikan buzzer
display.setTextSize(3);
display.setCursor(0, 35);
display.print("Aman");
}
display.display();
delay(100);
}
Langkah-langkah di Arduino IDE
- Persiapan Arduino IDE: Pastikan sudah menginstal board manager ESP8266 dan library
LiquidCrystal_I2C
. - Koneksi ke ESP8266: Hubungkan ESP8266 ke komputer, pilih board dan port yang sesuai di “Tools” -> “Board” dan “Port”.
- Upload Code: Klik “Upload” untuk mengunggah kode ke ESP8266. Tunggu hingga proses selesai.
Hasil Akhir
Berikut adalah tampilan alat dan bus kecil untuk mengkur jarak yang akan di tampilkan di LCD I2C 16×2


FAQ
Apakah sensor ultrasonik bisa bekerja di semua kondisi cuaca?
Sensor ultrasonik bekerja dengan baik di kondisi normal, tetapi hujan lebat atau angin kencang bisa mengurangi akurasi.
Apa sih yang harus dilakukan jika LCD tidak menampilkan informasi dengan benar?
Periksa koneksi I2C antara LCD dan ESP8266. Pastikan kabel SCL dan SDA terhubung ke pin yang benar dan pastikan alamat I2C yang digunakan pada kode sesuai dengan LCD yang digunakan. Kamu bisa memanfaatkan library I2C scanner untuk memastikan alamat I2C.atau mungkin kabel jumpernya kendor
gimana ya cara menyesuaikan jarak peringatan?
Kamu bisa mengubah batas jarak langsung di kode dengan memodifikasi nilai yang digunakan pada kondisi if
untuk jarak tertentu.yang distance ya
gimana caranya mengurangi bunyi buzzer jika terlalu bising?
Bisa dong,Kamu dapat mengurangi durasi bunyi buzzer dengan menambah interval dalam fungsi millis(), atau menggunakan resistor untuk menurunkan tegangan yang masuk ke buzzer sehingga mengurangi volume suaranya.
Kesimpulan
Setelah menyelesaikan tutorial ini, kamu telah berhasil mengembangkan sistem parkir pintar berbasis mikrokontroler. Seru, bukan? Proyek ini tidak hanya memberikan wawasan baru, tetapi juga membuka banyak peluang untuk bereksperimen lebih jauh dengan sensor dan mikrokontroler. Siapa tahu, proyek kecil ini bisa menjadi langkah awal dari ide-ide kreatif yang lebih besar!Semangat Sobat Edutic
mas bisnya beli dimana?