Med en PIR-bevegelsessensor kan du lage en enkel visuell bevegelsesalarm: en lysdiode som lyser når noen går forbi, eller et alarmpanel som viser bevegelse på en skjerm. Her bygger du begge deler: først en enkel krets uten programmering, deretter et skjermpanel med M5Stack Tab5, ferdig Python-kode og et ekte UIFlow 2-prosjekt med blokker.
Her er alarmpanelet en lokal skjerm som varsler visuelt når sensoren registrerer bevegelse. Programmet har ikke til- og frakobling av alarm, sirene eller fjernvarsling.
Du kan bruke dette til en indikator ved arbeidsbenken, et forsøk med bevegelsesregistrering i gangen eller til å se hvor godt en sensor dekker et rom. Start med den enkle kretsen hvis du vil forstå signalet før du skriver kode. Har du Tab5 fra før, kan du gå rett til skjermprosjektet etter å ha lest om sensoren.

Hvordan oppdager en PIR-bevegelsessensor bevegelse?
PIR står for passiv infrarød sensor. En PIR-detektor er en passiv bevegelsesdetektor: den sender ikke ut noen lysstråle. Sensoren reagerer på endringer i infrarød varmestråling når for eksempel en person beveger seg gjennom sonene i linsens synsfelt. Derfor er den nyttig for å registrere bevegelse i et område, men dårlig egnet til å fortelle om noen sitter helt stille.
Vi bruker PIR-modulen MR-00906, HC-SR501. Den har tre pinner: VCC, OUT og GND. VCC er forsyningspinnen og kalles VIN i noen beskrivelser. Forsyningen kan være 4,5 til 20 V, mens utgangen er et digitalt signal på omtrent 3,3 V. I begge prosjektene velger vi 5 V til sensoren. Det gjør oppkoblingen oversiktlig og passer sammen med utstyret rundt den.
Forsyningsspenning og signalspenning er forskjellige ting. At sensoren får 5 V på VCC, betyr ikke at OUT gir 5 V. Mål gjerne mellom OUT og GND med et multimeter mens du beveger deg foran linsen. Et lavt signal skal ligge nær 0 V; et aktivt signal nær 3,3 V. Ikke koble VCC til en GPIO-inngang.
| Innstilling eller tilkobling | Hva den gjør | Start her |
|---|---|---|
| VCC / GND | Forsyner sensoren med strøm | Regulert 5 V og felles GND |
| OUT | Digitalt bevegelsessignal | Lavt uten aktivt signal, omtrent 3,3 V ved aktivering |
| Følsomhet | Justerer hvor lett bevegelse registreres | Begynn med lav følsomhet, og øk mens du prøver sensoren |
| Forsinkelse | Bestemmer hvor lenge OUT holdes høy | Velg kort holdetid under testing |
| Jumper H / L | Velger om ny bevegelse forlenger signalet | H når indikatoren skal fortsette å vise aktivitet |
Kontroller merkingen på ditt kretskort før du kobler. På de fleste HC-SR501-kort står VCC, OUT og GND trykt under den hvite linsen, som kan løftes forsiktig av. Snur du kortet med komponentene opp og pinnene nærmest deg, er rekkefølgen vanligvis VCC, OUT og GND fra venstre, med VCC ved siden av den lille beskyttelsesdioden. Ikke bestem rekkefølgen ut fra et bilde sett fra motsatt side. Potensiometrenes plassering kan variere mellom utgaver. Drei forsiktig og test én innstilling om gangen. Sensormodulen er oppgitt med rekkevidde opptil 7 meter, men temperatur, plassering og bevegelsesretning påvirker det faktiske resultatet.
Prosjekt 1: enkel bevegelsesalarm med LED
Transistoren gjør at sensoren bare trenger å styre et lite signal. Strømmen til LED-en går fra 5 V gjennom en egen motstand og transistoren. Det gir også et godt utgangspunkt for å lære forskjellen mellom en styreinngang og en last.
- LED-sortiment med 16 dioderVelg én rød LED. Den skal ha en egen 1 kΩ-motstand i serie.LED-dioder 5 mm, assortert farge, 16 stkPå lagerkr 49,00
- BC547B, pakke med femBruk én NPN-transistor. Kontroller kollektor, base og emitter i databladet.Bipolar NPN-transistor i TO-92, 45V og 0,1A, 5 stk.På lagerkr 29,00
- Motstandssett med 16 verdierTo 1 kΩ og én 10 kΩ, alle 0,25 W.Motstandssett med 160 THT-motstander i 16 verdier, 0,25 WPå lagerkr 149,00
- Koblingsbrettsett med ledningerBruk brettet og hann-hann-ledningene. Du trenger også passende hunnledninger til sensorens pinnelist.Koblingsbrettsett med 830 hull, strømmodul og ledningerPå lagerkr 219,00
Har du delene fra før, bruk dem. Flere valg finnes under koblingsbrett og prototyping og koblingsledninger. Til første forsøk er en regulert laboratorieforsyning på 5,0 V, med strømgrense rundt 0,05 A, praktisk. Strømforsyningen til et koblingsbrettsett må kobles etter sin egen dokumentasjon; en USB-A-kontakt merket som utgang skal ikke brukes som strøminngang.
Koble kretsen med strømmen slått av
| Fra | Til |
|---|---|
| 5 V | PIR VCC og den ene enden av LED-ens 1 kΩ-motstand |
| LED-motstandens andre ende | LED-anode A |
| LED-katode K | BC547B kollektor C |
| PIR OUT | Én 1 kΩ-motstand, deretter BC547B base B |
| BC547B base B | 10 kΩ-motstand til GND |
| BC547B emitter E | GND |
| PIR GND | Forsyningens GND |
Sett transistorens tre bein i hver sin kontaktgruppe. Den lange LED-pinnen er vanligvis anoden, mens den korte pinnen og den flate kanten på kapslingen markerer katoden. Er beina klippet, bruk diodetesten på multimeteret. Les om komponentene i guiden til transistorer, og bruk motstandskalkulatoren hvis du er usikker på fargeringene.
Når OUT blir høy, går en liten strøm gjennom basemotstanden. Transistoren leder strøm, og LED-en lyser. Med en rød LED blir strømmen i lysdioden omtrent 3 mA ved 5 V og 1 kΩ. 10 kΩ-motstanden holder basen lav når styresignalet er frakoblet. LED-en følger sensorens holdetid; den slukker derfor ikke nødvendigvis i samme øyeblikk som du står stille.
Prøv før du bygger videre
- Kontroller pluss og minus på koblingsbrettet. Noen strømskinner er delt på midten.
- Slå på 5 V. La sensoren få minst ett minutt til å stabilisere seg. Utslag under oppstart skal ikke tolkes som en ferdig test.
- Gå på tvers av sensorens synsfelt. LED-en skal lyse når OUT blir høy.
- Gå ut av synsfeltet og vent til holdetiden er over. LED-en skal slukke.
- Prøv kort og lang holdetid. Med jumperen i H kan gjentatt bevegelse forlenge tiden lyset er på.
Dette er en liten lysindikator. Ikke bytt LED-en direkte med en lampe, motor eller sirene. En annen last krever en ny vurdering av strøm, transistor, forsyning og eventuell beskyttelsesdiode.
Prosjekt 2: alarmpanel med bevegelsessensor og skjerm
Tab5 har en stor LCD-skjerm som kan oppdateres når sensorens tilstand skifter. Programmet viser «BEVEGELSE» mens OUT er høy og «INGEN NY BEVEGELSE» når den er lav. En teller øker ved hver ny aktivering. Den teller ikke personer: flere mennesker kan gi ett sammenhengende signal, og én person kan gi mange aktiveringer.
Vi velger LCD fremfor e-papir i dette prosjektet fordi tilstanden skal kunne skifte ofte. E-papir passer bedre når innholdet endres sjeldnere. Du finner slike bruksområder i guiden til e-papir og informasjonsskjermer.
Koble PIR til Grove-port A
Tab5s Grove-port A har fire pinner: GND, 5 V, GPIO53 og GPIO54. PIR-modulen har vanlige pinner, ikke en Grove-kontakt. Sett derfor Grove-kabelen MR-01369 med frie ledere i port A, og tre hunn-hann-ledninger MR-00569 på sensorens pinner. Skjøt hver hunn-hann-ledning med riktig Grove-leder i en koblingsklemme med spak fra settet MR-00478: svart til GND, blå til OUT og rød til VCC. Klemmene tar ledere fra 0,08 mm², så de tynne Grove-lederne holder seg fast. GPIO53 er lederen ved siden av den røde; på MR-01369 er den blå. Kabler med M5Stacks egne farger har gul leder på denne plassen og hvit på GPIO54, så følg plasseringen i pluggen. Den gule lederen i MR-01369 er GPIO54 og brukes ikke; isoler enden med krympestrømpe eller isolasjonstape. Frie flertrådede ender skal ikke presses løst ned i et koblingsbrett.
| Tab5 port A, leder i MR-01369 | PIR MR-00906 | Bruk |
|---|---|---|
| Svart: GND | GND | Felles referanse for signalet |
| Rød: 5 V | VCC | Sensorens strømforsyning |
| Blå: GPIO53 | OUT | Digital inngang, omtrent 3,3 V ved aktivitet |
| Gul: GPIO54 | Ingen forbindelse | Isoler lederen |
Slå av Tab5 før du kobler. Fjern den separate 5 V-forsyningen og transistorforbindelsen fra prosjekt 1. Programmet aktiverer strømmen til port A med Power.setExtOutput(True, M5.Power.PORT.A). Uten dette kan sensoren mangle forsyning selv om Tab5-skjermen er på. Koden setter GPIO53 som inngang med intern pull-down; en løs signalledning vil derfor se ut som lavt signal, ikke som en egen feilmelding.
Last ned blokkprogram og Python-kode
Du trenger ikke bygge opp programmet fra bildene. Last ned den ferdige blokkfilen til UIFlow 2, eller bruk Python-koden. Begge inneholder hele programmet som viser bevegelse og teller aktiveringer.
Last ned hele prosjektpakken (ZIP)
Last ned UIFlow-blokker (.m5f2)
- Blokker: åpne
pir-tab5.m5f2i UIFlow 2. Filen inneholder både Setup og Loop; SVG-bildene nedenfor er bare lesehjelp. - Python: åpne
pir-tab5.pysom tekst og kopier hele innholdet til Python-visningen i UIFlow 2. Du kan også bruke kopieringsknappen ved hele programmet lenger ned. - ZIP: pakk ut arkivet først. Det inneholder begge programfilene, koblingsskjemaene og en README med fremgangsmåte. Ikke åpne selve ZIP-filen som et UIFlow-prosjekt.
Python-filen er generert fra de samme blokkene. Figurene under er gjengitt fra prosjektets faktiske blokker med UIFlow 2s blokkmotor.
Installer fastvaren med M5Burner og overfør programmet med UIFlow 2
M5Burner installerer UIFlow-fastvaren på enheten. Selve PIR-programmet åpner og overfører du deretter i UIFlow 2. Du skal altså ikke velge .m5f2- eller .py-filen som firmware i M5Burner.
- Installer M5Burner etter M5Stacks veiledning for Tab5 og UIFlow 2. Bruk en USB-C-datakabel og velg firmware for akkurat Tab5. Ta sikkerhetskopi av egne filer før du installerer fastvaren; prosessen kan slette innholdet på enheten.
- Sjekk etiketten på Tab5 og velg en aktuell firmware som støtter skjermvarianten. Tab5 finnes med ulike skjermdrivere. Følg den offisielle anvisningen hvis M5Burner ber deg sette enheten i nedlastingsmodus.
- Åpne UIFlow 2 i en nettleser som støtter WebSerial, og velg Tab5. Koble til enheten via USB slik Tab5-veiledningen viser. Programmet vårt bruker ingen WiFi-innstillinger.
- Åpne
pir-tab5.m5f2med prosjektets Open-funksjon. Kontroller at Setup og Loop vises, og at inngangen er GPIO53. Ikke legg til en ekstra side med LVGL-komponenter; dette programmet tegner direkte på skjermen. - Bruk Run Once for første test. Vent til meldingen «Vent 60 s: sensorstart» forsvinner, og gå så foran sensoren. Vil du bruke Python i stedet, lim inn hele koden nedenfor i Python-visningen og kjør den.
- Når testen virker, bruk Run Always for å laste programmet ned til enheten. For automatisk start kan du bruke oppstartsvalget «Run main.py directly» i M5Burner-konfigurasjonen, slik Tab5-veiledningen beskriver. Prøv en omstart og kontroller resultatet; Run Once alene bekrefter ikke at programmet blir lagret eller starter automatisk.
Er UIFlow nytt for deg, forklarer innføringen i UIFlow 2 og MicroPython forskjellen mellom blokker, Python, firmware og opplasting. Hold deg til Tab5-anvisningen når den skiller seg fra fremgangsmåten for andre M5Stack-kort.
Hele Python-programmet: klart til å kopieres
import M5
from M5 import Power
from hardware import Pin
import time
def setup():
global pin53, raw, previous, activations
M5.begin()
Power.setExtOutput(True, M5.Power.PORT.A)
pin53 = Pin(53, mode=Pin.IN, pull=Pin.PULL_DOWN)
M5.Display.setRotation(3)
M5.Display.setTextSize(5)
M5.Display.setTextColor(16777215, 1056816)
M5.Display.clear(1056816)
M5.Display.setCursor(60, 80)
M5.Display.print('PIR / BEVEGELSE', 16777215)
M5.Display.setCursor(60, 190)
M5.Display.print('Vent 60 s: sensorstart', 16777215)
time.sleep(60)
activations = 0
previous = -1
def loop():
global pin53, raw, previous, activations
M5.update()
raw = pin53.value()
if raw != previous:
if raw == 1:
activations = activations + 1
M5.Display.clear(1056816)
M5.Display.setCursor(60, 80)
M5.Display.print('PIR / BEVEGELSE', 16777215)
if raw == 1:
M5.Display.setCursor(60, 190)
M5.Display.print('BEVEGELSE', 16759808)
else:
M5.Display.setCursor(60, 190)
M5.Display.print('INGEN NY BEVEGELSE', 65448)
M5.Display.setCursor(60, 310)
M5.Display.print('Aktiveringer:', 16777215)
M5.Display.setCursor(60, 390)
M5.Display.print('' + str(activations), 16777215)
M5.Display.setCursor(60, 520)
M5.Display.print('Siden programstart', 16777215)
previous = raw
time.sleep_ms(50)
if __name__ == "__main__":
setup()
while True:
loop()
Programmet venter 60 sekunder etter at det gir sensoren strøm. Deretter leser det inngangen omtrent hvert 50. millisekund, i tillegg til tiden skjermtegningen tar. Telleren nullstilles når programmet starter. Hvis OUT allerede er høy ved første avlesning etter ventetiden, registreres dette som én aktivering. Det er ingen lagring til fil og ingen meldinger til nettverket.
Blokkfil, generert kode og elektriske forbindelser er kontrollert mot dokumentasjonen og testet uten tilkoblet maskinvare. Import i den innloggede UIFlow-editoren og funksjon på en fysisk Tab5 er ikke bekreftet. Bruk prøvene under som kontroll av ditt eget oppsett før du tar det i bruk.
Test alarmpanelets bevegelsesdeteksjon
- La sensoren stå stille under oppstart. Etter ventetiden skal du få et skjermbilde med tilstand og teller.
- Gå gjennom synsfeltet. «BEVEGELSE» skal vises, og telleren skal øke én gang.
- Beveg deg mens OUT fortsatt er høy. Telleren skal ikke øke for hver avlesning.
- Vent til signalet har blitt lavt. En ny bevegelse skal gi neste aktivering.
- Start programmet på nytt. Kontroller at ventetiden kommer tilbake og telleren starter på nytt.
PIR, IR-barriere eller fotocelle?
Vil du vite om noen beveger seg i et område, er PIR et godt utgangspunkt. Vil du vite om et bestemt punkt blir passert, kan en aktiv IR-barriere passe bedre. Da sender den ene delen infrarødt lys mot en mottaker, og systemet reagerer når lysveien brytes. En slik sensor kan også reagere på en gjenstand som ikke er varm.
| Sensor | Passer til | Viktig forskjell |
|---|---|---|
| PIR MR-00906 | Bevegelsesindikator i et område | Digitalt 3,3 V-signal og justerbar holdetid |
| IR-barriere MR-00460, opptil 200 cm | Passering gjennom en bestemt lysvei | Forsyning på 3,3 til 5 V og åpen kollektor; trenger riktig pull-up og kontroll av signalets polaritet |
| Fotocelle MR-00741 med reléutgang | Brudd i en lysvei, for eksempel ved en port | Separat forsyning på 12 til 24 V; relékontakten må kobles og kontrolleres etter dokumentasjonen |
Ingen av barrierene skal erstatte PIR-modulen pinne for pinne i skjemaene over. En åpen kollektor kan trenge en pull-up til 3,3 V for Tab5. En reléutgang krever kontroll av COM, NO og NC og av om kontakten er potensialfri. 12 til 24 V skal aldri inn på Tab5s GPIO. Vi viser dem som alternativer for andre deteksjonsoppgaver, ikke som ferdig koblede varianter av disse to prosjektene.
Ved en motordrevet port må sikkerhetsfunksjonene følge portprodusentens krav. Et hobbyprosjekt med Tab5 er ikke en erstatning for godkjent klemsikring. For å vite om dører eller vinduer er lukket, bruker du normalt en magnetkontakt på døren eller vinduet. PIR alene kan ikke fortelle deg dette.
Plassering av bevegelsessensoren og feilsøking
| Symptom | Kontroller først |
|---|---|
| LED-en lyser aldri | Mål 5 V mellom VCC og GND. Kontroller LED-retning, transistorbeina og signalet på OUT. |
| LED-en lyser lenge | Kort ned holdetiden og undersøk om H-modus forlenger signalet ved gjentatt bevegelse. |
| Tab5 viser bare lavt signal | Kontroller at port A er aktivert, at lederen ved siden av den røde (blå på MR-01369) går til OUT, og at GND er felles. |
| Tab5-skjermen er tom eller feil | Kontroller Tab5-firmware og skjermdriver, riktig modell i editoren og at hele programmet er lastet inn. |
| Telleren øker mer eller mindre enn ventet | Den teller aktiveringer etter lavt signal, ikke personer eller skritt. Holdetid og H/L-modus påvirker resultatet. |
| Uventede utslag | Vent lenger etter oppstart. Flytt sensoren bort fra sol, varmeovner og trekk, og reduser følsomheten. |
Sett sensoren slik at en person går på tvers av synsfeltet. Unngå å peke den rett mot en varmekilde. Prøv plasseringen med korte ledninger på benken før du monterer noe fast. Ikke legg sensoren bak en vanlig glassrute og forvent samme funksjon: glasset slipper ikke gjennom varmestrålingen PIR-sensoren er laget for å registrere på samme måte som synlig lys.
Til slutt kan du undersøke hvordan følsomhet, holdetid og plassering virker sammen. La innstillingene stå uendret, flytt sensoren og gå den samme ruten foran den på nytt. Da får du et langt bedre bilde av dekningen enn ved å skru på begge potensiometrene samtidig. Begge oppsettene er læringsprosjekter for bevegelsesdeteksjon og visuell varsling. De er ikke komplette innbruddsalarmer, men gir et konkret utgangspunkt for å forstå hvordan en bevegelsessensor kan brukes i et alarmsystem.
Vanlige spørsmål
Hvorfor lyser LED-en fortsatt når ingen beveger seg?
HC-SR501 holder OUT høy en stund etter at den har registrert bevegelse. Potensiometeret for forsinkelse bestemmer hvor lenge. Står jumperen på H, regnes tiden fra siste bevegelse, slik at OUT holder seg høy så lenge noen beveger seg. På L går OUT lav når tiden er ute, selv om bevegelsen fortsetter. Etter at OUT har gått lav, registrerer sensoren ikke ny bevegelse i omtrent 2,5 sekunder. Skru forsinkelsen ned under testing, så ser du raskere hvordan sensoren reagerer.
Kan en PIR-sensor registrere bevegelse gjennom glass?
Som regel ikke. Vanlig vindusglass slipper i liten grad gjennom den langbølgede varmestrålingen sensoren reagerer på. Sensoren må derfor se rommet direkte. Den hvite linsen foran sensoren er laget av et plastmateriale som slipper denne strålingen gjennom.
Kan HC-SR501 få strøm fra 3,3 V?
Ikke på VCC-pinnen. Modulen er oppgitt for 4,5 til 20 V fordi den har en egen spenningsregulator. Utgangen gir likevel omtrent 3,3 V og passer derfor til 3,3 V-innganger som GPIO53 på Tab5. I begge prosjektene får sensoren 5 V.
Hva er forskjellen på en fotocelle og en bevegelsessensor?
Ordet fotocelle brukes om to ting. Ved porter betyr det en IR-barriere som reagerer når lysstrålen mellom sender og mottaker brytes. På utelamper med fotocelle og bevegelsessensor er fotocellen en lyssensor som bare slår på lampen når det er mørkt, mens PIR-sensoren oppdager bevegelsen. Mange HC-SR501-kort har en ledig plass merket RL for en lysfølsom motstand som gir den samme funksjonen. Kontroller ditt kort før du lodder noe.
Kan Tab5 sende varsel til mobilen?
Ikke med dette programmet. Det viser bevegelse lokalt og bruker ikke WiFi. Vil du sende status videre over nettverket, viser prosjektene med magnetkontakt og døralarm hvordan en M5Stack sender meldinger med MQTT og Home Assistant.
Kilder og videre lesning
Pinnevalg og strøm til port A følger M5Stacks Tab5-dokumentasjon. Programmet bruker de dokumenterte Pin-funksjonene og Power-funksjonene i UIFlow 2. Transistorens tilkoblinger og grenser kontrolleres i onsemis datablad for BC547-familien. Bruk produktkortet og dokumentasjonen for delene du faktisk har; utseendet alene er ikke nok til å identifisere pinneoppsettet.




