Sadržaj:

Senzor pokreta/brojač Kontrolisana svjetla: 7 koraka
Senzor pokreta/brojač Kontrolisana svjetla: 7 koraka

Video: Senzor pokreta/brojač Kontrolisana svjetla: 7 koraka

Video: Senzor pokreta/brojač Kontrolisana svjetla: 7 koraka
Video: Ako imate Android telefon, OVO MORATE ISPROBATI! 2024, Juli
Anonim
Senzor pokreta/brojač kontrolirana svjetla
Senzor pokreta/brojač kontrolirana svjetla

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

Potreban softver i hardver
Potreban softver i hardver
Potreban softver i hardver
Potreban softver i hardver
Potreban softver i hardver
Potreban softver i hardver
Potreban softver i hardver
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)

Kodovi (Vivado)
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)

Razumijevanje načina na koji se spajaju (sheme VHDL komponenti)
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

Kako se naše komponente uklapaju zajedno!
Kako se naše komponente uklapaju zajedno!
Kako se naše komponente uklapaju zajedno!
Kako se naše komponente uklapaju zajedno!
Kako se naše komponente uklapaju zajedno!
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: