Dalam artikel ini, saya akan menunjukkan kepada anda bagaimana menggunakan sensor ultrasonik HC-SR04 untuk mengukur jarak antara sensor anda dan objek dengan menggunakan Raspberry Pi. Mari kita mulakan.
Komponen yang Anda Perlu:
Untuk berjaya mengukur jarak dengan sensor Raspberry Pi dan HC-SR04, anda memerlukannya,
- Komputer papan tunggal Raspberry Pi 2 atau 3 dengan Raspbian terpasang.
- Modul sensor ultrasonik HC-SR04.
- Perintang 3x10kΩ.
- Papan roti.
- Beberapa penyambung lelaki ke wanita.
- Beberapa penyambung lelaki ke lelaki.
Saya telah menulis artikel khusus untuk memasang Raspbian di Raspberry Pi, yang boleh anda periksa di https: // linuxhint.com / install_raspbian_raspberry_pi / jika anda memerlukan.
Pinout HC-SR04:
HC-SR04 mempunyai 4 pin. VCC, TRIGGER, ECHO, GROUD.
Gamb1: pin HC-SR04 (https: // www.pengembara.com / ds / 2/813 / HCSR04-1022824.pdf)
Pin VCC harus disambungkan ke pin + 5V pada Raspberry Pi, iaitu pin 2. Pin GROUND harus disambungkan ke pin GND dari Raspberry Pi, yang merupakan pin 4.
Pin TRIGGER dan ECHO harus disambungkan ke pin GPIO Raspberry Pi. Sementara, pin TRIGGER dapat disambungkan secara langsung ke salah satu pin GPIO dari Raspberry Pi, pin ECHO memerlukan litar pembahagi voltan.
Rajah Litar:
Sambungkan sensor ultrasonik HC-SR04 ke Raspberry Pi anda seperti berikut:
Gamb2: Sensor ultrasonik HC-SR04 disambungkan ke Raspberry Pi.
Setelah semuanya bersambung, begitulah rupa:
Gambar 3: Sensor ultrasonik HC-SR04 disambungkan ke Raspberry Pi di papan roti.
Gamb4: Sensor ultrasonik HC-SR04 disambungkan ke Raspberry Pi di papan roti.
Menulis Program Python untuk Mengukur Jarak dengan HC-SR04:
Pertama, sambungkan ke Raspberry Pi anda menggunakan VNC atau SSH. Kemudian, buka fail baru (katakan jarak.py) dan taipkan baris kod berikut:
Di sini, barisan 1 mengimport perpustakaan GPIO raspberry pi.
Baris 2 mengimport perpustakaan masa.
Di dalam cuba blok, kod sebenarnya untuk mengukur jarak menggunakan HC-SR04 ditulis.
The akhirnya blok digunakan untuk membersihkan pin GPIO dengan GPIO.bersihkan() kaedah semasa program keluar.
Di dalam cuba blok, pada baris 5, GPIO.setmode (GPIO.DEWAN) digunakan untuk menjadikan pin penentu lebih mudah. Sekarang, anda boleh merujuk pin dengan nombor fizikal seperti yang terdapat di papan Raspberry Pi.
Pada baris 7 dan 8, pinTrigger ditetapkan ke 7 dan pinEcho ditetapkan ke 11. The PEMANDU pin HC-SR04 disambungkan ke pin 7, dan ECHO pin HC-SR04 disambungkan ke pin 11 dari Rapsberry Pi. Kedua-dua ini adalah pin GPIO.
Pada baris 10, pinTrigger disediakan untuk penggunaan OUTPUT GPIO.persediaan () kaedah.
Pada baris 11, pinEcho disediakan untuk penggunaan INPUT GPIO.persediaan () kaedah.
Garis 13-17 digunakan untuk menetapkan semula pinTrigger (dengan menetapkannya ke logik 0) dan menetapkan pinTrigger ke logik 1 selama 10ms dan kemudian ke logik 0. Dalam 10ms, sensor HC-SR04 menghantar 8 denyut 40KHz.
Garis 19-24 digunakan untuk mengukur waktu yang diperlukan agar denyutan 40KHz dipantulkan ke objek dan kembali ke sensor HC-SR04.
Pada baris 25, jarak diukur menggunakan formula,
Jarak = masa delta * halaju (340M / S) / 2
=> Jarak = masa delta * (170M / S)
Saya mengira jarak dalam sentimeter dan bukannya meter, tepat. Saya mengira jarak juga dibundarkan kepada 2 tempat perpuluhan.
Akhirnya, pada baris 27, hasilnya dicetak. Itu sahaja, sangat mudah.
Sekarang, jalankan skrip Python dengan arahan berikut:
$ python3 jarak.pySeperti yang anda lihat, jarak yang diukur adalah 8.40 sm.
Rajah5: objek diletakkan pada jarak kira-kira 8.40cm dari sensor.
Saya bergerak ke objek sedikit lebih jauh, jarak yang diukur adalah 21.81cm. Jadi, ia berfungsi seperti yang diharapkan.
Rajah 6: objek diletakkan pada kira-kira 21.81 cm dari sensor.
Oleh itu, anda mengukur jarak dengan Raspberry Pi menggunakan sensor ultrasonik HC-SR04. Lihat kod untuk jarak.py di bawah:
mengimport RPi.GPIO sebagai GPIOmasa import
cuba:
GPIO.setmode (GPIO.DEWAN)
pinTrigger = 7
pinEcho = 11
GPIO.persediaan (pinTrigger, GPIO.KELUAR)
GPIO.persediaan (pinEcho, GPIO.DALAM)
GPIO.output (pinTrigger, GPIO.RENDAH)
GPIO.output (pinTrigger, GPIO.TINGGI)
masa.tidur (0.00001)
GPIO.output (pinTrigger, GPIO.RENDAH)
semasa GPIO.input (pinEcho) == 0:
nadiStartTime = masa.masa()
semasa GPIO.input (pinEcho) == 1:
nadiEndTime = masa.masa()
pulseDuration = pulseEndTime - pulseStartTime
jarak = bulat (denyut nadi * 17150, 2)
cetak ("Jarak:%.2f cm "% (jarak))
akhirnya:
GPIO.bersihkan()