Membuat Sensor Parkir Wireless Portable

Sensor parkir atau sensor mundur digunakan untuk membantu pengemudi memarkir kendaraannya.

Sensor ini akan memberitahu pengemudi jarak bagian belakang mobil dengan objek di belakangnya. Bisa tembok, tong, atau mobil lain.

Untuk sensornya biasanya menggunakan sensor jarak jenis ultrasonic atau sonar.

Dan untuk tampilannya, biasanya berupa display jarak dan grafik disertai suara buzzer.

Bahkan yang versi lebih hemat hanya menggunakan buzzer sebagai penanda, semakin cepat bunyi buzzer menandakan jarak yang semakin dekat.

Sensor Parkir Tanpa Kabel

Pada percobaan kali ini, kita akan mencoba membuat sensor parkir, tapi yang berbeda.

Sensor parkir yang akan coba kita buat adalah sensor parkir portable tanpa kabel alias wireless.

Bisa dibawa kemana-mana, dan pemasangannya akan cepat dan mudah.

Alat ini akan menjadi berguna jika suatu saat ada mobil yang akan parkir di tempat sulit, namun belum ada sensor parkirnya. Maka dengan mudah dan cepat bisa menggunakan sensor parkir portable ini.

Perancangan Sistem

Sistem yang akan dibuat terdiri dari 2 bagian

  1. Sensor Jarak, untuk mengukur jarak benda dibelakang mobil
  2. Display & alert, tampilan jarak dan peringatan dengan menggunakan buzzer

Kedua bagian ini akan berkomunikasi menggunakan sinyal WiFi, masing-masing menggunakan Wemos Mini D1, sebagai mikrokontroller dan komunikasinya (WiFi).

Wemos pertama akan

  • menjadi WiFi Akses Point dan Web Server
  • mengambil data dari sensor jarak
  • menjalankan web service yang siap menyediakan data jarak untuk web client

Wemos kedua akan

  • menjadi WiFi client
  • menghubungkan ke Akses Point dari Wemos pertama
  • kemudian dengan http get mengambil data jarak dari server
  • selanjutnya menampilkan jarak di display oled
  • dan memberi peringatan menggunakan suara buzzer

Hardware

Untuk membuat rangkaian ini, diperlukan komponen-komponen sebagai berikut:

  • Wemos Mini D1 (2x)
  • Sensor Jarak Ultrasonic (HC-SR04)
  • OLED Display 128
  • Active buzzer

lain-lain:

  • powerbank (2x)
  • breadboard mini (2x)
  • kabel micro usb (2x)
  • kabel jumper warna-warni secukupnya

Rangkaian Hardware

Berikut rangkaian untuk sensor jarak & webserver

  • Pin D7 Wemos mini dihubungkan dengan Pin Trigger HC-SR04
  • Pin D6 Wemos mini dihubungkan dengan Pin Echo HC-SR04
  • Hubungkan VCC & GND

Berikut rangkaian untuk display

  • Pin D2 ke SDA
  • Pin D1 ke SCL
  • Pin D7 ke Buzzer
  • VCC ke OLED
  • GND ke OLED & Buzzer

Coding

Untuk memprogram Wemos Mini D1, kita menggunakan Arduino Studio.

Jika sebelumnya belum pernah memprogram Wemos Mini D1, berikut langkah-langkahnya

  1. Download & Install Arduino Studio
  2. Instalasi board ESP8266 di Arduino Studio
  3. Install driver
  4. Siap coding

Untuk lebih jelasnya mengenai langkap-langkah instalasi ESP board di Arduino Studio, silahkan buka Langkah Awal IoT – Memprogram ESP8266 di Arduino

Alat yang kita buat ada 2, yang pertama sensor jarak & web server

Code Sensor Jarak & Web Server

Secara sederhananya, dengan code ini, device akan membuat akses point dan menjalankan web server, kemudian menyediakan data jarak yang diambil dari sensor ultrasonic

Berikut codingnya:

/*
  Program  : Wireless Parking Sensor (part 1) Access Point + Web Server + Sensor Jarak
  MCU      : Wemos Mini D1
  Sensor   : Ultrasonic HR-SC04 
  https://ndoware.com
*/

#include 
#include 
#include 

/* pin sensor ultrasonic */
const int trigPin = D7;
const int echoPin = D6;

/* set SSID sensor parkir, tanpa password */
const char *ssid = "SensorParkir";

ESP8266WebServer server(80);

String webHeader1 = ""
                    "Jarak"
                    ""
                    ""
                    ""
                    ""
                    "";
String webFooter = "";

int ukurJarak() {
  long waktuTempuh, jarak;

  digitalWrite(trigPin, HIGH); // kirim sinyal selama 10 micro second
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  waktuTempuh = pulseIn(echoPin, HIGH, 20000); // Tunggu pantulan suara kembali, dengan timeout 20ms (kurang lebih 3m)

  jarak = (waktuTempuh / 2) / 29.1; // Hitung jarak (kecepatan suara di udara kurang lebih 291m/s), dibagi 2 waktu tempuh datang dan kembali

  return jarak;
}

void handleRoot() {             // handle halaman root (http://192.168.4.1/), tampilan dengan HTML/CSS
  int jarak = ukurJarak();
  String s = webHeader1;
  
  if (jarak <= 15)              // membedakan warna background css sesuai jarak
    s += "red;";
  else if (jarak <= 30)
    s += "orange;";
  else
    s += "black;";
    
  s += webHeader2;
  s += "

" + String(jarak) + "

"; s += webFooter; server.send(200, "text/html", s); } void data() { // handle halaman data (http://192.168.4.1/data/), kiriman data saja (tanpa css) server.send(200, "text/html", String(ukurJarak())); } void setup() { delay(1000); Serial.begin(115200); Serial.println(); Serial.print("Configuring access point..."); WiFi.softAP(ssid); IPAddress myIP = WiFi.softAPIP(); Serial.print("AP IP address: "); Serial.println(myIP); server.on("/", handleRoot); server.on("/data", data); server.begin(); Serial.println("HTTP server started"); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); } void loop() { server.handleClient(); }

Code Web Client + Tampilan Jarak + Peringatan

Untuk bagian penerima, dengan program ini akan menjalankan web client yang akan mengambil data jarak dari web server setiap periode tertentu.

Kemudian menampilkan data jarak tersebut di display OLED dan memberi notifikasi jika melewati batas aman menggunakan buzzer.

Berikut codingnya:


/*
  Program  : Wireless Parking Sensor (part 2) Web Client + Oled Display + Buzzer
  MCU      : Wemos Mini D1
  Other    : Oled Display 128, active buzzer
  https://ndoware.com
*/

#include "Wire.h"
#include "Adafruit_GFX.h"
#include "OakOLED.h"
#include 
#include 
#include 
#include 
#include 

#define BUZZPIN D7                // Pin Buzzer

#define CM_ALERT_SOUND 10         // jarak minimal buzzer berbunyi

/* set SSID sensor parkir, tanpa password */
const char *ssid = "SensorParkir";

OakOLED oled;

void displayJarak(int i, int angka) {
  oled.clearDisplay();
  for (int z = 0; z <= i; z++) {
    for (int y = 0; y < 7; y++) {
      oled.drawPixel(z, y, 1);
    }
  }
  oled.setTextSize(6);
  oled.setCursor(10, 16);
  oled.println(String(angka));
  oled.display();
}

void setup() {
  oled.begin();
  oled.setTextSize(6);
  oled.setTextColor(1);
  oled.setCursor(10, 16);

  oled.println("OKE");            // test display
  oled.display();

  Serial.begin(115200);

  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid);
  // Tunggu WiFi terhubung
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
    tone(BUZZPIN, 4978);
    delay(100);
    noTone(BUZZPIN);
  }

  Serial.println();
  Serial.print("Terhubung ke ");
  Serial.println(ssid);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
}

void loop() {

  WiFiClient client;
  HTTPClient http;

  Serial.print("[HTTP] begin...\n");
  if (http.begin(client, "http://192.168.4.1/data")) {  // HTTP

    Serial.print("[HTTP] GET...\n");
    int httpCode = http.GET();
    Serial.println(httpCode);
    if (httpCode > 0) {
      Serial.printf("[HTTP] GET... code: %d\n", httpCode);

      if (httpCode == HTTP_CODE_OK || httpCode == HTTP_CODE_MOVED_PERMANENTLY) {
        String payload = http.getString();
        Serial.println(payload);

        int jarak = payload.toInt();
        int bar = map(jarak, 0, 127, 127, 0);

        displayJarak(bar, jarak);

        if (jarak <= CM_ALERT_SOUND)            // bunyikan buzzer
          tone(BUZZPIN, 4978);
        else
          noTone(BUZZPIN);
      }
    } else {
      Serial.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str());
    }

    http.end();
  } else {
    Serial.printf("[HTTP} Unable to connect\n");
  }

  delay(100);
}

Testing

Setelah selesai merangkai hardware dan coding software, kemudian upload program tersebut ke Wemos Mini D1.

Maka tiba saatnya untuk testing.

Menggunakan 2 buat powerbank untuk menghidupkan 2 buat alat ini.

Jarak 30 cm
Jarak 20 cm

Hasil percobaan, sensor jarak dapat mengukur jarak dengan baik sesuai keadaan. Namun untuk jarak dibawah 10 cm kurang akurat.

Testing Langsung di Mobil.

Sensor jarak diletakkan di belakang mobil, bisa digantung atau ditempel.

Display dipasang di depan dekat pengemudi

Testing HP

Kita juga bisa menampilkan jarak yang diukur dengan handphone,

  1. hubungkan ke WiFi SSID = "SensorParkir"
Hubungkan ke WiFi Sensor Parkir

2. Buka browser, alamat URL http://192.168.4.1

Tampilan Jarak di HP

Kesimpulan

  • Dengan Wemos Mini D1 kita dapat membuat 2 buah alat yang bisa berkomunikasi langsung (device to device) dengan WiFi
  • Salah satu contohnya untuk membuat sensor jarak portable
  • Device pertama sebagai akses point dan webserver yang dilengkapi dengan sensor jarak
  • Device kedua melakukan protokol http get ke webserver, untuk mengambil data jarak, lalu menampilkan dan memberi peringatan
  • Dapat juga dibuka menggunakan web browser di handphone

Kekurangan & Saran

  • Sensor ultrasonic HC-SR04 tidak dapat bekerja dengan baik pada saat mobil dinyalakan, perlu dicari sensor jarak yang lebih baik
  • Dengan memahami konsep komunikasi langsung antar device ini dapat dikembangkan menjadi alat-alat dengan fungsi yang lain

Demikian semoga tulisan ini sedikit berguna, semoga teman-teman mendapatkan ide lain untuk membuat inovasi-inovasi yang menarik dan berguna.

Silahkan tinggalkan komentar jika ada ide lain atau ada yang ini ditanyakan.

Terimakasih..

Vidio

Febrianto

Penulis Senior Ndoware.com yang lagi suka ngulik Arduino dan IoT. Hoby bermain game baik itu di komputer, gadget maupun di dunia nyata :)

Mungkin Anda juga menyukai

Tinggalkan Balasan

This site uses Akismet to reduce spam. Learn how your comment data is processed.