Innholdsfortegnelse:
- Trinn 1: Nødvendig programvare og maskinvare
- Trinn 2: Koder (Vivado)
- Trinn 3: Forstå hvordan de kommer sammen (skjemaer for VHDL -komponenter)
- Trinn 4: Kode (Arduino)
- Trinn 5: Hvordan våre komponenter passer sammen
- Trinn 6: Demonstrasjon
- Trinn 7: På tide å teste det ut
Video: Bevegelsessensor/motkontrollerte lys: 7 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:24
Dette prosjektet ble opprettet som et avsluttende prosjekt for et Digital Design -kurs på Cal Poly, San Luis Obispo (CPE 133).
Hvorfor vil vi gjøre dette? Vi vil bidra til å bevare naturressurser i verden. Vårt prosjekt fokuserer på å spare strøm. Ved å spare mer strøm vil vi kunne bevare naturressursene som brukes til å generere elektrisitet. Når vi begynner 2018, blir naturressurser forbrukt med en utrolig fart. Vi ønsker å være bevisste på vår innvirkning på miljøet vårt og spille vår rolle i å bevare naturressurser. Elektronikk kan implementeres på forskjellige måter for å spare energi som hjelper miljøet så vel som vår økonomiske tilstand.*Denne modellen ble opprettet ved hjelp av komponentene som er tilgjengelige for oss.
Hva var vår inspirasjon? Folk glemmer ofte å slå av ferielampene og sløser med energi ved å la dem være på natten. I virkeligheten vil dette prosjektet spare strøm fordi "ferielysene" bare ville være på når folk er i nærheten, og dermed spare energi når ingen er i nærheten. Videre ønsket vi å designe en tidtaker, slik at lysene sloknet helt etter en gitt tid for å sikre at de ikke slås på på grunn av bevegelse som ble oppdaget klokken 03.00, for eksempel.
Hvordan kan du bruke denne designen? Denne designen kan implementeres for alle slags lys, enten de er dekorative, praktiske eller begge deler. Hvis du vil at skrivebordslampen din bare skal fungere i 6 timer om gangen, for eksempel. Du må sette en teller til 21, 600 sekunder (6 timer x 3, 600 sekunder/time). Mens telleren aktivt øker, ville bevegelsessensoren kontrollere lyset. Hver gang den slås av i løpet av den tidsperioden, trenger du bare å vinke hånden foran bevegelsessensoren, og den slås på igjen. Hvis du sovner ved skrivebordet og våkner 7 timer senere, vil bevegelsen ikke slå den på.
Trinn 1: Nødvendig programvare og maskinvare
Programvare:
- Vivado 2016.2 (eller en nyere versjon) finner du her
- Arduino IDE 1.8.3 (eller en nyere versjon) finner du her
Maskinvare:
- 1 Basys 3 -brett
- 1 Arduino Uno
- 2 brødbrett
- 1 Ultrasonic Ranging sensor HC-SR04
- 9 Mann-til-mann-ledninger
- 1 LED
- 1 100Ω motstand
Trinn 2: Koder (Vivado)
Endelig tilstandsmaskin (se tilstandsdiagram ovenfor):
Lysdioden krevde en endelig tilstandsmaskin. En LED har bare to tilstander for å være av og på. Bare to innganger styrer tilstanden til LED -en, telleren og sensoren. Den eneste gangen LED -lampen skal være på er når sensoren oppdager bevegelse og når telleren teller fra null til tretti sekunder. I alle andre tilfeller vil lysdioden være slukket.
Filnavn: LEDDES
Disk:
Telleren lar oss begrense hvor lang tid bevegelsessensoren kan aktivere LED -en. Verdien vises på Basys 3 Boards syv segmentdisplay gjennom en kildekode ("sseg_dec"). Når Reset -bryteren er nede (verdi: '0'), begynner telleren å øke hvert sekund fra 0 til 30. Når den når 30, fryser den på det tallet. Den starter ikke på nytt fra 0 før Reset -bryteren veksles til ‘1’ og tilbake til ‘1.’ Hvis Reset blir ‘1’ mens telleren går, vil telleren fryse på hvilken verdi den hadde nådd. Når Reset går tilbake til '0', starter telleren på nytt fra 0 til 30. Denne implementeringen krever også bruk av et klokkesignal, koden er gitt nedenfor ("clk_div2").
Filnavn: FinalCounter
LEVERENDE FILER:
Syv segmentvisning:
Denne koden lar sju segmentvisning vise desimalverdier. En delmodul fungerer som dekoder mellom en 8-bits binær inngang og en 4-bits binær kodet desimal. Den andre deler klokkesignalet for å oppdatere verdien med en viss hastighet.
Filnavn: sseg_dec
Klokkesignal:
Denne koden lar telleren øke i trinn på 1 sekund. Den deler inngangsklokkefrekvensen i en langsommere frekvens. Vi tilpasset oss å gi en periode på 1 sekund ved å endre konstant max_count: integer: = (3000000)”til“konstant max_count: integer: = (50000000).”
Filnavn: clk_div2
Leverte filer: sseg_dec, clk_div2 *Disse kildefilene ble levert av professor Bryan Mealy.
Trinn 3: Forstå hvordan de kommer sammen (skjemaer for VHDL -komponenter)
Hovedfilen ("MainProjectDES") inneholder alle underfilene som er diskutert tidligere. De er koblet på den ovennevnte måten. De forskjellige komponentene er sammenkoblet ved hjelp av portkart for å sende et signal fra ett element til et annet.
Som du kanskje har lagt merke til, gir FinalCounter en 5-biters utgang mens sseg_dec krever en 8-biters inngang. For å kompensere setter vi signalet som forbinder begge komponentene til å begynne med "000" og legger til 5-biters utgang fra telleren. Dermed gir den en 8-bits inngang.
Begrensninger:
For å kjøre disse kodene på Basys 3 -kortet var det nødvendig med en begrensningsfil som fortalte hvert signal hvor de skulle gå og hvordan delene var koblet sammen.
Trinn 4: Kode (Arduino)
Vi programmerte Arduino Uno til å bruke bevegelsessensoren til å oppdage bevegelse og gi en utgang som signaliserer LED -en til å lyse. I tillegg krever bruk av sensoren for å oppdage bevegelse løpende løkker som stadig ser etter endring i avstand. I hovedsak trenger den en tidtaker som kjører samtidig for å sende et "høyt" signal for at LED -en skal lyse mens timeren må tilbakestilles når det er oppdaget ny bevegelse, som er nesten umulig å implementere på Vivado basert på kunnskapens omfang av klassen. Videre brukte vi en Arduino fordi det ikke ville være mulig å bruke HC-SR04 med Basys 3-kortet siden kortet bare leverer 3,3V mens sensoren krever en 5V strømforsyning. For implementering av detekteringsbevegelsen er det faktisk koding i motsetning til CAD i VHDL.
Vi brukte den innebygde pulsfunksjonen for sensoren for å hente tiden som gikk mellom lyden som opprinnelig ble sendt ut fra sensoren og lyden som spretter tilbake når du treffer et objekt. Deretter bruker vi lydens hastighet og tidsintervall for å beregne avstanden mellom objektet og sensoren. Fra det lagrer vi nåværende avstand og holder orden på den. Vi kontrollerer avstanden hver 150 ms. Vi brukte også biblioteket elapsedmil til å kjøre en intern timer inne i arduinoen for å holde oversikt over tiden som gikk. Hvis vi oppdager en distanseendring, som tilsvarer en bevegelse, tilbakestilles timeren til null, og den vil holde lyset på til 3 sekunder har gått. Når sensoren oppdager en annen bevegelse, tilbakestilles timeren til 0 og signalet for LED -lyset vil være "høyt" i de neste 3 sekundene. Vi har lagt ved en kopi av vår Arduino -kode nedenfor.
Trinn 5: Hvordan våre komponenter passer sammen
Som du kan se i "Basys3: Pmod Pin-out Diagram*" og bildet av Arduino Uno Board, fremhevet og merket vi portene vi brukte.
1. LED og Basys 3 Board
Lysdioden er seriekoblet med 100Ω motstand. -Den hvite ledningen kobler motstanden til pin PWR på Basys 3 -kortet. -Den gule ledningen kobler LED -en til pin H1 på Basys 3 -kortet.
2. Bevegelsessensoren og Arduino Uno
-Den oransje ledningen kobler Vcc (strøm) til bevegelsessensoren til pinne 5V på Arduino Uno-kortet. -Den hvite ledningen kobler pin Trig på bevegelsessensoren til pin 10 på Arduino Uno-kortet. -Den gule ledningen kobler pin Echo av bevegelsessensoren til pinne 9 på Arduino Uno-kortet. -Den svarte ledningen kobler pin GND på bevegelsessensoren til pin GND på Arduino Uno-kortet.
[Ledningene vi brukte var for korte til å nå komponentene, og de var dermed sammenkoblet]
3. Basys 3 -brettet og Arduino Uno
Den gule ledningen kobler pin A14 på Basys 3 -kortet til pin 6 på Arduino Uno -kortet.
*Dette diagrammet er hentet fra Digilents "Basys 3 ™ FPGA Board Reference Manual" som du finner her.
Trinn 6: Demonstrasjon
Trinn 7: På tide å teste det ut
Gratulerer! Du har kommet til slutten av vårt bevegelsessensor- og motstyrt lysprosjekt! Tusen takk for at du leste gjennom vårt Instructables -innlegg. Nå er det på tide at du prøver å bygge dette prosjektet selv. Hvis du følger hvert trinn nøye, bør du ha en bevegelsessensor og motstyrt lys som fungerer som vårt! Vi ønsker deg lykke til med å bygge dette prosjektet, og håper det kan bidra til å spare strøm og naturressurser!
Anbefalt:
Bærbar bevegelsessensor: 4 trinn
Bærbar bevegelsessensor: Hei, jeg har laget en bærbar batteridrevet bevegelsessensor som jeg vil dele med deg. Hva du trenger: Arduino Uno Keyes bevegelsessensor Ledninger LED (rød, grønn blå) Brødbrett
Bevegelsessensor under sengebelysning: 16 trinn (med bilder)
Motion Sensing Under Bed Lighting: Har du noen gang prøvd å komme deg ut av sengen stille om natten bare for å snuble over noe og vekke hele huset? Bevegelsesfølende nattlys installert diskret under sengen gir lavt lys som er sterkt nok til å lede deg rundt de herreløse LEGO-klossene
Lys opp Chanukah-genser med individuelle "lys": 7 trinn (med bilder)
Opplyst Chanukah-genser med individuelle "stearinlys": Høytidsfesten og i år kan du være festens lysende stjerne med en lys menoragenser! Dette er et sydd kretsprosjekt som bruker relativt rimelige materialer som er lett å finne på nettet og i håndverksbutikken. Enda bedre
Musikkreaktivt lys -- Hvordan lage superenkelt musikkreaktivt lys for å gjøre skrivebordet fantastisk: 5 trinn (med bilder)
Music Reactive Light || How to Make Super Simple Music Reactive Light for Making Desktop Awsome .: Hei, hva skjer gutter, I dag skal vi bygge et veldig interessant prosjekt. I dag skal vi bygge musikk reaktivt lys. LED -en vil endre lysstyrken iht. bassen som faktisk er lavfrekvent lydsignal. Det er veldig enkelt å bygge. Vi vil
Automatiser et lys ved å bruke MESH -bevegelsessensor: 3 trinn (med bilder)
Automatiser et lys med MESH -bevegelsessensor: Glemmer du ofte å slå av lysene? Det er alltid mulig å glemme å slå av lysene når du forlater huset eller rommet, men med MESH -bevegelsessensoren løste vi problemet ved å bruke deteksjons- og oppdagelsesfunksjonene for å hjelpe deg med å lette