Sommario:

STONE LCD con Smart Home: 5 passaggi
STONE LCD con Smart Home: 5 passaggi

Video: STONE LCD con Smart Home: 5 passaggi

Video: STONE LCD con Smart Home: 5 passaggi
Video: Xiaomi Mijia LSC-M01, умный дверной звонок с широкоугольной камерой 2024, Giugno
Anonim
STONE LCD con Smart Home
STONE LCD con Smart Home

Oggi ho ricevuto il display dell'unità della porta seriale di STONE, che può comunicare tramite la porta seriale dell'MCU, e il design della logica dell'interfaccia utente di questo display può essere progettato direttamente utilizzando il software VGUS fornito sul sito Web ufficiale di STONE, che è molto conveniente per noi. Quindi ho intenzione di usarlo per realizzare un semplice controller per elettrodomestici, che include il controllo di varie luci (soggiorno, cucina, camera dei bambini, bagno). Allo stesso tempo, è possibile rilevare la temperatura interna ed esterna, l'umidità e la qualità dell'aria. Questa è solo una semplice demo e puoi condurre uno sviluppo secondario tramite il codice che ho fornito. Alcuni tutorial di base sullo schermo STONE possono essere visitati sul sito Web:

Il sito Web contiene una varietà di informazioni sul modello, sull'utente e sulla documentazione di progettazione, oltre a tutorial video. Non entrerò troppo nei dettagli qui.

Passaggio 1: progettazione dell'interfaccia utente

Progettazione dell'interfaccia dell'interfaccia utente
Progettazione dell'interfaccia dell'interfaccia utente
Progettazione dell'interfaccia dell'interfaccia utente
Progettazione dell'interfaccia dell'interfaccia utente
Progettazione dell'interfaccia dell'interfaccia utente
Progettazione dell'interfaccia dell'interfaccia utente
Progettazione dell'interfaccia dell'interfaccia utente
Progettazione dell'interfaccia dell'interfaccia utente

Photoshop

Ho progettato le seguenti due pagine dell'interfaccia utente con Photoshop:

Questo progetto ha le due pagine precedenti in totale. "Luce" e "Sensore" nell'angolo in alto a destra sono i pulsanti di commutazione di queste due pagine.

Nella pagina "Luce" puoi controllare tutti i tipi di luci della tua casa. Nella pagina "Sensore" è possibile verificare i valori rilevati dai vari sensori.

Dopo il design delle due pagine precedenti, possiamo condurre un design della logica dei pulsanti tramite il software STONE TOOL fornito sul sito Web ufficiale di STONE.

Vale la pena notare che la sorgente dell'orologio utilizzata per la visualizzazione dell'ora qui è la sorgente dell'orologio dello schermo del display, non la sorgente dell'orologio dell'MCU.

Effetto cambio pagina TAB

Nessun componente di cambio pagina TAB è stato trovato nel software STONE TOOL, quindi ho pensato a un altro metodo per ottenere l'effetto di cambio pagina TAB.

Attraverso l'osservazione che fornisco due immagini dell'interfaccia utente si può scoprire che le due immagini sopra sono il testo "Luce" e "Sensore", la differenza è che la loro dimensione in pixel è diversa, quindi dobbiamo solo mettere la posizione dei due pixel è impostata su stesso testo, e quindi attraverso l'angolo in alto a sinistra dell'ora e della data per riferimento, è possibile ottenere il TAB per cambiare effetto.

Logica dei pulsanti

Prendi come esempio il pulsante "Soggiorno". Quando l'utente preme questo pulsante, la schermata di visualizzazione della porta seriale STONE invierà le istruzioni di protocollo corrispondenti attraverso la porta seriale. Dopo aver ricevuto questa istruzione, l'MCU dell'utente analizzerà il protocollo per controllare lo stato di commutazione delle luci collegate all'MCU.

Acquisizione del sensore

