Turinys:
- 1 žingsnis: sistemos juodoji dėžė
- 2 žingsnis: komponentai
- 3 žingsnis: D Šlepetės
- 4 žingsnis: Sąlygos
- 5 žingsnis: Apribojimai
- 6 veiksmas: pagrindinis šaltinio failas
- 7 žingsnis: Surinkimas
- 8 žingsnis: Įkelkite programą
Video: Energiją taupantys judesio įjungiami gatvių žibintai: 8 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:46
Mūsų tikslas šiuo projektu buvo sukurti tai, kas sutaupytų bendruomenių energijos ir finansinių išteklių. Judant suaktyvinami gatvių žibintai padarytų abu šiuos dalykus. Visoje šalyje energija eikvojama gatvių apšvietimui, apšviečiant tuščias gatves. Mūsų gatvių apšvietimo sistema užtikrina, kad žibintai dega tik tada, kai reikia, taip sutaupydami bendruomenėms daugybę dolerių. Naudodama judesio jutiklius, sistema įjungia šviesas tik tada, kai yra automobilių. Taip pat pėsčiųjų saugumui įdiegėme nepaisymo mygtuką, kuris įjungia visas gatvės šviesas. Šie veiksmai padės jums suprasti, kaip mes sukūrėme ir sukūrėme sumažintą projekto modelį, naudodami „Vivado“ir „Basys 3“plokštę.
1 žingsnis: sistemos juodoji dėžė
Šį projektą pradėjome piešdami paprastą juodos dėžės schemą. Juodosios dėžės schema paprasčiausiai parodo įėjimus ir išėjimus, kurių mūsų sistemai reikia norint užbaigti visus būtinus procesus. Mes stengėmės, kad mūsų dizainas būtų kuo paprastesnis ir paprastesnis. Mūsų trys sistemos įvestys apima judesio jutiklių magistralę (4 mūsų sumažinto modelio), pėsčiųjų nepaisymo mygtuką ir laikrodžio įvestį. Kita vertus, mūsų vienintelis išėjimas yra LED žibintų magistralė, vaizduojanti mūsų gatvių žibintus. Šiam modeliui mes panaudojome 16 gatvių žibintų scenarijų vien todėl, kad tai yra didžiausias „Basys 3“plokštėje įmontuotų LED išėjimų skaičius. Galiausiai, naudodamiesi šia diagrama, galėjome sukurti savo „Vivado“projekto, šaltinio ir apribojimų failus su tinkamomis įvestimis ir išvestimis.
2 žingsnis: komponentai
Šiame žingsnyje mes gilinamės giliau, nagrinėdami komponentus, sudarančius mūsų juodosios dėžės diagramą. Pirmasis mūsų komponentas yra VHDL šaltinio failas, kuriame yra D šlepetės. D šlepetės tiesiog priima bet kokį signalą, kurį jiems įveda iš kylančio laikrodžio krašto jutiklių, ir fiksuoja šiuos duomenis iki kito kylančio krašto. Tai apsaugo mūsų jautrius judesio jutiklius, kad išvesties šviesos diodai „nemirksėtų“. Be to, ant mygtuko įvesties signalo uždedame vieną D šlepetę, kad šviesos diodai degtų maždaug 5-7 sekundes po mygtuko paspaudimo. Mes taip pat tai atlikome per laikrodžio skirstytuvą.
subjektas clk_div2 yra uostas (clk: std_logic; sclk: out std_logic); pabaiga clk_div2;
„clk_div2“architektūra „my_clk_div“yra
pastovus maks. skaičius: sveikasis skaičius: = (300000000); signalas tmp_clk: std_logic: = '0'; pradėti my_div: process (clk, tmp_clk) kintamasis div_cnt: integer: = 0; pradėti, jei (kylančioji briauna (clk)), tada jei (div_cnt = MAX_COUNT), tada tmp_clk <= ne tmp_clk; div_cnt: = 0; else div_cnt: = div_cnt + 1; baigti, jei; baigti, jei; sclk <= tmp_clk; baigti procesą my_div; pabaiga my_clk_div;
Paskutinis mūsų šios diagramos komponentas yra elgesio VHDL šaltinio failas, kuriame yra išėjimų sąlygos, pagrįstos įvesties signalų konfigūracija.
3 žingsnis: D Šlepetės
Keturi šleifai, pritvirtinti prie įvesties signalų, yra būtini mūsų sistemos funkcionalumui. Kaip minėta anksčiau, naudojant jautrius judesio jutiklius ir nepaisymo mygtuką, šlepetės naudoja skląsčius, kad įvesties signalą perduotų tik kylančiam laikrodžio kraštui. Ši nuosekli logika reiškia, kad mūsų gatvės žibintai gali veikti tam tikrą laiką po to, kai juos suaktyvina greitas judesys. „D-Flip Flop“kodavimas yra gana paprastas:
startprocess (CLK) prasideda, jei kylančioji briauna (CLK) tada Q <= D; pabaiga, jei; pabaigos procesas;
Visa tai galima sujungti į vieną „if“teiginį. Kai turėjome šį kūrinį, sukūrėme struktūrinį VHDL šaltinio failą, kuriame yra visi keturi būtini šlepetės:
pradėti DFF0: DFF prievadų žemėlapis (CLK => CLK, D => D (0), Q => Q (0)); DFF1: DFF prievadų žemėlapis (CLK => CLK, D => D (1), Q => Q (1)); DFF2: DFF prievadų žemėlapis (CLK => CLK, D => D (2), Q => Q (2)); DFF3: DFF prievadų žemėlapis (CLK => CLK, D => D (3), Q => Q (3));
pabaiga Elgesys;
Tai padeda išlaikyti pagrindinį struktūrinį failą, kuriame visus sistemos komponentus sujungiame daug švariau ir tvarkingiau.
4 žingsnis: Sąlygos
Siekdami, kad mūsų kodas būtų kompaktiškas ir efektyvus, visas sąlygines sąlygas įrašėme į vieną atvejo pareiškimą. Mūsų sumažinto modelio atveju turėjome 16 galimų LED išvesties konfigūracijų, nes kiekvienas judesio jutiklis yra atsakingas už 4 šviesos diodų grupę.:
atvejis NMS yra, kai "1111" => LED LED LED LED LED LED LED LED LED LED LED LED LED LED LED LED LED <= "1111111111111111"; pabaigos atvejis;
5 žingsnis: Apribojimai
Norėdami tinkamai nurodyti savo įvestį ir išvestį naudodami „Vivado“, turite įdiegti apribojimo failą, kuriame nurodomi visi naudojami prievadai, mygtukai, šviesos diodai ir laikrodžiai.
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_PACK] 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 [gauti] 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 STANDARTAS 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] iOS_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 [gauti] {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_operty_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 veiksmas: pagrindinis šaltinio failas
Šiame pagrindiniame faile mes sujungiame visus anksčiau paminėtus komponentų šaltinio failus. Šis failas veikia kaip struktūrinis kodas, sujungiantis skirtingus komponentus.
subjektas „Master_Final_Project“yra prievadas (BTN: STD_LOGIC; CLK: STD_LOGIC; MS: STD_LOGIC_VECTOR (nuo 3 iki 0); šviesos diodas: išjungtas STD_LOGIC_VECTOR (nuo 15 iki 0)); end Master_Final_Project;
architektūra „Master_Final_Project“elgsena yra
komponento galutinis_projektas yra prievadas (--CLK: STD_LOGIC; NMS: į STD_LOGIC_VECTOR (3 iki 0); BTN: į STD_LOGIC; --sw: į STD_LOGIC_Vector (nuo 1 iki 0); šviesos diodas: iš STD_LOGIC_VECTOR (nuo 15 iki 0)); galinis komponentas;
komponentas Final_DFF yra
Uostas (CLK: STD_LOGIC; D: STD_LOGIC_Vector (nuo 3 iki 0); Q: iš STD_LOGIC_Vector (nuo 3 iki 0)); galinis komponentas;
signalas DFF02proj30: STD_LOGIC;
signalas DFF12proj74: STD_LOGIC; signalas DFF22proj118: STD_LOGIC; signalas DFF32proj1512: STD_LOGIC;
pradėti
DFF0: Galutinis_DFF prievadų žemėlapis (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 uosto žemėlapis (NMS (0) => DFF02proj30, NMS (1) => DFF12proj74, NMS (2) => DFF22proj118, NMS (3) => DFF32proj1512, BTN => BTN, LED => LED); pabaiga Elgesys;
7 žingsnis: Surinkimas
Šio projekto aparatūros surinkimas yra minimalus. Vieninteliai reikalingi elementai yra šie:
1. „Basys 3“lenta (1)
2. Pigūs judesio jutikliai, kuriuos galima rasti „Amazon“čia. (4)
3. Laidai nuo vyrų iki moterų (4)
Surinkimas:
1. Prijunkite 4 kištukinius laidus prie „PMod“antraštės JB 1-4 prievadų (žr. Paveikslėlį).
2. Prijunkite galus prie kiekvieno judesio jutiklio išvesties kaiščio.
8 žingsnis: Įkelkite programą
Dabar esame pasirengę įkelti VHDL pagrindinio šaltinio failą į „Basys 3“plokštę. Būtinai paleiskite sintezę, diegimą ir sugeneruokite srauto tikrinimą, ar nėra galimų klaidų. Jei viskas veikia sėkmingai, atidarykite aparatūros tvarkyklę ir užprogramuokite „Basys 3“įrenginį. Jūsų projektas dabar baigtas!
Rekomenduojamas:
Saulės energija ir baterijomis maitinamas LED šviestuvas: 4 žingsniai
Saulės energija ir akumuliatoriais varomas LED šviestuvas: Šioje instrukcijoje aš jums parodysiu, kaip savo pastogėje padariau LED lemputę. Kadangi neturiu ryšio su elektros tinklu, aš maitinamas baterijomis. Baterija įkraunama per saulės kolektorių. LED lemputė įjungiama impulsiniu jungikliu ir išsijungia po
„Pasidaryk pats“saulės energija varomas automatinis gatvės apšvietimas: 3 žingsniai
„Pasidaryk pats“saulės energija varomas automatinis gatvių apšvietimas: mano namas yra kaimo vietovėje, todėl gatvė priešais mano namą yra visiškai tamsi, kai visai nėra šviesos. Taigi čia aš padariau saulės energija varomą gatvės šviesą, kuri automatiškai įsijungia saulėlydžio metu ir išsijungia saulėtekio metu. Jis naudoja saulės kolektorių kaip
Energiją taupantis GPS su „E-Ink“ekranu: 4 žingsniai
Energiją taupantis GPS su „E-Ink“ekranu: kiekvieną vasarą einu į žygius atokiose vietose. Kartais, kai takas neryškus ar net išnyksta, turiu naudoti telefono GPS, kad gaučiau koordinates, o tada patikrinti savo padėtį popieriniame žemėlapyje (dažnai neturiu signalo, todėl popieriniai žemėlapiai yra privalomi
Interaktyvūs kiemo žibintai, takų žibintai: 3 žingsniai
Interaktyvūs kiemo žibintai, „Walkway Lights“: norėjau pastatyti kažkokius interaktyvius kiemo žibintus savo kieme. Idėja buvo ta, kad kai kas nors vaikščiojo vienu keliu, jis pradės animaciją ta kryptimi, kuria jūs einate. Pradėjau nuo „Dollar General“1,00 USD saulės lempučių
Laiką taupantys paketiniai failai: 5 žingsniai
Laiką taupantys paketiniai failai: tai aš sužinojau. Aš tai tiesiog pristatau tiems, kuriems kyla problemų kuriant paketinius failus. Pasilinksmink