תוכן עניינים:

מסך LCD עם בית חכם: 5 שלבים
מסך LCD עם בית חכם: 5 שלבים

וִידֵאוֹ: מסך LCD עם בית חכם: 5 שלבים

וִידֵאוֹ: מסך LCD עם בית חכם: 5 שלבים
וִידֵאוֹ: 24" Touchscreen monitor running Home Assistant. 2024, נוֹבֶמבֶּר
Anonim
LCD אבן עם בית חכם
LCD אבן עם בית חכם

היום קיבלתי את תצוגת כונן היציאות הטוריות של STONE, שיכולה לתקשר דרך היציאה הטורית של MCU, ועיצוב ההיגיון של ממשק המשתמש של תצוגה זו ניתן לעצב ישירות באמצעות תוכנת VGUS המסופקת באתר הרשמי של STONE, דבר שנוח לנו מאוד. אז אני מתכוון להשתמש בו להכנת בקר מכשירים פשוט, הכולל שליטה על נורות שונות (סלון, מטבח, חדר ילדים, חדר אמבטיה). במקביל, ניתן לאסוף טמפרטורה פנימית וחיצונית, לחות ואיכות אוויר. זוהי הדגמה פשוטה, ותוכל לבצע פיתוח משני באמצעות הקוד שסיפקתי. קצת הדרכה בסיסית אודות מסך STONE יכולה להיכנס לאתר:

באתר מגוון מידע על הדגם, המשתמש ותיעוד העיצוב, כמו גם הדרכות וידאו. לא אפרט כאן יותר מדי.

שלב 1: עיצוב ממשק UI

עיצוב ממשק UI
עיצוב ממשק UI
עיצוב ממשק UI
עיצוב ממשק UI
עיצוב ממשק UI
עיצוב ממשק UI
עיצוב ממשק UI
עיצוב ממשק UI

פוטושופ

עיצבתי את שני דפי ממשק המשתמש הבאים עם פוטושופ:

הפרויקט כולל את שני העמודים הנ"ל. "אור" ו"חיישן "בפינה הימנית העליונה הם לחצני המתג של שני הדפים הללו.

בדף "אור", אתה יכול לשלוט בכל סוגי האורות בבית שלך. בדף "חיישן" תוכל לבדוק את הערכים שזוהו על ידי חיישנים שונים.

לאחר עיצוב שני הדפים לעיל, אנו יכולים לבצע עיצוב לוגיקה של כפתורים באמצעות תוכנת STONE TOOL המסופקת באתר הרשמי של STONE.

ראוי לציין שמקור השעון המשמש לתצוגת הזמן כאן הוא מקור השעון של מסך התצוגה, לא מקור השעון של ה- MCU.

אפקט החלפת דף TAB

בתוכנת STONE TOOL לא נמצא רכיב החלפת דפי TAB, ולכן חשבתי על שיטה נוספת להשגת אפקט החלפת דפי TAB.

באמצעות התצפית אני מספק שתי תמונות ממשק משתמש שניתן למצוא ששתי התמונות שלמעלה הן טקסט "אור" ו"חיישן ", ההבדל הוא שגודל הפיקסלים שלהן שונה, כך שעלינו רק לשים את המיקום של שני פיקסלים מוגדר ל- אותו טקסט, ולאחר מכן דרך הפינה השמאלית העליונה של השעה והתאריך לעיון, תוכל להשיג את ה- TAB כדי להחליף את האפקט.

לוגיקת כפתורים

קח כדוגמא את כפתור "סלון". כאשר המשתמש לוחץ על כפתור זה, מסך התצוגה של יציאה טורית של STONE ישלח הוראות פרוטוקול מתאימות דרך היציאה הטורית. לאחר קבלת הוראה זו, MCU המשתמש ינתח את הפרוטוקול לשליטה במצב ההחלפה של הנורות המחוברות ל- MCU.

רכישת חיישן

קח לדוגמא את "איכות האוויר": אם אתה רוצה להשיג את איכות האוויר בתוך הבית, עלינו להחזיק MCU לאיסוף איכות אוויר, חיישן איכות אוויר כאשר מספר ה- MCU נאסף באמצעות אלגוריתם המשווה את היתרונות והחסרונות של איכות האוויר, ולאחר מכן את MCU נשלח באמצעות יציאה טורית כדי להציג את שטח האחסון של "טוב" או "רע", כדי לשנות את תוכן התצוגה "משתנה טקסט0", ואז המשתמש יכול לראות באופן אינטואיטיבי את היתרונות של בקרת האיכות. אלה מוסברים בהמשך בקוד MCU.

