Berbagi teknologi

Tutorial sistem kontrol akses cerdas STM32

2024-07-12

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

Daftar isi

  1. perkenalan
  2. Persiapan lingkungan
  3. Dasar-dasar sistem kontrol akses cerdas
  4. Implementasi kode: Implementasi sistem kontrol akses cerdas 4.1 Modul akuisisi data 4.2 Modul pemrosesan dan kontrol data 4.3 Implementasi sistem komunikasi dan jaringan 4.4 Antarmuka pengguna dan visualisasi data
  5. Skenario aplikasi: manajemen dan optimalisasi kontrol akses
  6. Pemecahan Masalah dan Optimasi
  7. Penutupan dan ringkasan

1. Perkenalan

Sistem kontrol akses cerdas menggabungkan berbagai sensor, aktuator, dan modul komunikasi melalui sistem tertanam STM32 untuk mencapai pemantauan waktu nyata, kontrol otomatis, dan transmisi data kontrol akses. Artikel ini akan memperkenalkan secara rinci cara mengimplementasikan sistem kontrol akses cerdas dalam sistem STM32, termasuk persiapan lingkungan, arsitektur sistem, implementasi kode, skenario aplikasi, solusi masalah, dan metode pengoptimalan.

2. Persiapan lingkungan

Persiapan perangkat keras

  1. Papan pengembangan:Seri STM32F4 atau papan pengembangan seri STM32H7
  2. debugger: ST-LINK V2 atau debugger bawaan
  3. sensor: Seperti pembaca kartu RFID, sensor sidik jari, sensor PIR
  4. Aktuator: Seperti kunci elektromagnetik, bel, lampu indikator LED
  5. Modul komunikasi: Seperti modul Wi-Fi, modul ZigBee
  6. Menampilkan: Seperti layar OLED
  7. Tombol atau kenop: digunakan untuk input dan pengaturan pengguna
  8. Sumber Daya listrik:Adaptor daya

Persiapan perangkat lunak

  1. Lingkungan Pengembangan Terpadu (IDE):STM32CubeIDE atau Keil MDK
  2. Alat debug:Utilitas STM32 ST-LINK atau GDB
  3. Perpustakaan dan middleware:Perpustakaan STM32 HAL dan FreeRTOS

langkah-langkah instalasi

  1. Unduh dan instal STM32CubeMX
  2. Unduh dan instal STM32CubeIDE
  3. Konfigurasikan proyek STM32CubeMX dan buat proyek STM32CubeIDE
  4. Instal perpustakaan dan driver yang diperlukan

3. Dasar-dasar sistem kontrol akses cerdas

Arsitektur sistem kendali

Sistem kontrol akses pintar terdiri dari bagian-bagian berikut:

  1. Modul akuisisi data: Digunakan untuk mengumpulkan kartu kontrol akses, sidik jari, dan data gerakan
  2. Modul pemrosesan dan kontrol data: Memproses dan menganalisis data yang dikumpulkan dan menghasilkan sinyal kontrol
  3. Sistem Komunikasi dan Jaringan: Mewujudkan komunikasi antara sistem kontrol akses dan server atau peralatan lainnya
  4. sistem tampilan: Digunakan untuk menampilkan status sistem dan mengontrol informasi
  5. sistem masukan pengguna: Pengaturan dan penyesuaian melalui tombol atau kenop

Deskripsi fungsi

Data kartu akses, sidik jari, dan gerakan dikumpulkan melalui berbagai sensor dan ditampilkan pada layar OLED secara real time. Sistem mewujudkan pemantauan akses dan kontrol otomatis melalui pemrosesan data dan komunikasi jaringan. Pengguna dapat melakukan pengaturan melalui tombol atau kenop dan melihat status saat ini melalui layar.

4. Implementasi kode: menerapkan sistem kontrol akses cerdas

4.1 Modul akuisisi data

Konfigurasikan pembaca RFID

Gunakan STM32CubeMX untuk mengkonfigurasi antarmuka UART:

  1. Buka STM32CubeMX dan pilih model papan pengembangan STM32 Anda.
  2. Di antarmuka grafis, temukan pin UART yang perlu dikonfigurasi dan atur ke mode UART.
  3. Hasilkan kode dan impor ke STM32CubeIDE.

Kode:

  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. }
Konfigurasikan sensor sidik jari

Gunakan STM32CubeMX untuk mengkonfigurasi antarmuka UART:

  1. Buka STM32CubeMX dan pilih model papan pengembangan STM32 Anda.
  2. Di antarmuka grafis, temukan pin UART yang perlu dikonfigurasi dan atur ke mode UART.
  3. Hasilkan kode dan impor ke STM32CubeIDE.

Kode:

  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 Modul pemrosesan dan kontrol data

Modul pemrosesan data mengubah data sensor menjadi data yang dapat digunakan dalam sistem kontrol dan melakukan perhitungan dan analisis yang diperlukan.

Algoritma kontrol akses

Menerapkan algoritme kontrol akses sederhana untuk mengontrol sakelar kunci elektromagnetik berdasarkan data kartu akses dan sidik jari:

  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 Implementasi sistem komunikasi dan jaringan

Konfigurasikan modul Wi-Fi

Gunakan STM32CubeMX untuk mengkonfigurasi antarmuka UART:

  1. Buka STM32CubeMX dan pilih model papan pengembangan STM32 Anda.
  2. Di antarmuka grafis, temukan pin UART yang perlu dikonfigurasi dan atur ke mode UART.
  3. Hasilkan kode dan impor ke STM32CubeIDE.

Kode:

  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 Antarmuka pengguna dan visualisasi data

Konfigurasikan tampilan OLED

Gunakan STM32CubeMX untuk mengkonfigurasi antarmuka I2C:

  1. Buka STM32CubeMX dan pilih model papan pengembangan STM32 Anda.
  2. Di antarmuka grafis, temukan pin I2C yang perlu dikonfigurasi dan atur ke mode I2C.
  3. Hasilkan kode dan impor ke STM32CubeIDE.

Kode:

Pertama, inisialisasi tampilan OLED:

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

Kemudian terapkan fungsi tampilan data untuk menampilkan status kontrol akses dan data pada layar 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. Skenario aplikasi: manajemen dan optimalisasi kontrol akses

Manajemen kontrol akses gedung perkantoran

Sistem kontrol akses cerdas dapat digunakan untuk manajemen kontrol akses gedung perkantoran. Melalui pemantauan data kontrol akses secara real-time, kontrol otomatis dapat diwujudkan untuk meningkatkan keamanan dan efisiensi manajemen gedung perkantoran.

Manajemen kontrol akses komunitas

Di komunitas, sistem kontrol akses cerdas dapat mewujudkan manajemen otomatis terhadap penghuni dan pengunjung, sehingga meningkatkan keselamatan dan kenyamanan komunitas.

Manajemen kontrol akses rumah

Sistem kontrol akses cerdas dapat digunakan untuk kontrol akses rumah guna mencapai manajemen akses rumah yang lebih cerdas melalui kontrol otomatis dan analisis data.

Penelitian bangunan cerdas

Sistem kontrol akses cerdas dapat digunakan dalam penelitian gedung pintar untuk memberikan dasar ilmiah bagi manajemen dan optimalisasi kontrol akses gedung melalui pengumpulan dan analisis data.

⬇Bantu semua orang mengatur informasi tentang mikrokontroler

Kumpulan proyek termasuk stm32 [kode sumber + dokumen pengembangan]

Klik kata biru di bawah untuk mendapatkannya, terima kasih atas dukungan Anda! ⬇

Klik untuk rincian lebih lanjut yang disematkan

Untuk mendiskusikan masalah tersebut, Anda dapat mengirim pesan pribadi untuk menerima informasi stm32!

 

6. Pemecahan masalah dan optimasi

Pertanyaan dan solusi yang sering diajukan

Data sensor tidak akurat

