Índice:

STONE LCD com Smart Home: 5 etapas
STONE LCD com Smart Home: 5 etapas

Vídeo: STONE LCD com Smart Home: 5 etapas

Vídeo: STONE LCD com Smart Home: 5 etapas
Vídeo: Smart Home Controller using DWIN HMI LCD Display & ESP32 (Display BME280 Reading & Control Relays) 2024, Novembro
Anonim
STONE LCD com Smart Home
STONE LCD com Smart Home

Hoje, eu tenho o display da unidade de porta serial da STONE, que pode se comunicar através da porta serial do MCU, e o design lógico da IU deste display pode ser projetado diretamente usando o software VGUS fornecido no site oficial da STONE, o que é muito conveniente para nós. Então pretendo usá-lo para fazer um controlador de eletrodomésticos simples, que inclui o controle de várias luzes (sala, cozinha, quarto das crianças, banheiro). Ao mesmo tempo, a temperatura interna e externa, a umidade e a qualidade do ar podem ser coletadas. Esta é apenas uma demonstração simples e você pode conduzir o desenvolvimento secundário por meio do código que forneci. Alguns tutoriais básicos sobre a tela STONE podem ir para o site:

O site possui uma variedade de informações sobre o modelo, o usuário e a documentação do projeto, bem como tutoriais em vídeo. Não vou entrar em muitos detalhes aqui.

Etapa 1: Design da interface do usuário

Design da interface do usuário
Design da interface do usuário
Design da interface do usuário
Design da interface do usuário
Design da interface do usuário
Design da interface do usuário
Design da interface do usuário
Design da interface do usuário

Photoshop

Eu projetei as duas páginas da interface do usuário a seguir com o photoshop:

Este projeto tem as duas páginas acima no total. "Luz" e "Sensor" no canto superior direito são os botões de alternância dessas duas páginas.

Na página "Luz", você pode controlar todos os tipos de luzes em sua casa. Na página "Sensor", você pode verificar os valores detectados por vários sensores.

Após o design das duas páginas acima, podemos conduzir um design lógico de botão através do software STONE TOOL fornecido no site oficial da STONE.

É importante notar que a fonte de relógio usada para a exibição de hora aqui é a fonte de relógio da tela de exibição, não a fonte de relógio MCU.

Efeito de mudança de página TAB

Nenhum componente de alternância de página TAB foi encontrado no software STONE TOOL, então pensei em outro método para obter o efeito de alternância de página TAB.

Através da observação que eu forneço duas imagens de interface do usuário pode ser encontrado que as duas imagens acima são texto "Light" e "Sensor", a diferença é que o tamanho do pixel é diferente, então só precisamos colocar a posição de dois pixels está definida para o mesmo texto e, em seguida, através do canto superior esquerdo da hora e data para referência, você pode obter o TAB para alterar o efeito.

Lógica de botão

Veja o botão "Sala de estar" como exemplo. Quando o usuário pressiona este botão, a tela da porta serial STONE enviará instruções de protocolo correspondentes através da porta serial. Depois de receber esta instrução, o MCU do usuário analisará o protocolo para controlar o estado de comutação das luzes conectadas ao MCU.

Aquisição de sensor

Pegue a "qualidade do ar", por exemplo: se você quiser obter a qualidade do ar interno, devemos ter um MCU para coletar a qualidade do ar, sensor de qualidade do ar quando o MCU numérico coletado por meio de algoritmo comparando os prós e contras da qualidade do ar, e então o MCU enviado através de uma porta serial para exibir a área de armazenamento de "Bom" ou "Ruim", para alterar o conteúdo de exibição de "Texto variável 0", e então o usuário pode ver intuitivamente os méritos do controle de qualidade. Isso é explicado posteriormente no código MCU.

Etapa 2: Comunicação MCU

Comunicação MCU
Comunicação MCU
Comunicação MCU
Comunicação MCU
Comunicação MCU
Comunicação MCU
Comunicação MCU
Comunicação MCU

STM32 é o MCU com o qual todos estão familiarizados e é um modelo de MCU comum em todo o mundo. Portanto, o modelo específico de STM32 MCU que usei neste projeto é STM32F103RCT6.

Existem muitas séries de STM32, que podem atender a várias demandas do mercado. O kernel pode ser dividido em cortex-m0, M3, M4 e M7, e cada kernel pode ser dividido em mainstream, alto desempenho e baixo consumo de energia.

Puramente do ponto de vista da aprendizagem, você pode escolher F1 e F4, F1 representa o tipo básico, com base no kernel cortex-m3, a frequência principal é 72MHZ, F4 representa o alto desempenho, com base no kernel cortex-m4, o principal a frequência é 180M.

Já para F1, F4 (série 429 e superior), além dos diferentes kernels e melhoria da frequência principal, a característica óbvia da atualização é o controlador LCD e interface da câmera, suporte para SDRAM, esta diferença terá prioridade na seleção do projeto. No entanto, do ponto de vista do ensino universitário e da aprendizagem inicial dos usuários, a série F1 ainda é a primeira escolha. Atualmente, o STM32 da série F1 possui a maior quantidade de materiais e produtos do mercado.

Sobre a instalação do ambiente de desenvolvimento STM32 SCM e o método de download do programa, não farei a introdução.

Inicialização GPIO

