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

STONE LCD με έξυπνο σπίτι: 5 βήματα
STONE LCD με έξυπνο σπίτι: 5 βήματα

Βίντεο: STONE LCD με έξυπνο σπίτι: 5 βήματα

Βίντεο: STONE LCD με έξυπνο σπίτι: 5 βήματα
Βίντεο: Η ΣΙΝΤΕΡΕΛΑ ΚΑΝΕΙ ΤΑΤΟΥ ΣΕ ΚΡΥΦΟ ΣΗΜΕΙΟ 2024, Ιούλιος
Anonim
STONE LCD με έξυπνο σπίτι
STONE LCD με έξυπνο σπίτι

Σήμερα, πήρα την οθόνη σειριακής θύρας STONE, η οποία μπορεί να επικοινωνήσει μέσω της σειριακής θύρας του MCU, και ο λογικός σχεδιασμός UI αυτής της οθόνης μπορεί να σχεδιαστεί απευθείας χρησιμοποιώντας το λογισμικό VGUS που παρέχεται στον επίσημο ιστότοπο της STONE, το οποίο είναι πολύ βολικό για εμάς. Σκοπεύω λοιπόν να το χρησιμοποιήσω για να φτιάξω ένα απλό χειριστήριο συσκευών, το οποίο περιλαμβάνει τον έλεγχο διαφόρων φώτων (σαλόνι, κουζίνα, παιδικό δωμάτιο, μπάνιο). Ταυτόχρονα, μπορούν να συλλεχθούν εσωτερική και εξωτερική θερμοκρασία, υγρασία και ποιότητα αέρα. Αυτό είναι μόνο ένα απλό demo και μπορείτε να πραγματοποιήσετε δευτερεύουσα ανάπτυξη μέσω του κώδικα που παρείχα. Ορισμένα βασικά μαθήματα σχετικά με την οθόνη STONE μπορούν να μεταβούν στον ιστότοπο:

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

Βήμα 1: Σχεδιασμός διεπαφής διεπαφής χρήστη

Σχεδιασμός διεπαφής UI
Σχεδιασμός διεπαφής UI
Σχεδιασμός διεπαφής UI
Σχεδιασμός διεπαφής UI
Σχεδιασμός διεπαφής UI
Σχεδιασμός διεπαφής UI
Σχεδιασμός διεπαφής UI
Σχεδιασμός διεπαφής UI

Photoshop

Σχεδίασα τις ακόλουθες δύο σελίδες UI με photoshop:

Αυτό το έργο έχει τις δύο παραπάνω σελίδες συνολικά. "Light" και "Sensor" στην επάνω δεξιά γωνία είναι τα κουμπιά εναλλαγής αυτών των δύο σελίδων.

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

Μετά το σχεδιασμό των δύο παραπάνω σελίδων, μπορούμε να πραγματοποιήσουμε μια λογική σχεδίαση κουμπιού μέσω του λογισμικού STONE TOOL που παρέχεται στον επίσημο ιστότοπο της STONE.

Αξίζει να σημειωθεί ότι η πηγή ρολογιού που χρησιμοποιείται για την ένδειξη ώρας εδώ είναι η πηγή ρολογιού της οθόνης και όχι η πηγή ρολογιού MCU.

Εφέ αλλαγής σελίδας TAB

Δεν βρέθηκε κανένα στοιχείο αλλαγής σελίδας TAB στο λογισμικό STONE TOOL, οπότε σκέφτηκα μια άλλη μέθοδο για να επιτύχω το αποτέλεσμα εναλλαγής σελίδας TAB.

Μέσω της παρατήρησης παρέχω δύο εικόνες UI μπορούν να βρεθούν ότι οι δύο παραπάνω εικόνες είναι κείμενο "Light" και "Sensor", η διαφορά είναι ότι το μέγεθος των pixel τους είναι διαφορετικό, οπότε δεν χρειάζεται παρά να θέσουμε τη θέση των δύο pixel ίδιο κείμενο και, στη συνέχεια, στην επάνω αριστερή γωνία της ώρας και της ημερομηνίας για αναφορά, μπορείτε να επιτύχετε το εφέ TAB to switch.

Λογική κουμπιού

Πάρτε το κουμπί "Σαλόνι" ως παράδειγμα. Όταν ο χρήστης πατήσει αυτό το κουμπί, η οθόνη της σειριακής θύρας 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, τον κύριο η συχνότητα είναι 180Μ.

