Índice:

STONE Display + STM32 + Cafeteira: 6 etapas
STONE Display + STM32 + Cafeteira: 6 etapas
Anonim
STONE Display + STM32 + cafeteira
STONE Display + STM32 + cafeteira

Eu sou um engenheiro de software MCU, recentemente recebi um projeto é ser uma máquina de café, requisitos domésticos com uma operação de tela de toque, a função é boa, está acima da seleção da tela pode não ser muito boa, felizmente, este projeto posso decidir o que MCU para usar sozinho, também pode ser usado para decidir o que a tela, então eu escolhi o STM32 deste tipo de MCU simples e fácil de usar, tela de exibição eu escolhi a tela de toque do STONE, a tela é simples e fácil de usar, Meu STM32 MCU apenas por meio de comunicação UART está ok com ele.

Tela de display LCD serial STONE, que pode se comunicar através da porta serial do MCU. Ao mesmo tempo, o design lógico da interface de IU desta tela de exibição pode ser projetado diretamente usando o STONE TOOL Box fornecido pelo site oficial da STONE, o que é muito conveniente. Vou usá-lo neste projeto de máquina de café. Ao mesmo tempo, simplesmente registrarei o desenvolvimento básico. Por se tratar de um projeto da minha empresa, gravarei apenas uma demonstração simples e não escreverei o código completo. Alguns tutoriais básicos sobre a tela de exibição de pedra podem ser acessados no site: https://www.stoneitech.com/ O site tem uma variedade de informações sobre o modelo, uso e documentação de design, bem como tutoriais em vídeo. Não vou entrar em muitos detalhes aqui.

Etapa 1: Introdução às funções da tela de exibição da máquina de café

Este projeto tem as seguintes funções: l

  • Mostra a hora e data atuais
  • Existem quatro botões no visor para americano, latte, cappuccino e expresso.
  • Exibe a quantidade atual de grãos de café restantes, leite e açúcar do café
  • Uma caixa de exibição de texto exibe o estado atual

Com esses conceitos em mente, você pode projetar uma interface de IU. STONE das telas de toque no design da IU é relativamente simples, o usuário através do software PhotoShop projeta uma boa interface de IU e efeito de botão, através da Caixa de ferramentas de pedra para projetar boas imagens na tela e adiciona seus próprios botões com lógica de caixa de FERRAMENTAS DE PEDRA e dados seriais o valor de retorno está ok, muito fácil para você desenvolver.

Etapa 2: Faça imagens da interface do usuário para a tela STONE

Faça imagens de interface do usuário para exibição de STONE
Faça imagens de interface do usuário para exibição de STONE
Faça imagens de interface do usuário para exibição de STONE
Faça imagens de interface do usuário para exibição de STONE
Faça imagens de interface do usuário para exibição de STONE
Faça imagens de interface do usuário para exibição de STONE

De acordo com os requisitos funcionais, criei as duas interfaces de exibição da IU a seguir, uma é a interface principal e a outra é o efeito de botão.

Uso do STONE TOOL BoxCurrently, STONE fornece TOOL. Abra esta FERRAMENTA para criar um novo projeto, em seguida, importe a interface do usuário projetada para exibir imagens e adicione seus próprios botões, caixas de exibição de texto, etc. O site oficial da STONE tem um tutorial muito completo sobre como usar este software: https: / /www.stoneitech.com/support/download/video

Os efeitos de adicionar botões e exibir componentes na caixa STONE TOOL são os seguintes:

STONE TOOL Box tem a função de exibição de simulação, por meio da qual você pode ver o efeito da operação da interface UI:

Neste ponto, a tela da minha IU está completa e tudo que tenho a fazer é escrever o código MCU. Baixe os arquivos gerados pela caixa STONE TOOL na tela do monitor para ver os resultados reais.

Etapa 3: STM32F103RCT6

STM32F103RCT6
STM32F103RCT6

STM32F103RCT6 MCU tem funções poderosas. Aqui estão os parâmetros básicos do MCU:

  • Série: STM32F10X l Kerne
  • ARM - COTEX32
  • Velocidade: 72 MHZ
  • Interface de comunicação: CAN, I2C, IrDA, LIN, SPI, UART / USART, USB
  • Equipamentos periféricos: DMA, controle de motor PWM, PDR, POR, PVD, PWM, sensor de temperatura, WDT
  • Capacidade de armazenamento do programa: 256 KB
  • Tipo de memória do programa: FLASH
  • Capacidade de RAM: 48K
  • Tensão - fonte de alimentação (Vcc / Vdd): 2 V ~ 3,6 V
  • Oscilador: interno
  • Temperatura de operação: -40 ° C ~ 85 ° C
  • Pacote / alojamento: 64-life

Neste projeto, usarei UART, GPIO, Watch Dog e Timer de STM32F103RCT6. O desenvolvimento desses periféricos é documentado a seguir. STM32 UTILIZA o desenvolvimento de software Keil MDK, o que não é estranho para você, portanto, não vou apresentar o método de instalação desse software. STM32 pode ser simulado online por j-link ou st-link e outras ferramentas de simulação. A imagem a seguir é a placa de circuito STM32 que usei:

Etapa 4: UART Serial

UART Serial
UART Serial
UART Serial
UART Serial
UART Serial
UART Serial

STM32F103RCT6 possui várias portas seriais. Neste projeto, usei o canal da porta serial PA9 / PA10, e a taxa de transmissão da porta serial foi definida em 115200.

GPIO

Na interface do usuário deste projeto, há um total de quatro botões, que na verdade são a preparação de quatro tipos de café. Na máquina de café, o controle do número de grãos de café, do consumo de leite e do fluxo de água de diferentes cafés é realizado pelo controle de sensores e relés, enquanto eu simplesmente controlo o pino GPIO primeiro.

Etapa 5: cronômetro

Cronômetro
Cronômetro
Cronômetro
Cronômetro

Ao inicializar o temporizador, especifique o coeficiente de divisão de frequência PSC, aqui está o relógio do nosso sistema (72 MHz) para divisão de frequência

Em seguida, especifique o valor de recarregamento arr, o que significa que quando nosso cronômetro atingir esse arr, o cronômetro recarregará outros valores.

Por exemplo, quando configuramos o cronômetro para contagem progressiva, o valor da contagem do cronômetro é igual a arr e será apagado por 0 e recalculado

A contagem do cronômetro é recarregada e uma vez é uma atualização

Calcule a fórmula de tempo de atualização Tout = ((arr + 1) * (PSC +1)) / Tclk

Derivação da fórmula: Talk é a fonte do relógio do cronômetro, aqui está 72Mhz

Dividimos a frequência de relógio alocada, especificamos o valor da divisão de frequência como PSC e, em seguida, dividimos nossa conversa em PSC +1, a frequência final de nosso cronômetro é Tclk / (PSC +1) MHz

Então, o que queremos dizer com frequência aqui é que temos 1s de Números de conversa sobre PSC +1 M (1M = 10 ^ 6), e o tempo para cada número é PSC +1 / conversa, e é fácil entender que o inverso da frequência é o período, e o período para cada número aqui é PSC +1 / segundos de conversa e então vamos de 0 para arr é (arr + 1) * (PSC +1) / Tclk

Por exemplo, vamos definir arr = 7199 e PSC = 9999

Dividimos 72 MHz em 9999 + 1 é igual a 7200 Hz

Isso é 9.000 contagens por segundo, e cada contagem é 1/7, 200 de um segundo

Então, estamos gravando 9.000 números aqui para ir para a atualização do cronômetro (7199 + 1) * (1/7200) = 1s, então 1s vai para uma atualização.

void TIM3_Int_Init (u16 arr, u16 psc) {

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

// relógio 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, & TIM_TimeBaseStructure);

Entre em contato conosco se precisar de um procedimento completo:

www.stoneitech.com/contact

Eu responderei a você dentro de 12 horas.

Etapa 6: cão de guarda

Cão de guarda
Cão de guarda
Cão de guarda
Cão de guarda

Para evitar que o sistema travasse enquanto o programa estava em execução, adicionei o watchdog. Na verdade, todos os projetos que usam o MCU geralmente usam um watchdog.

O STM32 possui dois watchdogs integrados, proporcionando maior segurança, precisão de tempo e flexibilidade. Dois dispositivos de watchdog (watchdog independente e watchdog de janela) podem ser usados para detectar e resolver falhas causadas por erros de software. Quando o contador atinge um determinado valor de tempo limite, uma interrupção (apenas watchdog de janela) ou reinicialização do sistema é acionada. Cão de guarda independente (IWDG):

Impulsionado por um relógio dedicado de baixa velocidade (LSI), ele funciona mesmo se o relógio mestre falhar.

É adequado para uso em situações em que o watchdog deve trabalhar de forma totalmente independente fora do programa principal e requer baixa precisão de tempo. Vigilante de janela (WWDG):

Impulsionado pelo relógio do relógio APB1 após a divisão da frequência. Detecta operação de aplicativo anormalmente atrasada ou prematura por meio de uma janela de tempo configurável. Adequado para programas que requerem watchdogs para funcionar em janelas de tempo preciso.

int main (void) {

delay_init ();

// atrasar init NVIC_PriorityGroupConfig (NVIC_PriorityGroup_2);

// NVIC INIT uart_init (115200);

// UART INIT PAD_INIT ();

// Light Init IWDG_Init (4, 625);

enquanto (1) {

if (USART_RX_END)

{switch (USART_RX_BUF [5])

{

estojo Espresso:

CoffeeSelect (Espresso, USART_RX_BUF [8]);

pausa;

caso Americano:

CoffeeSelect (Americano, USART_RX_BUF [8]);

A lógica principal na função principal é a seguinte:

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)

{

leite_send [6] = leite ();

Por fim, acrescente o código na interrupção do cronômetro: Na interrupção do cronômetro, meu objetivo é verificar a quantidade de café e leite que resta e, em seguida, enviar o valor detectado para a tela do display por meio de uma porta serial. A medição da quantidade de leite e grãos de café que sobrou geralmente é feita por sensores. Métodos simples incluem sensores de pressão, que medem o peso atual do leite e dos grãos de café para determinar quanto resta.

Escreva no último

Este artigo registra apenas o processo de desenvolvimento simples do meu projeto. Considerando a confidencialidade do projeto da empresa, a interface de exibição de IU que usei também foi feita por mim, não a interface de exibição de IU real deste projeto. A parte do código do STM32 adiciona apenas o driver periférico do MCU e o código lógico relacionado. Também considerando a confidencialidade do projeto da empresa, a parte específica da tecnologia chave não é fornecida, por favor entenda. No entanto, de acordo com o código que forneci, coopere com a tela STONE do visor. meus amigos que também são engenheiros de software precisam de apenas alguns dias para adicionar peças técnicas importantes à minha estrutura de código para concluir o projeto.

Para saber mais sobre o projeto clique aqui