שלב 2: תקשורת MCU

תקשורת MCU
תקשורת MCU
תקשורת MCU
תקשורת MCU
תקשורת MCU
תקשורת MCU
תקשורת MCU
תקשורת MCU

STM32 הוא ה- MCU שכולם מכירים, והוא מודל MCU נפוץ בינלאומי. לכן הדגם הספציפי של STM32 MCU בו השתמשתי בפרויקט זה הוא STM32F103RCT6.

ישנן סדרות רבות של STM32, שיכולות לענות על דרישות שונות של השוק. ניתן לחלק את הגרעין לקורטקס- m0, M3, M4, ו- M7, וכל ליבה ניתן לחלק למיינסטרים, ביצועים גבוהים וצריכת חשמל נמוכה.

מנקודת מבט הלמידה בלבד, אתה יכול לבחור F1 ו- F4, F1 מייצג את הסוג הבסיסי, בהתבסס על גרעין קליפת המוח m3, התדר העיקרי הוא 72MHZ, F4 מייצג את הביצועים הגבוהים, מבוסס על גרעין קליפת המוח m4, הראשי התדירות היא 180M.

באשר ל- F1, F4 (סדרות 429 ומעלה), מלבד גרעינים שונים ושיפור התדר הראשי, התכונה הברורה של השדרוג היא בקר LCD וממשק מצלמה, תמיכה ב- SDRAM, הבדל זה יינתן עדיפות בבחירת הפרויקט. עם זאת, מבחינת ההוראה האוניברסיטאית והלמידה הראשונית של משתמשים, סדרת F1 היא עדיין הבחירה הראשונה. נכון לעכשיו, ל- STM32 מסדרת F1 יש את כמות החומרים והמוצרים הגדולים ביותר בשוק.

לגבי התקנת סביבת הפיתוח STM32 SCM ושיטת הורדת התוכנה, לא אעשה את ההקדמה.

אתחול GPIO

בפרויקט זה השתמשנו בסך הכל ב- 4 GPIO, אחד מהם הוא סיכת הפלט PWM. הבה נבחן תחילה אתחול שלוש יציאות GPIO רגילות:

פונקציה זו מאתחלת את PB0 / PB1 / PB2 של STM32F103C8 כסיכת הפלט וקוראת לה מהפונקציה הראשית. לאחר האתחול, עלינו לקבל היגיון לשליטה במצב הפלט, ברמה הגבוהה והנמוכה של GPIO זה, ולכן כתבתי את הפונקציה להלן:

זוהי פונקציה שתוכל להבין באופן אינטואיטיבי בשם המשתנה.

אתחול יציאה טורית

חלק האתחול של היציאה הטורית נמצא ב- uart.c:

לאחר מכן התקשר אל uart_init בפונקציה הראשית כדי לאתחל את קצב השידור של היציאה הטורית של 115200. סיכות משתמשות ב- PA9/PA10

אתחול PWM

שלבים ספציפיים:

1. הגדר שעון RCC;

2. הגדר את שעון GPIO; יש להגדיר את מצב GPIO ל- GPIO_Model_AF_PP, או לפונקציית GPIO_PinRemapConfig () אם נדרש שינוי סיכה.

3. הגדר רגיסטרים רלוונטיים של טיימר TIMx;

4. הגדר את הרשם הקשור ל- PWM של טיימר TIMx;

א. הגדר מצב PWM

B. הגדר מחזור עבודה (חישוב נוסחה)

ג הגדר את קוטביות השוואת הפלט (שהוצג בעבר)

D. החשוב מכל, אפשר את מצב הפלט של TIMx והפעל את פלט ה- PWM של TIMx; לאחר השלמת ההגדרות הרלוונטיות, טיימר TIMx מופעל על ידי TIMx_Cmd () כדי להשיג פלט PWM. קראו לזה TIM3_PWM_Init מהפונקציה הראשית.

שלב 3: כתיבת קוד לוגי

כתיבת קוד לוגי
כתיבת קוד לוגי
כתיבת קוד לוגי
כתיבת קוד לוגי
כתיבת קוד לוגי
כתיבת קוד לוגי

הצגת הגדרת כתובת רכיב

לרכיבי התצוגה יש כתובות נפרדות, והנה כתבתי את כולן כהגדרות מאקרו: קליטה של נתונים סדרתיים