Όσον αφορά τα F1, F4 (σειρά 429 και άνω), εκτός από τους διαφορετικούς πυρήνες και τη βελτίωση της κύριας συχνότητας, το προφανές χαρακτηριστικό της αναβάθμισης είναι ο ελεγκτής LCD και η διεπαφή κάμερας, η υποστήριξη για SDRAM, αυτή η διαφορά θα έχει προτεραιότητα στην επιλογή του έργου. Ωστόσο, από την άποψη της πανεπιστημιακής διδασκαλίας και της αρχικής μάθησης των χρηστών, η σειρά F1 εξακολουθεί να είναι η πρώτη επιλογή. Επί του παρόντος, το STM32 της σειράς F1 έχει τη μεγαλύτερη ποσότητα υλικών και προϊόντων στην αγορά.

Σχετικά με τη μέθοδο εγκατάστασης του περιβάλλοντος ανάπτυξης STM32 SCM και τη μέθοδο λήψης προγράμματος, δεν θα κάνω την εισαγωγή.

Προετοιμασία GPIO

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

Αυτή η συνάρτηση αρχικοποιεί το PB0 / PB1 / PB2 του STM32F103C8 ως τον ακροδέκτη εξόδου και το καλεί από την κύρια συνάρτηση. Μετά την προετοιμασία, πρέπει να έχουμε μια λογική για τον έλεγχο της κατάστασης εξόδου, υψηλού και χαμηλού επιπέδου αυτού του GPIO, οπότε έγραψα τη συνάρτηση ως εξής:

Αυτή είναι μια συνάρτηση που μπορείτε να κατανοήσετε διαισθητικά με το όνομα της μεταβλητής.

Σειριακή προετοιμασία θύρας

Το τμήμα προετοιμασίας της σειριακής θύρας βρίσκεται στο uart.c:

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

Προετοιμασία PWM

Συγκεκριμένα βήματα:

1. Ρυθμίστε το ρολόι RCC.

2. Ρυθμίστε το ρολόι GPIO. Η λειτουργία GPIO πρέπει να οριστεί σε GPIO_Model_AF_PP ή στη λειτουργία GPIO_PinRemapConfig () εάν απαιτείται επαναφορά καρφιτσών.

3. Ορίστε τους σχετικούς καταχωρητές του χρονοδιακόπτη TIMx.

4. Ρυθμίστε το μητρώο που σχετίζεται με το PWM του χρονοδιακόπτη TIMx.

A. Ρυθμίστε τη λειτουργία PWM

Β. Ορισμός κύκλου λειτουργίας (υπολογισμός τύπου)

Γ. Ρυθμίστε την πολικότητα σύγκρισης εξόδου (που είχε εισαχθεί προηγουμένως)

D. Το πιο σημαντικό, ενεργοποιήστε την κατάσταση εξόδου του TIMx και ενεργοποιήστε την έξοδο PWM του TIMx. Αφού ολοκληρωθούν οι σχετικές ρυθμίσεις, ο χρονοδιακόπτης TIMx ενεργοποιείται από το TIMx_Cmd () για λήψη εξόδου PWM. Καλέστε αυτό το TIM3_PWM_Init από την κύρια λειτουργία.

Βήμα 3: Γραφή λογικού κώδικα

Λογική σύνταξη κώδικα
Λογική σύνταξη κώδικα
Λογική σύνταξη κώδικα
Λογική σύνταξη κώδικα
Λογική σύνταξη κώδικα
Λογική σύνταξη κώδικα

Εμφάνιση ορισμού διεύθυνσης στοιχείου

Τα στοιχεία της οθόνης έχουν ξεχωριστές διευθύνσεις και εδώ τα έγραψα όλα ως μακρο ορισμούς: Λήψη σειριακών δεδομένων

Εξετάζοντας τις πληροφορίες σχετικά με την οθόνη STONE, μπορείτε να δείτε ότι όταν πατήσετε το κουμπί, η σειριακή θύρα στην οθόνη στέλνει πρωτόκολλα στην κατάλληλη μορφή, τα οποία ο χρήστης MCU μπορεί να λάβει και να αναλύσει. Όταν πατηθεί το κουμπί, η σειριακή θύρα στην οθόνη στέλνει εννέα byte δεδομένων, συμπεριλαμβανομένων των δεδομένων χρήστη. Η λήψη σειριακών δεδομένων είναι γραμμένη στο Handler: Τα ληφθέντα δεδομένα αποθηκεύονται στον πίνακα "USART_RX_BUF". Σε αυτό το έργο, το μήκος λήψης είναι σταθερό. Όταν το μήκος λήψης είναι μεγαλύτερο από 9 byte, το τέλος λήψης κρίνεται.

