Taula de continguts:

Pantalla STONE + STM32 + Cafetera: 6 passos
Pantalla STONE + STM32 + Cafetera: 6 passos

Vídeo: Pantalla STONE + STM32 + Cafetera: 6 passos

Vídeo: Pantalla STONE + STM32 + Cafetera: 6 passos
Vídeo: pantalla TFT LCD stone HMI 10.1 y panel Touchscreen para usarse con arduino, micro o industrial 2024, Desembre
Anonim
Pantalla STONE + STM32 + Cafetera
Pantalla STONE + STM32 + Cafetera

Sóc enginyer de programari de MCU, recentment he rebut un projecte per ser una màquina de cafè, els requisits de la llar amb un funcionament de pantalla tàctil, la funció és bona, està per sobre de la selecció de pantalla pot no ser molt bona, per sort, aquest projecte puc decidir què MCU per utilitzar-me, també es pot utilitzar per decidir quina serà la pantalla, així que vaig escollir la STM32 d’aquest tipus d’MCU senzilla i fàcil d’utilitzar, pantalla vaig triar la pantalla tàctil de STONE, la pantalla és senzilla i fàcil d’utilitzar, La MCU STM32 només a través de la comunicació UART està bé.

Pantalla de pantalla LCD de sèrie STONE, que es pot comunicar a través del port sèrie de l'MCU. Al mateix temps, el disseny lògic de la interfície d’interfície d’usuari d’aquesta pantalla es pot dissenyar directament mitjançant la caixa d’eines STONE proporcionada pel lloc web oficial de STONE, que és molt convenient. Així que l’utilitzaré per a aquest projecte de màquina de cafè. Al mateix temps, simplement anotaré el desenvolupament bàsic. Com que aquest és un projecte de la meva empresa, només gravaré una demostració senzilla i no escriuré el codi complet. Alguns tutorials bàsics sobre la pantalla de visualització de pedra poden anar al lloc web: https://www.stoneitech.com/ El lloc web té una gran varietat d’informació sobre el model, l’ús i la documentació de disseny, així com tutorials en vídeo. Aquí no entraré en massa detalls.

Pas 1: Introducció a la funció de pantalla de visualització de la màquina de cafè

Aquest projecte té les funcions següents: l

  • Mostra l’hora i la data actuals
  • A la pantalla hi ha quatre botons per a americà, cafè amb llet, caputxí i espresso.
  • Mostra la quantitat actual de grans de cafè, llet i sucre de cafè restants
  • Un quadre de visualització de text mostra l'estat actual

Tenint en compte aquests conceptes, podeu dissenyar una interfície d’interfície d’usuari. STONE de les pantalles tàctils del disseny de la interfície d’usuari és relativament senzill, l’usuari mitjançant el disseny del programari PhotoShop té una bona interfície d’interfície d’usuari i un efecte de botó, a través de STONE TOOL Box per dissenyar bones imatges a la pantalla i afegir els vostres propis botons amb la lògica de STONE TOOL Box i dades de sèrie, el valor de retorn és correcte, és molt fàcil de desenvolupar.

Pas 2: feu imatges de la interfície d’usuari per a la pantalla STONE

Feu imatges d'interfície d'usuari per a la pantalla STONE
Feu imatges d'interfície d'usuari per a la pantalla STONE
Feu imatges d'interfície d'usuari per a la pantalla STONE
Feu imatges d'interfície d'usuari per a la pantalla STONE
Feu imatges d'interfície d'usuari per a la pantalla STONE
Feu imatges d'interfície d'usuari per a la pantalla STONE

Segons els requisits funcionals, he realitzat les següents dues interfícies de visualització d’interfície d’usuari, una és la interfície principal i l’altra és l’efecte botó.

Ús de STONE TOOL Box Actualment, STONE proporciona EINA. Obriu aquesta EINA per crear un projecte nou, després importeu la interfície d’usuari dissenyada per mostrar imatges i afegiu els vostres propis botons, quadres de visualització de text, etc. El lloc web oficial de STONE té un tutorial molt complet sobre com utilitzar aquest programari : https: / /www.stoneitech.com/support/download/video

Els efectes d’afegir botons i mostrar components a la caixa STONE TOOL són els següents:

STONE TOOL Box té la funció de visualització de simulació, mitjançant la qual es pot veure l’efecte de funcionament de la interfície d’interfície d’usuari:

En aquest moment, la meva pantalla d’interfície d’usuari s’ha completat i només he d’escriure el codi MCU. Descarregueu els fitxers generats pel quadre STONE TOOL a la pantalla per veure els resultats reals.

Pas 3: STM32F103RCT6

STM32F103RCT6
STM32F103RCT6

La MCU STM32F103RCT6 té funcions potents. Aquests són els paràmetres bàsics de la MCU:

  • Sèrie: STM32F10X l Kerne
  • BRAÇ - COTEX32
  • Velocitat: 72 MHZ
  • Interfície de comunicació: CAN, I2C, IrDA, LIN, SPI, UART / USART, USB
  • Equips perifèrics: DMA, control del motor PWM, PDR, POR, PVD, PWM, sensor de temperatura, WDT
  • Capacitat d'emmagatzematge del programa: 256 KB
  • Tipus de memòria del programa: FLASH
  • Capacitat de memòria RAM: 48K
  • Voltatge: font d'alimentació (Vcc / Vdd): 2 V ~ 3,6 V
  • Oscil·lador: intern
  • Temperatura de funcionament: -40 ° C ~ 85 ° C
  • Paquet / habitatge: 64-vida

En aquest projecte, utilitzaré UART, GPIO, Watch Dog i Timer de STM32F103RCT6. A continuació es documenta el desenvolupament d’aquests perifèrics. STM32 UTILITZA el desenvolupament de programari Keil MDK, que no us és estrany, de manera que no introduiré el mètode d’instal·lació d’aquest programari. STM32 es pot simular en línia mitjançant j-link o st-link i altres eines de simulació. La imatge següent és la placa de circuit STM32 que he utilitzat:

Pas 4: sèrie UART

Sèrie UART
Sèrie UART
Sèrie UART
Sèrie UART
Sèrie UART
Sèrie UART

STM32F103RCT6 té diversos ports sèrie. En aquest projecte, he utilitzat el canal de port sèrie PA9 / PA10, i la velocitat en bauds del port sèrie s’ha establert en 115200.

GPIO

A la interfície d'usuari d'aquest projecte, hi ha un total de quatre botons, que realment són l'elaboració de quatre tipus de cafè. A la màquina de cafè, el control del nombre de grans de cafè, el consum de llet i el flux d’aigua de diferents cafès es realitza controlant els sensors i els relés, mentre que simplement controlo primer el pin GPIO.

Pas 5: temporitzador

Temporitzador
Temporitzador
Temporitzador
Temporitzador

Quan inicialitzeu el temporitzador, especifiqueu el coeficient de divisió de freqüència PSC, aquí teniu el rellotge del nostre sistema (72 MHz) per a la divisió de freqüències

A continuació, especifiqueu el valor de recàrrega arr, el que significa que quan el nostre temporitzador arribi a aquest arr, el temporitzador recarregarà altres valors.

Per exemple, quan configurem el temporitzador perquè es comptabilitzi, el valor del comptador del temporitzador és igual a arr i es netejarà en 0 i es recalcularà

El recompte del temporitzador es torna a carregar i una vegada és una actualització

Calculeu la fórmula del temps d'actualització Tout = ((arr + 1) * (PSC +1)) / Tclk

Derivació de fórmules: Talk és la font del rellotge del temporitzador, aquí teniu 72Mhz

Dividim la freqüència de rellotge assignada, especifiquem el valor de divisió de freqüència com a PSC, i després dividim el Talk en PSC +1, la freqüència final del nostre temporitzador és Tclk / (PSC +1) MHz

Per tant, el que volem dir amb la freqüència aquí és que tenim 1 s de xerrades sobre números PSC +1 M (1 M = 10 ^ 6), i el temps de cada número és PSC + 1 / xerrada, i és fàcil entendre que la inversa de la freqüència és el punt, i el període de cada número aquí és PSC +1 / Segons de conversa i després anem de 0 a arr és (arr + 1) * (PSC +1) / Tclk

