Technologieaustausch

Tutorial zum intelligenten Zugangskontrollsystem STM32

2024-07-12

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

Inhaltsverzeichnis

  1. Einführung
  2. Umweltvorbereitung
  3. Grundlagen des intelligenten Zugangskontrollsystems
  4. Code-Implementierung: Implementierung eines intelligenten Zugangskontrollsystems 4.1 Datenerfassungsmodul 4.2 Datenverarbeitungs- und Steuerungsmodul 4.3 Kommunikations- und Netzwerksystemimplementierung 4.4 Benutzeroberfläche und Datenvisualisierung
  5. Anwendungsszenario: Zugriffskontrollverwaltung und -optimierung
  6. Problemlösung und Optimierung
  7. Abschluss und Zusammenfassung

1. Einleitung

Das intelligente Zugangskontrollsystem kombiniert verschiedene Sensoren, Aktoren und Kommunikationsmodule über das eingebettete STM32-System, um eine Echtzeitüberwachung, automatische Steuerung und Datenübertragung der Zugangskontrolle zu erreichen. In diesem Artikel wird detailliert beschrieben, wie ein intelligentes Zugangskontrollsystem im STM32-System implementiert wird, einschließlich Umgebungsvorbereitung, Systemarchitektur, Codeimplementierung, Anwendungsszenarien, Problemlösungen und Optimierungsmethoden.

2. Vorbereitung der Umgebung

Hardware-Vorbereitung

  1. Entwicklungs-Board: Entwicklungsboard der STM32F4-Serie oder STM32H7-Serie
  2. Debugger: ST-LINK V2 oder Onboard-Debugger
  3. Sensor: Wie RFID-Kartenleser, Fingerabdrucksensor, PIR-Sensor
  4. Aktuator: Wie elektromagnetische Sperre, Summer, LED-Anzeigeleuchte
  5. Kommunikationsmodul: Wie Wi-Fi-Modul, ZigBee-Modul
  6. Anzeige: Wie OLED-Display
  7. Knopf oder Knopf: Wird für Benutzereingaben und -einstellungen verwendet
  8. Stromversorgung:Netzteil

Softwarevorbereitung

  1. Integrierte Entwicklungsumgebung (IDE): STM32CubeIDE oder Keil MDK
  2. Debugging-Tools: STM32 ST-LINK Utility oder GDB
  3. Bibliotheken und Middleware:STM32 HAL-Bibliothek und FreeRTOS

Installationsschritte

  1. Laden Sie STM32CubeMX herunter und installieren Sie es
  2. Laden Sie STM32CubeIDE herunter und installieren Sie es
  3. Konfigurieren Sie das STM32CubeMX-Projekt und generieren Sie das STM32CubeIDE-Projekt
  4. Installieren Sie die erforderlichen Bibliotheken und Treiber

3. Grundlagen eines intelligenten Zugangskontrollsystems

Architektur des Steuerungssystems

Das intelligente Zutrittskontrollsystem besteht aus folgenden Teilen:

  1. Datenerfassungsmodul: Wird zum Sammeln von Zugangskontrollkarten, Fingerabdrücken und Bewegungsdaten verwendet
  2. Datenverarbeitungs- und Steuermodul: Verarbeiten und analysieren Sie die gesammelten Daten und generieren Sie Steuersignale
  3. Kommunikations- und Netzwerksysteme: Kommunikation zwischen Zugangskontrollsystem und Server oder anderen Geräten realisieren
  4. Anzeigesystem: Wird zur Anzeige des Systemstatus und von Steuerinformationen verwendet
  5. Benutzereingabesystem: Einstellungen und Anpassungen über Tasten oder Drehknöpfe

Bedienungsanleitung

Zutrittskarten-, Fingerabdruck- und Bewegungsdaten werden über verschiedene Sensoren erfasst und in Echtzeit auf dem OLED-Display angezeigt. Das System realisiert Zugangsüberwachung und automatische Steuerung durch Datenverarbeitung und Netzwerkkommunikation. Benutzer können Einstellungen über Tasten oder Drehknöpfe vornehmen und den aktuellen Status über das Display anzeigen.

4. Code-Implementierung: Implementieren Sie ein intelligentes Zugangskontrollsystem

4.1 Datenerfassungsmodul

RFID-Leser konfigurieren

Verwenden Sie STM32CubeMX, um die UART-Schnittstelle zu konfigurieren:

  1. Öffnen Sie STM32CubeMX und wählen Sie Ihr STM32-Entwicklungsboard-Modell aus.
  2. Suchen Sie in der grafischen Oberfläche den UART-Pin, der konfiguriert werden muss, und stellen Sie ihn auf den UART-Modus ein.
  3. Generieren Sie Code und importieren Sie ihn in 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. }
Fingerabdrucksensor konfigurieren

Verwenden Sie STM32CubeMX, um die UART-Schnittstelle zu konfigurieren:

  1. Öffnen Sie STM32CubeMX und wählen Sie Ihr STM32-Entwicklungsboard-Modell aus.
  2. Suchen Sie in der grafischen Oberfläche den UART-Pin, der konfiguriert werden muss, und stellen Sie ihn auf den UART-Modus ein.
  3. Generieren Sie Code und importieren Sie ihn in 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 Datenverarbeitungs- und Steuermodul

Das Datenverarbeitungsmodul wandelt Sensordaten in im Steuerungssystem verwendbare Daten um und führt die notwendigen Berechnungen und Analysen durch.

Zugangskontrollalgorithmus

Implementieren Sie einen einfachen Zugangskontrollalgorithmus, um den Schalter des elektromagnetischen Schlosses basierend auf Zugangskarten- und Fingerabdruckdaten zu steuern:

  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 Implementierung des Kommunikations- und Netzwerksystems

WLAN-Modul konfigurieren

Verwenden Sie STM32CubeMX, um die UART-Schnittstelle zu konfigurieren:

  1. Öffnen Sie STM32CubeMX und wählen Sie Ihr STM32-Entwicklungsboard-Modell aus.
  2. Suchen Sie in der grafischen Oberfläche den UART-Pin, der konfiguriert werden muss, und stellen Sie ihn auf den UART-Modus ein.
  3. Generieren Sie Code und importieren Sie ihn in 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 Benutzeroberfläche und Datenvisualisierung

OLED-Display konfigurieren

Verwenden Sie STM32CubeMX, um die I2C-Schnittstelle zu konfigurieren:

  1. Öffnen Sie STM32CubeMX und wählen Sie Ihr STM32-Entwicklungsboard-Modell aus.
  2. Suchen Sie in der grafischen Oberfläche den I2C-Pin, der konfiguriert werden muss, und stellen Sie ihn auf den I2C-Modus ein.
  3. Generieren Sie Code und importieren Sie ihn in STM32CubeIDE.

Code:

Initialisieren Sie zunächst das OLED-Display:

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

Implementieren Sie dann die Datenanzeigefunktion, um den Status und die Daten der Zugangskontrolle auf dem OLED-Bildschirm anzuzeigen:

  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. Anwendungsszenario: Zugriffskontrollverwaltung und -optimierung

Zutrittskontrollmanagement für Bürogebäude

Das intelligente Zugangskontrollsystem kann für die Zugangskontrollverwaltung von Bürogebäuden verwendet werden. Durch die Echtzeitüberwachung von Zugangskontrolldaten kann eine automatische Steuerung realisiert werden, um die Sicherheit und Verwaltungseffizienz von Bürogebäuden zu verbessern.

Verwaltung der Community-Zugriffskontrolle

In Gemeinden können intelligente Zugangskontrollsysteme eine automatisierte Verwaltung von Bewohnern und Besuchern ermöglichen und so die Sicherheit und den Komfort der Gemeinde verbessern.

Verwaltung der Zugangskontrolle zu Hause

Intelligente Zugangskontrollsysteme können für die Hauszugangskontrolle eingesetzt werden, um durch automatisierte Steuerung und Datenanalyse eine intelligentere Hauszugangsverwaltung zu erreichen.

Intelligente Gebäudeforschung

Intelligente Zugangskontrollsysteme können in der Smart-Building-Forschung eingesetzt werden, um durch Datenerfassung und -analyse eine wissenschaftliche Grundlage für die Verwaltung und Optimierung der Gebäudezugangskontrolle zu schaffen.

⬇Helfen Sie allen, Informationen über Mikrocontroller zu organisieren

Eine Sammlung von Projekten, einschließlich stm32 [Quellcode + Entwicklungsdokumente]

Klicken Sie auf die blauen Wörter unten, um es zu erhalten. Vielen Dank für Ihre Unterstützung! ⬇

Klicken Sie hier, um weitere eingebettete Details anzuzeigen

Um das Problem zu besprechen, können Sie eine private Nachricht senden, um STM32-Informationen zu erhalten!

 

6. Problemlösung und Optimierung

Häufig gestellte Fragen und Lösungen

Sensordaten sind ungenau

Stellen Sie sicher, dass die Verbindung zwischen Sensor und STM32 stabil ist und kalibrieren Sie den Sensor regelmäßig, um genaue Daten zu erhalten.