Prendiamo ad esempio la "qualità dell'aria": se si desidera ottenere la qualità dell'aria interna, dobbiamo disporre di un MCU per raccogliere la qualità dell'aria, sensore di qualità dell'aria quando l'MCU numerico raccolto tramite algoritmo confrontando i pro e i contro della qualità dell'aria, e quindi il MCU inviato tramite una porta seriale per visualizzare l'area di archiviazione di "Buono" o "Cattivo", per modificare il contenuto del display "Testo variabile0", quindi l'utente può vedere intuitivamente i meriti del controllo di qualità. Questi sono spiegati più avanti nel codice MCU.

Passaggio 2: comunicazione MCU

Comunicazione MCU
Comunicazione MCU
Comunicazione MCU
Comunicazione MCU
Comunicazione MCU
Comunicazione MCU
Comunicazione MCU
Comunicazione MCU

STM32 è l'MCU con cui tutti hanno familiarità ed è un modello MCU comune a livello internazionale. Pertanto, il modello specifico di MCU STM32 che ho utilizzato in questo progetto è STM32F103RCT6.

Esistono molte serie di STM32, in grado di soddisfare le diverse richieste del mercato. Il kernel può essere suddiviso in cortex-m0, M3, M4 e M7 e ogni kernel può essere suddiviso in mainstream, alte prestazioni e basso consumo energetico.

Puramente dal punto di vista dell'apprendimento, puoi scegliere F1 e F4, F1 rappresenta il tipo base, basato sul kernel corteccia-m3, la frequenza principale è 72MHZ, F4 rappresenta le alte prestazioni, basato sul kernel corteccia-m4, il principale la frequenza è 180 M.

Per quanto riguarda F1, F4 (serie 429 e successive), a parte i diversi kernel e il miglioramento della frequenza principale, l'ovvia caratteristica dell'aggiornamento è il controller LCD e l'interfaccia della fotocamera, il supporto per SDRAM, questa differenza avrà la priorità nella selezione del progetto. Tuttavia, dal punto di vista dell'insegnamento universitario e dell'apprendimento iniziale degli utenti, la serie F1 è ancora la prima scelta. Attualmente, l'STM32 della serie F1 ha la più grande quantità di materiali e prodotti sul mercato.

Per quanto riguarda l'installazione dell'ambiente di sviluppo STM32 SCM e il metodo di download del programma, non farò l'introduzione.

Inizializzazione GPIO

In questo progetto, abbiamo utilizzato un totale di 4 GPIO, uno dei quali è il pin di uscita PWM. Diamo prima un'occhiata all'inizializzazione di tre porte GPIO ordinarie:

Questa funzione inizializza il PB0\PB1\PB2 di STM32F103C8 come pin di uscita e lo chiama dalla funzione principale. Dopo l'inizializzazione, abbiamo bisogno di una logica per controllare lo stato di uscita, il livello alto e basso di questo GPIO, quindi ho scritto la funzione come di seguito:

Questa è una funzione che puoi capire intuitivamente dal nome della variabile.

Inizializzazione della porta seriale

La parte di inizializzazione della porta seriale è in uart.c:

Quindi chiama uart_init nella funzione principale per inizializzare il baud rate della porta seriale di 115200. I pin usano PA9/PA10

Inizializzazione PWM

Passaggi specifici:

1. Impostare l'orologio RCC;

2. Impostare l'orologio GPIO; la modalità GPIO dovrebbe essere impostata su GPIO_Model_AF_PP o sulla funzione GPIO_PinRemapConfig() se è richiesta la rimappatura dei pin.

3. Impostare i relativi registri del timer TIMx;

4. Impostare il registro relativo al PWM del timer TIMx;

A. Imposta la modalità PWM

B. Imposta duty cycle (calcolo della formula)

C. Impostare la polarità di confronto dell'uscita (precedentemente introdotta)

D. Soprattutto, abilitare lo stato di uscita di TIMx e abilitare l'uscita PWM di TIMx; Dopo che le impostazioni pertinenti sono state completate, il timer TIMx viene attivato da TIMx_Cmd() per ottenere l'output PWM. Chiama questo TIM3_PWM_Init dalla funzione principale.

Passaggio 3: scrittura del codice logico

