MicroPython digunakan secara meluas dengan mikropengawal dan sistem terbenam. Kami boleh menulis kod dan perpustakaan di dalam MicroPython IDE dan antara muka berbilang penderia. Tulisan ini akan membimbing anda mengukur jarak menggunakan ESP32 dengan sensor HC-SR04.
ESP32 dengan Penderia Ultrasonik HC-SR04 Menggunakan MicroPython
Antara muka ESP32 dengan ultrasonik hanya memerlukan dua wayar untuk disambungkan. Menggunakan penderia ultrasonik, kita boleh mengukur jarak objek dan boleh mencetuskan tindak balas berdasarkan sistem ini seperti sistem mengelakkan perlanggaran kenderaan.
Menggunakan MicroPython yang merupakan bahasa yang direka untuk ESP32 dan mikropengawal lain, kami boleh antara muka berbilang penderia seperti HC-SR04 . Kod MicroPython akan ditulis yang mengira masa yang diambil oleh gelombang SONAR untuk mencapai dari sensor ke objek dan kembali ke objek. Kemudian menggunakan formula jarak, kita boleh mengira jarak objek.
Berikut ialah beberapa sorotan utama sensor HC-SR04:
Ciri-ciri | Nilai |
Voltan Kendalian | 5V DC |
Arus Operasi | 15mA |
Kekerapan Operasi | 40KHz |
Julat Saya | 2cm/ 1 inci |
Julat Maks | 400cm/ 13 kaki |
Ketepatan | 3 mm |
Mengukur Sudut | <15 darjah |
Pinout HC-SR04 HC-SR04 mengandungi berikut empat pin:
- Vcc: Sambung ke pin ESP32 Vin
- Gnd: Sambung ke GND
- Trig: Pin untuk menerima isyarat kawalan daripada papan ESP32
- Gema: Hantar isyarat balik. Papan Pengawal Mikro menerima isyarat ini untuk mengira jarak menggunakan masa
Bagaimana Ultrasonik Berfungsi
Selepas sensor HC-SR04 disambungkan dengan ESP32 isyarat di Trig pin akan dijana oleh papan. Sebaik sahaja isyarat diterima pada pin trig sensor HC-SR04 gelombang ultrasonik akan dihasilkan yang meninggalkan sensor dan mengenai objek atau badan halangan. Selepas memukul ia akan melantun semula ke permukaan objek.
Setelah gelombang yang dipantulkan mencapai kembali ke hujung penerima, nadi isyarat pada pin gema akan dihasilkan. ESP32 menerima isyarat pin gema dan mengira jarak antara objek dan penderia menggunakan Formula Jarak.
Jumlah jarak yang dikira hendaklah dibahagikan dengan dua di dalam kod ESP32 kerana jarak yang kita perolehi pada asalnya adalah sama dengan jumlah jarak dari sensor ke objek dan kembali ke hujung penerima sensor. Jadi jarak sebenar ialah isyarat yang menyamai separuh daripada jarak itu.
Skema
Berikut ialah skema untuk antara muka ESP32 dengan sensor ultrasonik:
Sambungkan pencetus dan pin gema sensor dengan GPIO 5 dan GPIO 18 ESP32 masing-masing. Juga sambungkan ESP32 GND dan pin Vin dengan pin penderia.
Penderia Ultrasonik HC-SR04 | Pin ESP32 |
Trig | GPIO 5 |
Gema | GPIO 18 |
GND | GND |
VCC | DATANG |
Perkakasan
Komponen berikut diperlukan untuk memprogramkan sensor ultrasonik:
- ESP32
- HC-SR04
- Papan roti
- Wayar Pelompat
Cara Menyediakan Ultrasonik HC-SR04 dengan ESP32 Menggunakan MicroPython
Sebelum kita boleh memprogramkan ESP32 dengan sensor ultrasonik, kita perlu memasang perpustakaan di dalamnya. Sambungkan papan ESP32 ke PC. Ikuti langkah-langkah untuk melengkapkan konfigurasi ESP32 dengan sensor ultrasonik dalam Thonny IDE menggunakan MicroPython.
Langkah 1: Sekarang buka Thonny IDE. Cipta fail baharu dalam tetingkap editor Pergi ke : Fail>Baharu atau tekan Ctrl + N .
Setelah fail baharu dibuka, tampal kod berikut ke dalam tetingkap editor Thonny IDE.
import mesin , masadaripada mesin import Pin
kelas HCSR04:
# echo_timeout_us adalah berdasarkan had julat cip (400cm)
def __panas__ ( diri sendiri , picu_pin , echo_pin , echo_timeout_us = 500 * dua * 30 ) :
diri sendiri . echo_timeout_us = echo_timeout_us
# Init picu pin (keluar)
diri sendiri . pencetus = Pin ( picu_pin , mod = Pin. KELUAR , tarik = tiada )
diri sendiri . pencetus . nilai ( 0 )
# Init echo pin (in)
diri sendiri . bergema = Pin ( echo_pin , mod = Pin. DALAM , tarik = tiada )
def _hantar_nadi_dan_tunggu ( diri sendiri ) :
diri sendiri . pencetus . nilai ( 0 ) # Menstabilkan sensor
masa . tidur_kami ( 5 )
diri sendiri . pencetus . nilai ( 1 )
# Hantar nadi 10us.
masa . tidur_kami ( 10 )
diri sendiri . pencetus . nilai ( 0 )
cubalah :
masa_nadi = mesin. nadi_masa_kita ( diri sendiri . bergema , 1 , diri sendiri . echo_timeout_us )
kembali masa_nadi
kecuali OSError sebagai cth:
jika ex. args [ 0 ] == 110 : # 110 = ETIMEDOUT
menaikkan OSError ( 'Luar kawasan' )
menaikkan ex
def jarak_mm ( diri sendiri ) :
masa_nadi = diri sendiri ._hantar_nadi_dan_tunggu ( )
mm = masa_nadi * 100 // 582
kembali mm
def jarak_cm ( diri sendiri ) :
masa_nadi = diri sendiri ._hantar_nadi_dan_tunggu ( )
cms = ( pulse_time / dua ) / 29.1
kembali cms
Langkah 2: Selepas menulis perpustakaan kod di dalam tetingkap editor sekarang kita perlu menyimpannya di dalam peranti MicroPython.
Langkah 3: Pergi ke : Fail>Simpan atau tekan Ctrl + S .
Langkah 4: Tetingkap baharu akan muncul. Pastikan ESP32 disambungkan dengan PC. Pilih peranti MicroPython untuk menyimpan fail perpustakaan.
Langkah 5: Simpan fail perpustakaan ultrasonik dengan nama hcsr04.py dan klik okey .
Kini perpustakaan sensor hcsr04 ultrasonik berjaya ditambahkan pada papan ESP32. Sekarang kita boleh memanggil fungsi perpustakaan di dalam kod untuk mengukur jarak objek yang berbeza.
Kod untuk Penderia Ultrasonik Menggunakan MicroPython
Untuk kod sensor ultrasonik buat fail baharu ( Ctrl + N ). Dalam tetingkap editor, masukkan kod yang diberikan di bawah dan simpan di dalam main.py atau boot.py fail. Kod ini akan mencetak jarak mana-mana objek yang datang di hadapan HC-SR04.
Kod dimulakan dengan memanggil perpustakaan penting seperti HCSR04 dan masa perpustakaan bersama-sama dengan tidur untuk memberi kelewatan.
Seterusnya, kami mencipta objek baharu dengan nama penderia . Objek ini mengambil tiga hujah berbeza: pencetus, gema dan tamat masa. Di sini tamat masa ditakrifkan sebagai masa maksimum selepas penderia keluar dari julat.
penderia = HCSR04 ( picu_pin = 5 , echo_pin = 18 , echo_timeout_us = 10000 )Untuk mengukur dan menyimpan jarak objek baru dinamakan jarak dicipta. Objek ini akan menjimatkan jarak dalam cm.
jarak = penderia. jarak_cm ( )Tulis kod berikut untuk mendapatkan data dalam mm.
jarak = penderia. jarak_mm ( )Seterusnya, kami mencetak hasilnya pada cangkerang IDE MicroPython.
cetak ( 'Jarak:' , jarak , 'cm' )Pada akhirnya kelewatan selama 1 saat diberikan.
tidur ( 1 )Kod lengkap diberikan di bawah:
daripada hcsr04 import HCSR04daripada masa import tidur
# ESP32
penderia = HCSR04 ( picu_pin = 5 , echo_pin = 18 , echo_timeout_us = 10000 )
# ESP8266
#sensor = HCSR04(trigger_pin=12, echo_pin=14, echo_timeout_us=10000)
sementara betul :
jarak = penderia. jarak_cm ( )
cetak ( 'Jarak:' , jarak , 'cm' )
tidur ( 1 )
Selepas menulis dan menyimpan kod di dalam peranti MicroPython, saya kini menjalankan sensor ultrasonik main.py kod fail. Klik butang main atau tekan F5 .
Output Penderia Ultrasonik Apabila Objek Dekat
Sekarang letakkan objek berhampiran sensor ultrasonik dan semak jarak yang diukur pada tetingkap monitor bersiri Arduino IDE.
Jarak objek ditunjukkan dalam terminal shell. Sekarang objek diletakkan pada 5 cm dari sensor ultrasonik.
Output Penderia Ultrasonik Apabila Objek Jauh
Sekarang untuk mengesahkan keputusan kami, kami akan meletakkan objek jauh dari sensor dan menyemak kerja sensor ultrasonik. Letakkan objek seperti yang ditunjukkan dalam imej di bawah:
Tetingkap output akan memberi kita jarak baharu dan seperti yang kita dapat lihat objek itu jauh dari penderia, jadi jarak yang diukur adalah lebih kurang. 15 cm dari sensor ultrasonik.
Kesimpulan
Mengukur jarak mempunyai aplikasi yang hebat apabila ia berkaitan dengan robotik dan projek lain, terdapat cara yang berbeza untuk mengukur jarak. HC-SR04 dengan ESP32 boleh mengukur jarak objek yang berbeza. Di sini penulisan ini akan merangkumi semua langkah yang perlu disepadukan dan mula mengukur jarak dengan ESP32.