Condivisione della tecnologia

Tutorial sul sistema di controllo accessi intelligente STM32

2024-07-12

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

Sommario

  1. introduzione
  2. Preparazione ambientale
  3. Nozioni di base sul sistema di controllo degli accessi intelligente
  4. Implementazione del codice: Implementazione del sistema di controllo accessi intelligente 4.1 Modulo di raccolta dati 4.2 Modulo di elaborazione e controllo dati 4.3 Implementazione del sistema di comunicazione e rete 4.4 Interfaccia utente e visualizzazione dei dati
  5. Scenario applicativo: gestione e ottimizzazione del controllo accessi
  6. Risoluzione dei problemi e ottimizzazione
  7. Chiusura e riepilogo

1. Introduzione

Il sistema di controllo accessi intelligente combina vari sensori, attuatori e moduli di comunicazione attraverso il sistema integrato STM32 per ottenere monitoraggio in tempo reale, controllo automatico e trasmissione dati del controllo accessi. Questo articolo introdurrà in dettaglio come implementare un sistema di controllo degli accessi intelligente nel sistema STM32, inclusa la preparazione dell'ambiente, l'architettura del sistema, l'implementazione del codice, gli scenari applicativi, le soluzioni dei problemi e i metodi di ottimizzazione.

2. Preparazione dell'ambiente

Preparazione dell'hardware

  1. Consiglio di sviluppo:Scheda di sviluppo serie STM32F4 o serie STM32H7
  2. debugger: ST-LINK V2 o debugger integrato
  3. sensore: Come lettore di schede RFID, sensore di impronte digitali, sensore PIR
  4. Attuatore: Come blocco elettromagnetico, cicalino, indicatore luminoso a LED
  5. Modulo di comunicazione: Come il modulo Wi-Fi, il modulo ZigBee
  6. Schermo: Come il display OLED
  7. Pulsante o manopola: utilizzato per l'input e le impostazioni dell'utente
  8. Alimentazione elettrica:Adattatore di alimentazione

Preparazione del software

  1. Ambiente di sviluppo integrato (IDE):STM32CubeIDE o Keil MDK
  2. Strumenti di debug:Utilità ST-LINK STM32 o GDB
  3. Librerie e middleware:Libreria HAL STM32 e FreeRTOS

fasi di installazione

  1. Scarica e installa STM32CubeMX
  2. Scarica e installa STM32CubeIDE
  3. Configura il progetto STM32CubeMX e genera il progetto STM32CubeIDE
  4. Installa le librerie e i driver necessari

3. Nozioni di base sul sistema di controllo degli accessi intelligente

Architettura del sistema di controllo

Il sistema di controllo accessi intelligente è composto dalle seguenti parti:

  1. Modulo di acquisizione dati: Utilizzato per raccogliere carte di controllo accessi, impronte digitali e dati di movimento
  2. Modulo di elaborazione e controllo dati: Elaborare e analizzare i dati raccolti e generare segnali di controllo
  3. Sistemi di comunicazione e di rete: Realizza la comunicazione tra il sistema di controllo degli accessi e il server o altre apparecchiature
  4. sistema di visualizzazione: Utilizzato per visualizzare lo stato del sistema e le informazioni di controllo
  5. sistema di input dell'utente: Impostazioni e regolazioni tramite pulsanti o manopole

Descrizione della funzione

Tessera di accesso, impronta digitale e dati di movimento vengono raccolti attraverso diversi sensori e visualizzati in tempo reale sul display OLED. Il sistema realizza il monitoraggio degli accessi e il controllo automatico attraverso l'elaborazione dei dati e la comunicazione di rete. Gli utenti possono effettuare impostazioni tramite pulsanti o manopole e visualizzare lo stato corrente tramite il display.

4. Implementazione del codice: implementare un sistema di controllo degli accessi intelligente

4.1 Modulo di acquisizione dati

Configura il lettore RFID

Utilizzare STM32CubeMX per configurare l'interfaccia UART:

  1. Apri STM32CubeMX e seleziona il modello della tua scheda di sviluppo STM32.
  2. Nell'interfaccia grafica, trova il pin UART che deve essere configurato e impostalo sulla modalità UART.
  3. Genera codice e importalo in STM32CubeIDE.

Codice:

  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. }
Configura il sensore di impronte digitali

Utilizzare STM32CubeMX per configurare l'interfaccia UART:

  1. Apri STM32CubeMX e seleziona il modello della tua scheda di sviluppo STM32.
  2. Nell'interfaccia grafica, trova il pin UART che deve essere configurato e impostalo sulla modalità UART.
  3. Genera codice e importalo in STM32CubeIDE.

Codice:

  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 Modulo elaborazione dati e controllo

Il modulo di elaborazione dati converte i dati del sensore in dati che possono essere utilizzati nel sistema di controllo ed esegue i calcoli e le analisi necessarie.

Algoritmo di controllo degli accessi

Implementa un semplice algoritmo di controllo degli accessi per controllare l'interruttore della serratura elettromagnetica in base ai dati della carta di accesso e dell'impronta digitale:

  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 Comunicazione e implementazione del sistema di rete

Configura il modulo Wi-Fi

Utilizzare STM32CubeMX per configurare l'interfaccia UART:

  1. Apri STM32CubeMX e seleziona il modello della tua scheda di sviluppo STM32.
  2. Nell'interfaccia grafica, trova il pin UART che deve essere configurato e impostalo sulla modalità UART.
  3. Genera codice e importalo in STM32CubeIDE.

Codice:

  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 Interfaccia utente e visualizzazione dei dati

Configura il display OLED

Utilizzare STM32CubeMX per configurare l'interfaccia I2C:

  1. Apri STM32CubeMX e seleziona il modello della tua scheda di sviluppo STM32.
  2. Nell'interfaccia grafica, trova il pin I2C che deve essere configurato e impostalo sulla modalità I2C.
  3. Genera codice e importalo in STM32CubeIDE.

Codice:

Innanzitutto, inizializza il display OLED:

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

Quindi implementare la funzione di visualizzazione dei dati per visualizzare lo stato del controllo degli accessi e i dati sullo schermo 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. Scenario applicativo: gestione e ottimizzazione del controllo accessi

Gestione del controllo degli accessi agli edifici adibiti ad uffici

Il sistema di controllo accessi intelligente può essere utilizzato per la gestione del controllo accessi degli edifici adibiti ad uffici. Attraverso il monitoraggio in tempo reale dei dati di controllo degli accessi, è possibile realizzare un controllo automatico per migliorare la sicurezza e l'efficienza gestionale degli edifici adibiti ad uffici.

Gestione del controllo degli accessi alla comunità

Nelle comunità, i sistemi intelligenti di controllo degli accessi possono realizzare una gestione automatizzata di residenti e visitatori, migliorando la sicurezza e la comodità della comunità.

Gestione del controllo degli accessi domestici

I sistemi di controllo degli accessi intelligenti possono essere utilizzati per il controllo degli accessi domestici per ottenere una gestione degli accessi domestici più intelligente attraverso il controllo automatizzato e l'analisi dei dati.

Ricerca sull'edilizia intelligente

I sistemi di controllo degli accessi intelligenti possono essere utilizzati nella ricerca sugli edifici intelligenti per fornire basi scientifiche per la gestione e l'ottimizzazione del controllo degli accessi attraverso la raccolta e l'analisi dei dati.

⬇Aiuta tutti a organizzare le informazioni sui microcontrollori

Una raccolta di progetti incluso stm32 [codice sorgente + documenti di sviluppo]

Fai clic sulle parole blu qui sotto per ottenerlo, grazie per il tuo supporto! ⬇

Fare clic per ulteriori dettagli incorporati

Per discutere del problema, puoi inviare un messaggio privato per ricevere informazioni su stm32!

 

6. Risoluzione dei problemi e ottimizzazione

Domande e soluzioni frequenti

I dati del sensore non sono accurati

Assicurarsi che la connessione tra il sensore e STM32 sia stabile e calibrare regolarmente il sensore per ottenere dati accurati.

Soluzione: verificare se la connessione tra il sensore e STM32 è salda e, se necessario, risaldare o sostituire il cavo di collegamento. Allo stesso tempo, i sensori vengono calibrati regolarmente per garantire dati accurati.

Il controllo degli accessi è instabile

Ottimizza l'algoritmo di controllo e la configurazione hardware per ridurre l'instabilità del controllo degli accessi e migliorare la velocità di risposta del sistema.

Soluzione: ottimizzare l'algoritmo di controllo, regolare i parametri e ridurre l'oscillazione e il superamento. Utilizza sensori ad alta precisione per migliorare l'accuratezza e la stabilità della raccolta dei dati. Scegli un attuatore più efficiente per migliorare la velocità di risposta del controllo accessi.

Trasferimento dati non riuscito

Garantire che la connessione tra il modulo Wi-Fi e STM32 sia stabile, ottimizzare il protocollo di comunicazione e migliorare l'affidabilità della trasmissione dei dati.

Soluzione: verificare se la connessione tra il modulo Wi-Fi e STM32 è salda e, se necessario, saldare nuovamente o sostituire il cavo di collegamento. Ottimizza i protocolli di comunicazione per ridurre i ritardi di trasmissione dei dati e i tassi di perdita di pacchetti. Scegli un modulo di comunicazione più stabile per migliorare l'affidabilità della trasmissione dei dati.

Il display mostra un'anomalia

Controllare la linea di comunicazione I2C per garantire che la comunicazione tra il display e l'MCU sia normale per evitare visualizzazioni anomale dovute a problemi di linea.

Soluzione: verificare se i pin I2C sono collegati correttamente e assicurarsi che l'alimentazione sia stabile. Utilizzare un oscilloscopio per rilevare il segnale del bus I2C e verificare se la comunicazione è normale. Se necessario, sostituire il display o l'MCU.

Suggerimenti per l'ottimizzazione

Integrazione e analisi dei dati

Integra più tipi di dati dei sensori e utilizza la tecnologia di analisi dei dati per prevedere e ottimizzare le condizioni ambientali.

Suggerimento: aggiungere altri sensori di monitoraggio, come sensori per porte, sensori di temperatura e umidità, ecc. Utilizzare piattaforme cloud per l'analisi e l'archiviazione dei dati per fornire servizi di monitoraggio e gestione ambientale più completi.

Ottimizzazione dell'interazione dell'utente

Migliorare la progettazione dell'interfaccia utente, fornire una visualizzazione dei dati più intuitiva e un'interfaccia operativa più semplice e migliorare l'esperienza dell'utente.

Raccomandazione: utilizzare un display a colori ad alta risoluzione per fornire un'esperienza visiva più ricca. Progettare un'interfaccia utente semplice e di facile comprensione per facilitare l'utilizzo da parte degli utenti. Fornire la visualizzazione grafica dei dati, come grafici dei parametri ambientali in tempo reale, record storici, ecc.

Miglioramento del controllo intelligente

Aggiungi un sistema di supporto decisionale intelligente per adattare automaticamente le strategie di controllo basate su dati storici e in tempo reale per ottenere un controllo e una gestione ambientale più efficienti.

Raccomandazione: utilizzare la tecnologia di analisi dei dati per analizzare i dati ambientali e fornire suggerimenti personalizzati sulla gestione ambientale. Combinati con i dati storici, possiamo prevedere possibili problemi ed esigenze e ottimizzare in anticipo le strategie di controllo.

7. Chiusura e sintesi

Questo tutorial introduce in dettaglio come implementare un sistema di controllo degli accessi intelligente in un sistema embedded STM32, dalla selezione dell'hardware, all'implementazione del software alla configurazione del sistema e agli scenari applicativi.