Compartir tecnología

Tutorial del sistema de control de acceso inteligente STM32

2024-07-12

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

Tabla de contenido

  1. introducción
  2. Preparación ambiental
  3. Conceptos básicos del sistema de control de acceso inteligente
  4. Implementación de código: Implementación de sistema de control de acceso inteligente 4.1 Módulo de adquisición de datos 4.2 Módulo de control y procesamiento de datos 4.3 Implementación del sistema de comunicación y red 4.4 Interfaz de usuario y visualización de datos
  5. Escenario de aplicación: gestión y optimización del control de acceso.
  6. Resolución de problemas y optimización
  7. Cierre y resumen

1. Introducción

El sistema de control de acceso inteligente combina varios sensores, actuadores y módulos de comunicación a través del sistema integrado STM32 para lograr monitoreo en tiempo real, control automático y transmisión de datos del control de acceso. Este artículo presentará en detalle cómo implementar un sistema de control de acceso inteligente en el sistema STM32, incluida la preparación del entorno, la arquitectura del sistema, la implementación del código, los escenarios de aplicación, la solución de problemas y los métodos de optimización.

2. Preparación del entorno

Preparación de hardware

  1. tablero de desarrollo: Placa de desarrollo serie STM32F4 o serie STM32H7
  2. depurador: ST-LINK V2 o depurador integrado
  3. sensor: Como lector de tarjetas RFID, sensor de huellas dactilares, sensor PIR
  4. Solenoide: Como cerradura electromagnética, zumbador, luz indicadora LED
  5. Módulo de comunicación: Como módulo Wi-Fi, módulo ZigBee
  6. Mostrar: Como pantalla OLED
  7. Botón o perilla: utilizado para la entrada y configuración del usuario
  8. fuente de alimentación:Adaptador de corriente

Preparación de software

  1. Entorno de desarrollo integrado (IDE):STM32CubeIDE y Keil MDK
  2. Herramientas de depuración:Utilidad STM32 ST-LINK o GDB
  3. Bibliotecas y middleware:Biblioteca STM32 HAL y FreeRTOS

Pasos de instalación

  1. Descargue e instale STM32CubeMX
  2. Descargue e instale STM32CubeIDE
  3. Configure el proyecto STM32CubeMX y genere el proyecto STM32CubeIDE
  4. Instale las bibliotecas y los controladores necesarios

3. Conceptos básicos del sistema de control de acceso inteligente

Arquitectura del sistema de control

El sistema de control de acceso inteligente consta de las siguientes partes:

  1. Módulo de adquisición de datos: Se utiliza para recopilar tarjetas de control de acceso, huellas dactilares y datos de movimiento.
  2. Módulo de procesamiento y control de datos.: Procesar y analizar los datos recopilados y generar señales de control.
  3. Sistemas de comunicación y redes.: Realizar la comunicación entre el sistema de control de acceso y el servidor u otro equipo
  4. sistema de visualización: Se utiliza para mostrar el estado del sistema y controlar la información.
  5. sistema de entrada del usuario: Configuraciones y ajustes mediante botones o perillas

Función descriptiva

Los datos de la tarjeta de acceso, las huellas dactilares y el movimiento se recopilan a través de varios sensores y se muestran en la pantalla OLED en tiempo real. El sistema realiza monitoreo de acceso y control automático a través del procesamiento de datos y comunicación de red. Los usuarios pueden realizar configuraciones a través de botones o perillas y ver el estado actual a través de la pantalla.

4. Implementación del código: implementar un sistema de control de acceso inteligente

4.1 Módulo de adquisición de datos

Configurar lector RFID

Utilice STM32CubeMX para configurar la interfaz UART:

  1. Abra STM32CubeMX y seleccione su modelo de placa de desarrollo STM32.
  2. En la interfaz gráfica, busque el pin UART que necesita configurarse y configúrelo en modo UART.
  3. Genere código e impórtelo a 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 el sensor de huellas dactilares

Utilice STM32CubeMX para configurar la interfaz UART:

  1. Abra STM32CubeMX y seleccione su modelo de placa de desarrollo STM32.
  2. En la interfaz gráfica, busque el pin UART que necesita configurarse y configúrelo en modo UART.
  3. Genere código e impórtelo a 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 procesamiento y control de datos

El módulo de procesamiento de datos convierte los datos del sensor en datos que pueden usarse en el sistema de control y realiza los cálculos y análisis necesarios.

Algoritmo de control de acceso

Implemente un algoritmo de control de acceso simple para controlar el interruptor de la cerradura electromagnética en función de los datos de la tarjeta de acceso y las huellas dactilares:

  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 Implementación del sistema de comunicación y red.

Configurar el módulo wifi

Utilice STM32CubeMX para configurar la interfaz UART:

  1. Abra STM32CubeMX y seleccione su modelo de placa de desarrollo STM32.
  2. En la interfaz gráfica, busque el pin UART que necesita configurarse y configúrelo en modo UART.
  3. Genere código e impórtelo a 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 Interfaz de usuario y visualización de datos

Configurar la pantalla OLED

Utilice STM32CubeMX para configurar la interfaz I2C:

  1. Abra STM32CubeMX y seleccione su modelo de placa de desarrollo STM32.
  2. En la interfaz gráfica, busque el pin I2C que necesita configurarse y configúrelo en modo I2C.
  3. Genere código e impórtelo a STM32CubeIDE.

