Tabla de contenido:

STONE LCD con Smart Home: 5 pasos
STONE LCD con Smart Home: 5 pasos

Video: STONE LCD con Smart Home: 5 pasos

Video: STONE LCD con Smart Home: 5 pasos
Video: Interface Stone HMI Touch Display with Arduino for a Smart Home Project 2024, Mes de julio
Anonim
STONE LCD con Smart Home
STONE LCD con Smart Home

Hoy, obtuve la pantalla de la unidad de puerto serie de STONE, que puede comunicarse a través del puerto serie de MCU, y el diseño lógico de la interfaz de usuario de esta pantalla se puede diseñar directamente utilizando el software VGUS proporcionado en el sitio web oficial de STONE, que es muy conveniente para nosotros. Así que planeo usarlo para hacer un controlador de electrodomésticos simple, que incluye el control de varias luces (sala de estar, cocina, habitación de los niños, baño). Al mismo tiempo, se pueden recopilar la temperatura, la humedad y la calidad del aire en interiores y exteriores. Esta es solo una demostración simple, y puede realizar un desarrollo secundario a través del código que proporcioné. Algunos tutoriales básicos sobre la pantalla STONE pueden ir al sitio web:

El sitio web tiene una variedad de información sobre el modelo, el usuario y la documentación de diseño, así como tutoriales en video. No entraré en demasiados detalles aquí.

Paso 1: Diseño de la interfaz de usuario

Diseño de interfaz de interfaz de usuario
Diseño de interfaz de interfaz de usuario
Diseño de interfaz de interfaz de usuario
Diseño de interfaz de interfaz de usuario
Diseño de interfaz de interfaz de usuario
Diseño de interfaz de interfaz de usuario
Diseño de interfaz de interfaz de usuario
Diseño de interfaz de interfaz de usuario

Photoshop

Diseñé las siguientes dos páginas de interfaz de usuario con Photoshop:

Este proyecto tiene las dos páginas anteriores en total. "Luz" y "Sensor" en la esquina superior derecha son los botones de cambio de estas dos páginas.

En la página "Luz", puede controlar todo tipo de luces en su hogar. En la página "Sensor", puede verificar los valores detectados por varios sensores.

Después del diseño de las dos páginas anteriores, podemos realizar un diseño lógico de botones a través del software STONE TOOL proporcionado en el sitio web oficial de STONE.

Vale la pena señalar que la fuente de reloj utilizada para la visualización de la hora aquí es la fuente de reloj de la pantalla de visualización, no la fuente de reloj de la MCU.

Efecto de cambio de página TAB

No se encontró ningún componente de cambio de página TAB en el software STONE TOOL, así que pensé en otro método para lograr el efecto de cambio de página TAB.

A través de la observación que proporciono, se pueden encontrar dos imágenes de la interfaz de usuario que las dos imágenes de arriba son texto de "Luz" y "Sensor", la diferencia es que su tamaño de píxel es diferente, por lo que solo tenemos que poner la posición de dos píxeles en el mismo texto, y luego a través de la esquina superior izquierda de la hora y la fecha como referencia, puede lograr la TAB para cambiar el efecto.

Lógica de botones

Tome el botón "Sala de estar" como ejemplo. Cuando el usuario presiona este botón, la pantalla del puerto serie STONE enviará las instrucciones de protocolo correspondientes a través del puerto serie. Después de recibir esta instrucción, la MCU del usuario analizará el protocolo para controlar el estado de conmutación de las luces conectadas con la MCU.

Adquisición de sensor

Tome "calidad del aire", por ejemplo: si desea obtener la calidad del aire interior, debemos tener un MCU para recopilar la calidad del aire, el sensor de calidad del aire cuando el MCU se recopila numéricamente mediante un algoritmo que compara los pros y los contras de la calidad del aire, y luego el MCU enviado a través de un puerto serie para mostrar el área de almacenamiento de "Bueno" o "Malo", para cambiar el contenido de la pantalla "Texto variable0", y luego el usuario puede ver intuitivamente los méritos del control de calidad. Estos se explican más adelante en el código MCU.

Paso 2: Comunicación MCU

Comunicación MCU
Comunicación MCU
Comunicación MCU
Comunicación MCU
Comunicación MCU
Comunicación MCU
Comunicación MCU
Comunicación MCU

STM32 es la MCU con la que todos están familiarizados y es un modelo de MCU común en el mundo. Por lo tanto, el modelo específico de STM32 MCU que utilicé en este proyecto es STM32F103RCT6.

Hay muchas series de STM32, que pueden satisfacer diversas demandas del mercado. El kernel se puede dividir en cortex-m0, M3, M4 y M7, y cada kernel se puede dividir en mainstream, alto rendimiento y bajo consumo de energía.

Puramente desde la perspectiva del aprendizaje, puede elegir F1 y F4, F1 representa el tipo básico, basado en el kernel cortex-m3, la frecuencia principal es 72MHZ, F4 representa el alto rendimiento, basado en el kernel cortex-m4, el principal la frecuencia es 180M.

En cuanto a F1, F4 (serie 429 y superior), además de los diferentes núcleos y la mejora de la frecuencia principal, la característica obvia de la actualización es el controlador LCD y la interfaz de la cámara, soporte para SDRAM, esta diferencia tendrá prioridad en la selección del proyecto. Sin embargo, desde la perspectiva de la enseñanza universitaria y el aprendizaje inicial de los usuarios, la serie F1 sigue siendo la primera opción. Actualmente, el STM32 de la serie F1 cuenta con la mayor cantidad de materiales y productos del mercado.

