Indholdsfortegnelse:
- Trin 1: Påkrævet software og hardware
- Trin 2: Koder (Vivado)
- Trin 3: Forstå, hvordan de hænger sammen (skemaer af VHDL -komponenter)
- Trin 4: Kode (Arduino)
- Trin 5: Sådan passer vores komponenter sammen
- Trin 6: Demonstration
- Trin 7: Tid til at teste det
Video: Bevægelsessensor/kontrastyrede lys: 7 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:29
Dette projekt blev oprettet som et afsluttende projekt for et Digital Design -kursus på Cal Poly, San Luis Obispo (CPE 133).
Hvorfor gør vi dette? Vi vil hjælpe med at bevare naturressourcer i verden. Vores projekt fokuserer på at spare strøm. Ved at spare mere elektricitet vil vi være i stand til at bevare de naturressourcer, der bruges til at producere elektricitet. Da vi begynder 2018, forbruges naturressourcer med en utrolig hastighed. Vi vil være bevidste om vores indvirkning på vores miljø og spille vores rolle i bevarelsen af naturressourcer. Elektronik kan implementeres på forskellige måder for at spare energi, som hjælper miljøet såvel som vores økonomiske tilstand.*Denne model blev oprettet ved hjælp af de komponenter, vi har til rådighed.
Hvad var vores inspiration? Folk glemmer ofte at slukke deres ferielamper og spilde energi ved at lade dem være tændt natten over. I virkeligheden sparer dette projekt elektricitet, fordi "ferielys" kun ville være tændt, når folk er i nærheden, og dermed spare energi, når ingen er i nærheden. Desuden ville vi designe en timer, så lysene ville slukke helt efter et givet tidspunkt for at sikre, at de ikke tænder på grund af bevægelse opdaget kl. 3 f.eks.
Hvordan kan du bruge dette design? Dette design kan implementeres til alle slags lys, uanset om de er dekorative, praktiske eller begge dele. Hvis du f.eks. Ønsker, at dit skrivebordslampe kun skal fungere i 6 timer ad gangen. Du bliver nødt til at indstille en tæller til 21, 600 sekunder (6 timer x 3, 600 sekunder/time). Mens tælleren aktivt stiger, ville bevægelsessensoren styre lyset. Hver gang den slukker i løbet af det tidsrum, skal du bare vinke din hånd foran bevægelsessensoren, og den tændes igen. Hvis du falder i søvn ved dit skrivebord og vågner 7 timer senere, vil din bevægelse ikke tænde det.
Trin 1: Påkrævet software og hardware
Software:
- Vivado 2016.2 (eller en nyere version) findes her
- Arduino IDE 1.8.3 (eller en nyere version) findes her
Hardware:
- 1 Basys 3 bord
- 1 Arduino Uno
- 2 brødbrætter
- 1 Ultralydssensor HC-SR04
- 9 Tråde fra mand til mand
- 1 LED
- 1 100Ω modstand
Trin 2: Koder (Vivado)
Finite State Machine (se tilstandsdiagram ovenfor):
Lysdioden krævede en endelig tilstandsmaskine. En LED har kun to tilstande til og fra. Kun to indgange styrer lysdioden, tælleren og sensoren. Den eneste gang LED'en skal være tændt, er når sensoren registrerer bevægelse, og når tælleren tæller fra nul til tredive sekunder. I alle andre tilfælde vil LED'en være slukket.
Filnavn: LEDDES
Tæller:
Tælleren giver os mulighed for at begrænse den tid, hvor bevægelsesføleren kan aktivere LED'en. Dens værdi vises på Basys 3 Board's syv segment display gennem en kildekode ("sseg_dec"). Når nulstillingskontakten er nede (værdi: '0'), begynder tælleren at stige hvert sekund fra 0 til 30. Når den når 30, fryser den på det tal. Det genstarter ikke fra 0, før nulstillingskontakten skiftes til '1' og tilbage til '1.' Hvis nulstilling bliver '1', mens tælleren kører, vil tælleren fryse til den værdi, den havde nået. Når nulstilling går tilbage til '0', genstarter tælleren fra 0 til 30. Denne implementering kræver også brug af et kloksignal, dens kode er angivet nedenfor ("clk_div2").
Filnavn: FinalCounter
LEVEREDE FILER:
Syv segment display:
Denne kode gør det muligt for syv segmentvisning at vise decimalværdier. Et submodul fungerer som dekoder mellem en 8-bit binær input og en 4-bit Binary Coded Decimal. Den anden deler urets signal for at opdatere dens værdi med en bestemt hastighed.
Filnavn: sseg_dec
Ur Signal:
Denne kode gør det muligt for tælleren at stige i trin på 1 sekund. Det deler inputurfrekvensen i en langsommere frekvens. Vi tilpassede os til at give en periode på 1 sekund ved at ændre konstant max_count: integer: = (3000000)”til“constant max_count: integer: = (50000000).”
Filnavn: clk_div2
Medfølgende filer: sseg_dec, clk_div2 *Disse kildefiler blev leveret af professor Bryan Mealy.
Trin 3: Forstå, hvordan de hænger sammen (skemaer af VHDL -komponenter)
Hovedfilen ("MainProjectDES") indeholder alle de tidligere diskuterede underfiler. De er forbundet på ovenstående måde. De forskellige komponenter er forbundet med portkort til at sende et signal fra et element til et andet.
Som du måske har bemærket, leverer FinalCounter et 5-bit output, mens sseg_dec kræver en 8-bit input. For at kompensere satte vi signalet, der forbinder begge komponenter, til at begynde med "000" og tilføjede 5-bit output fra tælleren. Således giver en 8-bit input.
Begrænsninger:
For at køre disse koder på Basys 3 Board var der en begrænsningsfil påkrævet, der fortalte hvert signal, hvor de skulle gå, og hvordan delene var forbundet.
Trin 4: Kode (Arduino)
Vi programmerede Arduino Uno til at bruge bevægelsessensoren til at registrere bevægelse og levere et output, der signalerer LED'en til at lyse. Derudover kræver brug af sensoren til at registrere bevægelse løbende sløjfer, der konstant leder efter ændringer i afstanden. I det væsentlige har den brug for en timer, der kører samtidigt for at udsende et "højt" signal, for at LED'en skal lyse, mens timeren skal nulstilles, når der er registreret ny bevægelse, hvilket er næsten umuligt at implementere på Vivado baseret på omfanget af viden af klassen. Desuden brugte vi en Arduino, fordi det ikke ville være muligt at bruge HC-SR04 med Basys 3-kortet, da kortet kun leverer 3,3V, mens sensoren kræver en 5V-strømforsyning. Til implementering af detekteringsbevægelsen er det faktisk kodning i modsætning til CAD i VHDL.
Vi brugte den indbyggede pulsfunktion til sensoren til at hente den tid, der gik mellem lyden, der oprindeligt blev udsendt fra sensoren, og den lyd, der hopper tilbage, når man rammer et objekt. Derefter bruger vi lydens hastighed og tidsinterval til at beregne afstanden mellem objektet og sensoren. Fra det gemmer vi den aktuelle afstand og holder styr på den. Vi kontrollerer afstanden hver 150 ms. Vi brugte også biblioteket elapsedmil til at køre en intern timer inde i arduinoen for at holde styr på den forløbne tid. Hvis vi registrerer en afstandsændring, som svarer til en bevægelse, nulstilles timeren til nul, og den holder lyset tændt, indtil der er gået 3 sekunder. Når sensoren registrerer en anden bevægelse, nulstilles timeren til 0, og signalet for LED -lyset vil være "højt" i de næste 3 sekunder. Vi har vedhæftet en kopi af vores Arduino -kode nedenfor.
Trin 5: Sådan passer vores komponenter sammen
Som du kan se i "Basys3: Pmod Pin-out Diagram*" og billedet af Arduino Uno Board, fremhævede vi og mærkede de porte, vi brugte.
1. LED og Basys 3 Board
LED'en er forbundet i serie med 100Ω modstanden. -Den hvide ledning forbinder modstanden med pin PWR på Basys 3 -kortet. -Den gule ledning forbinder LED'en med pin H1 på Basys 3 -kortet.
2. Bevægelsessensoren og Arduino Uno
-Den orange ledning forbinder bevægelsessensorens Vcc (strøm) til pin 5V på Arduino Uno-kortet. -Den hvide ledning forbinder pin Trig på bevægelsessensoren til pin 10 på Arduino Uno-kortet. -Den gule ledning forbinder pin Echo af bevægelsessensoren til pin 9 på Arduino Uno-kortet. -Den sorte ledning forbinder pin GND på bevægelsessensoren til pin GND på Arduino Uno-kortet.
[Ledningerne, vi brugte, var for korte til at nå komponenterne, og derfor var de forbundet med hinanden]
3. Basys 3 -tavlen og Arduino Uno
Den gule ledning forbinder pin A14 på Basys 3 -kortet med pin 6 på Arduino Uno -kortet.
*Dette diagram er taget fra Digilents "Basys 3 ™ FPGA Board Reference Manual", som kan findes her.
Trin 6: Demonstration
Trin 7: Tid til at teste det
Tillykke! Du er nået til slutningen af vores bevægelsesføler og kontrastyret lysprojekt! Mange tak fordi du læste gennem vores Instructables -indlæg. Nu er det tid for dig at prøve at bygge dette projekt selv. Hvis du følger hvert trin omhyggeligt, bør du have en bevægelsessensor og modstyret lys, der fungerer som vores! Vi ønsker dig held og lykke med at bygge dette projekt, og håber det kan bidrage til at spare på elektricitet såvel som naturressourcer!
Anbefalede:
Bærbar bevægelsessensor: 4 trin
Bærbar bevægelsessensor: Hej, jeg lavede en bærbar batteridrevet bevægelsessensor, som jeg gerne vil dele med dig.Hvad har du brug for: Arduino Uno Keyes bevægelsessensor Ledninger LED'er (rød, grøn blå) Brødbræt
Bevægelsessensor Vandhane ved hjælp af Arduino og magnetventil - DIY: 6 trin
Bevægelsessensor Vandhane ved hjælp af Arduino og magnetventil - DIY: I dette projekt viser jeg dig, hvordan du bygger en vandhaner fra en bevægelsessensor ved hjælp af en magnetventil. Dette projekt kan hjælpe dig med at konvertere din eksisterende manuelle vandhane til en hane, der kan styres baseret på bevægelsesdetektering. Brug af IR -sensorinterfacet
Bevægelsessensor dørklokke: 5 trin (med billeder)
Motion Sensor Doorbell: Da jeg fortalte min søn Jayden om udfordringen, tænkte han straks på at bruge LEGO WeDo -sættet. Han har spillet med Legos i årevis, men det var først i starten af sidste skoleår, at han fik mulighed for at kode med WeDo 2.0
Musikreaktivt lys -- Sådan laves superenkelt musikreaktivt lys til at gøre skrivebordet fantastisk: 5 trin (med billeder)
Music Reactive Light || Sådan laver du Super Simple Music Reactive Light for Making Desktop Awsome .: Hey whats up guys, I dag vil vi bygge et meget interessant projekt. I dag bygger vi musik reaktivt lys. LED'en ændrer dens lysstyrke iht. basen, der faktisk er lavfrekvent lydsignal. Det er meget enkelt at bygge.Vi vil
Automatiser et lys ved hjælp af MESH -bevægelsessensor: 3 trin (med billeder)
Automatiser et lys ved hjælp af MESH -bevægelsessensor: Glemmer du ofte at slukke lyset? Det er altid muligt at glemme at slukke lyset, når du forlader dit hus eller værelse, men med MESH -bevægelsessensoren løste vi problemet ved at bruge detekterings- og opdagelsesfunktionerne til at hjælpe dig med at lette