Πίνακας περιεχομένων:

STONE Display +STM32 +Καφετιέρα: 6 βήματα
STONE Display +STM32 +Καφετιέρα: 6 βήματα

Βίντεο: STONE Display +STM32 +Καφετιέρα: 6 βήματα

Βίντεο: STONE Display +STM32 +Καφετιέρα: 6 βήματα
Βίντεο: "Ridiculous" Espresso Workflow Ever! #coffeegrinder #coffeemachine #espresso 2024, Νοέμβριος
Anonim
STONE Display +STM32 +Καφετιέρα
STONE Display +STM32 +Καφετιέρα

Είμαι μηχανικός λογισμικού MCU, πρόσφατα έλαβα ένα έργο να είναι μια μηχανή καφέ, οι οικιακές απαιτήσεις με λειτουργία οθόνης αφής, η λειτουργία είναι καλή, είναι πάνω από την επιλογή της οθόνης μπορεί να μην είναι πολύ καλή, ευτυχώς, αυτό το έργο μπορώ να αποφασίσω τι Το MCU για χρήση μόνος μου, μπορεί επίσης να χρησιμοποιηθεί για να αποφασίσει ποια είναι η οθόνη, οπότε επέλεξα το STM32 αυτού του είδους το απλό και εύκολο στη χρήση MCU, οθόνη εμφάνισης επέλεξα την οθόνη αφής του STONE, η οθόνη είναι απλή και εύκολη στη χρήση, My Το STM32 MCU μόνο μέσω επικοινωνίας UART είναι εντάξει με αυτό.

STONE σειριακή οθόνη LCD, η οποία μπορεί να επικοινωνήσει μέσω της σειριακής θύρας του MCU. Ταυτόχρονα, ο λογικός σχεδιασμός της διεπαφής UI αυτής της οθόνης μπορεί να σχεδιαστεί απευθείας χρησιμοποιώντας το STONE TOOL Box που παρέχεται από τον επίσημο ιστότοπο της STONE, κάτι που είναι πολύ βολικό. Έτσι θα το χρησιμοποιήσω για αυτό το έργο μηχανής καφέ. Ταυτόχρονα, θα καταγράψω απλώς τη βασική εξέλιξη. Δεδομένου ότι αυτό είναι ένα έργο της εταιρείας μου, θα ηχογραφήσω μόνο ένα απλό demo και δεν θα γράψω τον πλήρη κώδικα. Ορισμένα βασικά μαθήματα σχετικά με την πέτρινη οθόνη μπορούν να μεταβούν στον ιστότοπο: https://www.stoneitech.com/ Ο ιστότοπος διαθέτει μια ποικιλία πληροφοριών σχετικά με το μοντέλο, τη χρήση και την τεκμηρίωση σχεδιασμού, καθώς και βίντεο σεμινάρια. Δεν θα μπω σε πολλές λεπτομέρειες εδώ.

Βήμα 1: Λειτουργία οθόνης οθόνης μηχανής καφέ Εισαγωγή

Αυτό το έργο έχει τις ακόλουθες λειτουργίες: l

  • Εμφανίζει την τρέχουσα ώρα και ημερομηνία
  • Υπάρχουν τέσσερα κουμπιά στην οθόνη για americano, latte, cappuccino και espresso.
  • Εμφανίζει την τρέχουσα ποσότητα των υπόλοιπων κόκκων καφέ, γάλακτος και ζάχαρης καφέ
  • Ένα πλαίσιο εμφάνισης κειμένου εμφανίζει την τρέχουσα κατάσταση