Acerca de la instalación del entorno de desarrollo STM32 SCM y el método de descarga del programa, no haré la introducción.

Inicialización GPIO

En este proyecto, usamos un total de 4 GPIO, uno de los cuales es el pin de salida PWM. Veamos primero la inicialización de tres puertos GPIO ordinarios:

Esta función inicializa PB0 / PB1 / PB2 de STM32F103C8 como el pin de salida y lo llama desde la función principal. Después de la inicialización, necesitamos tener una lógica para controlar el estado de salida, nivel alto y bajo de este GPIO, así que escribí la función de la siguiente manera:

Esta es una función que puede entender intuitivamente por el nombre de la variable.

Inicialización del puerto serie

La parte de inicialización del puerto serie está en uart.c:

Luego llame a uart_init en la función principal para inicializar la velocidad en baudios del puerto serial de 115200. Los pines usan PA9 / PA10

Inicialización de PWM

Pasos específicos:

1. Configure el reloj RCC;

2. Configure el reloj GPIO: el modo GPIO debe establecerse en GPIO_Model_AF_PP, o en la función GPIO_PinRemapConfig () si se requiere la reasignación de pines.

3. Configure los registros relevantes del temporizador TIMx;

4. Configure el registro relacionado con PWM del temporizador TIMx;

A. Establecer el modo PWM

B. Establecer ciclo de trabajo (cálculo de fórmula)

C. Establecer la polaridad de comparación de salida (presentado anteriormente)

D. Lo más importante es habilitar el estado de salida de TIMx y habilitar la salida PWM de TIMx; Una vez completados los ajustes relevantes, TIMx_Cmd () enciende el temporizador TIMx para obtener la salida PWM. Llame a este TIM3_PWM_Init desde la función principal.

Paso 3: escritura de código lógico

Escritura de código lógico
Escritura de código lógico
Escritura de código lógico
Escritura de código lógico
Escritura de código lógico
Escritura de código lógico

Definición de la dirección del componente de visualización

Los componentes de la pantalla tienen direcciones separadas, y aquí las escribí todas como definiciones de macros: Recepción de datos en serie

Al observar la información sobre la pantalla STONE, puede ver que cuando se presiona el botón, el puerto serie en la pantalla envía protocolos en el formato apropiado, que el usuario MCU puede recibir y analizar. Cuando se presiona el botón, el puerto serie en la pantalla envía nueve bytes de datos, incluidos los datos del usuario. La recepción de datos en serie se escribe en Handler: Los datos recibidos se almacenan en la matriz "USART_RX_BUF". En este proyecto, la longitud de recepción es fija. Cuando la longitud de recepción es superior a 9 bytes, se juzga el extremo receptor.

Controlar el estado de conmutación de la lámpara.

En la función principal, escribí un código lógico para controlar el estado del interruptor de la lámpara: como podemos ver, el código primero determina si se reciben los datos del puerto serie, y cuando se reciben los datos del puerto serie, determina qué botón el usuario presiona en la pantalla de visualización. Los diferentes botones en la pantalla tienen diferentes direcciones, que se pueden ver en el software STONE TOOL: Cuando el usuario presiona el botón "Living Room", el cuarto y quinto bits de los datos enviados por el puerto serie de la pantalla son los dirección del botón. Dado que el cuarto bit de todos los botones establecidos aquí es 0x00, podemos juzgar qué botón presiona el usuario juzgando directamente los datos del quinto bit. Después de obtener el botón presionado por el usuario, necesitamos juzgar los datos de usuario recibidos cuando se presiona el botón, que es el octavo dígito de los datos enviados desde la pantalla de visualización. Por lo tanto, hacemos el siguiente control: escribimos el parámetro de dirección del botón y los datos del usuario en la función "Light_Contral" para controlar el estado de encendido y apagado de la luz. La entidad de función Light_Contral es la siguiente: como puede ver, si la dirección del botón es "Living Room" y los datos del usuario son "LightOn", entonces el pin PB0 de la MCU está configurado para salida de alto nivel y la luz está encendida. Los otros tres botones son similares, pero no continuaré aquí.

Salida PWM

En la interfaz de usuario diseñada por mí, hay un regulador deslizante, que se usa para controlar el brillo de la luz de la "Habitación de los niños". MCU es implementado por PWM. El pin de salida de PWM es PB5. El código es el siguiente: El ajustador deslizante se establece en un valor mínimo de 0x00 y un valor máximo de 0x64. Cuando se desliza, el puerto serie de la pantalla de visualización también enviará direcciones y datos relevantes, y luego establecerá la relación de trabajo de la salida PWM llamando a la siguiente función:

Paso 4: Adquisición del sensor

Adquisición de sensores
Adquisición de sensores
Adquisición de sensores
Adquisición de sensores
Adquisición de sensores
Adquisición de sensores

En la página de "Sensor" de la pantalla de visualización, hay cuatro datos del sensor.

Los datos también tienen una dirección de almacenamiento en la pantalla, y podemos cambiar el contenido real simplemente escribiendo datos en estas direcciones a través del puerto serie de la MCU.

Aquí hice una implementación de código simple:

Los datos de la pantalla se actualizan cada 5 segundos, y solo escribí una demostración simple de la función de recolección de sensores relevante, porque no tengo estos sensores en mi mano.

En el desarrollo de un proyecto real, estos sensores pueden ser datos recopilados por ADC o datos recopilados por interfaces de comunicación IIC, UART y SPI. Todo lo que necesita hacer es escribir estos datos en la función correspondiente como valor de retorno.

Paso 5: Efecto de operación real

Recomendado: