Partage de technologie

Tutoriel sur le système de contrôle d'accès intelligent STM32

2024-07-12

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

Table des matières

  1. introduction
  2. Préparation environnementale
  3. Bases du système de contrôle d’accès intelligent
  4. Implémentation du code : Implémentation d'un système de contrôle d'accès intelligent 4.1 Module d'acquisition de données 4.2 Module de traitement et de contrôle des données 4.3 Implémentation du système de communication et de réseau 4.4 Interface utilisateur et visualisation des données
  5. Scénario d'application : gestion et optimisation du contrôle d'accès
  6. Résolution de problèmes et optimisation
  7. Clôture et résumé

1. Introduction

Le système de contrôle d'accès intelligent combine divers capteurs, actionneurs et modules de communication via le système intégré STM32 pour réaliser une surveillance en temps réel, un contrôle automatique et une transmission de données du contrôle d'accès. Cet article présentera en détail comment implémenter un système de contrôle d'accès intelligent dans le système STM32, y compris la préparation de l'environnement, l'architecture du système, la mise en œuvre du code, les scénarios d'application, les solutions aux problèmes et les méthodes d'optimisation.

2. Préparation de l'environnement

Préparation du matériel

  1. Tableau de développement: Carte de développement série STM32F4 ou série STM32H7
  2. débogueur: ST-LINK V2 ou débogueur intégré
  3. capteur: Tels que lecteur de carte RFID, capteur d'empreintes digitales, capteur PIR
  4. Actionneur: Tels qu'un verrou électromagnétique, un buzzer, un voyant LED
  5. Module de communication: Tels que le module Wi-Fi, le module ZigBee
  6. Afficher: Tel que l'écran OLED
  7. Bouton ou bouton: utilisé pour la saisie et les paramètres de l'utilisateur
  8. source de courant:Adaptateur secteur

Préparation du logiciel

  1. Environnement de développement intégré (IDE): STM32CubeIDE et Keil MDK
  2. Outils de débogage:Utilitaire STM32 ST-LINK ou GDB
  3. Bibliothèques et middleware:Bibliothèque STM32 HAL et FreeRTOS

étapes d'installation

  1. Téléchargez et installez STM32CubeMX
  2. Téléchargez et installez STM32CubeIDE
  3. Configurez le projet STM32CubeMX et générez le projet STM32CubeIDE
  4. Installer les bibliothèques et les pilotes nécessaires

3. Bases du système de contrôle d'accès intelligent

Architecture du système de contrôle

Le système de contrôle d'accès intelligent se compose des éléments suivants :

  1. Module d'acquisition de données: Utilisé pour collecter les cartes de contrôle d'accès, les empreintes digitales et les données de mouvement
  2. Module de traitement et de contrôle des données: Traiter et analyser les données collectées et générer des signaux de contrôle
  3. Systèmes de communication et de réseau: Réaliser la communication entre le système de contrôle d'accès et le serveur ou un autre équipement
  4. système d'affichage: Utilisé pour afficher l'état du système et les informations de contrôle
  5. système de saisie utilisateur: Paramètres et ajustements via des boutons ou des molettes

Description de la fonction

Les données de carte d'accès, d'empreintes digitales et de mouvement sont collectées via divers capteurs et affichées sur l'écran OLED en temps réel. Le système réalise la surveillance des accès et le contrôle automatique grâce au traitement des données et à la communication réseau. Les utilisateurs peuvent effectuer des réglages via des boutons ou des boutons et afficher l'état actuel via l'écran.

4. Mise en œuvre du code : mettre en œuvre un système de contrôle d'accès intelligent

4.1 Module d'acquisition de données

Configurer le lecteur RFID

Utilisez STM32CubeMX pour configurer l'interface UART :

  1. Ouvrez STM32CubeMX et sélectionnez votre modèle de carte de développement STM32.
  2. Dans l'interface graphique, recherchez la broche UART qui doit être configurée et réglez-la en mode UART.
  3. Générez du code et importez-le dans STM32CubeIDE.

Code:

  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. }
Configurer le capteur d'empreintes digitales

Utilisez STM32CubeMX pour configurer l'interface UART :

  1. Ouvrez STM32CubeMX et sélectionnez votre modèle de carte de développement STM32.
  2. Dans l'interface graphique, recherchez la broche UART qui doit être configurée et réglez-la en mode UART.
  3. Générez du code et importez-le dans STM32CubeIDE.

Code:

  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 Module de traitement et de contrôle des données

Le module de traitement des données convertit les données du capteur en données pouvant être utilisées dans le système de contrôle et effectue les calculs et analyses nécessaires.

Algorithme de contrôle d'accès

Implémentez un algorithme de contrôle d'accès simple pour contrôler le commutateur de la serrure électromagnétique en fonction des données de la carte d'accès et des empreintes digitales :

  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 Mise en œuvre du système de communication et de réseau

Configurer le module Wi-Fi

Utilisez STM32CubeMX pour configurer l'interface UART :

  1. Ouvrez STM32CubeMX et sélectionnez votre modèle de carte de développement STM32.
  2. Dans l'interface graphique, recherchez la broche UART qui doit être configurée et réglez-la en mode UART.
  3. Générez du code et importez-le dans STM32CubeIDE.

Code:

  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 utilisateur et visualisation des données

Configurer l'affichage OLED

Utilisez STM32CubeMX pour configurer l'interface I2C :

  1. Ouvrez STM32CubeMX et sélectionnez votre modèle de carte de développement STM32.
  2. Dans l'interface graphique, recherchez la broche I2C qui doit être configurée et réglez-la en mode I2C.
  3. Générez du code et importez-le dans STM32CubeIDE.

Code:

Tout d’abord, initialisez l’écran OLED :

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

Implémentez ensuite la fonction d'affichage des données pour afficher l'état du contrôle d'accès et les données sur l'écran 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. Scénario d'application : gestion et optimisation du contrôle d'accès

Gestion du contrôle d'accès aux immeubles de bureaux

Le système de contrôle d'accès intelligent peut être utilisé pour la gestion du contrôle d'accès des immeubles de bureaux. Grâce à la surveillance en temps réel des données de contrôle d'accès, un contrôle automatique peut être réalisé pour améliorer la sécurité et l'efficacité de la gestion des immeubles de bureaux.

Gestion du contrôle d'accès communautaire

Dans les communautés, les systèmes de contrôle d'accès intelligents peuvent réaliser une gestion automatisée des résidents et des visiteurs, améliorant ainsi la sécurité et la commodité de la communauté.

Gestion du contrôle d'accès à la maison

Les systèmes de contrôle d'accès intelligents peuvent être utilisés pour le contrôle d'accès à la maison afin d'obtenir une gestion plus intelligente des accès à la maison grâce à un contrôle automatisé et à l'analyse des données.

Recherche sur les bâtiments intelligents

Les systèmes de contrôle d'accès intelligents peuvent être utilisés dans la recherche sur les bâtiments intelligents pour fournir une base scientifique à la gestion et à l'optimisation du contrôle d'accès aux bâtiments grâce à la collecte et à l'analyse de données.

⬇Aidez tout le monde à organiser les informations sur les microcontrôleurs

Une collection de projets dont stm32 [code source + documents de développement]

Cliquez sur les mots bleus ci-dessous pour l'obtenir, merci pour votre soutien ! ⬇

Cliquez pour plus de détails intégrés

Pour discuter du problème, vous pouvez envoyer un message privé pour recevoir les informations stm32 !

 

6. Résolution de problèmes et optimisation

Questions fréquemment posées et solutions

Les données du capteur sont inexactes

Assurez-vous que la connexion entre le capteur et le STM32 est stable et calibrez régulièrement le capteur pour obtenir des données précises.

Solution : Vérifiez si la connexion entre le capteur et le STM32 est ferme, et ressoudez ou remplacez le fil de connexion si nécessaire. Dans le même temps, les capteurs sont calibrés régulièrement pour garantir des données précises.

Le contrôle d'accès est instable

Optimisez l'algorithme de contrôle et la configuration matérielle pour réduire l'instabilité du contrôle d'accès et améliorer la vitesse de réponse du système.

Solution : optimisez l'algorithme de contrôle, ajustez les paramètres et réduisez les oscillations et les dépassements. Utilisez des capteurs de haute précision pour améliorer la précision et la stabilité de la collecte de données. Choisissez un actionneur plus efficace pour améliorer la vitesse de réponse du contrôle d’accès.

Le transfert de données a échoué

Assurez-vous que la connexion entre le module Wi-Fi et STM32 est stable, optimisez le protocole de communication et améliorez la fiabilité de la transmission des données.

Solution : Vérifiez si la connexion entre le module Wi-Fi et le STM32 est solide, et ressoudez ou remplacez le câble de connexion si nécessaire. Optimisez les protocoles de communication pour réduire les délais de transmission des données et les taux de perte de paquets. Choisissez un module de communication plus stable pour améliorer la fiabilité de la transmission des données.

L'écran affiche une anomalie

Vérifiez la ligne de communication I2C pour vous assurer que la communication entre l'écran et le MCU est normale afin d'éviter un affichage anormal dû à des problèmes de ligne.

Solution : Vérifiez si les broches I2C sont correctement connectées et assurez-vous que l'alimentation est stable. Utilisez un oscilloscope pour détecter le signal du bus I2C et confirmer si la communication est normale. Si nécessaire, remplacez l'écran ou le MCU.

Suggestions d'optimisation

Intégration et analyse des données

Intégrez davantage de types de données de capteurs et utilisez la technologie d’analyse des données pour prédire et optimiser les conditions environnementales.

Suggestion : ajoutez davantage de capteurs de surveillance, tels que des capteurs de porte, des capteurs de température et d'humidité, etc. Utilisez des plateformes cloud pour l'analyse et le stockage des données afin de fournir des services de surveillance et de gestion environnementale plus complets.

Optimisation de l'interaction utilisateur

Améliorez la conception de l'interface utilisateur, fournissez un affichage des données plus intuitif et une interface de fonctionnement plus simple, et améliorez l'expérience utilisateur.

Recommandation : utilisez un écran couleur haute résolution pour offrir une expérience visuelle plus riche. Concevez une interface utilisateur simple et facile à comprendre pour faciliter l’utilisation des utilisateurs. Fournissez un affichage graphique des données, telles que des graphiques de paramètres d'environnement en temps réel, des enregistrements historiques, etc.

Amélioration du contrôle intelligent

Ajoutez un système intelligent d'aide à la décision pour ajuster automatiquement les stratégies de contrôle en fonction des données historiques et en temps réel afin d'obtenir un contrôle et une gestion environnementaux plus efficaces.

Recommandation : utiliser la technologie d'analyse des données pour analyser les données environnementales et fournir des suggestions personnalisées de gestion environnementale. En combinaison avec les données historiques, nous pouvons prédire les problèmes et besoins possibles et optimiser les stratégies de contrôle à l'avance.

7. Clôture et résumé

Ce didacticiel présente en détail comment implémenter un système de contrôle d'accès intelligent dans un système embarqué STM32. Il explique de manière exhaustive tout, depuis la sélection du matériel et la mise en œuvre du logiciel jusqu'à la configuration du système et les scénarios d'application.