Έχοντας υπόψη αυτές τις έννοιες, μπορείτε να σχεδιάσετε μια διεπαφή διεπαφής χρήστη. Το STONE των οθονών αφής στο σχεδιασμό UI είναι σχετικά απλό, ο χρήστης μέσω του λογισμικού PhotoShop σχεδιάζει καλή διεπαφή χρήστη και εφέ κουμπιού, μέσω του STONE TOOL Box για να σχεδιάσει καλές εικόνες στην οθόνη και να προσθέσει τα δικά σας κουμπιά με λογική STONE TOOL Box και σειριακά δεδομένα η τιμή επιστροφής είναι εντάξει, πολύ εύκολο για εσάς να αναπτυχθείτε.

Βήμα 2: Δημιουργήστε εικόνες UI για STONE Display

Δημιουργήστε εικόνες UI για STONE Display
Δημιουργήστε εικόνες UI για STONE Display
Δημιουργήστε εικόνες UI για STONE Display
Δημιουργήστε εικόνες UI για STONE Display
Δημιουργήστε εικόνες UI για STONE Display
Δημιουργήστε εικόνες UI για STONE Display

Σύμφωνα με τις λειτουργικές απαιτήσεις, έκανα τις ακόλουθες δύο διεπαφές οθόνης UI, η μία είναι η κύρια διεπαφή και η άλλη το εφέ κουμπιού.

Χρήση του κουτιού STONE TOOL Επί του παρόντος, το STONE παρέχει εργαλείο. Ανοίξτε αυτό το ΕΡΓΑΛΕΙΟ για να δημιουργήσετε ένα νέο έργο, στη συνέχεια εισαγάγετε το σχεδιασμένο περιβάλλον εργασίας χρήστη για την εμφάνιση εικόνων και προσθέστε τα δικά σας κουμπιά, πλαίσια εμφάνισης κειμένου κ.λπ. /www.stoneitech.com/support/download/video

Τα αποτελέσματα της προσθήκης κουμπιών και της εμφάνισης εξαρτημάτων στο κουτί STONE TOOL είναι τα εξής:

Το STONE TOOL Box έχει τη λειτουργία προσομοίωσης οθόνης, μέσω της οποίας μπορείτε να δείτε το αποτέλεσμα λειτουργίας της διεπαφής UI:

Σε αυτό το σημείο, η οθόνη UI μου είναι πλήρης και το μόνο που έχω να κάνω είναι να γράψω τον κωδικό MCU. Κατεβάστε τα αρχεία που δημιουργούνται από το κουτί STONE TOOL στην οθόνη της οθόνης για να δείτε τα πραγματικά αποτελέσματα.

Βήμα 3: STM32F103RCT6

STM32F103RCT6
STM32F103RCT6

Το MCU STM32F103RCT6 έχει ισχυρές λειτουργίες. Ακολουθούν οι βασικές παράμετροι του MCU:

  • Σειρά: STM32F10X l Kerne
  • ARM - COTEX32
  • Ταχύτητα: 72 MHZ
  • Διεπαφή επικοινωνίας: 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, Watch Dog και Timer του STM32F103RCT6. Η ανάπτυξη αυτών των περιφερειακών τεκμηριώνεται παρακάτω. Η STM32 ΧΡΗΣΙΜΟΠΟΙΕΙ την ανάπτυξη λογισμικού Keil MDK, η οποία δεν σας είναι ξένη, οπότε δεν θα εισαγάγω τη μέθοδο εγκατάστασης αυτού του λογισμικού. Το STM32 μπορεί να προσομοιωθεί διαδικτυακά με j-link ή st-link και άλλα εργαλεία προσομοίωσης. Η παρακάτω εικόνα είναι η πλακέτα κυκλώματος STM32 που χρησιμοποίησα:

Βήμα 4: Σειριακό UART

Σειριακό UART
Σειριακό UART
Σειριακό UART
Σειριακό UART
Σειριακό UART
Σειριακό UART

Το STM32F103RCT6 διαθέτει πολλές σειριακές θύρες. Σε αυτό το έργο, χρησιμοποίησα το σειριακό κανάλι PA9/PA10 και ο ρυθμός baud της σειριακής θύρας ορίστηκε στα 115200.

GPIO

Στη διεπαφή χρήστη αυτού του έργου, υπάρχουν συνολικά τέσσερα κουμπιά, τα οποία είναι στην πραγματικότητα η παρασκευή τεσσάρων ειδών καφέ. Στην καφετιέρα, ο έλεγχος του αριθμού των κόκκων καφέ, η κατανάλωση γάλακτος και η ροή νερού από διαφορετικούς καφέδες γίνεται στην πραγματικότητα με τον έλεγχο αισθητήρων και ρελέ, ενώ απλώς ελέγχω πρώτα την καρφίτσα GPIO.

Βήμα 5: Χρονόμετρο

Μετρών την ώραν
Μετρών την ώραν
Μετρών την ώραν
Μετρών την ώραν

Κατά την εκκίνηση του χρονοδιακόπτη, καθορίστε τον συντελεστή διαίρεσης συχνότητας PSC, εδώ είναι το ρολόι του συστήματος μας (72MHz) για διαίρεση συχνοτήτων

Στη συνέχεια, καθορίστε το βέλος τιμής επαναφόρτωσης, πράγμα που σημαίνει ότι όταν το χρονόμετρό μας φτάσει σε αυτό το βέλος, ο χρονοδιακόπτης θα φορτώσει άλλες τιμές.

Για παράδειγμα, όταν ρυθμίζουμε το χρονόμετρο να μετράει, η τιμή του αριθμού του χρονοδιακόπτη είναι ίση με το βέλος και θα διαγραφεί κατά 0 και θα υπολογιστεί εκ νέου

Ο αριθμός χρονοδιακόπτη φορτώνεται ξανά και μία φορά είναι μια ενημέρωση

Υπολογίστε τον τύπο ώρας ενημέρωσης Tout = ((arr +1)*(PSC +1))/Tclk

Παράγωγο τύπου: Η ομιλία είναι η πηγή ρολογιού του χρονοδιακόπτη, εδώ είναι 72Mhz

Χωρίζουμε την εκχωρημένη συχνότητα ρολογιού, καθορίζουμε την τιμή διαίρεσης συχνότητας ως PSC, στη συνέχεια διαιρούμε το Talk μας σε PSC +1, η τελική συχνότητα του χρονοδιακόπτη μας είναι Tclk/(PSC +1) MHz

