Tabla de contenido:

STONE Display + STM32 + Cafetera: 6 pasos
STONE Display + STM32 + Cafetera: 6 pasos

Video: STONE Display + STM32 + Cafetera: 6 pasos

Video: STONE Display + STM32 + Cafetera: 6 pasos
Video: Rundhals Sweatshirt von Redfield in Übergrößen bis 6XL bei Big-Basics.de 2024, Mes de julio
Anonim
STONE Display + STM32 + Cafetera
STONE Display + STM32 + Cafetera

Soy un ingeniero de software de MCU, recientemente recibí un proyecto para ser una máquina de café, los requisitos del hogar con una operación de pantalla táctil, la función es buena, está por encima de la selección de la pantalla puede no ser muy buena, afortunadamente, este proyecto puedo decidir qué MCU para usar yo mismo, también se puede usar para decidir cuál es la pantalla, así que elegí el STM32 de este tipo de MCU simple y fácil de usar, la pantalla de visualización elegí la pantalla táctil de STONE, la pantalla es simple y fácil de usar, Mi STM32 MCU solo a través de la comunicación UART está bien.

Pantalla LCD serie STONE, que puede comunicarse a través del puerto serie de MCU. Al mismo tiempo, el diseño lógico de la interfaz de la interfaz de usuario de esta pantalla de visualización se puede diseñar directamente mediante el uso de STONE TOOL Box proporcionado por el sitio web oficial de STONE, lo cual es muy conveniente. Así que lo usaré para este proyecto de máquina de café. Al mismo tiempo, simplemente registraré el desarrollo básico. Dado que este es un proyecto de mi empresa, solo grabaré una demostración simple y no escribiré el código completo. Algunos tutoriales básicos sobre la pantalla de visualización de piedra pueden ir al sitio web: https://www.stoneitech.com/ El sitio web tiene una variedad de información sobre el modelo, el uso y la documentación de diseño, así como tutoriales en video. No entraré en demasiados detalles aquí.

Paso 1: Introducción a la función de la pantalla de visualización de la máquina de café

Este proyecto tiene las siguientes funciones: l

  • Muestra la fecha y hora actuales
  • Hay cuatro botones en la pantalla para americano, latte, cappuccino y espresso.
  • Muestra la cantidad actual de granos de café, leche y azúcar de café restantes.
  • Un cuadro de visualización de texto muestra el estado actual

Con estos conceptos en mente, puede diseñar una interfaz de usuario. STONE de las pantallas táctiles en el diseño de la interfaz de usuario es relativamente simple, el usuario a través del software PhotoShop diseña una buena interfaz de usuario y el efecto del botón, a través de STONE TOOL Box para diseñar buenas imágenes en la pantalla y agrega sus propios botones con la lógica de STONE TOOL Box y datos en serie, el valor de retorno está bien, muy fácil de desarrollar.

Paso 2: haga imágenes de la interfaz de usuario para la pantalla STONE

Hacer imágenes de interfaz de usuario para la pantalla STONE
Hacer imágenes de interfaz de usuario para la pantalla STONE
Hacer imágenes de interfaz de usuario para la pantalla STONE
Hacer imágenes de interfaz de usuario para la pantalla STONE
Hacer imágenes de interfaz de usuario para la pantalla STONE
Hacer imágenes de interfaz de usuario para la pantalla STONE

De acuerdo con los requisitos funcionales, hice las siguientes dos interfaces de visualización de UI, una es la interfaz principal y la otra es el efecto de botón.

Uso de STONE TOOL Box Actualmente, STONE proporciona TOOL. Abra esta HERRAMIENTA para crear un nuevo proyecto, luego importe la interfaz de usuario diseñada para mostrar imágenes y agregue sus propios botones, cuadros de visualización de texto, etc. El sitio web oficial de STONE tiene un tutorial muy completo sobre cómo usar este software: https: / /www.stoneitech.com/support/download/video

Los efectos de agregar botones y mostrar componentes en el cuadro STONE TOOL son los siguientes:

STONE TOOL Box tiene la función de visualización de simulación, a través de la cual puede ver el efecto de operación de la interfaz de interfaz de usuario:

En este punto, la pantalla de mi interfaz de usuario está completa y todo lo que tengo que hacer es escribir el código MCU. Descargar los archivos generados por STONE TOOL Box en la pantalla de visualización para ver los resultados reales.

Paso 3: STM32F103RCT6

STM32F103RCT6
STM32F103RCT6

STM32F103RCT6 MCU tiene funciones poderosas. Estos son los parámetros básicos de la MCU:

  • Serie: STM32F10X l Kerne
  • BRAZO - COTEX32
  • Velocidad: 72 MHZ
  • Interfaz de comunicación: CAN, I2C, IrDA, LIN, SPI, UART / USART, USB
  • Equipo periférico: DMA, control de motor PWM, PDR, POR, PVD, PWM, sensor de temperatura, WDT
  • Capacidad de almacenamiento del programa: 256 KB
  • Tipo de memoria de programa: FLASH
  • Capacidad RAM: 48K
  • Voltaje - fuente de alimentación (Vcc / Vdd): 2 V ~ 3,6 V
  • Oscilador: interno
  • Temperatura de funcionamiento: -40 ° C ~ 85 ° C
  • Paquete / carcasa: 64 vidas

En este proyecto, usaré UART, GPIO, Watch Dog y Timer de STM32F103RCT6. El desarrollo de estos periféricos se documenta a continuación. STM32 UTILIZA el desarrollo de software Keil MDK, que no es ajeno a usted, por lo que no presentaré el método de instalación de este software. STM32 se puede simular en línea mediante j-link o st-link y otras herramientas de simulación. La siguiente imagen es la placa de circuito STM32 que utilicé:

Paso 4: Serie UART

Serie UART
Serie UART
Serie UART
Serie UART
Serie UART
Serie UART

STM32F103RCT6 tiene varios puertos serie. En este proyecto, utilicé el canal de puerto serie PA9 / PA10, y la velocidad en baudios del puerto serie se estableció en 115200.

GPIO

En la interfaz de usuario de este proyecto, hay un total de cuatro botones, que en realidad son la preparación de cuatro tipos de café. En la máquina de café, controlar la cantidad de granos de café, el consumo de leche y el flujo de agua de diferentes cafés se realiza controlando sensores y relés, mientras que yo simplemente controlo primero el pin GPIO.

Paso 5: temporizador

Temporizador
Temporizador
Temporizador
Temporizador

Al inicializar el temporizador, especifique el coeficiente de división de frecuencia PSC, aquí está nuestro reloj del sistema (72MHz) para la división de frecuencia

Luego especifique el valor de recarga arr, lo que significa que cuando nuestro temporizador alcance este arr, el temporizador recargará otros valores.

Por ejemplo, cuando configuramos el temporizador para que cuente hacia arriba, el valor del recuento del temporizador es igual a arr y se borrará en 0 y se volverá a calcular.

El contador del temporizador se vuelve a cargar y una vez es una actualización

Calcule la fórmula de tiempo de actualización Tout = ((arr + 1) * (PSC +1)) / Tclk

Derivación de la fórmula: Talk es la fuente de reloj del temporizador, aquí hay 72Mhz

Dividimos la frecuencia de reloj asignada, especificamos el valor de división de frecuencia como PSC, luego dividimos nuestro Talk en PSC +1, la frecuencia final de nuestro temporizador es Tclk / (PSC +1) MHz

Entonces, lo que queremos decir con la frecuencia aquí es que tenemos 1s de Talk sobre PSC +1 M Números (1M = 10 ^ 6), y el tiempo para cada número es PSC +1 / Talk, y es fácil entender que la inversa de la frecuencia es el período, y el período para cada número aquí es PSC +1 / Segundos de conversación y luego pasamos de 0 a arr es (arr + 1) * (PSC +1) / Tclk

Por ejemplo, establezcamos arr = 7199 y PSC = 9999

Dividimos 72MHz en 9999 + 1 es igual a 7200Hz

Esto es 9, 000 conteos por segundo, y cada conteo es 1/7, 200 de segundo

Así que estamos grabando 9, 000 números aquí para ir a la actualización del temporizador (7199 + 1) * (1/7200) = 1s, por lo que 1s va a una actualización.

void TIM3_Int_Init (u16 arr, u16 psc) {

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

// reloj 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 y TIM_TimeBaseStructure);

Por favor contáctenos si necesita un procedimiento completo:

www.stoneitech.com/contact

Le responderé dentro de las 12 horas.

Paso 6: perro guardián

Perro guardián
Perro guardián
Perro guardián
Perro guardián

Para evitar que el sistema se bloquee mientras se ejecuta el programa, agregué el perro guardián. De hecho, todos los proyectos que usan MCU generalmente usan un perro guardián.

STM32 tiene dos perros guardianes incorporados, que brindan mayor seguridad, precisión de tiempo y flexibilidad. Se pueden usar dos dispositivos de vigilancia (vigilancia independiente y vigilancia de ventana) para detectar y resolver fallas causadas por errores de software. Cuando el contador alcanza un valor de tiempo de espera determinado, se activa una interrupción (solo perro guardián de ventana) o el reinicio del sistema. Perro guardián independiente (IWDG):

Impulsado por un reloj dedicado de baja velocidad (LSI), funciona incluso si falla el reloj maestro.

Es adecuado para su uso en situaciones en las que se requiere que el perro guardián trabaje de forma completamente independiente fuera del programa principal y requiere poca precisión de tiempo. Perro guardián de ventana (WWDG):

Impulsado por el reloj del reloj APB1 después de la división de frecuencia. Detecte el funcionamiento de la aplicación anormalmente tardío o prematuro a través de una ventana de tiempo configurable. Adecuado para programas que requieren perros guardianes para funcionar en Windows de sincronización precisa.

int main (void) {

delay_init ();

// retrasar la inicialización NVIC_PriorityGroupConfig (NVIC_PriorityGroup_2);

// NVIC INIT uart_init (115200);

// UART INIT PAD_INIT ();

// Light Init IWDG_Init (4, 625);

while (1) {

si (USART_RX_END)

{interruptor (USART_RX_BUF [5])

{

caso Espresso:

CoffeeSelect (Espresso, USART_RX_BUF [8]);

rotura;

caso Americano:

CoffeeSelect (Americano, USART_RX_BUF [8]);

La lógica principal en la función principal es la siguiente:

u8 timer_cnt = 0;

void TIM3_IRQHandler (void) // TIM3

{

si (TIM_GetITStatus (TIM3, TIM_IT_Update)! = RESET)

{

TIM_ClearITPendingBit (TIM3, TIM_IT_Update);

timer_cnt ++;

si (timer_cnt> = 200)

{

envío_leche [6] = leche ();

Finalmente, agregue el código en la interrupción del temporizador: En la interrupción del temporizador, mi objetivo es verificar cuánto café y leche queda, y luego enviar el valor detectado a la pantalla a través de un puerto serie. La medición de la cantidad de leche y granos de café que sobran generalmente se realiza mediante sensores. Los métodos simples incluyen sensores de presión, que miden el peso actual de la leche y los granos de café para determinar cuánto queda.

Escribe en el último

Este artículo solo registra el proceso de desarrollo simple de mi proyecto. Teniendo en cuenta la confidencialidad del proyecto de la empresa, la interfaz de visualización de la interfaz de usuario que utilicé también la hice yo mismo, no la interfaz de visualización de la interfaz de usuario real de este proyecto. La parte del código de STM32 solo agrega el controlador periférico de MCU y el código lógico relacionado. También teniendo en cuenta la confidencialidad del proyecto de la empresa, no se proporciona la parte de tecnología clave específica, por favor comprenda. Sin embargo, de acuerdo con el código que proporcioné, coopere con la pantalla de visualización STONE. mis amigos, que también son ingenieros de software, solo necesitan pasar unos días para agregar partes técnicas clave a mi marco de código para completar el proyecto.

Para obtener más información sobre el proyecto, haga clic aquí.