Código:

Primero, inicialice la pantalla OLED:

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

Luego implemente la función de visualización de datos para mostrar el estado del control de acceso y los datos en la pantalla 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. Escenario de aplicación: gestión y optimización del control de acceso.

Gestión de control de acceso a edificios de oficinas.

El sistema de control de acceso inteligente se puede utilizar para la gestión del control de acceso de edificios de oficinas. Mediante el monitoreo en tiempo real de los datos de control de acceso, se puede realizar un control automático para mejorar la seguridad y la eficiencia de la gestión de los edificios de oficinas.

Gestión de control de acceso comunitario.

En las comunidades, los sistemas de control de acceso inteligentes pueden realizar una gestión automatizada de residentes y visitantes, mejorando la seguridad y la comodidad de la comunidad.

Gestión de control de acceso al hogar.

Los sistemas de control de acceso inteligentes se pueden utilizar para el control de acceso al hogar para lograr una gestión de acceso al hogar más inteligente a través del control automatizado y el análisis de datos.

Investigación sobre edificios inteligentes

Los sistemas de control de acceso inteligentes se pueden utilizar en la investigación de edificios inteligentes para proporcionar una base científica para la gestión y optimización del control de acceso a edificios mediante la recopilación y el análisis de datos.

⬇Ayuda a todos a organizar información sobre microcontroladores

Una colección de proyectos que incluyen stm32 [código fuente + documentos de desarrollo]

Haga clic en las palabras azules a continuación para obtenerlo, ¡gracias por su apoyo! ⬇

Haga clic para obtener más detalles incorporados

Para discutir el problema, puede enviar un mensaje privado para recibir información stm32.

 

6. Resolución de problemas y optimización

Preguntas frecuentes y soluciones

Los datos del sensor son inexactos

Asegúrese de que la conexión entre el sensor y STM32 sea estable y calibre el sensor periódicamente para obtener datos precisos.

Solución: verifique si la conexión entre el sensor y STM32 es firme y vuelva a soldar o reemplace el cable de conexión si es necesario. Al mismo tiempo, los sensores se calibran periódicamente para garantizar datos precisos.

El control de acceso es inestable.

Optimice el algoritmo de control y la configuración del hardware para reducir la inestabilidad del control de acceso y mejorar la velocidad de respuesta del sistema.

Solución: Optimice el algoritmo de control, ajuste los parámetros y reduzca la oscilación y el exceso. Utilice sensores de alta precisión para mejorar la precisión y estabilidad de la recopilación de datos. Elija un actuador más eficiente para mejorar la velocidad de respuesta del control de acceso.

Error en la transferencia de datos

Asegúrese de que la conexión entre el módulo Wi-Fi y STM32 sea estable, optimice el protocolo de comunicación y mejore la confiabilidad de la transmisión de datos.

Solución: verifique si la conexión entre el módulo Wi-Fi y STM32 es firme y vuelva a soldar o reemplace el cable de conexión si es necesario. Optimice los protocolos de comunicación para reducir los retrasos en la transmisión de datos y las tasas de pérdida de paquetes. Elija un módulo de comunicación más estable para mejorar la confiabilidad de la transmisión de datos.

La pantalla muestra una anomalía.

Verifique la línea de comunicación I2C para asegurarse de que la comunicación entre la pantalla y la MCU sea normal para evitar una visualización anormal debido a problemas de línea.

Solución: verifique si los pines I2C están conectados correctamente y asegúrese de que la fuente de alimentación sea estable. Utilice un osciloscopio para detectar la señal del bus I2C y confirmar si la comunicación es normal. Si es necesario, reemplace la pantalla o la MCU.

Sugerencias de optimización

Integración y análisis de datos.

Integre más tipos de datos de sensores y utilice tecnología de análisis de datos para predecir y optimizar las condiciones ambientales.

Sugerencia: agregue más sensores de monitoreo, como sensores de puertas, sensores de temperatura y humedad, etc. Utilice plataformas en la nube para el análisis y almacenamiento de datos para proporcionar servicios de gestión y monitoreo ambiental más completos.

Optimización de la interacción del usuario.

Mejore el diseño de la interfaz de usuario, proporcione una visualización de datos más intuitiva y una interfaz de operación más sencilla, y mejore la experiencia del usuario.

Recomendación: utilice una pantalla a color de alta resolución para brindar una experiencia visual más rica. Diseñe una interfaz de usuario simple y fácil de entender para que sea más fácil de operar para los usuarios. Proporciona visualización gráfica de datos, como cuadros de parámetros ambientales en tiempo real, registros históricos, etc.

Mejora del control inteligente

Agregue un sistema inteligente de soporte a decisiones para ajustar automáticamente las estrategias de control basadas en datos históricos y en tiempo real para lograr un control y gestión ambiental más eficiente.

Recomendación: utilizar tecnología de análisis de datos para analizar datos ambientales y brindar sugerencias personalizadas de gestión ambiental. Combinados con datos históricos, podemos predecir posibles problemas y necesidades y optimizar las estrategias de control por adelantado.

7. Cierre y resumen

Este tutorial presenta en detalle cómo implementar un sistema de control de acceso inteligente en un sistema integrado STM32. Explica de manera integral todo, desde la selección de hardware y la implementación de software hasta la configuración del sistema y los escenarios de aplicación.