Scrittura del codice logico
Scrittura del codice logico
Scrittura del codice logico
Scrittura del codice logico
Scrittura del codice logico
Scrittura del codice logico

Visualizza la definizione dell'indirizzo del componente

I componenti del display hanno indirizzi separati, e qui li ho scritti tutti come macro definizioni: Ricezione dati seriale

Guardando le informazioni sul display STONE, si può vedere che quando si preme il pulsante, la porta seriale sul display invia protocolli nel formato appropriato, che l'utente MCU può ricevere e analizzare. Quando si preme il pulsante, la porta seriale del display invia nove byte di dati, inclusi i dati dell'utente. La ricezione dei dati seriali è scritta in Handler: I dati ricevuti sono memorizzati nell'array "USART_RX_BUF". In questo progetto, la lunghezza di ricezione è fissa. Quando la lunghezza di ricezione è superiore a 9 byte, viene valutata l'estremità di ricezione.

Controlla lo stato di commutazione della lampada

Nella funzione principale, ho scritto un codice logico per controllare lo stato dell'interruttore della lampada: Come possiamo vedere, il codice determina prima se i dati della porta seriale vengono ricevuti e quando vengono ricevuti i dati della porta seriale, determina quale pulsante l'utente preme sul display. I diversi pulsanti del display hanno indirizzi diversi, che possono essere visualizzati nel software STONE TOOL: Quando l'utente preme il pulsante "Living Room", il quarto e il quinto bit dei dati inviati dalla porta seriale dello schermo del display sono i indirizzo del pulsante. Poiché il quarto bit di tutti i pulsanti qui impostati è 0x00, possiamo giudicare quale pulsante l'utente preme giudicando direttamente i dati del quinto bit. Dopo aver ottenuto il pulsante premuto dall'utente, dobbiamo giudicare i dati utente ricevuti quando viene premuto il pulsante, che è l'ottava cifra dei dati inviati dallo schermo del display. Pertanto, effettuiamo il seguente controllo: scriviamo il parametro dell'indirizzo del pulsante e i dati utente nella funzione "Light_Contral" per controllare lo stato on-off della luce. L'entità della funzione Light_Contral è la seguente: Come puoi vedere, se l'indirizzo del pulsante è "Living Room" e i dati utente sono "LightOn", il pin PB0 dell'MCU è impostato sull'uscita di alto livello e la luce è accesa. Gli altri tre pulsanti sono simili, ma non andrò avanti qui.

Uscita PWM

Nell'interfaccia utente progettata da me, è presente un regolatore a scorrimento, che viene utilizzato per controllare la luminosità della luce della "Stanza dei bambini". MCU è implementato dal pin di uscita PWM. PWM è PB5. Il codice è il seguente: Il registro scorrevole è impostato su un valore minimo di 0x00 e un valore massimo di 0x64. Durante lo scorrimento, la porta seriale dello schermo del display invierà anche indirizzi e dati rilevanti, quindi imposterà il rapporto di lavoro dell'uscita PWM chiamando la seguente funzione:

Passaggio 4: acquisizione del sensore

Acquisizione del sensore
Acquisizione del sensore
Acquisizione del sensore
Acquisizione del sensore
Acquisizione del sensore
Acquisizione del sensore

Nella pagina di "Sensore" della schermata del display, sono presenti quattro dati del sensore.

I dati hanno anche un indirizzo di archiviazione nel display e possiamo modificare il contenuto reale semplicemente scrivendo i dati a questi indirizzi tramite la porta seriale dell'MCU.

Qui ho realizzato una semplice implementazione del codice:

I dati del display vengono aggiornati ogni 5 secondi e ho scritto solo una semplice demo della relativa funzione di raccolta dei sensori, perché non ho questi sensori in mano.

Nello sviluppo di progetti reali, questi sensori possono essere dati raccolti da ADC o dati raccolti da interfacce di comunicazione IIC, UART e SPI. Tutto quello che devi fare è scrivere questi dati nella funzione corrispondente come valore di ritorno.

Passaggio 5: effetto operativo effettivo

Consigliato: