PIR Motion Sensor dengan ESP32 Menggunakan MicroPython dan Thonny IDE

Pir Motion Sensor Dengan Esp32 Menggunakan Micropython Dan Thonny Ide



ESP32 boleh antara muka berbilang peranti luaran untuk mengawal dan membaca penderia yang berbeza. PIR atau penderia gerakan adalah salah satu contoh yang kita boleh antara muka dengan ESP32 untuk mengesan pergerakan dalam julat tertentu penderia PIR menggunakan ESP32.

Sebelum kita memulakan antara muka ESP32 dengan sensor PIR, kita mesti tahu cara gangguan berfungsi dan cara membaca dan mengendalikannya dalam ESP32. Mari kita bincangkan cara kerja PIR dengan ESP32 secara terperinci.

Berikut ialah kandungan untuk artikel ini:







1: Apakah Gangguan



1.1: Mengganggu Pin dalam ESP32



2: Memanggil Gangguan dalam ESP32 – MicroPython





3: Mengantaramuka Penderia PIR dengan ESP32 – MicroPython

3.1: Penderia Gerakan PIR (HC-SR501)



3.2: Pinout HC-SR501

3.3: Kod

3.4: Output

1: Apakah Gangguan

Kebanyakan peristiwa yang berlaku dalam pengaturcaraan ESP32 berjalan secara berurutan yang bermaksud pelaksanaan baris demi baris kod. Untuk mengendalikan dan mengawal acara yang tidak perlu dijalankan semasa pelaksanaan berurutan kod an menyampuk digunakan.

Sebagai contoh, jika kita ingin melaksanakan tugas tertentu apabila sebarang peristiwa khas berlaku, atau isyarat pencetus diberikan kepada pin digital mikropengawal yang kita gunakan interrupt.

Dengan gangguan, kami tidak perlu menyemak keadaan digital pin input ESP32 secara berterusan. Apabila gangguan berlaku pemproses menghentikan program utama, dan fungsi baru dipanggil yang dikenali sebagai ISR ​​( Rutin Perkhidmatan Mengganggu ). ini ISR fungsi mengendalikan gangguan yang disebabkan selepas itu kembali ke program utama dan mula melaksanakannya. Salah satu contoh ISR ialah penderia gerakan PIR yang menghasilkan gangguan apabila gerakan dikesan.

1.1: Mengganggu Pin dalam ESP32

Gangguan luaran atau perkakasan boleh disebabkan oleh mana-mana modul perkakasan seperti sensor sentuh atau butang tekan. Gangguan sentuhan berlaku apabila sentuhan dikesan pada pin ESP32 atau gangguan GPIO juga boleh digunakan apabila kekunci atau butang tekan ditekan.

Dalam artikel ini kami akan mencetuskan gangguan apabila gerakan dikesan menggunakan sensor PIR dengan ESP32.

Hampir semua pin GPIO kecuali 6 pin bersepadu SPI yang biasanya terdapat dalam 36 versi pin papan ESP32 tidak boleh digunakan untuk tujuan panggilan gangguan. Jadi, untuk menerima gangguan luaran berikut ialah pin yang boleh digunakan dalam ESP32:

2: Memanggil Gangguan dalam ESP32 Menggunakan MicroPython

Untuk memprogram papan ESP32 dengan sensor PIR menggunakan kod MicroPython. Kita perlu menentukan fungsi gangguan. Berikut ialah beberapa langkah mudah yang membantu dalam menentukan gangguan untuk papan ESP32.

Langkah 1: Mulakan fungsi pengendalian gangguan: Fungsi pengendalian gangguan harus ditakrifkan dengan cara yang mudah supaya ia dapat dilaksanakan dengan pantas dan kembali ke program utama secepat mungkin. Ini boleh dilakukan dengan mentakrifkan pembolehubah global supaya ia boleh diakses di mana-mana sahaja di dalam kod jika dipanggil.

Di sini dalam kes sensor PIR kita akan menggunakan pin GPIO sebagai a global pembolehubah. Fungsi gangguan akan mengambil pin sebagai hujah dan menerangkan pin GPIO yang menyebabkan fungsi gangguan berlaku.

def handle_interrupt ( pin ) :

Langkah 2: Sediakan pin GPIO untuk gangguan: Untuk mendapatkan nilai pin GPIO kita perlu mencipta objek yang akan mengambil input daripadanya menggunakan Pin.IN sebagai hujah kedua di dalam kelas pin kami. Kita boleh menamakan semula ini dengan mana-mana yang lain.

pin = Pin ( 13 , Pin. DALAM )

Langkah 3: Lampirkan gangguan pada pin GPIO untuk penderia PIR menggunakan kaedah irq():

Menggunakan arahan di bawah, kita boleh menetapkan sampukan kepada pin yang kita takrifkan sebelum ini.

jambatan. irq ( pencetus = Pin. IRQ_RISING , pengendali = handle_interrupt )

The irq() kaedah digunakan untuk memasang sampukan pada pin. irq() menerima dua hujah yang berbeza:

  • Pencetus
  • Pengendali

pencetus: Hujah ini menerangkan cara pencetus. Berikut ialah tiga mod:

  • Pin.IRQ_FALLING: Apabila pin beralih dari HIGH ke LOW, gangguan dimulakan.
  • Pin.IRQ_RISING: Selepas peralihan pin dari LOW ke HIGH, gangguan dimulakan.
  • Pin.IRQ_FALLING|Pin.IRQ_RISING: Cetuskan gangguan apabila pin menukar keadaannya. Sama ada pin pergi ke TINGGI atau RENDAH.

pengendali: Fungsi ini akan dipanggil sebaik sahaja gangguan dicetuskan.

3: Mengantaramuka Penderia PIR dengan ESP32