בהתבוננות במידע אודות תצוגת STONE, ניתן לראות שכאשר לוחצים על הכפתור, היציאה הסדרתית בתצוגה שולחת פרוטוקולים בפורמט המתאים אותם יכול MCU המשתמש לקבל ולנתח. כאשר לוחצים על הכפתור, היציאה הטורית בתצוגה שולחת תשעה בתים של נתונים, כולל נתוני משתמש. קליטת נתונים סדרתיים כתובה ב- Handler: הנתונים שהתקבלו מאוחסנים במערך "USART_RX_BUF". בפרויקט זה, אורך הקבלה קבוע. כאשר אורך הקבלה הוא יותר מ -9 בתים, קצה הקבלה נשפט.

לשלוט במצב ההחלפה של המנורה

בפונקציה הראשית כתבתי קוד לוגי כלשהו לשליטה על מצב המתג של המנורה: כפי שאנו יכולים לראות, הקוד קובע תחילה אם נתוני היציאה הטורקית מתקבלים, וכאשר נתוני היציאה הטורית מתקבלים, קובע איזה כפתור המשתמש לוחץ על מסך התצוגה. לכפתורים שונים בתצוגה יש כתובות שונות, שניתן לראות בתוכנת STONE TOOL: כאשר המשתמש לוחץ על כפתור "סלון", הביטים הרביעי והחמישי של הנתונים שנשלחים על ידי היציאה הטורית של מסך התצוגה הם כתובת הכפתור. מכיוון שהסיביה הרביעית מכל הלחצנים המוגדרים כאן היא 0x00, אנו יכולים לשפוט על איזה כפתור המשתמש לוחץ על ידי שיפוט ישיר של הנתונים של הסיביה החמישית. לאחר קבלת הכפתור שהמשתמש לחץ עליו, עלינו לשפוט את נתוני המשתמש שהתקבלו בעת לחיצה על הכפתור, המהווה את הספרה השמינית של הנתונים הנשלחים ממסך התצוגה. לכן, אנו מבצעים את הפקד הבא: כתוב את פרמטר כתובת הכפתור ונתוני המשתמש לפונקציה "Light_Contral" כדי לשלוט במצב ההדלקה של האור. ישות הפונקציה Light_Contral היא כדלקמן: כפי שאתה יכול לראות, אם כתובת הכפתור היא "סלון" ונתוני המשתמש הם "LightOn", אז סיכת PB0 של ה- MCU מוגדרת לפלט ברמה גבוהה, והאור דולק. שלושת הכפתורים האחרים דומים, אך לא אמשיך כאן.

פלט PWM

בממשק המשתמש שתוכנן על ידי, יש ווסת הזזה, המשמש לשליטה על בהירות האור של "חדר ילדים". MCU מיושם על ידי סיכת הפלט PWM. PWM היא PB5. הקוד הוא כדלקמן: מתאם הזזה מוגדר לערך מינימלי של 0x00 ולערך מרבי של 0x64. בעת הזזה, היציאה הטורית של מסך התצוגה תשלח גם כתובות ונתונים רלוונטיים ולאחר מכן תקבע את יחס החובה של פלט PWM על ידי קריאה לפונקציה הבאה:

שלב 4: רכישת חיישנים

רכישת חיישנים
רכישת חיישנים
רכישת חיישנים
רכישת חיישנים
רכישת חיישנים
רכישת חיישנים

בדף "חיישן" במסך התצוגה, ישנם ארבעה נתוני חיישן.

לנתונים יש גם כתובת אחסון בתצוגה, ואנו יכולים לשנות את התוכן האמיתי על ידי כתיבת נתונים לכתובות אלה דרך היציאה הטורית של ה- MCU.

כאן עשיתי יישום קוד פשוט:

נתוני התצוגה מתעדכנים כל 5 שניות, וכתבתי רק הדגמה פשוטה של פונקציית איסוף החיישנים הרלוונטית, כי אין לי את החיישנים האלה ביד.

בפיתוח פרויקטים אמיתי, חיישנים אלה עשויים להיות נתונים שנאספו על ידי ADC, או נתונים שנאספו על ידי ממשקי תקשורת IIC, UART ו- SPI. כל שעליך לעשות הוא לכתוב נתונים אלה לפונקציה המתאימה כערך ההחזרה.

שלב 5: אפקט הפעולה בפועל

מוּמלָץ: