Compartilhamento de tecnologia

Tutorial do sistema de controle de acesso inteligente STM32

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Índice

  1. introdução
  2. Preparação ambiental
  3. Noções básicas de sistema de controle de acesso inteligente
  4. Implementação de código: Implementação de sistema de controle de acesso inteligente 4.1 Módulo de coleta de dados 4.2 Módulo de processamento e controle de dados 4.3 Implementação de sistema de comunicação e rede 4.4 Interface de usuário e visualização de dados
  5. Cenário de aplicação: gerenciamento e otimização de controle de acesso
  6. Resolução e otimização de problemas
  7. Fechamento e resumo

1. Introdução

O sistema inteligente de controle de acesso combina vários sensores, atuadores e módulos de comunicação por meio do sistema embarcado STM32 para obter monitoramento em tempo real, controle automático e transmissão de dados de controle de acesso. Este artigo apresentará detalhadamente como implementar um sistema de controle de acesso inteligente no sistema STM32, incluindo preparação do ambiente, arquitetura do sistema, implementação de código, cenários de aplicação, soluções de problemas e métodos de otimização.

2. Preparação do ambiente

Preparação de hardware

  1. Quadro de desenvolvimento: Placa de desenvolvimento da série STM32F4 ou série STM32H7
  2. depurador: ST-LINK V2 ou depurador integrado
  3. sensor: Como leitor de cartão RFID, sensor de impressão digital, sensor PIR
  4. Atuador do: Como fechadura eletromagnética, campainha, luz indicadora LED
  5. Módulo de comunicação: Como módulo Wi-Fi, módulo ZigBee
  6. Mostrar: Como display OLED
  7. Botão ou botão: usado para entrada e configurações do usuário
  8. fonte de energia:Adaptador de energia

Preparação de software

  1. Ambiente de Desenvolvimento Integrado (IDE):STM32CubeIDE ou Keil MDK
  2. Ferramentas de depuração:Utilitário STM32 ST-LINK e GDB
  3. Bibliotecas e middleware: Biblioteca STM32 HAL e FreeRTOS

etapas de instalação

  1. Baixe e instale STM32CubeMX
  2. Baixe e instale STM32CubeIDE
  3. Configure o projeto STM32CubeMX e gere o projeto STM32CubeIDE
  4. Instale bibliotecas e drivers necessários

3. Noções básicas de sistema de controle de acesso inteligente

Arquitetura do sistema de controle

O sistema inteligente de controle de acesso consiste nas seguintes partes:

  1. Módulo de aquisição de dados: Usado para coletar cartões de controle de acesso, impressões digitais e dados de movimento
  2. Módulo de processamento e controle de dados: Processar e analisar os dados coletados e gerar sinais de controle
  3. Sistemas de Comunicação e Rede: Realize a comunicação entre o sistema de controle de acesso e o servidor ou outro equipamento
  4. sistema de exibição: Usado para exibir o status do sistema e informações de controle
  5. sistema de entrada do usuário: Configurações e ajustes via botões ou knobs

Descrição da função

Cartão de acesso, impressão digital e dados de movimento são coletados por meio de vários sensores e exibidos no display OLED em tempo real. O sistema realiza monitoramento de acesso e controle automático por meio de processamento de dados e comunicação em rede. Os usuários podem fazer configurações através de botões ou botões e visualizar o status atual através do display.

4. Implementação de código: implementar sistema de controle de acesso inteligente

4.1 Módulo de aquisição de dados

Configurar leitor RFID

Use STM32CubeMX para configurar a interface UART:

  1. Abra STM32CubeMX e selecione o modelo da placa de desenvolvimento STM32.
  2. Na interface gráfica, encontre o pino UART que precisa ser configurado e configure-o para o modo UART.
  3. Gere código e importe-o para STM32CubeIDE.

Código:

  1. #include "stm32f4xx_hal.h"
  2. UART_HandleTypeDef huart1;
  3. void UART1_Init(void) {
  4. huart1.Instance = USART1;
  5. huart1.Init.BaudRate = 9600;
  6. huart1.Init.WordLength = UART_WORDLENGTH_8B;
  7. huart1.Init.StopBits = UART_STOPBITS_1;
  8. huart1.Init.Parity = UART_PARITY_NONE;
  9. huart1.Init.Mode = UART_MODE_TX_RX;
  10. huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  11. huart1.Init.OverSampling = UART_OVERSAMPLING_16;
  12. HAL_UART_Init(&huart1);
  13. }
  14. uint8_t Read_RFID_Card(uint8_t* buffer, uint16_t size) {
  15. return HAL_UART_Receive(&huart1, buffer, size, HAL_MAX_DELAY);
  16. }
  17. int main(void) {
  18. HAL_Init();
  19. SystemClock_Config();
  20. UART1_Init();
  21. uint8_t rfid_buffer[16];
  22. while (1) {
  23. if (Read_RFID_Card(rfid_buffer, 16) == HAL_OK) {
  24. // 处理RFID数据
  25. }
  26. HAL_Delay(1000);
  27. }
  28. }
Configurar sensor de impressão digital

Use STM32CubeMX para configurar a interface UART:

  1. Abra STM32CubeMX e selecione o modelo da placa de desenvolvimento STM32.
  2. Na interface gráfica, encontre o pino UART que precisa ser configurado e configure-o para o modo UART.
  3. Gere código e importe-o para STM32CubeIDE.

Código:

  1. #include "stm32f4xx_hal.h"
  2. UART_HandleTypeDef huart2;
  3. void UART2_Init(void) {
  4. huart2.Instance = USART2;
  5. huart2.Init.BaudRate = 57600;
  6. huart2.Init.WordLength = UART_WORDLENGTH_8B;
  7. huart2.Init.StopBits = UART_STOPBITS_1;
  8. huart2.Init.Parity = UART_PARITY_NONE;
  9. huart2.Init.Mode = UART_MODE_TX_RX;
  10. huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  11. huart2.Init.OverSampling = UART_OVERSAMPLING_16;
  12. HAL_UART_Init(&huart2);
  13. }
  14. uint8_t Read_Fingerprint(uint8_t* buffer, uint16_t size) {
  15. return HAL_UART_Receive(&huart2, buffer, size, HAL_MAX_DELAY);
  16. }
  17. int main(void) {
  18. HAL_Init();
  19. SystemClock_Config();
  20. UART2_Init();
  21. uint8_t fingerprint_buffer[32];
  22. while (1) {
  23. if (Read_Fingerprint(fingerprint_buffer, 32) == HAL_OK) {
  24. // 处理指纹数据
  25. }
  26. HAL_Delay(1000);
  27. }
  28. }

4.2 Módulo de processamento e controle de dados

O módulo de processamento de dados converte os dados do sensor em dados que podem ser usados ​​no sistema de controle e realiza os cálculos e análises necessários.

Algoritmo de controle de acesso

Implemente um algoritmo de controle de acesso simples para controlar a troca da fechadura eletromagnética com base nos dados do cartão de acesso e da impressão digital:

  1. #define AUTHORIZED_CARD_ID "1234567890"
  2. #define AUTHORIZED_FINGERPRINT_ID "A1B2C3D4E5"
  3. void Control_Door(uint8_t* rfid_data, uint8_t* fingerprint_data) {
  4. if (strcmp((char*)rfid_data, AUTHORIZED_CARD_ID) == 0 ||
  5. strcmp((char*)fingerprint_data, AUTHORIZED_FINGERPRINT_ID) == 0) {
  6. // 打开门锁
  7. HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);
  8. } else {
  9. // 关闭门锁
  10. HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);
  11. }
  12. }
  13. int main(void) {
  14. HAL_Init();
  15. SystemClock_Config();
  16. UART1_Init();
  17. UART2_Init();
  18. GPIO_Init();
  19. uint8_t rfid_buffer[16];
  20. uint8_t fingerprint_buffer[32];
  21. while (1) {
  22. if (Read_RFID_Card(rfid_buffer, 16) == HAL_OK &&
  23. Read_Fingerprint(fingerprint_buffer, 32) == HAL_OK) {
  24. Control_Door(rfid_buffer, fingerprint_buffer);
  25. }
  26. HAL_Delay(1000);
  27. }
  28. }

4.3 Implementação de sistema de comunicação e rede

Configurar módulo Wi-Fi

Use STM32CubeMX para configurar a interface UART:

  1. Abra STM32CubeMX e selecione o modelo da placa de desenvolvimento STM32.
  2. Na interface gráfica, encontre o pino UART que precisa ser configurado e configure-o para o modo UART.
  3. Gere código e importe-o para STM32CubeIDE.

Código:

  1. #include "stm32f4xx_hal.h"
  2. #include "usart.h"
  3. #include "wifi_module.h"
  4. UART_HandleTypeDef huart3;
  5. void UART3_Init(void) {
  6. huart3.Instance = USART3;
  7. huart3.Init.BaudRate = 115200;
  8. huart3.Init.WordLength = UART_WORDLENGTH_8B;
  9. huart3.Init.StopBits = UART_STOPBITS_1;
  10. huart3.Init.Parity = UART_PARITY_NONE;
  11. huart3.Init.Mode = UART_MODE_TX_RX;
  12. huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  13. huart3.Init.OverSampling = UART_OVERSAMPLING_16;
  14. HAL_UART_Init(&huart3);
  15. }
  16. void Send_Data_To_Server(uint8_t* rfid_data, uint8_t* fingerprint_data) {
  17. char buffer[128];
  18. sprintf(buffer, "RFID: %s, Fingerprint: %s", rfid_data, fingerprint_data);
  19. HAL_UART_Transmit(&huart3, (uint8_t*)buffer, strlen(buffer), HAL_MAX_DELAY);
  20. }
  21. int main(void) {
  22. HAL_Init();
  23. SystemClock_Config();
  24. UART3_Init();
  25. UART1_Init();
  26. UART2_Init();
  27. uint8_t rfid_buffer[16];
  28. uint8_t fingerprint_buffer[32];
  29. while (1) {
  30. if (Read_RFID_Card(rfid_buffer, 16) == HAL_OK &&
  31. Read_Fingerprint(fingerprint_buffer, 32) == HAL_OK) {
  32. Send_Data_To_Server(rfid_buffer, fingerprint_buffer);
  33. }
  34. HAL_Delay(1000);
  35. }
  36. }

4.4 Interface do usuário e visualização de dados

Configurar exibição OLED

Use STM32CubeMX para configurar a interface I2C:

  1. Abra STM32CubeMX e selecione o modelo da placa de desenvolvimento STM32.
  2. Na interface gráfica, encontre o pino I2C que precisa ser configurado e configure-o para o modo I2C.
  3. Gere código e importe-o para STM32CubeIDE.

Código:

Primeiro, inicialize o display OLED:

  1. #include "stm32f4xx_hal.h"
  2. #include "i2c.h"
  3. #include "oled.h"
  4. void Display_Init(void) {
  5. OLED_Init();
  6. }

Em seguida, implemente a função de exibição de dados para exibir o status e os dados do controle de acesso na tela OLED:

  1. void Display_Data(uint8_t* rfid_data, uint8_t* fingerprint_data) {
  2. char buffer[32];
  3. sprintf(buffer, "RFID: %s", rfid_data);
  4. OLED_ShowString(0, 0, buffer);
  5. sprintf(buffer, "Fingerprint: %s", fingerprint_data);
  6. OLED_ShowString(0, 1, buffer);
  7. }
  8. int main(void) {
  9. HAL_Init();
  10. SystemClock_Config();
  11. I2C1_Init();
  12. Display_Init();
  13. UART1_Init();
  14. UART2_Init();
  15. uint8_t rfid_buffer[16];
  16. uint8_t fingerprint_buffer[32];
  17. while (1) {
  18. if (Read_RFID_Card(rfid_buffer, 16) == HAL_OK &&
  19. Read_Fingerprint(fingerprint_buffer, 32) == HAL_OK) {
  20. // 显示门禁数据
  21. Display_Data(rfid_buffer, fingerprint_buffer);
  22. }
  23. HAL_Delay(1000);
  24. }
  25. }

5. Cenário de aplicação: gerenciamento e otimização de controle de acesso

Gestão de controle de acesso a edifícios de escritórios

O sistema de controle de acesso inteligente pode ser usado para gerenciamento de controle de acesso de edifícios de escritórios. Através do monitoramento em tempo real dos dados de controle de acesso, o controle automático pode ser realizado para melhorar a segurança e a eficiência do gerenciamento de edifícios de escritórios.

Gestão de controle de acesso comunitário

Nas comunidades, os sistemas inteligentes de controle de acesso podem realizar o gerenciamento automatizado de residentes e visitantes, melhorando a segurança e a conveniência da comunidade.

Gerenciamento de controle de acesso residencial

Sistemas inteligentes de controle de acesso podem ser usados ​​para controle de acesso residencial para obter um gerenciamento de acesso residencial mais inteligente por meio de controle automatizado e análise de dados.

Pesquisa de edifícios inteligentes

Sistemas inteligentes de controle de acesso podem ser usados ​​na pesquisa de edifícios inteligentes para fornecer base científica para o gerenciamento e otimização do controle de acesso de edifícios por meio da coleta e análise de dados.

⬇Ajude todos a organizar informações sobre microcontroladores

Uma coleção de projetos incluindo stm32 [código-fonte + documentos de desenvolvimento]

Clique nas palavras azuis abaixo para obtê-lo, obrigado pelo seu apoio! ⬇

Clique para mais detalhes incorporados

Para discutir o problema, você pode enviar uma mensagem privada para receber informações do stm32!

 

6. Resolução e otimização de problemas

Perguntas frequentes e soluções

Os dados do sensor são imprecisos

Certifique-se de que a conexão entre o sensor e o STM32 esteja estável e calibre o sensor regularmente para obter dados precisos.

Solução: Verifique se a conexão entre o sensor e o STM32 está firme e revenda ou substitua o fio de conexão se necessário. Ao mesmo tempo, os sensores são calibrados regularmente para garantir dados precisos.

O controle de acesso está instável

Otimize o algoritmo de controle e a configuração de hardware para reduzir a instabilidade do controle de acesso e melhorar a velocidade de resposta do sistema.

Solução: Otimize o algoritmo de controle, ajuste os parâmetros e reduza a oscilação e o overshoot. Use sensores de alta precisão para melhorar a precisão e a estabilidade da coleta de dados. Escolha um atuador mais eficiente para melhorar a velocidade de resposta do controle de acesso.

Falha na transferência de dados

Certifique-se de que a conexão entre o módulo Wi-Fi e o STM32 seja estável, otimize o protocolo de comunicação e melhore a confiabilidade da transmissão de dados.

Solução: Verifique se a conexão entre o módulo Wi-Fi e o STM32 está firme e solde novamente ou substitua o cabo de conexão se necessário. Otimize os protocolos de comunicação para reduzir atrasos na transmissão de dados e taxas de perda de pacotes. Escolha um módulo de comunicação mais estável para melhorar a confiabilidade da transmissão de dados.

O display mostra anormalidade

Verifique a linha de comunicação I2C para garantir que a comunicação entre o display e o MCU esteja normal para evitar exibição anormal devido a problemas de linha.

Solução: Verifique se os pinos I2C estão conectados corretamente e certifique-se de que a fonte de alimentação esteja estável. Use um osciloscópio para detectar o sinal do barramento I2C e confirmar se a comunicação está normal. Se necessário, substitua o monitor ou MCU.

Sugestões de otimização

Integração e análise de dados

Integre mais tipos de dados de sensores e use tecnologia de análise de dados para prever e otimizar as condições ambientais.

Sugestão: Adicione mais sensores de monitoramento, como sensores de porta, sensores de temperatura e umidade, etc. Use plataformas em nuvem para análise e armazenamento de dados para fornecer serviços de monitoramento e gerenciamento ambiental mais abrangentes.

Otimização da interação do usuário

Melhore o design da interface do usuário, forneça exibição de dados mais intuitiva e interface de operação mais simples e aprimore a experiência do usuário.

Recomendação: Use um display colorido de alta resolução para fornecer uma experiência visual mais rica. Projete uma interface de usuário simples e fácil de entender para facilitar a operação dos usuários. Fornece exibição de dados gráficos, como gráficos de parâmetros ambientais em tempo real, registros históricos, etc.

Melhoria de controle inteligente

Adicione um sistema inteligente de suporte à decisão para ajustar automaticamente as estratégias de controle com base em dados históricos e em tempo real para obter controle e gerenciamento ambiental mais eficientes.

Recomendação: Utilize tecnologia de análise de dados para analisar dados ambientais e fornecer sugestões personalizadas de gestão ambiental. Combinados com dados históricos, podemos prever possíveis problemas e necessidades e otimizar antecipadamente as estratégias de controle.

7. Encerramento e resumo

Este tutorial apresenta em detalhes como implementar um sistema de controle de acesso inteligente em um sistema embarcado STM32, desde a seleção de hardware, implementação de software até configuração do sistema e cenários de aplicação.