Ελέγξτε την κατάσταση μεταγωγής της λάμπας

Στην κύρια λειτουργία, έγραψα κάποιο λογικό κώδικα για τον έλεγχο της κατάστασης μεταγωγής της λάμπας: Όπως βλέπουμε, ο κώδικας καθορίζει πρώτα εάν τα δεδομένα σειριακής θύρας λαμβάνονται και όταν λαμβάνονται τα δεδομένα σειριακής θύρας, καθορίζει ποιο κουμπί είναι ο χρήστης πατάει στην οθόνη της οθόνης. Διαφορετικά κουμπιά στην οθόνη έχουν διαφορετικές διευθύνσεις, οι οποίες φαίνονται στο λογισμικό STONE TOOL: Όταν ο χρήστης πατήσει το κουμπί "Living Room", το τέταρτο και το πέμπτο κομμάτι των δεδομένων που αποστέλλονται από τη σειριακή θύρα της οθόνης είναι διεύθυνση του κουμπιού. Δεδομένου ότι το τέταρτο bit όλων των κουμπιών που είναι εδώ είναι 0x00, μπορούμε να κρίνουμε ποιο κουμπί πατά ο χρήστης κρίνοντας απευθείας τα δεδομένα του πέμπτου bit. Αφού λάβουμε το κουμπί που έχει πατήσει ο χρήστης, πρέπει να κρίνουμε τα δεδομένα χρήστη που λαμβάνονται όταν πατηθεί το κουμπί, το οποίο είναι το όγδοο ψηφίο των δεδομένων που αποστέλλονται από την οθόνη. Επομένως, κάνουμε τον ακόλουθο έλεγχο: γράψτε την παράμετρο διεύθυνσης κουμπιού και τα δεδομένα χρήστη στη λειτουργία "Light_Contral" για να ελέγξετε την κατάσταση ενεργοποίησης-απενεργοποίησης του φωτός. Η οντότητα συνάρτησης Light_Contral είναι η ακόλουθη: Όπως μπορείτε να δείτε, εάν η διεύθυνση κουμπιού είναι "Living Room" και τα δεδομένα χρήστη είναι "LightOn", τότε ο ακροδέκτης PB0 του MCU έχει οριστεί σε έξοδο υψηλού επιπέδου και η λυχνία είναι αναμμένη Το Τα άλλα τρία κουμπιά είναι παρόμοια, αλλά δεν θα συνεχίσω εδώ.

Έξοδος PWM

Στο περιβάλλον χρήστη που έχει σχεδιαστεί από εμένα, υπάρχει ένας ρυθμιστικός συρόμενος, ο οποίος χρησιμοποιείται για τον έλεγχο της φωτεινότητας του φωτός του "Children Room". Το MCU υλοποιείται από το PWM. Ο PIN εξόδου PWM είναι PB5. Ο κωδικός έχει ως εξής: Ο ρυθμιστής ολίσθησης έχει οριστεί σε ελάχιστη τιμή 0x00 και μέγιστη τιμή 0x64. Κατά την ολίσθηση, η σειριακή θύρα της οθόνης θα στείλει επίσης σχετικές διευθύνσεις και δεδομένα και στη συνέχεια θα ορίσει την αναλογία λειτουργίας της εξόδου PWM καλώντας την ακόλουθη συνάρτηση:

Βήμα 4: Απόκτηση αισθητήρα

Απόκτηση αισθητήρα
Απόκτηση αισθητήρα
Απόκτηση αισθητήρα
Απόκτηση αισθητήρα
Απόκτηση αισθητήρα
Απόκτηση αισθητήρα

Στη σελίδα "Αισθητήρας" της οθόνης, υπάρχουν τέσσερα δεδομένα Αισθητήρων.

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

Εδώ έκανα μια απλή εφαρμογή κώδικα:

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

Στην πραγματική ανάπτυξη έργου, αυτοί οι αισθητήρες μπορεί να είναι δεδομένα που συλλέγονται από την ADC ή δεδομένα που συλλέγονται από διεπαφές επικοινωνίας IIC, UART και SPI. Το μόνο που χρειάζεται να κάνετε είναι να γράψετε αυτά τα δεδομένα στην αντίστοιχη συνάρτηση ως τιμή επιστροφής.

Βήμα 5: Πραγματικό αποτέλεσμα λειτουργίας

Συνιστάται: