Სარჩევი:
- ნაბიჯი 1: სისტემის შავი ყუთი
- ნაბიჯი 2: კომპონენტები
- ნაბიჯი 3: D Flip-Flops
- ნაბიჯი 4: პირობითი
- ნაბიჯი 5: შეზღუდვები
- ნაბიჯი 6: ძირითადი წყაროს ფაილი
- ნაბიჯი 7: შეკრება
- ნაბიჯი 8: პროგრამის ჩატვირთვა
ვიდეო: ენერგოეფექტური მოძრაობის გააქტიურებული ქუჩის განათება: 8 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:17
ამ პროექტის მიზანს წარმოადგენდა ისეთი რამის შექმნა, რომელიც დაზოგავდა თემებს ენერგიასა და ფინანსურ რესურსებს. მოძრაობის გააქტიურებული ქუჩის განათება ორივე ამ საქმეს გააკეთებს. მთელს ერში ენერგია იხარჯება ქუჩების განათებაზე, რომელიც ანათებს ცარიელ ქუჩებს. ჩვენი ქუჩის შუქის სისტემა უზრუნველყოფს, რომ განათება მხოლოდ საჭიროების შემთხვევაში აინთოს, რაც დაზოგავს უამრავ დოლარს საზოგადოებისთვის. მოძრაობის სენსორების გამოყენებით, სისტემა ანათებს შუქებს მხოლოდ მაშინ, როდესაც მანქანები იმყოფებიან. ასევე ფეხით მოსიარულეთა უსაფრთხოების მიზნით, ჩვენ განვახორციელეთ გადახურვის ღილაკი, რომელიც ანათებს ყველა შუქს ქუჩაში. შემდეგი ნაბიჯები გაგიმხელთ, თუ როგორ შევქმენით და ავაშენეთ პროექტის ჩვენი შემცირებული მოდელი Vivado და Basys 3 დაფის გამოყენებით.
ნაბიჯი 1: სისტემის შავი ყუთი
ჩვენ დავიწყეთ ეს პროექტი მარტივი შავი ყუთის დიაგრამის დახატვით. შავი ყუთის დიაგრამა უბრალოდ გვიჩვენებს იმ შეყვანებსა და გამოსვლებს, რასაც ჩვენი სისტემა მოითხოვს ყველა საჭირო პროცესის დასასრულებლად. ჩვენ შევეცადეთ ჩვენი დიზაინი მაქსიმალურად მარტივი და ძირითადი ყოფილიყო. ჩვენი სამი სისტემის შეყვანა იყო მოძრაობის სენსორების ავტობუსი (4 ჩვენი შემცირებული მოდელისთვის), ფეხით მოსიარულეთა გადახვევის ღილაკი და საათის შეყვანა. მეორე მხრივ, ჩვენი ერთჯერადი გამომავალი არის LED განათების ავტობუსი, რომელიც წარმოადგენს ჩვენს ქუჩის შუქებს. ამ მოდელისთვის ჩვენ გამოვიყენეთ 16 ქუჩის განათების სცენარი მხოლოდ იმიტომ, რომ ეს არის მაქსიმალური რაოდენობა ჩაშენებული LED გამომავალი Basys 3 დაფაზე. დაბოლოს, ამ დიაგრამის გამოყენებით ჩვენ შევძელით შევქმნათ ჩვენი Vivado პროექტი, წყარო და შეზღუდვის ფაილები შესაბამისი შეყვანისა და გამოსავლის საშუალებით.
ნაბიჯი 2: კომპონენტები
ამ ნაბიჯში ჩვენ უფრო ღრმად ვსწავლობთ იმ კომპონენტებს, რომლებიც ქმნიან ჩვენს შავი ყუთის დიაგრამას. ჩვენი პირველი კომპონენტია VHDL წყაროს ფაილი, რომელიც შეიცავს D ფლიპ ფლოპს. D ფლიპ-ფლოპები უბრალოდ იღებენ რა სიგნალს მათ იღებენ სენსორებიდან საათის მზარდ ზღვარზე და აჭერენ ამ მონაცემებს მომდევნო ამოსვლამდე. ეს ხელს უშლის ჩვენი მგრძნობიარე მოძრაობის სენსორებს, რომ არ გამოიწვიოს გამომავალი LED- ის "ციმციმა". ასევე, ჩვენ ვაყენებთ ერთ D ფლიპ ფლოპს ღილაკზე შეყვანის სიგნალზე, რათა LED იყოს ჩართული ღილაკის დაჭერის შემდეგ დაახლოებით 5-7 წამის განმავლობაში. ჩვენ ასევე გავუშვით საათის გამყოფი.
ერთეული clk_div2 არის პორტი (clk: in std_logic; sclk: out std_logic); დასასრული clk_div2;
clk_div2- ის არქიტექტურა my_clk_div არის
მუდმივი max_count: მთელი რიცხვი: = (300000000); სიგნალი tmp_clk: std_logic: = '0'; დაწყება my_div: პროცესი (clk, tmp_clk) ცვლადი div_cnt: მთელი რიცხვი: = 0; დაიწყება თუ (აღმავალი_ ზღვარი (clk)) შემდეგ თუ (div_cnt = MAX_COUNT) შემდეგ tmp_clk <= არა tmp_clk; div_cnt: = 0; სხვა div_cnt: = div_cnt + 1; დაასრულე თუ; დაასრულე თუ; sclk <= tmp_clk; პროცესის დასრულება my_div; დასრულება my_clk_div;
ჩვენი საბოლოო კომპონენტი ამ დიაგრამაში არის ქცევითი VHDL წყაროს ფაილი, რომელიც შეიცავს პირობით შედეგებს, რომლებიც დაფუძნებულია შეყვანის სიგნალების კონფიგურაციაზე.
ნაბიჯი 3: D Flip-Flops
შეყვანის სიგნალებზე დამაგრებული ოთხი ფლიპ-ფლოპი აუცილებელია ჩვენი სისტემის ფუნქციონირებისათვის. როგორც უკვე აღვნიშნეთ, მოძრაობის მგრძნობიარე სენსორებითა და გადაფარვის ღილაკით, ფლიპ-ფლოპები იყენებენ ჩამკეტებს, რათა მხოლოდ ჩვენი შესასვლელი სიგნალი გამოუშვან საათის მზარდ ზღვარზე. ეს თანმიმდევრული ლოგიკა ნიშნავს, რომ ჩვენი ქუჩის განათება შეიძლება დარჩეს გარკვეული დროის განმავლობაში სწრაფი მოძრაობის გაჩენის შემდეგ. D-Flip Flop– ის კოდირება საკმაოდ მარტივია:
beginprocess (CLK) დაიწყება თუ იზრდება_მეტი (CLK) შემდეგ Q <= D; დაასრულე თუ; პროცესის დასრულება;
მთელი რამ შეიძლება გაერთიანდეს ერთ განაცხადში if. მას შემდეგ რაც მივიღეთ ეს ნაჭერი, ჩვენ შევქმენით სტრუქტურული VHDL წყაროს ფაილი, რომელიც შეიცავს ოთხივე საჭირო ფლიპ ფლოპს:
დაიწყოს DFF0: DFF პორტის რუკა (CLK => CLK, D => D (0), Q => Q (0)); DFF1: DFF პორტის რუკა (CLK => CLK, D => D (1), Q => Q (1)); DFF2: DFF პორტის რუკა (CLK => CLK, D => D (2), Q => Q (2)); DFF3: DFF პორტის რუკა (CLK => CLK, D => D (3), Q => Q (3));
დასრულება ქცევითი;
ეს გვეხმარება შევინარჩუნოთ ჩვენი ძირითადი სტრუქტურული ფაილი, სადაც ჩვენ ვაერთიანებთ სისტემის ყველა კომპონენტს უფრო სუფთა და ორგანიზებულად.
ნაბიჯი 4: პირობითი
იმისათვის, რომ შევინარჩუნოთ ჩვენი კოდი კომპაქტური და ეფექტური, ჩვენ დავწერეთ ჩვენი ყველა პირობა ერთ შემთხვევით განცხადებაში. ჩვენი შემცირებული მოდელისთვის, ჩვენ გვქონდა 16 შესაძლო LED გამომავალი კონფიგურაცია, რადგან თითოეული მოძრაობის სენსორი პასუხისმგებელია 4 LED- ის ჯგუფზე.:
საქმე NMS არის მაშინ, როდესაც "1111" => LED LED LED LED LED LED LED LED LED LED LED <= "1111111111111111"; დასასრული საქმე;
ნაბიჯი 5: შეზღუდვები
იმისათვის, რომ სწორად მიუთითოთ თქვენი შეყვანა და შედეგები Vivado– ს გამოყენებით, თქვენ უნდა განახორციელოთ შეზღუდვის ფაილი, რომელშიც მითითებულია ყველა პორტი, ღილაკი, LED- ები და საათები.
set_property PACKAGE_PIN W5 [მიიღეთ_პორტები CLK] set_property IOSTANDARD LVCMOS33 [მიიღეთ_პორტები CLK]
set_property PACKAGE_PIN U16 [მიიღეთ_პორტები {LED [0]}] set_property IOSTANDARD LVCMOS33 [მიიღეთ_პორტები {LED [0]}] set_property PACKAGE_PIN E19 [მიიღეთ_პორტები {LED [1]}] set_property IOSTANDARD LVCMOS_33 U19 [მიიღეთ_პორტები {LED [2]}] set_property IOSTANDARD LVCMOS33 [მიიღეთ_პორტები {LED [2]}] set_property PACKAGE_PIN V19 [მიიღეთ_პორტები {LED [3]}] set_property IOSTANDARD LVCMOS33 [მიიღეთ_პორტები {LED [3]}] set_property PAC get_ports {LED [4]}] set_property IOSTANDARD LVCMOS33 [მიიღეთ_პორტები {LED [4]}] set_property PACKAGE_PIN U15 [მიიღეთ_პორტები {LED [5]}] set_property IOSTANDARD LVCMOS33 [მიიღეთ_პორტები {LED [5]}] set_property PACKAGE LED [6]}] set_property IOSTANDARD LVCMOS33 [მიიღეთ_პორტები {LED [6]}] set_property PACKAGE_PIN V14 [მიიღეთ_პორტები {LED [7]}] set_property IOSTANDARD LVCMOS33 [მიიღეთ_პორტები {LED [7]}] set_property PACKAGE_PIN V13 8]}] set_property IOSTANDARD LVCMOS33 [მიიღეთ_პორტები {LED [8]}] set_property PACKAGE_PIN V3 [მიიღეთ_პორტები {LED [9]}] set_property IO STANDARD LVCMOS33 [მიიღეთ_პორტები {LED [9]}] set_property PACKAGE_PIN W3 [მიიღეთ_პორტები {LED [10]}] set_property IOSTANDARD LVCMOS33 [მიიღეთ_პორტები {LED [10]}] set_property PACKAGE_PIN U3 [მისაღები_პორტები {LED [გათბობა_33 [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_property IOSTANDARD {LED [13]}] set_property PACKAGE_PIN P1 [მიიღეთ_პორტები {LED [14]}] set_property IOSTANDARD LVCMOS33 [მიიღეთ_პორტები {LED [14]}] set_property PACKAGE_PIN L1 [მიიღეთ_პორტები {LED [15]}] set_property IOSTANDARD LVCMOS [15]}]
set_property PACKAGE_PIN U18 [მიიღეთ_პორტები BTN] set_property IOSTANDARD LVCMOS33 [მიიღეთ_პორტები BTN]
set_property PACKAGE_PIN A14 [მიიღეთ_პორტები {MS [0]}] set_property IOSTANDARD LVCMOS33 [მიიღეთ_პორტები {MS [0]}] set_property PACKAGE_PIN A16 [მიიღეთ_პორტები {MS [1]}] set_property IOSTANDARD LVCMOS33 [get_ports B15 [მიიღეთ_პორტები {MS [2]}] set_property IOSTANDARD LVCMOS33 [მიიღეთ_პორტები {MS [2]}] set_property PACKAGE_PIN B16 [მიიღეთ_პორტები {MS [3]}] set_property IOSTANDARD LVCMOS33 [მიიღეთ_პორტები {MS [3]}]
ნაბიჯი 6: ძირითადი წყაროს ფაილი
ამ ძირითად ფაილში ჩვენ ვაერთიანებთ ყველა კომპონენტურ წყაროს ფაილს, რომელიც ზემოთ იყო ნახსენები. ეს ფაილი ფუნქციონირებს როგორც სტრუქტურული კოდი, რომელიც აერთიანებს განსხვავებულ კომპონენტებს.
ერთეულის Master_Final_Pject არის პორტი (BTN: STD_LOGIC– ში; CLK: STD_LOGIC– ში; MS: STD_LOGIC_VECTOR– ში (3 ქვევით 0 – ზე); LED: გამოსვლა STD_LOGIC_VECTOR (15 ქვემოთ 0 – ზე)); დასრულება Master_Final_Project;
არქიტექტურა Master_Final_Project არის ქცევითი
კომპონენტის საბოლოო_პროექტი არის პორტი (–CLK: STD_LOGIC– ში; NMS: STD_LOGIC_VECTOR– ში (3 ქვემოთ 0 – ზე); BTN: STD_LOGIC– ში-: STD_LOGIC_Vector– ში (1 ქვემოთ 0); LED: გარეთ STD_LOGIC_V; დასასრული კომპონენტი;
კომპონენტი Final_DFF არის
პორტი (CLK: STD_LOGIC- ში; D: STD_LOGIC_Vektor- ში (3 ქვემოთ 0 -ზე); Q: STD_LOGIC_ ვექტორიდან (3 ქვემოთ 0 -ზე)) დასასრული კომპონენტი;
სიგნალი DFF02proj30: STD_LOGIC;
სიგნალი DFF12proj74: STD_LOGIC; სიგნალი DFF22proj118: STD_LOGIC; სიგნალი DFF32proj1512: STD_LOGIC;
დაწყება
DFF0: Final_DFF პორტის რუკა (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); პროექტი: საბოლოო_პროექტის პორტის რუკა (NMS (0) => DFF02proj30, NMS (1) => DFF12proj74, NMS (2) => DFF22proj118, NMS (3) => DFF32proj1512, BTN => BTN, LED => LED); დასრულება ქცევითი;
ნაბიჯი 7: შეკრება
ამ პროექტის აპარატურის შეკრება მინიმალურია. მხოლოდ საჭირო ნაწილებია შემდეგი:
1. Basys 3 დაფა (1)
2. მოძრაობის იაფი სენსორები, რომლებიც შეგიძლიათ ნახოთ ამაზონზე აქ. (4)
3. მამაკაცი ქალი ქალი (4)
შეკრება:
1. შეაერთეთ 4 მამრობითი ლიდერი PMod სათაურის JB პორტებთან 1-4 (იხ. სურათი).
2. შეაერთეთ ქალის ბოლოები თითოეული მოძრაობის სენსორის გამომავალ პინთან.
ნაბიჯი 8: პროგრამის ჩატვირთვა
ახლა ჩვენ მზად ვართ ჩავტვირთოთ VHDL სამაგისტრო წყაროს ფაილი Basys 3 დაფაზე. დარწმუნდით, რომ აწარმოებთ სინთეზს, განხორციელებას და შექმნით ბიტ -სტრიმის შემოწმებას შესაძლო შეცდომებისთვის. თუ ყველაფერი წარმატებით მუშაობს, გახსენით ტექნიკის მენეჯერი და დაპროგრამეთ Basys 3 მოწყობილობა. თქვენი პროექტი ახლა დასრულებულია!
გირჩევთ:
ქუჩის ავტომატური განათება ულტრაბგერითი სენსორის გამოყენებით: 3 ნაბიჯი
ქუჩის ავტომატური განათება ულტრაბგერითი სენსორის გამოყენებით: გიფიქრიათ ოდესმე იმაზე, თუ როგორ ქუჩის შუქები ავტომატურად ირთვება ღამით და ავტომატურად ითიშება დილით? არის ვინმე ვინც ჩართავს/გამორთავს ამ ნათურებს? ქუჩის შუქების ჩართვის რამდენიმე გზა არსებობს, მაგრამ შემდეგი
DIY მზის ენერგიაზე მომუშავე ავტომატური ქუჩის განათება: 3 ნაბიჯი
DIY მზის ენერგიაზე მომუშავე ავტომატური ქუჩის განათება: ჩემი სახლი მდებარეობს სოფლად, ასე რომ, ჩემი სახლის წინ ქუჩა მთლიანად ბნელია, როდესაც საერთოდ არ არის შუქი. აქ მე გავაკეთე მზის ენერგიაზე მომუშავე ქუჩის შუქი, რომელიც ავტომატურად ირთვება მზის ჩასვლისას და ჩაქრება მზის ამოსვლისას. ის იყენებს მზის პანელს, როგორც
მოძრაობის გააქტიურებული სურათის გადაღება და ელ.ფოსტა: 6 ნაბიჯი
Motion გააქტიურებული სურათის გადაღება და ელ.ფოსტა: ჩვენ ვამყარებთ წინა ESP32-CAM პროექტებს და ვაშენებთ მოძრაობის გამომწვევი სურათის აღების სისტემას, რომელიც ასევე აგზავნის ელ.წერილს სურათთან ერთად დანართის სახით. ეს ნაგებობა იყენებს ESP32-CAM დაფას და PIR სენსორულ მოდულს, რომელიც ემყარება AM312
როგორ გააკეთოთ ქუჩის განათება ავტომატური LM555 IC გამოყენებით: 8 ნაბიჯი
როგორ გავაკეთოთ ქუჩის ავტომატური განათება LM555 IC გამოყენებით: გამარჯობა მეგობარო, დღეს ვაპირებ გავაკეთო ავტომატური ქუჩის შუქის ჩართვა LM555 IC– ის გამოყენებით. ეს წრე ასე მუშაობს, როდესაც სინათლე დაეცემა LDR (დღის განმავლობაში), მაშინ LED არ ანათებს და როდესაც შუქი არ იქნება LDR- ზე, მაშინ LED ანათებს ავტომატურად
ქუჩის ავტომატური განათება: 8 ნაბიჯი
ქუჩის ავტომატური განათება: მარტივი პროექტი, რომელიც ჯერ კიდევ ეფექტურია ენერგიის დაზოგვის თვალსაზრისით. ბევრჯერ ხდება დღის განმავლობაში ქუჩის განათება ინახება სანამ ვინმემ შეამჩნია, რაც იწვევს ენერგიის უზარმაზარ დანაკარგს. აპარატურის კომპონენტების სია: 1) სინათლისგან დამოუკიდებელი რეზისტორი (LDR) - 8 მმ 2