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

תצוגת STONE +STM32 +מכונת קפה: 6 שלבים
תצוגת STONE +STM32 +מכונת קפה: 6 שלבים

וִידֵאוֹ: תצוגת STONE +STM32 +מכונת קפה: 6 שלבים

וִידֵאוֹ: תצוגת STONE +STM32 +מכונת קפה: 6 שלבים
וִידֵאוֹ: הברשת אבן בגדלים אמורפיים במכונת הברשה 2024, נוֹבֶמבֶּר
Anonim
תצוגת STONE +STM32 +מכונת קפה
תצוגת STONE +STM32 +מכונת קפה

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

מסך תצוגת LCD סידורי מסוג STONE, שיכול לתקשר דרך היציאה הטורית של MCU. יחד עם זאת, ניתן לעצב את העיצוב ההגיוני של ממשק ה- UI של מסך תצוגה זה ישירות באמצעות תיבת STONE TOOL המסופקת על ידי האתר הרשמי של STONE, וזה מאוד נוח. אז אני הולך להשתמש בו לפרויקט מכונת הקפה הזה. יחד עם זאת, פשוט ארשום את ההתפתחות הבסיסית. מכיוון שמדובר בפרויקט של החברה שלי, אני רק אקליט הדגמה פשוטה ולא אכתוב את הקוד המלא. כמה הדרכות בסיסיות על מסך תצוגת האבן יכולות להיכנס לאתר: https://www.stoneitech.com/ באתר יש מגוון מידע על הדגם, השימוש ותיעוד העיצוב, כמו גם הדרכות וידאו. לא אפרט כאן יותר מדי.

שלב 1: מבוא פונקציית מסך תצוגת מכונת קפה

לפרויקט זה יש את הפונקציות הבאות: l

  • מציג את השעה והתאריך הנוכחיים
  • על המסך ישנם ארבעה כפתורים לאמריקנו, לאטה, קפוצ'ינו ואספרסו.
  • מציג את הכמות הנוכחית של פולי קפה, חלב וסוכר קפה שנותרו
  • תיבת תצוגת טקסט מציגה את המצב הנוכחי

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

שלב 2: צור תמונות ממשק משתמש לתצוגת STONE

צור תמונות ממשק משתמש לתצוגת STONE
צור תמונות ממשק משתמש לתצוגת STONE
צור תמונות ממשק משתמש לתצוגת STONE
צור תמונות ממשק משתמש לתצוגת STONE
צור תמונות ממשק משתמש לתצוגת STONE
צור תמונות ממשק משתמש לתצוגת STONE

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

שימוש ב- STONE TOOL Box כרגע STONE מספקת TOOL. פתח כלי זה ליצירת פרויקט חדש, ולאחר מכן ייבא את ממשק המשתמש המיועד להצגת תמונות, והוסף כפתורים משלך, תיבות תצוגת טקסט וכו '. באתר הרשמי של STONE יש הדרכה שלמה מאוד כיצד להשתמש בתוכנה זו: https:/ /www.stoneitech.com/support/download/video

ההשפעות של הוספת כפתורים והצגת רכיבים בארגז STONE TOOL הם כדלקמן:

ל- STONE TOOL Box יש את הפונקציה של תצוגת סימולציה, דרכה ניתן לראות את אפקט הפעולה של ממשק ה- UI:

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

שלב 3: STM32F103RCT6

STM32F103RCT6
STM32F103RCT6

ל- STM32F103RCT6 MCU פונקציות רבות עוצמה. להלן הפרמטרים הבסיסיים של ה- MCU:

  • סדרה: STM32F10X l Kerne
  • זרוע - COTEX32
  • מהירות: 72 מגה -הרץ
  • ממשק תקשורת: CAN, I2C, IrDA, LIN, SPI, UART/USART, USB
  • ציוד היקפי: DMA, בקרת מנוע PWM, PDR, POR, PVD, PWM, חיישן טמפרטורה, WDT
  • קיבולת אחסון התוכנית: 256KB
  • סוג זיכרון התוכנית: FLASH
  • קיבולת זיכרון RAM: 48K
  • מתח - ספק כוח (Vcc/Vdd): 2 V ~ 3.6 V
  • מתנד: פנימי
  • טמפרטורת הפעלה: -40 C ~ 85 C
  • חבילה/דיור: 64 חיים

בפרויקט זה אשתמש ב- UART, GPIO, כלב השמירה והטיימר של STM32F103RCT6. התפתחותם של ציוד היקפי אלה מתועדת להלן. STM32 USES Keil MDK פיתוח תוכנה, שאינו זר לך, ולכן לא אציג את שיטת ההתקנה של תוכנה זו. ניתן לדמות את STM32 באופן מקוון על ידי j-link או st-link וכלים סימולציה אחרים. התמונה הבאה היא לוח המעגל STM32 בו השתמשתי:

שלב 4: סדרת UART

UART סידורי
UART סידורי
UART סידורי
UART סידורי
UART סידורי
UART סידורי

ל- STM32F103RCT6 מספר יציאות טוריות. בפרויקט זה השתמשתי בערוץ היציאה הטורית PA9/PA10, וקצב השידור של היציאה הטורית נקבע על 115200.

GPIO

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

שלב 5: טיימר

שָׁעוֹן עֶצֶר
שָׁעוֹן עֶצֶר
שָׁעוֹן עֶצֶר
שָׁעוֹן עֶצֶר

בעת אתחול הטיימר, ציין את מקדם חלוקת התדרים PSC, להלן שעון המערכת שלנו (72MHz) לחלוקת תדרים

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

לדוגמה, כאשר הגדרנו את הטיימר לספור, ערך ספירת הטיימר שווה ל- arr וימחק ב -0 ויחשב מחדש.

ספירת הטיימר נטענת מחדש ופעם אחת היא עדכון

חשב את נוסחת זמן העדכון Tout = ((arr +1)*(PSC +1))/Tclk

גזירת נוסחה: שיחה היא מקור השעון של הטיימר, הנה 72Mhz

אנו מחלקים את תדר השעון המוקצה, מציינים את ערך חלוקת התדרים כ- PSC, ואז מחלקים את השיחה שלנו ל- PSC +1, התדר הסופי של הטיימר שלנו הוא Tclk/(PSC +1) MHz

אז מה שאנו מתכוונים לתדירות כאן הוא שיש לנו 1s של דיבורים על מספר PSC +1 M (1M = 10 ^ 6), והזמן עבור כל מספר הוא PSC +1 /Talk, וקל להבין שההיפוך התדירות היא התקופה, והתקופה של כל מספר כאן היא PSC +1 /שניות שיחה ואז עוברים מ- 0 ל- arr הוא (arr +1)*(PSC +1) /Tclk

לדוגמה, בואו נקבע arr = 7199 ו- PSC = 9999

חילקנו 72MHz ל- 9999+1 שווה ל- 7200Hz

זהו 9, 000 ספירות לשנייה, וכל ספירה היא 1/7, 200 שנייה

אז אנחנו רושמים כאן 9, 000 מספרים כדי לעבור לעדכון הטיימר (7199+1)*(1/7200) = 1s, אז 1s עובר לעדכון.

בטל TIM3_Int_Init (u16 arr, u16 psc) {

TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB1PeriphClockCmd (RCC_APB1Periph_TIM3, ENABLE);

// שעון TIM_TimeBaseStructure. TIM_Period = arr;

TIM_TimeBaseStructure. TIM_Prescaler = psc; TIM_TimeBaseStructure. TIM_ClockDivision = 0;

// TDTS = Tck_tim TIM_TimeBaseStructure. TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit (TIM3, & TIM_TimeBaseStructure);

אנא צור איתנו קשר אם אתה זקוק להליך מלא:

www.stoneitech.com/contact

אענה לך תוך 12 שעות.

שלב 6: כלב שמירה

כלב השמירה
כלב השמירה
כלב השמירה
כלב השמירה

כדי למנוע מהמערכת לקרוס בזמן שהתוכנית פועלת, הוספתי את כלב השמירה. למעשה, כל הפרויקטים המשתמשים ב- MCU משתמשים בדרך כלל בכלב שמירה.

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

מונע על ידי שעון במהירות נמוכה ייעודי (LSI), זה עובד גם אם השעון הראשי נכשל.

הוא מתאים לשימוש במצבים בהם כלב השמירה נדרש לעבוד באופן עצמאי לחלוטין מחוץ לתוכנית הראשית ודורש דיוק זמן נמוך. כלב שמירה על חלון (WWDG):

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

int main (void) {

delay_init ();

// עיכוב init NVIC_PriorityGroupConfig (NVIC_PriorityGroup_2);

// NVIC INIT uart_init (115200);

// UART INIT PAD_INIT ();

// Light Init IWDG_Init (4, 625);

בעוד (1) {

אם (USART_RX_END)

{switch (USART_RX_BUF [5])

{

מארז אספרסו:

CoffeeSelect (אספרסו, USART_RX_BUF [8]);

לשבור;

מקרה אמריקנו:

CoffeeSelect (Americano, USART_RX_BUF [8]);

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

u8 timer_cnt = 0;

void TIM3_IRQHandler (void) // TIM3

{

אם (TIM_GetITStatus (TIM3, TIM_IT_Update)! = אפס)

{

TIM_ClearITPendingBit (TIM3, TIM_IT_Update);

timer_cnt ++;

אם (timer_cnt> = 200)

{

שלוח חלב [6] = חלב ();

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

כתוב אחרון

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

למידע נוסף על הפרויקט לחץ כאן