Sisukord:
- Samm: süsteemi must kast
- 2. samm: komponendid
- 3. samm: D plätud
- Samm: tingimuslikud tingimused
- 5. samm: piirangud
- 6. toiming: peamine lähtefail
- 7. samm: kokkupanek
- Samm: programmi laadimine
Video: Energiatõhusa liikumisega aktiveeritud tänavavalgustid: 8 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:47
Meie eesmärk selle projektiga oli luua midagi, mis säästaks kogukondade energiat ja rahalisi ressursse. Liikumisega aktiveeritud tänavavalgustid teeksid mõlemat asja. Kogu riigis raisatakse energiat tühjade tänavate valgustamiseks mõeldud tänavavalgustitele. Meie tänavavalgustussüsteem tagab, et tuled põlevad ainult vajadusel, säästes kogukondi lugematuid dollareid. Liikumisandureid kasutades lülitab süsteem tuled sisse ainult siis, kui autod on kohal. Ka jalakäijate turvalisuse huvides rakendasime tühistamisnupu, mis lülitab tänaval sisse kõik tuled. Järgmised sammud tutvustavad teile, kuidas me kavandasime ja ehitasime oma vähendatud projekti mudeli, kasutades Vivadot ja Basys 3 tahvlit.
Samm: süsteemi must kast
Alustasime seda projekti lihtsa musta kasti skeemi joonistamisega. Musta kasti diagramm näitab lihtsalt sisendeid ja väljundeid, mida meie süsteem vajab kõigi vajalike protsesside lõpuleviimiseks. Püüdsime hoida oma disaini võimalikult lihtsana ja elementaarsena. Meie kolm süsteemi sisendit sisaldasid liikumisandurite bussi (4 meie vähendatud mudeli jaoks), jalakäijate tühistamisnuppu ja kella sisendit. Teisel pool on meie üks väljund LED -tulede buss, mis esindab meie tänavavalgustit. Selle mudeli puhul kasutasime 16 tänavavalgustuse stsenaariumi lihtsalt sellepärast, et see on Basys 3 tahvli sisseehitatud LED -väljundite maksimaalne arv. Lõpuks, kasutades seda skeemi, suutsime luua oma Vivado projekti-, lähte- ja piirangute failid sobivate sisendite ja väljunditega.
2. samm: komponendid
Selles etapis sukeldume sügavamale, uurides meie musta kasti diagrammi komponente. Meie esimene komponent on VHDL-i lähtefail, mis sisaldab D-plätusid. D-plätud võtavad lihtsalt kella tõusva serva anduritelt neile sisestatud signaali ja salvestab need andmed järgmise tõusva servani. See hoiab ära meie tundlikud liikumisandurid, et väljund -LED -id ei hakkaks vilkuma. Samuti panime nupu sisendsignaalile ühe D-klappi, et hoida LED-id põlemas umbes 5-7 sekundit pärast nupu vajutamist. Ajasime selle ka läbi kellajaguri.
olem clk_div2 on port (clk: in std_logic; sclk: out std_logic); lõpp clk_div2;
Arhitektuur my_clk_div ja clk_div2 on
konstant max_count: täisarv: = (300000000); signaal tmp_clk: std_logic: = '0'; start my_div: process (clk, tmp_clk) muutuja div_cnt: täisarv: = 0; alusta kui (tõusev serv (clk)), siis kui (div_cnt = MAX_COUNT), siis tmp_clk <= mitte tmp_clk; div_cnt: = 0; muidu div_cnt: = div_cnt + 1; lõpetada, kui; lõpetada, kui; sclk <= tmp_clk; lõpeta protsess my_div; lõpp my_clk_div;
Selle diagrammi viimane komponent on käitumuslik VHDL -lähtefail, mis sisaldab väljundite tingimuslikke tingimusi sisendsignaalide konfiguratsiooni alusel.
3. samm: D plätud
Sisendsignaalide külge kinnitatud neli plätud on meie süsteemi toimimiseks hädavajalikud. Nagu varem öeldud, kasutavad plätud tundlike liikumisandurite ja alistusnupu abil riive, et väljastada meie sisendsignaal ainult kella tõusvas servas. See järjestikune loogika tähendab, et meie tänavavalgustid võivad pärast kiiret liikumist käivitada teatud aja jooksul põlema. D-Flip Flopi kodeerimine on üsna lihtne:
algusprotsess (CLK) algab, kui tõusev serv (CLK), siis Q <= D; lõpetada, kui; protsessi lõpetamine;
Kogu asja saab koondada üheks avalduseks. Kui meil oli see tükk, lõime struktuurse VHDL-lähtefaili, mis sisaldas kõiki nelja meie vajalikku plätud:
alustada DFF0: DFF pordikaart (CLK => CLK, D => D (0), Q => Q (0)); DFF1: DFF -i pordikaart (CLK => CLK, D => D (1), Q => Q (1)); DFF2: DFF pordikaart (CLK => CLK, D => D (2), Q => Q (2)); DFF3: DFF -i pordikaart (CLK => CLK, D => D (3), Q => Q (3));
lõpp Käitumine;
See aitab hoida meie põhistruktuurifaili, kus koondame kõik süsteemi komponendid palju puhtamaks ja organiseeritumaks.
Samm: tingimuslikud tingimused
Selleks, et meie kood oleks kompaktne ja efektiivne, kirjutasime kõik meie tingimused ühte juhtumilausesse. Meie vähendatud mudeli jaoks oli meil 16 võimalikku LED -väljundi konfiguratsiooni, kuna iga liikumisandur vastutab 4 LED -i rühma eest.:
juhtum NMS on, kui "1111" => LED LED LED LED LED LED LED LED LED LED LED LED LED LED LED LED <= "1111111111111111"; lõppjuhtum;
5. samm: piirangud
Sisendi ja väljundite õigeks märkimiseks Vivado abil peate rakendama piirangute faili, milles on märgitud kõik kasutatavad pordid, nupud, LED -id ja kellad.
set_property PACKAGE_PIN W5 [get_ports CLK] set_property IOSTANDARD LVCMOS33 [get_ports CLK]
set_property PACKAGE_PIN U16 [get_ports {LED [0]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [0]}] set_property PACKAGE_PIN E19 [get_ports {LED [1]}] set_property IOSTANDARD LVCMOS33 [get_operty] U19 [get_ports {LED [2]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [2]}] set_property PACKAGE_PIN V19 [get_ports {LED [3]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [3]}] set_property WACK get_ports {LED [4]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [4]}] set_property PACKAGE_PIN U15 [get_ports {LED [5]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [5]}] set_property U14 [saada] LED [6]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [6]}] set_property PACKAGE_PIN V14 [get_ports {LED [7]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [7]}] set_property PACKAGE_PIN V13 [8]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [8]}] set_property PACKAGE_PIN V3 [get_ports {LED [9]}] set_property IO STANDARD LVCMOS33 [get_ports {LED [9]}] set_property PACKAGE_PIN W3 [get_ports {LED [10]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [10]}] set_property PACKAGE_PIN U3 [get_ports {LED [LV] COS_OST] [get_ports {LED [11]}] set_property PACKAGE_PIN P3 [get_ports {LED [12]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [12]}] set_property PACKAGE_PIN N3 [get_ports {LED [13]}] set_propertyMOS33 [get_ports] {LED [13]}] set_property PACKAGE_PIN P1 [get_ports {LED [14]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [14]}] set_property PACKAGE_PIN L1 [get_ports {LED [15]}] set_property IOSTANDARD LVCMOS33 [15]}]
set_property PACKAGE_PIN U18 [get_ports BTN] set_property IOSTANDARD LVCMOS33 [get_ports BTN]
set_property PACKAGE_PIN A14 [get_ports {MS [0]}] set_property IOSTANDARD LVCMOS33 [get_ports {MS [0]}] set_property PACKAGE_PIN A16 [get_ports {MS [1]}] set_property IOSTANDARD LVCMOS33 [get_porty_PACK] B15 [get_ports {MS [2]}] set_property IOSTANDARD LVCMOS33 [get_ports {MS [2]}] set_property PACKAGE_PIN B16 [get_ports {MS [3]}] set_property IOSTANDARD LVCMOS33 [get_ports {MS [3]}]
6. toiming: peamine lähtefail
Sellesse põhifaili koondame kõik eelnevalt mainitud komponentide lähtefailid. See fail toimib struktuurikoodina, mis koondab erinevad komponendid.
üksus Master_Final_Project on port (BTN: STD_LOGIC; CLK: STD_LOGIC; MS: STD_LOGIC_VECTOR (3 kuni 0); LED: väljas STD_LOGIC_VECTOR (15 kuni 0)); lõpp Master_Final_Project;
arhitektuur Master_Final_Project käitumine on
komponendi lõplik_projekt on port (--CLK: STD_LOGIC; NMS: STD_LOGIC_VECTOR (3 kuni 0); BTN: STD_LOGIC; --sw: STD_LOGIC_Vector (1 kuni 0); LED: väljas STD_LOGIC_VECTOR (15 kuni 0)); lõppkomponent;
komponent Final_DFF on
Port (CLK: STD_LOGIC; D: STD_LOGIC_Vector (3 kuni 0); Q: out STD_LOGIC_Vector (3 kuni 0)); lõppkomponent;
signaal DFF02proj30: STD_LOGIC;
signaal DFF12proj74: STD_LOGIC; signaal DFF22proj118: STD_LOGIC; signaal DFF32proj1512: STD_LOGIC;
alustada
DFF0: Final_DFF pordikaart (CLK => CLK, D (0) => MS (0), D (1) => MS (1), D (2) => MS (2), D (3) => MS (3), Q (0) => DFF02proj30, Q (1) => DFF12proj74, Q (2) => DFF22proj118, Q (3) => DFF32proj1512); Proj0: final_project pordikaart (NMS (0) => DFF02proj30, NMS (1) => DFF12proj74, NMS (2) => DFF22proj118, NMS (3) => DFF32proj1512, BTN => BTN, LED => LED); lõpp Käitumine;
7. samm: kokkupanek
Selle projekti riistvara kokkupanek on minimaalne. Ainsad nõutavad osad on järgmised:
1. Basys 3 pardal (1)
2. Odavad liikumisandurid, mida leiate siit amazonist. (4)
3. Mehe-naise juhtmed (4)
Kokkupanek:
1. Ühendage 4 isast juhet PMod päise JB portidesse 1-4 (vt joonis).
2. Ühendage naisotsad iga liikumisanduri väljundpoldiga.
Samm: programmi laadimine
Nüüd oleme valmis laadima VHDL -i peamise lähtefaili Basys 3 tahvlile. Käivitage kindlasti süntees, juurutamine ja genereerige bitivoo kontroll võimalike vigade osas. Kui kõik töötab edukalt, avage riistvarahaldur ja programmeerige seade Basys 3. Teie projekt on nüüd lõpule jõudnud!
Soovitan:
Liikumisega aktiveeritud Cosplay tiivad Circuit Playground Expressi abil - 1. osa: 7 sammu (piltidega)
Motion Activated Cosplay Wings Circuit Playground Expressi abil - 1. osa: See on üks kaheosalise projekti osa, milles ma näitan teile oma protsessi automatiseeritud haldjatiibade tegemiseks. Projekti esimene osa on tiibade mehaanika ja teine osa muudab selle kantavaks ning lisab tiivad
Liikumisega aktiveeritud lambi lüliti: 3 sammu
Liigutusega aktiveeritud lampide lüliti: kui me lahkume oma lauast või toast, unustame enamasti tuled välja lülitada. See põhjustab elektrikadu ja teie elektriarve suurenemist. Aga mis siis, kui tuled kustuvad automaatselt pärast toast lahkumist. Jah sees
Sensoripõhine liikumisega käivitatud muusikamängija: 3 sammu
Sensoripõhine liikumisega käivitatud muusikamängija: Minu bakalaureuseõppe kolledžis pidime looma originaalse projekti, mille kõik õpilased said ise valida. Minu projekti puhul, kuna ma kuulan alati muusikat ja mulle tundub alati, et kõlari sisselülitamine on liiga tülikas
Liikumisega aktiveeritud trepid: 6 sammu (piltidega)
Liigutusega aktiveeritud trepid: Jah, ma tean, mida te mõtlete, see tundub küll pisut üle jõu käiv, kuid esiteks ei pea te kunagi muretsema, et oma varba uuesti kinni teeksite, ja teiseks teeb see nii palju trepist üles ja alla kõndimise. lõbus, avastasin end üles minemata ilma tõestuseta
Liikumisega juhitav kaamera MESH SDK abil: 6 sammu (piltidega)
Liikumisega juhitav kaamera MESH SDK abil: Kas soovite oma kaamera automatiseerida, et jäädvustada oma lemmiklooma parimad hetked, kui te pole kodus? MESH liikumisandur võimaldab kaameraid, mis toetavad SDK -d. Näiteks oleme paigutanud kassitoidu ja kassi mänguasjade kõrvale MESH liikumisanduri, et