PIR judesio jutiklis su ESP32, naudojant MicroPython ir Thonny IDE

Pir Judesio Jutiklis Su Esp32 Naudojant Micropython Ir Thonny Ide



ESP32 gali susieti kelis išorinius įrenginius, skirtus valdyti ir nuskaityti skirtingus jutiklius. PIR arba judesio jutiklis yra vienas iš pavyzdžių, kurį galime susieti su ESP32, kad aptiktume judėjimą tam tikrame PIR jutiklio diapazone naudodami ESP32.

Prieš pradėdami ESP32 sąsają su PIR jutikliu, turime žinoti, kaip veikia pertraukimai ir kaip juos nuskaityti bei tvarkyti ESP32. Išsamiai aptarkime PIR veikimą su ESP32.

Štai šio straipsnio turinys:







1: Kas yra pertraukimai



1.1: pertraukia ESP32 kaiščius



2: Pertraukimo iškvietimas ESP32 – MicroPython





3: Sąsaja PIR jutiklis su ESP32 – MicroPython

3.1: PIR judesio jutiklis (HC-SR501)



3.2: Smeigtukas HC-SR501

3.3: Kodas

3.4: Išvestis

1: Kas yra pertraukimai

Dauguma ESP32 programavimo įvykių vyksta nuosekliai, o tai reiškia, kad kodas vykdomas eilute po eilutės. Norėdami tvarkyti ir valdyti įvykius, kurių nereikia vykdyti nuosekliai vykdant kodą Pertraukia yra naudojami.

Pavyzdžiui, jei norime atlikti tam tikrą užduotį, kai įvyksta koks nors ypatingas įvykis arba į skaitmeninius mikrovaldiklio kontaktus gaunamas trigerio signalas, kurį naudojame pertraukimą.

Su pertraukimu mums nereikia nuolat tikrinti ESP32 įvesties kaiščio skaitmeninės būsenos. Kai įvyksta pertraukimas, procesorius sustabdo pagrindinę programą ir iškviečiama nauja funkcija, kuri žinoma kaip ISR ( Nutraukite aptarnavimo rutiną ). Tai ISR funkcija apdoroja po to sukeltą pertraukimą grįžti į pagrindinę programą ir pradėti ją vykdyti. Vienas iš ISR pavyzdžių yra PIR judesio jutiklis, kuris generuoja pertraukimą, kai aptinkamas judesys.

1.1: pertraukia ESP32 kaiščius

Išorinį arba aparatinės įrangos pertrūkį gali sukelti bet kuris aparatūros modulis, pvz., jutiklinis jutiklis arba mygtukas. Prisilietimo pertraukimai įvyksta, kai aptinkamas prisilietimas prie ESP32 kaiščių arba GPIO pertraukimas taip pat gali būti naudojamas, kai paspaudžiamas klavišas arba mygtukas.

Šiame straipsnyje mes suaktyvinsime pertraukimą, kai judesys aptinkamas naudojant PIR jutiklį su ESP32.

Beveik visi GPIO kaiščiai, išskyrus 6 integruotus SPI kaiščius, kurie paprastai būna 36 ESP32 plokštės kaiščio versijos negalima naudoti skambučiams nutraukti. Taigi, norėdami gauti išorinį pertraukimą, ESP32 galima naudoti šiuos kaiščius:

2: ESP32 pertraukimo iškvietimas naudojant MicroPython

Programuoti ESP32 plokštę su PIR jutikliu naudojant MicroPython kodą. Turime apibrėžti pertraukimo funkciją. Toliau pateikiami keli paprasti veiksmai, padedantys nustatyti ESP32 plokštės pertraukimą.

1 veiksmas: inicijuokite pertraukimų tvarkymo funkciją: Pertraukimų tvarkymo funkcija turėtų būti apibrėžta lengvai, kad ji galėtų greitai veikti ir kuo greičiau grįžti į pagrindinę programą. Tai galima padaryti apibrėžiant visuotinį kintamąjį, kad jį būtų galima pasiekti bet kurioje kodo vietoje, jei iškviečiamas.

PIR jutiklio atveju mes naudosime GPIO kaištį kaip a globalus kintamasis. Pertraukimo funkcija kaip argumentą paims kaištį ir aprašys GPIO kaištį, dėl kurio atsiranda pertraukimo funkcija.

def handle_interrupt ( smeigtukas ) :

2 veiksmas: nustatykite GPIO kaištį pertraukimui: Norėdami gauti GPIO kaiščio vertę, turime sukurti objektą, kuris paims įvestį iš jo naudodamas PIN.IN kaip antrasis argumentas mūsų kaiščių klasėje. Mes galime tai pervadinti bet kuriuo kitu.

smeigtukas = Smeigtukas ( 13 , Smeigtukas. IN )

3 veiksmas: prijunkite pertrauką prie PIR jutiklio GPIO kaiščio naudodami irq() metodą:

Naudodami toliau pateiktą komandą, galime nustatyti pertraukimą į anksčiau apibrėžtą kaištį.

tiltas. irq ( paleidiklis = Smeigtukas. IRQ_RISING , prižiūrėtojas = rankena_pertraukti )

The irq () metodas naudojamas pertraukimui pritvirtinti prie kaiščio. irq () sutinka su dviem skirtingais argumentais:

  • Trigeris
  • Prižiūrėtojas

trigeris: Šis argumentas paaiškina paleidimo būdą. Toliau pateikiami trys režimai:

  • Pin.IRQ_FALLING: Kai kaištis pereina iš HIGH į LOW, pradedamas pertraukimas.
  • Pin.IRQ_RISING: Smeigtukui perėjus iš LOW į HIGH, pradedamas pertraukimas.
  • Pin.IRQ_FALLING|Pin.IRQ_RISING: Suaktyvinkite pertraukimą, kai kaištis pakeičia savo būseną. Smeigtukas pereina į HIGH arba LOW.

prižiūrėtojas: Ši funkcija bus iškviesta, kai suaktyvinamas pertraukimas.

3: PIR jutiklio sąsaja su ESP32

Kadangi dabar apžvelgėme ESP32 pertraukimo sąvokas naudodami MicroPython, dabar PIR jutiklį susiesime su ESP32. Čia mes naudosime Pin.IRQ_RISING režimas MicroPython kode PIR jutikliui, nes norime suaktyvinti šviesos diodą kiekvieną kartą, kai PIR jutiklis aptinka tam tikrą judėjimą. Šis šviesos diodas liks įjungtas nustatytą laiką, tada išsijungs.

Bus reikalingi šie komponentai:

  • ESP32 kūrimo plokštė
  • PIR judesio jutiklis (HC-SR501)
  • 220 omų rezistorius
  • Jumperių laidai
  • Bandomoji Lenta
  • LED

Schema PIR jutikliui su ESP32:

ESP32 kaiščio konfigūracija su PIR jutikliu yra tokia:

  Lentelės aprašymas sugeneruotas automatiškai

3.1: PIR judesio jutiklis (HC-SR501)

PIR yra akronimas Pasyvūs infraraudonųjų spindulių jutikliai . Du kartu naudojami piroelektriniai jutikliai, kurie aptiks šilumos kiekį aplink jį. Abu šie piroelektriniai jutikliai yra vienas po kito, o kai objektas patenka į jų diapazoną, pasikeitus šilumos energijai arba signalų skirtumui tarp abiejų šių jutiklių, PIR jutiklio išvestis yra MAŽA. Kai PIR išvesties kaištis nukrenta žemai, galime nustatyti konkrečią vykdymo instrukciją (LED mirksėjimas).

  Diagramos aprašymas sugeneruotas automatiškai

Toliau pateikiamos PIR jutiklio charakteristikos:

  • Jautrumą galima nustatyti atsižvelgiant į projekto vietą (pvz., pelės ar lapų judėjimo jutimas)
  • PIR jutiklis gali būti nustatytas, kiek laiko jis aptiks objektą
  • Plačiai naudojamas namų apsaugos signalizacijose ir kitose šiluminio judėjimo aptikimo programose.

