SRF05 mengukur jarak dengan tingkat akurasi yang tinggi. Sensor ini bekerja
dengan mengirimkan gelombang ultrasonik dan kemudian mendeteksi
pantulannya untuk menghitung jarak dari objek terdekat. Dalam konteks
Internet of Things (IoT) dan data science, SRF05 dapat digunakan
sebagai salah satu komponen untuk mengumpulkan data yang relevan,
seperti jarak antara objek atau penghalang dengan sensor. Berikut adalah
beberapa cara bagaimana SRF05 dapat digunakan dalam IoT dan data
science:
1. Pemantauan Jarak: SRF05 dapat digunakan untuk memantau jarak
antara dua objek atau pergerakan suatu objek. Misalnya, dalam
aplikasi pengukuran kepadatan lalu lintas, sensor SRF05 dapat
dipasang di berbagai titik untuk memantau jarak antara kendaraan.
2. Deteksi Objek: Dengan menggunakan sensor SRF05, Anda dapat
mendeteksi keberadaan objek dalam suatu area. Hal ini dapat
digunakan dalam sistem keamanan untuk mendeteksi intrusi atau
dalam aplikasi industri untuk mendeteksi keberadaan objek di sekitar
mesin atau peralatan.
3. Pengukuran Tinggi: Selain pengukuran jarak horizontal, SRF05 juga
dapat digunakan untuk mengukur tinggi suatu objek atau permukaan
dari tanah. Misalnya, dalam aplikasi pertanian pintar, sensor ini dapat
digunakan untuk memantau tinggi tanaman atau tingkat air di suatu
lahan.
4. Pemetaan: Dengan menggunakan beberapa sensor SRF05 yang
dipasang pada platform yang bergerak, seperti robot atau kendaraan
otonom, Anda dapat membuat peta 3D dari lingkungan sekitar. Data
jarak yang dikumpulkan dari setiap sensor dapat digunakan untuk
membangun pemetaan yang akurat.
5. Prediksi dan Analisis: Data yang dikumpulkan dari sensor SRF05
dapat dianalisis menggunakan teknik data science untuk
mendapatkan wawasan yang berharga. Misalnya, dapat melakukan
analisis tren untuk memprediksi pergerakan atau perilaku objek
berdasarkan data jarak yang terus-menerus diukur oleh sensor.
6. Optimisasi Proses: Dengan memahami pola dari data yang
dikumpulkan oleh sensor SRF05, kita dapat mengoptimalkan proses
atau sistem yang sedang diamati. Misalnya, dalam aplikasi
manufaktur, Anda dapat menggunakan data jarak untuk mengatur
alur produksi atau pemeliharaan mesin.
Dalam rangkaian IoT, data yang dikumpulkan oleh sensor SRF05
biasanya akan dikirimkan ke suatu pusat pengolahan data
menggunakan protokol komunikasi seperti MQTT atau HTTP. Data ini
kemudian dapat disimpan, diolah, dan dianalisis menggunakan berbagai
algoritma dan teknik data science untuk mendapatkan wawasan yang
berguna bagi pengguna atau sistem yang terkait. Dengan demikian,
SRF05 berperan sebagai komponen penting dalam ekosistem IoT untuk
pengumpulan data yang akurat dan relevan.
Gambar 1. Diagram Pin Sensor Ultrasonik HC-SR05
Rangkaian
Kerja
Keterangan :
PIN 7 (GPIO4) sebagai TRIGGER
PIN 11 (GPIO17) sebagai ECHO
Kode Program File SRF05.py
import RPi.GPIO as GPIO
import time
# A very simple Python interface to SFR05 module (probably will work with
SFR04 too but I have no tried).
# Just call measure() method and it will return you distance in centimeters or
None.
#
# IMPORTANT NOTE: in order to read data from the sensor we need to
measure width of an echo pulse
# and we need to be accurate enough. This obviously is not going to work well
if your CPU is heavily loaded.
# Plus, Python with its GIL is just not the best environment for these things if
you have other threads running.
# But make no mistake - doing that in C is not a silver bullet either even if done
properly with interrupts etc.
# Sure, C version would have better accuracy but if you really want to avoid
interference with other threads/processes,
# you should use a sensor that times echo iself and then gives you result via
digital interface (like I2C or SPI).
#
# The document I am referring throught the code is https://www.robot-
electronics.co.uk/htm/srf05tech.htm
#
class SRF05:
def __init__(self, trigger_pin, echo_pin):
self.trigger_pin = trigger_pin
self.echo_pin = echo_pin
self.trigger_time = 0
GPIO.setup(self.echo_pin, GPIO.IN)
GPIO.setup(self.trigger_pin, GPIO.OUT)
def measure(self):
now = self.time_us()
self.trigger()
self.trigger_time = self.time_us()
# "The SRF05 will send out an 8 cycle burst of ultrasound at 40khz and
raise its echo line high (or trigger line in mode 2)"
# Wait no longer than 30ms
if GPIO.wait_for_edge(self.echo_pin, GPIO.RISING, timeout=30) is None:
return None
start = self.time_us()
end = self.time_us()
# ...and by that logic we should not have real measurement with pulse
longer than 30ms anyway
if width > 30000:
return None
# "If the width of the pulse is measured in uS, then dividing by 58 will give
you the distance in cm,
# or dividing by 148 will give the distance in inches. uS/58=cm or
uS/148=inches."
return int(width / 58)
def trigger(self):
# "You only need to supply a short 10uS pulse to the trigger input to start
the ranging."
GPIO.output(self.trigger_pin, 1)
self.sleep_us(10)
GPIO.output(self.trigger_pin, 0)
# Return time in microseconds
def time_us(self):
return int(time.time() * 1000000)
File jarak.py
GPIO.setmode(GPIO.BCM)
Kesimpulan