תוכן עניינים:
- שלב 1: מערכת Black Box
- שלב 2: רכיבים
- שלב 3: D כפכפים
- שלב 4: תנאים
- שלב 5: אילוצים
- שלב 6: קובץ המקור הראשי
- שלב 7: הרכבה
- שלב 8: טעינת התוכנית
וִידֵאוֹ: תאורת רחוב מופעלת בתנועה חסכונית באנרגיה: 8 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:14
מטרתנו בפרויקט זה הייתה ליצור משהו שיחסוך לקהילות אנרגיה ומשאבים פיננסיים. פנסי רחוב המופעלים בתנועה היו עושים את שני הדברים האלה. בכל רחבי המדינה האנרגיה מבוזבזת על פנסי רחוב שמאירים רחובות ריקים. מערכת פנסי הרחוב שלנו מבטיחה שהאורות דולקים רק בעת הצורך, וחוסכת לקהילות אינספור דולרים. באמצעות חיישני תנועה, המערכת מדליקה אורות רק כאשר מכוניות נמצאות. גם למען בטיחות הולכי הרגל, יישמנו כפתור דריסה שמדליק את כל האורות ברחוב. השלבים הבאים ילוו אותך כיצד עיצבנו ובנינו את המודל המוקטן שלנו של הפרויקט באמצעות Vivado ולוח Basys 3.
שלב 1: מערכת Black Box
התחלנו בפרויקט זה בשרטוט תרשים קופסה שחורה פשוטה. תרשים של קופסה שחורה פשוט מציג את הכניסות והתפוקות שהמערכת שלנו דורשת כדי להשלים את כל התהליכים הדרושים. ניסינו לשמור על העיצוב שלנו פשוט ובסיסי ככל האפשר. שלוש כניסות המערכת שלנו כללו אוטובוס של חיישני תנועה (4 לדגם המוקטן שלנו), כפתור עקיפה להולכי רגל וכניסת שעון. בצד השני הפלט היחיד שלנו הוא אוטובוס של נורות LED המייצגות את פנסי הרחוב שלנו. עבור דגם זה השתמשנו בתרחיש של 16 פנסי רחוב פשוט מכיוון שזה המספר המרבי של יציאות LED מובנות בלוח Basys 3. לבסוף, באמצעות תרשים זה הצלחנו ליצור את פרוייקט, המקור והגבלת קבצי ה- Vivado שלנו עם תשומות ויציאות מתאימות.
שלב 2: רכיבים
בשלב זה אנו צוללים לעומק ובוחנים את המרכיבים המרכיבים את תרשים הקופסה השחורה שלנו. הרכיב הראשון שלנו הוא קובץ מקור VHDL המכיל כפכפי D. כפכפי D פשוט לוקחים את כל האות שנכנס אליהם מהחיישנים בקצה השעון העולה, ונוטרים את הנתונים האלה עד לקצה העולה הבא. זה מונע מחיישני התנועה הרגישים שלנו לגרום ל LED של הפלט "להבהב". כמו כן, שמנו כפכף D יחיד על אות כניסת הלחצנים כדי להשאיר את הנורות דולקות במשך כ- 5-7 שניות לאחר לחיצה על הכפתור. העברנו זאת גם באמצעות מחלק שעונים.
ישות clk_div2 היא Port (clk: in std_logic; sclk: out std_logic); סוף clk_div2;
אדריכלות my_clk_div של clk_div2 היא
max_count קבוע: מספר שלם: = (300000000); אות tmp_clk: std_logic: = '0'; התחל my_div: process (clk, tmp_clk) משתנה div_cnt: מספר שלם: = 0; התחל אם (rising_edge (clk)) ואז אם (div_cnt = MAX_COUNT) אז tmp_clk <= not tmp_clk; div_cnt: = 0; אחרת div_cnt: = div_cnt + 1; סוף אם; סוף אם; sclk <= tmp_clk; סיום תהליך my_div; סיים את my_clk_div;
המרכיב הסופי שלנו בתרשים זה הוא קובץ מקור התנהגותי של VHDL המכיל תנאים לתפוקות המבוססות על תצורת אותות הקלט.
שלב 3: D כפכפים
ארבעת הכפכפים המחוברים לאותות הקלט חיוניים לתפקוד המערכת שלנו. כפי שנאמר קודם לכן, עם חיישני תנועה רגישים ולחצן דריסה, הכפכפים משתמשים בתפסים כדי להוציא רק את אות הכניסה שלנו בקצה השעון העולה. היגיון רציף זה פירושו שאורות הרחוב שלנו יכולים להישאר דולקים לפרק זמן מוגדר לאחר שהופעלו על ידי תנועה מהירה. הקידוד ל- D-Flip Flop הוא די פשוט:
beginprocess (CLK) begin if rising_edge (CLK) ואז Q <= D; סוף אם; סוף תהליך;
ניתן לחבר את כל העניין לאמירה אחת אם. ברגע שהיה לנו את היצירה הזו, יצרנו קובץ מקור מבני 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 LED LED LED LED <= "1111111111111111"; מקרה סיום;
שלב 5: אילוצים
על מנת להציג כראוי את הקלט והיציאות שלך באמצעות Vivado, עליך ליישם קובץ אילוצים המציין את כל היציאות, הכפתורים, הלדים והשעונים הנמצאים בשימוש.
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_ports_ LED] 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 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 PACKAGE_ 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 [get_ports] 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 [11]} [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 IOSTAND {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_ports] 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: קובץ המקור הראשי
בקובץ הראשי הזה אנו אוספים את כל קבצי המקור המרכיבים שהוזכרו קודם לכן. קובץ זה מתפקד כקוד מבני המאגד את המרכיבים השונים.
ישות Master_Final_Project היא יציאה (BTN: ב- STD_LOGIC; CLK: ב- STD_LOGIC; MS: ב- STD_LOGIC_VECTOR (3 עד 0); LED: החוצה STD_LOGIC_VECTOR (15 עד 0)); סיום Master_Final_Project;
ארכיטקטורה ההתנהגות של Master_Final_Project היא
רכיב final_project הוא Port (-CLK: ב- STD_LOGIC; NMS: ב- STD_LOGIC_VECTOR (3 עד 0); BTN: ב- STD_LOGIC; --sw: ב- STD_LOGIC_Vector (1 למטה ל 0); LED: החוצה STD_LOGIC_VECTOR (15 עד 0)); רכיב קצה;
רכיב Final_DFF הוא
יציאה (CLK: ב- STD_LOGIC; D: ב- STD_LOGIC_Vector (3 עד 0); ש: החוצה STD_LOGIC_Vector (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); Proj0: מפת יציאת final_project (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 לידים זכריים ליציאות JB בכותרת PMod 1-4 (ראה איור).
2. חבר את קצוות הנקבה לפין הפלט של כל חיישן תנועה.
שלב 8: טעינת התוכנית
כעת אנו מוכנים לטעון את קובץ מקור האב VHDL ללוח Basys 3. הקפד להפעיל סינתזה, יישום וייצור בדיקת זרם סיביות לאיתור שגיאות אפשריות. אם כולם פועלים בהצלחה, פתח את מנהל החומרה ותכנת את מכשיר Basys 3. הפרויקט שלך הושלם כעת!
מוּמלָץ:
תאורת רחוב אוטומטית DIY מופעלת באמצעות שמש: 3 שלבים
תאורת רחוב אוטומטית אוטומטית באמצעות סולארית: הבית שלי ממוקם באזור כפרי, כך שהרחוב מול הבית שלי חשוך לגמרי כשאין אור בכלל. אז כאן יצרתי פנס רחוב המונע על ידי סולאריות שנדלק אוטומטית בשקיעה וכבוי בזריחה. הוא משתמש בפאנל הסולארי כ
כיצד להכין תאורת רחוב אוטומטית באמצעות LM555 IC: 8 שלבים
כיצד להכין תאורת רחוב אוטומטית באמצעות LM555 IC: היי חבר, היום אני הולך לעשות מעגל של פנסי רחוב אוטומטיים באמצעות LM555 IC. מעגל זה פועל כך כאשר האור ייפול על LDR (ביום) אז הנורית לא תזרוח וכאשר לא תהיה אור ב- LDR אז ה- LED יזהר אוטומטית
כיצד להכין תאורת רחוב אוטומטית: 7 שלבים
איך להכין תאורת רחוב אוטומטית: היי חבר, היום אני הולך לעשות מעגל של תאורת רחוב אוטומטית. מעגל זה יעבוד באופן אוטומטי. אור הבוקר יהיה סגור באופן אוטומטי. מעגל זה עובד עם LDR. נתחיל
תאורת רחוב חכמה באמצעות LoRa: 5 שלבים
תאורת רחוב חכמה באמצעות LoRa: פנסי הרחוב בעיר מספקים תנאי תנועה בטוחים יותר, סביבת הולכי רגל בטוחה יותר ויכולים לייצג שיפור גדול בתפוקה התיירותית והמסחרית של העיר. פרויקט זה נועד בפיתוח אב טיפוס של רחובות חכמים
מצלמה מופעלת בתנועה עם פטל פטל: 6 שלבים
מצלמה מופעלת בתנועה עם פטל פטל: פי פטל עם חיישן אינפרא אדום פסיבי HC-SR501 כדי לזהות את המראה של הסנאי, ולאחר מכן הפעל את SONY A6300 להקליט את הסרטון בזווית ובמרחק הטובים ביותר