3.2: Smeigtukas HC-SR501

PIR HC-SR501 yra su trimis kaiščiais. Du iš jų yra Vcc ir GND maitinimo kaiščiai, o vienas yra suveikimo signalo išvesties kaištis.

Toliau pateikiamas PIR jutiklio kaiščių aprašymas:

Smeigtukas vardas apibūdinimas
1 Vcc Jutiklio įvesties kaištis Prijunkite prie ESP32 Vin kaiščio
du OUT Jutiklio išvestis
3 GND Jutiklis GND

3.3: Kodas

Dabar, norėdami užprogramuoti ESP32, parašykite nurodytą kodą Thonny IDE redaktoriuje arba bet kuriame kitame MicroPython IDE ir įkelkite jį į ESP32.

iš mašinos importo PIN
laikas importuoti miegą
judesį = Netiesa
def handle_interrupt ( smeigtukas ) :
visuotinis judėjimas
judesį = Tiesa
visuotinis pertraukimo_pinas
pertraukti_pin = smeigtukas
vadovavo = Smeigtukas ( 4 , Smeigtukas. OUT )
tiltas = Smeigtukas ( 13 , Smeigtukas. IN )
tiltas. irq ( paleidiklis = Smeigtukas. IRQ_RISING , prižiūrėtojas = rankena_pertraukti )
kol Tiesa :
jeigu judesį :
spausdinti ( „JUDESIS NUSTATYTAS“ )
vadovavo. vertė ( 1 )
miegoti ( 5 )
vadovavo. vertė ( 0 )
spausdinti ( 'JUDESIS SUSTOJO' )
judesį = Netiesa

Pirma, mes importavome smeigtukas klasė iš mašinos modulio ir miegoti būdas pridėti vėlavimą. Tada sukuriamas kintamasis su pavadinimu judesį. Šis kintamasis aptiks, ar aptiktas judesys, ar ne.

Tada sukūrėme funkciją rankena_pertraukti. Kiekvieną kartą, kai PIR jutiklis aptinka judesį, ši funkcija suaktyvinama. Kaip įvesties parametrą naudojamas kaištis ir nurodo kaištį, dėl kurio įvyksta pertraukimas.

Paprastais žodžiais tariant, kiekvieną kartą, kai PIR aptinka judesį, rankena_pertraukti nustatys judesio kintamąjį į true ir išsaugos kaištį, dėl kurio įvyksta pertraukimas. Reikia prisiminti vieną dalyką visada deklaruoja judesį kintamasis kaip pasaulinis, nes jis reikalingas visame kode.

Judėdami į priekį sukūrėme du kontaktinius objektus, vienas skirtas saugoti LED kaiščius, o antrasis paims PIR jutiklio išvestį 13 GPIO kaištyje. KILDAMAS režimu.

Viduje kilpa kodo dalį, ji patikrins judesio kintamojo vertę, kai tik ji taps tikra, LED įsijungs, prijungtas prie ESP32 4 kaiščio. Jei judėjimas sustabdytas, šviesos diodas išsijungs po 5 sekundžių.

3.4: Išvestis

Išvesties skyriuje matome, kad objektas yra už PIR jutiklio diapazono, todėl LED yra pasuktas IŠJUNGTA .

Dabar PIR jutiklio šviesos diodas aptiktas judesys pasisuks ĮJUNGTA dėl 5 sek po to, jei judesio neaptiks, jis išliks IŠJUNGTA kol bus gautas kitas trigeris.

Toliau pateikta produkcija rodoma apvalkalas / terminalas Thonny IDE.

  Grafinė vartotojo sąsaja, tekstas, programa Aprašymas generuojamas automatiškai

Išvada

PIR jutiklis su ESP32 gali padėti aptikti įvairių dalykų judėjimą. Naudodami pertraukimo funkciją „MicroPython“ su ESP32, galime suaktyvinti atsaką tam tikru GPIO kaiščiu. Aptikus pakeitimą, įsijungs pertraukimo funkcija ir įsijungs šviesos diodas.