Taula de continguts:
- Pas 1: Introducció a la funció de pantalla de visualització de la màquina de cafè
- Pas 2: feu imatges de la interfície d’usuari per a la pantalla STONE
- Pas 3: STM32F103RCT6
- Pas 4: sèrie UART
- Pas 5: temporitzador
- Pas 6: vigilar el gos
Vídeo: Pantalla STONE + STM32 + Cafetera: 6 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:11
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
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
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
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
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
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í