Λοιπόν, αυτό που εννοούμε με τη συχνότητα εδώ είναι ότι έχουμε 1s του Talk over PSC +1 M Numbers (1M = 10 ^ 6), και ο χρόνος για κάθε αριθμό είναι PSC +1 /Talk, και είναι εύκολο να καταλάβουμε ότι το αντίστροφο της συχνότητας είναι η περίοδος και η περίοδος για κάθε αριθμό εδώ είναι PSC +1 /Δευτερόλεπτα ομιλίας και μετά πηγαίνουμε από το 0 στο βέλος είναι (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 πηγαίνει σε μια ενημέρωση.

void 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: Watch Dog

Watch Dog
Watch Dog
Watch Dog
Watch Dog

Για να αποφύγω τη συντριβή του συστήματος κατά την εκτέλεση του προγράμματος, πρόσθεσα το φύλακα. Στην πραγματικότητα, όλα τα έργα που χρησιμοποιούν το MCU χρησιμοποιούν γενικά φύλακα.

Το STM32 διαθέτει δύο ενσωματωμένους φύλακες, παρέχοντας μεγαλύτερη ασφάλεια, χρονική ακρίβεια και ευελιξία. Δύο συσκευές φύλαξης (ανεξάρτητος φύλακας και φύλακας παραθύρων) μπορούν να χρησιμοποιηθούν για τον εντοπισμό και την επίλυση βλαβών που προκαλούνται από σφάλματα λογισμικού. Όταν ο μετρητής φθάσει σε μια δεδομένη τιμή χρονικού ορίου, ενεργοποιείται μια διακοπή (μόνο ο φύλακας παραθύρων) ή η επαναφορά συστήματος. Ανεξάρτητος φύλακας (IWDG):

Οδηγείται από ένα ειδικό ρολόι χαμηλής ταχύτητας (LSI), λειτουργεί ακόμη και αν το κύριο ρολόι αποτύχει.

Είναι κατάλληλο για χρήση σε καταστάσεις όπου απαιτείται ο φύλακας να λειτουργεί εντελώς ανεξάρτητα εκτός του κύριου προγράμματος και απαιτεί χαμηλή χρονική ακρίβεια. Παρατηρητής παραθύρων (WWDG):

Οδηγείται από το ρολόι από το ρολόι APB1 μετά τη διαίρεση συχνότητας. Εντοπίστε ασυνήθιστα καθυστερημένη ή πρόωρη λειτουργία εφαρμογής μέσω ενός παραμετροποιήσιμου χρονικού παραθύρου. Κατάλληλο για προγράμματα που απαιτούν φύλακες για να λειτουργούν με ακριβή χρονισμό των Windows.

int main (άκυρο) {

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)

{διακόπτης (USART_RX_BUF [5])

{

θήκη Espresso:

CoffeeSelect (Espresso, USART_RX_BUF [8]);

Διακοπή;

περίπτωση Americano:

CoffeeSelect (Americano, USART_RX_BUF [8]);

Η κύρια λογική στη συνάρτηση Κύρια έχει ως εξής:

u8 timer_cnt = 0;

άκυρο TIM3_IRQHandler (άκυρο) // TIM3

{

εάν (TIM_GetITStatus (TIM3, TIM_IT_Update)! = RESET)

{

TIM_ClearITPendingBit (TIM3, TIM_IT_Update);

timer_cnt ++;

αν (timer_cnt> = 200)

{

milk_send [6] = γάλα ();

Τέλος, προσθέστε τον κωδικό στη διακοπή του χρονοδιακόπτη: Στη διακοπή του χρονοδιακόπτη, ο στόχος μου είναι να ελέγξω πόσο καφέ και γάλα έχει απομείνει και, στη συνέχεια, να στείλω την εντοπισμένη τιμή στην οθόνη της οθόνης μέσω μιας σειριακής θύρας. Η μέτρηση του ποσού γάλακτος και κόκκων καφέ που απομένουν γίνεται συνήθως με αισθητήρες. Οι απλές μέθοδοι περιλαμβάνουν αισθητήρες πίεσης, οι οποίοι μετρούν το τρέχον βάρος του γάλακτος και των κόκκων του καφέ για να καθορίσουν πόσο περισσεύει.

Γράψε στο τελευταίο

Αυτό το άρθρο καταγράφει μόνο την απλή διαδικασία ανάπτυξης του έργου μου. Λαμβάνοντας υπόψη το απόρρητο του έργου της εταιρείας, η διεπαφή οθόνης UI που χρησιμοποίησα έγινε επίσης από τον εαυτό μου, όχι η πραγματική διεπαφή οθόνης UI αυτού του έργου. Το τμήμα κώδικα του STM32 προσθέτει μόνο το περιφερειακό πρόγραμμα οδήγησης MCU και τον σχετικό λογικό κώδικα. Επίσης, λαμβάνοντας υπόψη το απόρρητο του έργου της εταιρείας, δεν παρέχεται το συγκεκριμένο βασικό κομμάτι της τεχνολογίας, κατανοήστε το. Ωστόσο, σύμφωνα με τον κωδικό που παρείχα, συνεργαστείτε με την οθόνη STONE. οι φίλοι μου που είναι επίσης μηχανικοί λογισμικού χρειάζονται μόνο λίγες μέρες για να προσθέσουν βασικά τεχνικά μέρη στο πλαίσιο κώδικα για να ολοκληρώσουν το έργο.

Για να μάθετε περισσότερα για το έργο κάντε κλικ εδώ