Lösung: Überprüfen Sie, ob die Verbindung zwischen Sensor und STM32 fest ist, und löten oder ersetzen Sie gegebenenfalls den Verbindungsdraht. Gleichzeitig werden die Sensoren regelmäßig kalibriert, um genaue Daten zu gewährleisten.

Die Zugangskontrolle ist instabil

Optimieren Sie den Steuerungsalgorithmus und die Hardwarekonfiguration, um die Instabilität der Zugangskontrolle zu verringern und die Reaktionsgeschwindigkeit des Systems zu verbessern.

Lösung: Optimieren Sie den Steueralgorithmus, passen Sie die Parameter an und reduzieren Sie Schwingungen und Überschwinger. Verwenden Sie hochpräzise Sensoren, um die Genauigkeit und Stabilität der Datenerfassung zu verbessern. Wählen Sie einen effizienteren Aktuator, um die Reaktionsgeschwindigkeit der Zugangskontrolle zu verbessern.

Die Datenübertragung ist fehlgeschlagen

Stellen Sie sicher, dass die Verbindung zwischen dem Wi-Fi-Modul und STM32 stabil ist, optimieren Sie das Kommunikationsprotokoll und verbessern Sie die Zuverlässigkeit der Datenübertragung.

Lösung: Überprüfen Sie, ob die Verbindung zwischen WLAN-Modul und STM32 fest ist, und löten oder ersetzen Sie das Verbindungskabel gegebenenfalls neu. Optimieren Sie Kommunikationsprotokolle, um Verzögerungen bei der Datenübertragung und Paketverlustraten zu reduzieren. Wählen Sie ein stabileres Kommunikationsmodul, um die Zuverlässigkeit der Datenübertragung zu verbessern.

Das Display zeigt eine Anomalie an

Überprüfen Sie die I2C-Kommunikationsleitung, um sicherzustellen, dass die Kommunikation zwischen dem Display und der MCU normal ist, um eine abnormale Anzeige aufgrund von Leitungsproblemen zu vermeiden.

Lösung: Überprüfen Sie, ob die I2C-Pins richtig angeschlossen sind und stellen Sie sicher, dass die Stromversorgung stabil ist. Verwenden Sie ein Oszilloskop, um das I2C-Bussignal zu erkennen und zu bestätigen, ob die Kommunikation normal ist. Tauschen Sie bei Bedarf das Display oder die MCU aus.

Optimierungsvorschläge

Datenintegration und -analyse

Integrieren Sie mehr Arten von Sensordaten und nutzen Sie Datenanalysetechnologie, um Umgebungsbedingungen vorherzusagen und zu optimieren.

Vorschlag: Fügen Sie weitere Überwachungssensoren hinzu, z. B. Türsensoren, Temperatur- und Feuchtigkeitssensoren usw. Nutzen Sie Cloud-Plattformen für die Datenanalyse und -speicherung, um umfassendere Umweltüberwachungs- und Verwaltungsdienste bereitzustellen.

Optimierung der Benutzerinteraktion

Verbessern Sie das Design der Benutzeroberfläche, sorgen Sie für eine intuitivere Datenanzeige und eine einfachere Bedienoberfläche und verbessern Sie das Benutzererlebnis.

Empfehlung: Verwenden Sie ein hochauflösendes Farbdisplay, um ein reichhaltigeres visuelles Erlebnis zu bieten. Entwerfen Sie eine einfache und leicht verständliche Benutzeroberfläche, um den Benutzern die Bedienung zu erleichtern. Bieten Sie eine grafische Datenanzeige, z. B. Echtzeit-Umgebungsparameterdiagramme, historische Aufzeichnungen usw.

Intelligente Steuerungsverbesserung

Fügen Sie ein intelligentes Entscheidungsunterstützungssystem hinzu, um Kontrollstrategien basierend auf historischen Daten und Echtzeitdaten automatisch anzupassen und so eine effizientere Umweltkontrolle und -verwaltung zu erreichen.

Empfehlung: Nutzen Sie Datenanalysetechnologie, um Umweltdaten zu analysieren und personalisierte Vorschläge für das Umweltmanagement bereitzustellen. In Kombination mit historischen Daten können wir mögliche Probleme und Bedürfnisse vorhersagen und Kontrollstrategien im Voraus optimieren.

7. Abschluss und Zusammenfassung

Dieses Tutorial stellt detailliert vor, wie man ein intelligentes Zugangskontrollsystem in ein STM32-Embedded-System implementiert. Es erklärt umfassend alles von der Hardwareauswahl und Softwareimplementierung bis hin zur Systemkonfiguration und Anwendungsszenarien.