Materi: Smart Trashbin: Cara Kerja Sensor Ultrasonik
17%

Smart Trashbin: Cara Kerja Sensor Ultrasonik

Micro:bit IoT

Memahami cara kerja sensor ultrasonik secara mendalam membantu kita men-debug masalah dan mengoptimalkan performa Smart Trashbin.


🎯 Tujuan Pembelajaran:



  • Menjelaskan prinsip kerja sonar pada HC-SR04

  • Menghitung jarak menggunakan rumus waktu tempuh

  • Memahami cara wiring sensor aman ke Micro:bit


Prinsip Kerja HC-SR04



  1. Micro:bit kirim sinyal HIGH 10 µs ke pin TRIG sensor

  2. Sensor memancarkan 8 pulsa ultrasonik pada frekuensi 40 kHz

  3. Gelombang suara merambat di udara dengan kecepatan ~343 m/s

  4. Gelombang memantul dari objek (tangan, sampah, dinding)

  5. Sensor menerima pantulan → pin ECHO menjadi HIGH

  6. Micro:bit ukur durasi ECHO → hitung jarak dengan rumus



📐 Rumus Jarak:

Jarak (cm) = Waktu Echo (µs) ÷ 58

Contoh: Waktu echo = 1160 µs → Jarak = 1160 ÷ 58 = 20 cm

Wiring Aman HC-SR04 ke Micro:bit


HC-SR04          Micro:bit
VCC ──────► 3V
TRIG ──────► P1
ECHO ──┐
├── 1kΩ ──► P2 (Micro:bit)

2kΩ

GND

Voltage divider di ECHO:
V_P2 = 5V × (2kΩ / (1kΩ+2kΩ)) = 3.3V ✅


⚠️ Tanpa voltage divider, tegangan 5V dari ECHO akan merusak pin Micro:bit yang hanya tahan 3.3V. Selalu pasang resistor 1kΩ dan 2kΩ!

Tabel Troubleshooting Sensor














Masalah Penyebab Solusi
Nilai selalu 0Pin TRIG/ECHO terbalikCek wiring: TRIG→P1, ECHO→P2
Nilai sangat besar (999+)Tidak ada objek terdeteksiNormal jika tidak ada benda di depan
Nilai tidak stabilPermukaan tidak rata / interferensiAmbil rata-rata 5 sampel
Micro:bit panas / crashTegangan berlebih tanpa dividerPasang voltage divider!
Kode Contoh
// Baca Sensor dengan Filter Rata-rata (5 Sampel)
// Lebih stabil dibanding membaca sekali saja!

function bacaSensorStabil(): number {
    let total = 0
    let valid = 0

    for (let i = 0; i < 5; i++) {
        let nilai = sonar.ping(DigitalPin.P1, DigitalPin.P2, PingUnit.Centimeters)
        if (nilai > 0 && nilai <= 400) {
            total += nilai
            valid++
        }
        basic.pause(20)  // 20ms antar sampel
    }

    if (valid > 0) {
        return Math.round(total / valid)
    }
    return 999  // Error: tidak ada objek
}

basic.forever(function () {
    let jarak = bacaSensorStabil()
    basic.showNumber(jarak)
    basic.pause(500)
})
Tantangan Mandiri: Tarik blok program di sebelah kanan agar menyusun logika kode contoh di atas, lalu klik Play untuk melihat hasilnya pada simulator!
Blok Blockly
Kode JavaScript
// Kode JavaScript akan dihasilkan secara otomatis dari Blok...

Simulator BBC micro:bit

(1,0)(3,0)(0,1)(2,1)(4,1)(0,2)(4,2)(1,3)(3,3)(2,4)P0, ANALOG INP1, ANALOG INP2, ANALOG INP3, ANALOG IN, LED Col 1P4, ANALOG IN, LED Col 2P5, BUTTON AP6, LED Col 9P7, LED Col 8P8P9, LED Col 7P10, ANALOG IN, LED Col 3P11, BUTTON BP12, RESERVED ACCESSIBILITYP13, SPI - SCKP14, SPI - MISOP15, SPI - MOSIP16, SPI - Chip SelectP17, +3v3P18, +3v3P19, I2C - SCLP20, I2C - SDAGNDGND+3v3GNDAB
Sensor Virtual
Suhu Ambient: 25 °C
Tingkat Cahaya: 128
Kontrol Tombol:
Klik Tombol A Klik Tombol B Goyang Board (Shake)