Memandangkan kini kami telah membincangkan konsep gangguan dengan ESP32 menggunakan MicroPython sekarang kami akan antara muka sensor PIR dengan ESP32. Di sini kita akan menggunakan Pin.IRQ_RISING mod dalam kod MicroPython untuk penderia PIR kerana kami ingin mencetuskan LED setiap kali penderia PIR mengesan beberapa pergerakan. LED ini akan kekal ON untuk masa yang ditetapkan kemudian ia akan dimatikan.

Komponen berikut akan diperlukan:

  • papan pembangunan ESP32
  • Penderia gerakan PIR (HC-SR501)
  • 220 Ohm perintang
  • Wayar pelompat
  • Papan roti
  • LED

Skema untuk sensor PIR dengan ESP32:

Konfigurasi pin ESP32 dengan sensor PIR ialah:

  Penerangan Jadual dijana secara automatik

3.1: Penderia Gerakan PIR (HC-SR501)

PIR ialah akronim untuk Penderia Inframerah pasif . Dua penderia piroelektrik digunakan bersama yang akan mengesan jumlah haba di sekelilingnya. Kedua-dua penderia piroelektrik ini terletak satu demi satu dan apabila objek masuk dalam julatnya, perubahan tenaga haba atau perbezaan isyarat antara kedua-dua penderia ini menyebabkan output penderia PIR menjadi RENDAH. Sebaik sahaja pin keluar PIR menjadi LOW, kita boleh menetapkan arahan khusus untuk dilaksanakan (kedip LED).

  Gambarajah Penerangan dijana secara automatik

Berikut ialah ciri-ciri penderia PIR:

  • Kepekaan boleh ditetapkan bergantung pada lokasi projek (seperti pengesanan tetikus atau pergerakan daun)
  • Penderia PIR boleh ditetapkan untuk berapa lama ia mengesan objek
  • Digunakan secara meluas dalam penggera keselamatan rumah dan aplikasi pengesanan pergerakan berasaskan haba yang lain.

3.2: Pinout HC-SR501

PIR HC-SR501 dilengkapi dengan tiga pin. Dua daripadanya ialah pin kuasa untuk Vcc dan GND dan satu ialah pin output untuk isyarat pencetus.

Berikut ialah perihalan pin sensor PIR:

Pin Nama Penerangan
1 Vcc Pin input untuk penderia Sambung ke ESP32 Vin Pin
dua KELUAR Keluaran Penderia
3 GND Penderia GND

3.3: Kod

Sekarang untuk memprogramkan ESP32 tulis kod yang diberikan dalam editor Thonny IDE atau mana-mana IDE MicroPython lain dan muat naik ke ESP32.

daripada Pin import mesin
daripada masa tidur import
gerakan = Salah
def handle_interrupt ( pin ) :
gerakan global
gerakan = betul
pin_gangguan global
pin_ganggu = pin
dipimpin = Pin ( 4 , Pin. KELUAR )
jambatan = Pin ( 13 , Pin. DALAM )
jambatan. irq ( pencetus = Pin. IRQ_RISING , pengendali = handle_interrupt )
sementara betul :
jika gerakan :
cetak ( 'GERAKAN DIKESAN' )
dipimpin. nilai ( 1 )
tidur ( 5 )
dipimpin. nilai ( 0 )
cetak ( 'GERAKAN BERHENTI' )
gerakan = Salah

Pertama, kami mengimport pin kelas daripada modul mesin dan tidur kaedah untuk menambah kelewatan. Seterusnya pembolehubah dicipta dengan nama gerakan. Pembolehubah ini akan mengesan sama ada sesuatu gerakan itu dikesan atau tidak.

Kemudian kami mencipta fungsi handle_interrupt. Setiap kali penderia PIR mengesan gerakan, fungsi ini akan diaktifkan. Ia mengambil pin sebagai parameter input dan menunjukkan pin yang menyebabkan gangguan berlaku.

Dengan kata mudah setiap kali PIR mengesan gerakan, handle_interrupt akan menetapkan pembolehubah gerakan kepada benar dan menyimpan pin yang menyebabkan gangguan berlaku. Satu perkara yang perlu diingat sentiasa mengisytiharkan gerakan pembolehubah sebagai global kerana ia diperlukan sepanjang kod.

Melangkah ke hadapan kami mencipta dua objek pin, satu untuk menyimpan pin LED dan yang kedua akan mengambil output sensor PIR pada pin GPIO 13. Selanjutnya kami mengisytiharkan pin pencetus dalam MENINGKAT mod.

Di dalam gelung sebahagian daripada kod, ia akan menyemak nilai pembolehubah gerakan sebaik sahaja ia menjadi benar LED akan dihidupkan disambungkan pada pin 4 ESP32. Jika gerakan berhenti LED akan dimatikan selepas 5 saat.

3.4: Output

Dalam bahagian output kita boleh melihat objek berada di luar julat sensor PIR, jadi LED dipusingkan DIMATIKAN .

Sekarang gerakan yang dikesan oleh LED sensor PIR akan bertukar HIDUP untuk 5 sec selepas itu jika tiada gerakan dikesan ia akan kekal DIMATIKAN sehingga pencetus seterusnya diterima.

Output berikut ditunjukkan oleh cangkerang/terminal dalam Thonny IDE.

  Antara muka pengguna grafik, teks, aplikasi Penerangan dijana secara automatik

Kesimpulan

Penderia PIR dengan ESP32 boleh membantu mengesan pergerakan benda yang berbeza. Menggunakan fungsi gangguan dalam MicroPython dengan ESP32 kita boleh mencetuskan tindak balas pada beberapa pin GPIO tertentu. Apabila perubahan dikesan fungsi gangguan akan dicetuskan dan LED akan dihidupkan.