Per exemple, definim arr = 7199 i PSC = 9999

Hem dividit 72 MHz en 9999 + 1 és igual a 7200 Hz

Es tracta de 9.000 recomptes per segon i cada recompte és de 1/7, 200 de segon

Per tant, estem enregistrant 9.000 números aquí per anar a l’actualització del temporitzador (7199 + 1) * (1/7200) = 1s, de manera que 1s passa a una actualització.

void TIM3_Int_Init (u16 arr, u16 psc) {

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

// rellotge 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 i & TIM_TimeBaseStructure);

Poseu-vos en contacte amb nosaltres si necessiteu un procediment complet:

www.stoneitech.com/contact

Et respondré en un termini de 12 hores.

Pas 6: vigilar el gos

Gos vigilant
Gos vigilant
Gos vigilant
Gos vigilant

Per evitar que el sistema fallés mentre s’executava el programa, vaig afegir el gos de vigilància. De fet, tots els projectes que fan servir la MCU solen utilitzar un gos de vigilància.

STM32 té dos gossos de vigilància integrats, que proporcionen més seguretat, precisió horària i flexibilitat. Es poden utilitzar dos dispositius de vigilància (vigilant independent i vigilant de la finestra) per detectar i resoldre els errors causats per errors de programari. Quan el comptador arriba a un valor de temps d'espera determinat, s'activa una interrupció (només el gos de vigilància de la finestra) o el restabliment del sistema. Gos de vigilància independent (IWDG):

Impulsat per un rellotge dedicat de baixa velocitat (LSI), funciona fins i tot si falla el rellotge mestre.

És adequat per a ús en situacions en què el gos de vigilància ha de treballar completament independent fora del programa principal i requereix una precisió horària baixa. Gos de vigilància de la finestra (WWDG):

Conduït pel rellotge del rellotge APB1 després de la divisió de freqüència. Detectar un funcionament anormal de l'aplicació tardana o prematura a través d'una finestra de temps configurable. Apte per a programes que requereixen que els gossos de vigilància funcionin en un temps de Windows precís.

int main (void) {

delay_init ();

// delay delay NVIC_PriorityGroupConfig (NVIC_PriorityGroup_2);

// NVIC INIT uart_init (115200);

// UART INIT PAD_INIT ();

// Light Init IWDG_Init (4, 625);

mentre (1) {

si (USART_RX_END)

{switch (USART_RX_BUF [5])

{

caixa expresso:

CoffeeSelect (cafè exprés, USART_RX_BUF [8]);

trencar;

cas americà:

CoffeeSelect (americà, USART_RX_BUF [8]);

La lògica principal de la funció principal és la següent:

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] = milk ();

Finalment, afegiu el codi a la interrupció del temporitzador: a la interrupció del temporitzador, el meu objectiu és comprovar la quantitat de cafè i llet que queda i enviar el valor detectat a la pantalla mitjançant un port sèrie. El mesurament de la quantitat de llet i de grans de cafè que sobren normalment es realitza mitjançant sensors. Els mètodes senzills inclouen sensors de pressió, que mesuren el pes actual de la llet i els grans de cafè per determinar quant sobra.

Escriu a l’últim

Aquest article només registra el simple procés de desenvolupament del meu projecte. Tenint en compte la confidencialitat del projecte de l’empresa, la interfície de visualització de la interfície d’usuari que he fet servir també la vaig fer jo, no la interfície de visualització de la interfície d’usuari real d’aquest projecte. La part de codi de STM32 només afegeix el controlador perifèric de MCU i el codi lògic relacionat. Tenint en compte també la confidencialitat del projecte de l’empresa, no es proporciona la part específica de la tecnologia clau, enteneu-ho. No obstant això, d’acord amb el codi que he proporcionat, coopereu amb la pantalla de visualització STONE. els meus amics que també són enginyers de programari només han de passar uns dies per afegir parts tècniques clau al meu marc de codi per completar el projecte.

Per obtenir més informació sobre el projecte, feu clic aquí