Pastikan koneksi antara sensor dan STM32 stabil dan kalibrasi sensor secara berkala untuk mendapatkan data yang akurat.

Solusi: Periksa apakah sambungan antara sensor dan STM32 sudah kuat, dan solder ulang atau ganti kabel penghubung jika perlu. Pada saat yang sama, sensor dikalibrasi secara berkala untuk memastikan keakuratan data.

Kontrol akses tidak stabil

Optimalkan algoritma kontrol dan konfigurasi perangkat keras untuk mengurangi ketidakstabilan kontrol akses dan meningkatkan kecepatan respons sistem.

Solusi: Optimalkan algoritma kontrol, sesuaikan parameter, dan kurangi osilasi dan overshoot. Gunakan sensor presisi tinggi untuk meningkatkan akurasi dan stabilitas pengumpulan data. Pilih aktuator yang lebih efisien untuk meningkatkan kecepatan respons kontrol akses.

Transfer data gagal

Pastikan koneksi antara modul Wi-Fi dan STM32 stabil, optimalkan protokol komunikasi, dan tingkatkan keandalan transmisi data.

Solusi: Periksa apakah sambungan antara modul Wi-Fi dan STM32 sudah kuat, dan solder ulang atau ganti kabel sambungan jika perlu. Optimalkan protokol komunikasi untuk mengurangi penundaan transmisi data dan tingkat kehilangan paket. Pilih modul komunikasi yang lebih stabil untuk meningkatkan keandalan transmisi data.

Layar menunjukkan kelainan

Periksa jalur komunikasi I2C untuk memastikan komunikasi antara layar dan MCU normal untuk menghindari tampilan tidak normal karena masalah saluran.

Solusi: Periksa apakah pin I2C terhubung dengan benar dan pastikan catu daya stabil. Gunakan osiloskop untuk mendeteksi sinyal bus I2C dan memastikan apakah komunikasi normal. Jika perlu, ganti layar atau MCU.

Saran optimasi

Integrasi dan analisis data

Integrasikan lebih banyak jenis data sensor dan gunakan teknologi analisis data untuk memprediksi dan mengoptimalkan kondisi lingkungan.

Saran: Tambahkan lebih banyak sensor pemantauan, seperti sensor pintu, sensor suhu dan kelembaban, dll. Gunakan platform cloud untuk analisis dan penyimpanan data guna menyediakan layanan pemantauan dan pengelolaan lingkungan yang lebih komprehensif.

Pengoptimalan interaksi pengguna

Tingkatkan desain antarmuka pengguna, berikan tampilan data yang lebih intuitif dan antarmuka pengoperasian yang lebih sederhana, serta tingkatkan pengalaman pengguna.

Rekomendasi: Gunakan tampilan warna beresolusi tinggi untuk memberikan pengalaman visual yang lebih kaya. Rancang antarmuka pengguna yang sederhana dan mudah dipahami untuk memudahkan pengguna dalam pengoperasiannya. Menyediakan tampilan data grafis, seperti bagan parameter lingkungan waktu nyata, catatan sejarah, dll.

Peningkatan kontrol cerdas

Tambahkan sistem pendukung keputusan cerdas untuk secara otomatis menyesuaikan strategi pengendalian berdasarkan data historis dan real-time untuk mencapai pengendalian dan pengelolaan lingkungan yang lebih efisien.

Rekomendasi: Gunakan teknologi analisis data untuk menganalisis data lingkungan dan memberikan saran pengelolaan lingkungan yang dipersonalisasi. Dikombinasikan dengan data historis, kami dapat memprediksi kemungkinan masalah dan kebutuhan serta mengoptimalkan strategi pengendalian terlebih dahulu.

7. Penutup dan ringkasan

Tutorial ini memperkenalkan secara rinci cara mengimplementasikan sistem kontrol akses cerdas dalam sistem tertanam STM32. Tutorial ini menjelaskan semuanya secara komprehensif mulai dari pemilihan perangkat keras dan implementasi perangkat lunak hingga konfigurasi sistem dan skenario aplikasi.