Neste projeto, usamos um total de 4 GPIO, um dos quais é o pino de saída PWM. Vejamos primeiro a inicialização de três portas GPIO comuns:

Esta função inicializa PB0 / PB1 / PB2 de STM32F103C8 como o pino de saída e o chama da função principal. Após a inicialização, precisamos ter uma lógica para controlar o estado de saída, nível alto e baixo deste GPIO, então escrevi a função conforme abaixo:

Esta é uma função que você pode entender intuitivamente pelo nome da variável.

Inicialização da porta serial

A parte de inicialização da porta serial está em uart.c:

Em seguida, chame uart_init na função principal para inicializar a taxa de transmissão da porta serial de 115200. Pinos usam PA9 / PA10

Inicialização PWM

Passos específicos:

1. Ajuste o relógio RCC;

2. Defina o relógio GPIO; o modo GPIO deve ser definido como GPIO_Model_AF_PP ou para a função GPIO_PinRemapConfig () se o remapeamento do pino for necessário.

3. Defina os registros relevantes do temporizador TIMx;

4. Defina o registro relacionado ao PWM do temporizador TIMx;

A. Defina o modo PWM

B. Definir o ciclo de trabalho (cálculo da fórmula)

C. Defina a polaridade de comparação de saída (introduzida anteriormente)

D. Mais importante ainda, habilite o estado de saída do TIMx e habilite a saída PWM do TIMx; Após as configurações relevantes serem concluídas, o temporizador TIMx é ativado por TIMx_Cmd () para obter a saída PWM. Chame este TIM3_PWM_Init a partir da função principal.

Etapa 3: Escrita do Código Lógico

Escrita de código lógico
Escrita de código lógico
Escrita de código lógico
Escrita de código lógico
Escrita de código lógico
Escrita de código lógico

Exibir definição de endereço de componente

Os componentes do display têm endereços separados e aqui eu os escrevi como definições de macro: Recepção de dados seriais

Olhando as informações sobre o display STONE, você pode ver que quando o botão é pressionado, a porta serial no display envia protocolos no formato apropriado, que o usuário MCU pode receber e analisar. Quando o botão é pressionado, a porta serial no display envia nove bytes de dados, incluindo dados do usuário. A recepção de dados seriais é escrita no Handler: Os dados recebidos são armazenados no array "USART_RX_BUF". Neste projeto, o comprimento de recebimento é fixo. Quando o comprimento de recebimento é maior que 9 bytes, a extremidade de recebimento é avaliada.

Controle o estado de comutação da lâmpada

Na função principal, escrevi algum código lógico para controlar o estado do interruptor da lâmpada: Como podemos ver, o código primeiro determina se os dados da porta serial são recebidos e, quando os dados da porta serial são recebidos, determina em qual botão o usuário pressiona na tela do visor. Botões diferentes no display têm endereços diferentes, que podem ser vistos no software STONE TOOL: Quando o usuário pressiona o botão "Living Room", o quarto e o quinto bits dos dados enviados pela porta serial da tela são os endereço do botão. Como o quarto bit de todos os botões definidos aqui é 0x00, podemos julgar qual botão o usuário pressiona julgando diretamente os dados do quinto bit. Após obter o botão pressionado pelo usuário, precisamos julgar os dados do usuário recebidos quando o botão é pressionado, que é o oitavo dígito dos dados enviados da tela do display. Portanto, fazemos o seguinte controle: escrever o parâmetro de endereço do botão e os dados do usuário na função "Light_Contral" para controlar o estado liga-desliga da luz. A entidade de função Light_Contral é a seguinte: Como você pode ver, se o endereço do botão for "Sala de estar" e os dados do usuário forem "LightOn", o pino PB0 do MCU está definido para saída de alto nível e a luz está acesa. Os outros três botões são semelhantes, mas não irei continuar aqui.

Saída PWM

Na IU desenhada por mim, existe um regulador deslizante, que serve para controlar o brilho da luz da “Sala das Crianças”. MCU é implementado pelo pino de saída PWM. PWM é PB5. O código é o seguinte: O ajustador deslizante é definido com um valor mínimo de 0x00 e um valor máximo de 0x64. Ao deslizar, a porta serial da tela de exibição também enviará endereços e dados relevantes e, em seguida, definirá a taxa de serviço da saída PWM chamando a seguinte função:

Etapa 4: Aquisição do sensor

Aquisição de Sensor
Aquisição de Sensor
Aquisição de Sensor
Aquisição de Sensor
Aquisição de Sensor
Aquisição de Sensor

Na página de "Sensor" da tela de exibição, existem quatro dados do Sensor.

Os dados também possuem um endereço de armazenamento no display, e podemos alterar o conteúdo real simplesmente gravando os dados nesses endereços por meio da porta serial do MCU.

Aqui, fiz uma implementação de código simples:

Os dados de exibição são atualizados a cada 5 segundos e eu apenas escrevi uma demonstração simples da função de coleta de sensor relevante, porque não tenho esses sensores em minhas mãos.

No desenvolvimento de projetos reais, esses sensores podem ser dados coletados pelo ADC ou dados coletados pelas interfaces de comunicação IIC, UART e SPI. Tudo o que você precisa fazer é gravar esses dados na função correspondente como o valor de retorno.

Etapa 5: efeito real da operação

Recomendado: