Sommario:
- Fase 1: Introduzione alla funzione dello schermo di visualizzazione della macchina da caffè
- Passaggio 2: crea immagini dell'interfaccia utente per il display STONE
- Passaggio 3: STM32F103RCT6
- Passaggio 4: seriale UART
- Passaggio 5: timer
- Passaggio 6: cane da guardia
Video: Display STONE +STM32 +Caffettiera: 6 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:00
Sono un ingegnere del software MCU, ho recentemente ricevuto un progetto per essere una macchina da caffè, requisiti domestici con un'operazione touch screen, la funzione è buona, è sopra la selezione dello schermo potrebbe non essere molto buona, fortunatamente, questo progetto posso decidere cosa MCU da usare da solo, può anche essere usato per decidere quale schermo, quindi ho scelto l'STM32 di questo tipo di MCU semplice e facile da usare, schermo di visualizzazione Ho scelto il display touch screen di STONE, lo schermo è semplice e facile da usare, il mio STM32 MCU solo tramite la comunicazione UART va bene.
Schermo LCD seriale STONE, che può comunicare attraverso la porta seriale dell'MCU. Allo stesso tempo, il design logico dell'interfaccia UI di questo display può essere progettato direttamente utilizzando la STONE TOOL Box fornita dal sito Web ufficiale di STONE, il che è molto conveniente. Quindi lo userò per questo progetto di macchina per il caffè. Allo stesso tempo, registrerò semplicemente lo sviluppo di base. Poiché questo è un progetto della mia azienda, registrerò solo una semplice demo e non scriverò il codice completo. Alcuni tutorial di base sullo schermo di visualizzazione della pietra possono essere consultati sul sito Web: https://www.stoneitech.com/ Il sito Web contiene una varietà di informazioni sul modello, sull'uso e sulla documentazione di progettazione, oltre a tutorial video. Non entrerò troppo nei dettagli qui.
Fase 1: Introduzione alla funzione dello schermo di visualizzazione della macchina da caffè
Questo progetto ha le seguenti funzioni: l
- Visualizza l'ora e la data correnti
- Ci sono quattro pulsanti sul display per americano, latte, cappuccino ed espresso.
- Visualizza la quantità attuale di caffè in grani, latte e zucchero del caffè rimanenti
- Una casella di testo visualizza lo stato corrente
Con questi concetti in mente, puoi progettare un'interfaccia utente. STONE dei touch screen nella progettazione dell'interfaccia utente è relativamente semplice, l'utente attraverso il software PhotoShop progetta una buona interfaccia dell'interfaccia utente e l'effetto dei pulsanti, attraverso la STONE TOOL Box per progettare buone immagini sullo schermo e aggiungere i propri pulsanti con la logica STONE TOOL Box e dati seriali il valore restituito è ok, molto facile da sviluppare.
Passaggio 2: crea immagini dell'interfaccia utente per il display STONE
In base ai requisiti funzionali, ho realizzato le seguenti due interfacce di visualizzazione dell'interfaccia utente, una è l'interfaccia principale e l'altra è l'effetto pulsante.
Utilizzo di STONE TOOL BoxAttualmente, STONE fornisce TOOL. Apri questo STRUMENTO per creare un nuovo progetto, quindi importa l'interfaccia utente progettata per visualizzare le immagini e aggiungi i tuoi pulsanti, caselle di visualizzazione di testo, ecc. Il sito Web ufficiale di STONE ha un tutorial molto completo su come utilizzare questo software: https:/ /www.stoneitech.com/support/download/video
Gli effetti dell'aggiunta di pulsanti e della visualizzazione dei componenti in STONE TOOL Box sono i seguenti:
STONE TOOL Box ha la funzione di display di simulazione, attraverso il quale è possibile vedere l'effetto di funzionamento dell'interfaccia UI:
A questo punto, il display dell'interfaccia utente è completo e tutto ciò che devo fare è scrivere il codice MCU. Scarica i file generati dallo STONE TOOL Box sullo schermo del display per vedere i risultati effettivi.
Passaggio 3: STM32F103RCT6
STM32F103RCT6 MCU ha potenti funzioni. Ecco i parametri di base dell'MCU:
- Serie: STM32F10X l Kerne
- BRACCIO - COTEX32
- Velocità: 72 MHz
- Interfaccia di comunicazione: CAN, I2C, IrDA, LIN, SPI, UART/USART, USB
- Periferiche: DMA, controllo motore PWM, PDR, POR, PVD, PWM, sensore di temperatura, WDT
- Capacità di memorizzazione del programma: 256 KB
- Tipo di memoria del programma: FLASH
- Capacità RAM: 48K
- Tensione - alimentazione (Vcc/Vdd): 2 V ~ 3,6 V
- Oscillatore: interno
- Temperatura di esercizio: -40°C ~ 85°C
- Pacchetto/alloggiamento: 64-vita
In questo progetto utilizzerò UART, GPIO, Watch Dog e Timer di STM32F103RCT6. Lo sviluppo di queste periferiche è documentato di seguito. STM32 UTILIZZA lo sviluppo del software Keil MDK, che non è estraneo a te, quindi non presenterò il metodo di installazione di questo software. STM32 può essere simulato online tramite j-link o st-link e altri strumenti di simulazione. L'immagine seguente è la scheda STM32 che ho usato:
Passaggio 4: seriale UART
STM32F103RCT6 ha diverse porte seriali. In questo progetto, ho utilizzato il canale della porta seriale PA9/PA10 e la velocità di trasmissione della porta seriale è stata impostata su 115200.
GPIO
Nell'interfaccia utente di questo progetto, ci sono un totale di quattro pulsanti, che in realtà sono la preparazione di quattro tipi di caffè. Nella macchina da caffè, il controllo del numero di chicchi di caffè, del consumo di latte e del flusso d'acqua di diversi caffè viene effettivamente realizzato controllando sensori e relè, mentre io controllo prima semplicemente il pin GPIO.
Passaggio 5: timer
Quando si inizializza il timer, specificare il coefficiente di divisione di frequenza PSC, ecco il nostro orologio di sistema (72 MHz) per la divisione di frequenza
Quindi specificare il valore di ricarica arr, il che significa che quando il nostro timer raggiunge questo arr, il timer ricaricherà altri valori.
Ad esempio, quando impostiamo il timer per il conteggio in avanti, il valore del conteggio del timer è uguale a arr e verrà azzerato di 0 e ricalcolato
Il conteggio del timer viene ricaricato e una volta è un aggiornamento
Calcola la formula del tempo di aggiornamento Tout = ((arr+1)*(PSC +1))/Tclk
Derivazione della formula: Talk è la sorgente dell'orologio del timer, ecco 72Mhz
Dividiamo la frequenza di clock assegnata, specifichiamo il valore della divisione di frequenza come PSC, quindi dividiamo il nostro Talk in PSC +1, la frequenza finale del nostro timer è Tclk/(PSC +1) MHz
Quindi ciò che intendiamo per frequenza qui è che abbiamo 1s di Talk over PSC +1 M Numbers (1M=10 ^ 6), e il tempo per ogni numero è PSC +1 /Talk, ed è facile capire che l'inverso della frequenza è il periodo, e il periodo per ogni numero qui è PSC +1/Talk secondi e poi andiamo da 0 a arr è (arr+1)*(PSC +1)/Tclk
Ad esempio, impostiamo arr=7199 e PSC =9999
Abbiamo diviso 72MHz in 9999+1 è uguale a 7200Hz
Questo è 9.000 conteggi al secondo e ogni conteggio è 1/7.200 di secondo
Quindi stiamo registrando 9.000 numeri qui per andare all'aggiornamento del timer (7199+1)*(1/7200)=1s, quindi 1s va a un aggiornamento.
void TIM3_Int_Init(u16 arr, u16 psc){
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
//orologio 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);
Contattaci se hai bisogno di una procedura completa:
www.stoneitech.com/contact
Ti risponderò entro 12 ore.
Passaggio 6: cane da guardia
Per evitare che il sistema si bloccasse mentre il programma era in esecuzione, ho aggiunto il watchdog. In effetti, tutti i progetti che utilizzano l'MCU generalmente utilizzano un watchdog.
STM32 ha due watchdog integrati, che forniscono maggiore sicurezza, precisione temporale e flessibilità. Due dispositivi watchdog (watchdog indipendenti e watchdog finestra) possono essere utilizzati per rilevare e risolvere i guasti causati da errori software. Quando il contatore raggiunge un determinato valore di timeout, viene attivato un interrupt (solo watchdog finestra) o il ripristino del sistema. Watchdog indipendente (IWDG):
Guidato da un clock a bassa velocità (LSI) dedicato, funziona anche in caso di guasto del master clock.
È adatto per l'uso in situazioni in cui il watchdog deve lavorare in modo completamente indipendente al di fuori del programma principale e richiede una bassa precisione temporale. Cane da guardia della finestra (WWDG):
Guidato dall'orologio dall'orologio APB1 dopo la divisione di frequenza. Rileva il funzionamento dell'applicazione anormalmente tardivo o prematuro attraverso una finestra temporale configurabile. Adatto per programmi che richiedono che i watchdog funzionino in tempi precisi di Windows.
int main(void) {
delay_init();
//ritardo init NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
//INVIC INIT uart_init(115200);
//INIT UART PAD_INIT();
//Inizio luce IWDG_Init(4, 625);
mentre(1) {
se(USART_RX_END)
{ interruttore (USART_RX_BUF[5])
{
caso Espresso:
CoffeeSelect(Espresso, USART_RX_BUF[8]);
rottura;
caso americano:
CoffeeSelect(Americano, USART_RX_BUF[8]);
La logica Main nella funzione Main è la seguente:
u8 timer_cnt=0;
void TIM3_IRQHandler(void) //TIM3
{
if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)
{
TIM_ClearITPendingBit(TIM3, TIM_IT_Update);
timer_cnt++;
if(timer_cnt>=200)
{
milk_send[6]=latte();
Infine, aggiungi il codice nell'interruzione del timer: Nell'interruzione del timer, il mio obiettivo è controllare quanto caffè e latte sono rimasti, quindi inviare il valore rilevato allo schermo del display tramite una porta seriale. La misurazione della quantità di latte e caffè rimasti viene solitamente eseguita da sensori. I metodi semplici includono sensori di pressione, che misurano il peso attuale del latte e dei chicchi di caffè per determinare quanto è rimasto.
Scrivi nell'ultimo
Questo articolo registra solo il semplice processo di sviluppo del mio progetto. Considerando la riservatezza del progetto dell'azienda, anche l'interfaccia di visualizzazione dell'interfaccia utente che ho usato è stata realizzata da me, non la vera interfaccia di visualizzazione dell'interfaccia utente di questo progetto. La parte di codice di STM32 aggiunge solo il driver periferico dell'MCU e il relativo codice logico. Considerando anche la riservatezza del progetto dell'azienda, la parte tecnologica chiave specifica non è data, per favore capisci. Tuttavia, secondo il codice che ho fornito, collabora con lo schermo di visualizzazione STONE. i miei amici che sono anche ingegneri del software hanno bisogno solo di pochi giorni per aggiungere parti tecniche chiave al mio framework di codice per completare il progetto.
Per saperne di più sul progetto clicca qui