Sadržaj:
- Korak 1: Potreban softver i hardver
- Korak 2: Kodovi (Vivado)
- Korak 3: Razumijevanje načina na koji se spajaju (sheme VHDL komponenti)
- Korak 4: Kod (Arduino)
- Korak 5: Kako se naše komponente uklapaju zajedno
- Korak 6: Demonstracija
- Korak 7: Vrijeme je da ga isprobate
Video: Senzor pokreta/brojač Kontrolisana svjetla: 7 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:08
Ovaj projekat je nastao kao završni projekat za kurs digitalnog dizajna u Cal Poly, San Luis Obispo (CPE 133).
Zašto to radimo? Želimo pomoći očuvanju prirodnih resursa u svijetu. Naš projekt se fokusira na uštedu električne energije. Uštedom više električne energije moći ćemo očuvati prirodne resurse koji se koriste za proizvodnju električne energije. Na početku 2018. godine prirodni resursi se troše nevjerovatnom brzinom. Želimo biti svjesni svog utjecaja na okoliš i igrati svoju ulogu u očuvanju prirodnih resursa. Elektronika se može implementirati na različite načine radi uštede energije koja pomaže okolišu, kao i našem ekonomskom stanju.*Ovaj model je kreiran korištenjem komponenti koje su nam dostupne.
Koja nam je inspiracija bila? Ljudi često zaborave ugasiti svjetla za praznike i rasipaju energiju ostavljajući ih uključene preko noći. U stvarnosti, ovaj projekt će uštedjeti električnu energiju jer bi se „praznična svjetla“palila samo kada su ljudi u blizini, čime bi se sačuvala energija kada nema nikoga u blizini. Osim toga, htjeli smo dizajnirati mjerač vremena kako bi se svjetla potpuno ugasila nakon određenog vremena kako bi se osiguralo da se ne uključuju zbog kretanja, na primjer, u 3 sata ujutro.
Kako biste mogli koristiti ovaj dizajn? Ovaj dizajn se može primijeniti za sve vrste svjetala, bilo da su ukrasne, praktične ili oboje. Na primjer, ako želite da vam stolno svjetlo funkcionira samo 6 sati odjednom. Morali biste postaviti brojač na 21, 600 sekundi (6 sati x 3, 600 sekundi/sat). Dok se brojač aktivno povećava, senzor pokreta će kontrolirati svjetlo. Stoga, svaki put kad se isključi u tom vremenskom periodu, samo trebate odmahnuti rukom ispred senzora pokreta i on će se ponovo uključiti. Ako zaspite za svojim stolom i probudite se 7 sati kasnije, vaš pokret ga neće uključiti.
Korak 1: Potreban softver i hardver
Softver:
- Vivado 2016.2 (ili noviju verziju) možete pronaći ovdje
- Arduino IDE 1.8.3 (ili novija verzija) možete pronaći ovdje
Hardver:
- 1 ploča Basys 3
- 1 Arduino Uno
- 2 Oglasne ploče
- 1 Ultrazvučni senzor dometa HC-SR04
- 9 Muške žice
- 1 LED
- 1 100Ω otpornik
Korak 2: Kodovi (Vivado)
Mašina konačnih stanja (pogledajte dijagram stanja gore):
LED je zahtevao mašinu konačnog stanja. LED ima samo dva stanja uključivanja i isključivanja. Samo dva ulaza kontroliraju stanje LED diode, brojač i senzor. LED dioda bi trebala biti uključena samo kada senzor detektira kretanje i kada brojač broji od nule do trideset sekundi. U svakom drugom slučaju LED će biti isključen.
Naziv datoteke: LEDDES
Brojač:
Brojač nam omogućava da ograničimo vrijeme tokom kojeg senzor pokreta može aktivirati LED. Njegova vrijednost je prikazana na sedmosegmentnom ekranu Basys 3 Board -a putem izvornog koda (“sseg_dec”). Kada je prekidač za poništavanje postavljen prema dolje (vrijednost: '0'), brojač počinje povećavati svake sekunde od 0 do 30. Kad dosegne 30, smrzava se na tom broju. Neće se ponovo pokrenuti od 0 sve dok se prekidač za poništavanje ne prebaci na „1“i natrag na „1.“Ako resetiranje postane „1“dok se brojač kreće, brojač će se zamrznuti na bilo koju vrijednost koju je dosegao. Kad se reset vrati na „0“, brojač će se ponovo pokrenuti od 0 do 30. Ova implementacija također zahtijeva upotrebu takta, njegov kôd je naveden ispod („clk_div2“).
Naziv datoteke: FinalCounter
DOSTAVLJENI DATOTEKE:
Ekran sa sedam segmenata:
Ovaj kôd dozvoljava sedmosegmentnom ekranu da prikaže decimalne vrijednosti. Jedan podmodul djeluje kao dekoder između 8-bitnog binarnog ulaza i 4-bitne binarno kodirane decimale. Drugi dijeli signal sata kako bi osvježio svoju vrijednost određenom brzinom.
Naziv datoteke: sseg_dec
Signal sata:
Ovaj kod omogućava brojaču povećanje u koracima od 1 sekunde. On dijeli ulaznu frekvenciju takta na sporiju frekvenciju. Prilagodili smo se tako da osiguramo period od 1 sekunde promjenom konstante max_count: integer: = (3000000)”na“konstanta max_count: integer: = (50000000)”.
Naziv datoteke: clk_div2
Dostavljene datoteke: sseg_dec, clk_div2 *Ove izvorne datoteke dao je profesor Bryan Mealy.
Korak 3: Razumijevanje načina na koji se spajaju (sheme VHDL komponenti)
Glavna datoteka ("MainProjectDES") sadrži sve podfajlove o kojima smo ranije govorili. Oni su povezani na gornji način. Različite komponente su međusobno povezane pomoću mapa portova za slanje signala s jednog elementa na drugi.
Kao što ste možda primijetili, FinalCounter pruža 5-bitni izlaz, dok sseg_dec zahtijeva 8-bitni ulaz. Da bismo kompenzirali, postavili smo signal koji povezuje obje komponente kako bi počeo s "000" i dodao 5-bitni izlaz iz brojača. Na taj način pruža se 8-bitni ulaz.
Ograničenja:
Za izvođenje ovih kodova na Basys 3 ploči bila je potrebna datoteka ograničenja koja svakom signalu govori kuda treba ići i kako su dijelovi povezani.
Korak 4: Kod (Arduino)
Programirali smo Arduino Uno da koristi senzor pokreta za otkrivanje kretanja i daje izlaz koji signalizira LED da zasvijetli. Osim toga, korištenje senzora za otkrivanje pokreta zahtijeva pokretanje petlji koje stalno traže promjenu udaljenosti. U suštini, potreban mu je mjerač vremena koji se istodobno pokreće za izlaz "visokog" signala da bi LED zasvijetlila, dok se tajmer mora resetirati kada se otkrije novo kretanje, što je gotovo nemoguće implementirati na Vivadu na temelju opsega znanja klase. Štoviše, koristili smo Arduino jer ne bi bilo moguće koristiti HC-SR04 s Basys 3 pločom jer ploča napaja samo 3,3 V, dok senzor zahtijeva napajanje od 5 V. Za implementaciju detekcijskog kretanja, to je stvarno kodiranje za razliku od CAD -a u VHDL -u.
Koristili smo ugrađenu funkciju impulsa za senzor za dohvaćanje vremena koje je prošlo između zvuka koji je inicijalno emitiran iz senzora i zvuka koji se odbija pri udarcu u objekt. Zatim koristimo brzinu zvuka i vremenski interval za izračunavanje udaljenosti između objekta i senzora. Od toga pohranjujemo trenutnu udaljenost i pratimo je. Svakih 150ms provjeravamo udaljenost. Također smo koristili biblioteku elapsedmil za pokretanje internog tajmera unutar arduina kako bismo pratili proteklo vrijeme. Ako otkrijemo promjenu udaljenosti, što odgovara kretanju, mjerač vremena se resetira na nulu i svjetlo će ostati upaljeno sve dok ne prođu 3 sekunde. Kad god senzor detektira drugi pokret, mjerač vremena se resetira na 0 i signal za LED svjetlo će biti "visok" sljedeće 3 sekunde. Dolje smo priložili kopiju našeg Arduino koda.
Korak 5: Kako se naše komponente uklapaju zajedno
Kao što možete vidjeti na "Basys3: Pmod Pin-out dijagramu*" i fotografiji Arduino Uno ploče, označili smo i označili portove koje smo koristili.
1. Ploča sa LED diodama i bazama
LED dioda je serijski spojena sa 100Ω otpornikom. -Bijela žica povezuje otpornik s pin PWR -om Basys 3 ploče. -Žuta žica spaja LED diodu na pin H1 Basys 3 ploče.
2. Senzor pokreta i Arduino Uno
-Narančasta žica spaja Vcc (napajanje) senzora pokreta na pin 5V Arduino Uno ploče. -Bjela žica povezuje pin Trig senzora pokreta na pin 10 Arduino Uno ploče. -Žuta žica povezuje pin Echo senzor pokreta na pin 9 Arduino Uno ploče.-Crna žica povezuje pin GND senzora pokreta s pin GND Arduino Uno ploče.
[Žice koje smo koristili bile su prekratke da bi došle do komponenti, pa su bile međusobno povezane]
3. Basys 3 ploča i Arduino Uno
Žuta žica povezuje pin A14 ploče Basys 3 s pinom 6 Arduino Uno ploče.
*Ovaj dijagram je preuzet iz Digilentovog "Referentnog priručnika za Basys 3 ™ FPGA ploču" koji se nalazi ovdje.
Korak 6: Demonstracija
Korak 7: Vrijeme je da ga isprobate
Čestitamo! Uspjeli ste do kraja našeg projekta senzora pokreta i svjetlosnog brojača! Hvala vam puno što ste pročitali naš post Instructables. Sada je vrijeme da sami pokušate izgraditi ovaj projekt. Ako pažljivo pratite svaki korak, trebali biste imati senzor pokreta i svjetlo sa kontra kontrolom koje radi slično našem! Želimo vam svu sreću u izgradnji ovog projekta i nadamo se da može doprinijeti uštedi električne energije, ali i prirodnih resursa!
Preporučuje se:
Interaktivna svjetla za dvorište, svjetla za hodnike: 3 koraka
Interaktivna svjetla za dvorište, svjetla za hodnike: Htjela sam izgraditi neku vrstu interaktivnih svjetla za dvorište. Ideja je bila da kada bi neko hodao u jednom smjeru pokrenula bi se animacija u smjeru u kojem ste hodali. Počeo sam sa solarnim svjetlima od 1,00 dolara za Dollar General
Prekidač svjetla aktiviran pokretom sa senzorom svjetla: 5 koraka
Prekidač za svjetlo aktiviran pokretom sa senzorom svjetla: Prekidač za svjetlo aktiviran pokretom ima mnogo primjena kako u kući tako i u uredu. Ovo je, međutim, imalo dodatnu prednost uključivanjem svjetlosnog senzora, tako da se ovo svjetlo može aktivirati samo noću
Svjetla senzora pokreta Basys3: 8 koraka
Svjetla senzora pokreta Basys3: Za naš završni projekt u digitalnom dizajnu, odlučili smo se za simulaciju svjetla senzora pokreta. Oni se aktiviraju ne samo kada se objekt nalazi u njegovoj blizini, već se aktiviraju i samo u određeno doba dana. To možemo modelirati pomoću FPGA (Basys3 ploča)
Kontrolisana svjetla aplikacije Lego Mini Cooper: 7 koraka (sa slikama)
Kontrolirana svjetla aplikacije Lego Mini Cooper: Opasnost, UXB! Je li vaš posao iz snova stručnjak za uklanjanje bombi, ali oklijevate zbog umirućeg dijela? Onda je ovo projekat za vas! Potrošit ćete duge sate na sitna prilagođavanja izuzetno nestabilnog uređaja, znojeći se s vašeg braka
Božićna svjetla "uradi sam" postavljena na muziku - koreografska svjetla kuće: 15 koraka (sa slikama)
DIY Božićna svjetla postavljena na muziku - koreografska svjetla za kuću: DIY božićna svjetla na muziku - koreografska kućna svjetla Ovo nije DIY za početnike. Trebat će vam dobro razumijevanje elektronike, kruga, OSNOVNOG programiranja i općenitih znanja o električnoj sigurnosti. Ovaj DIY je za iskusnu osobu pa