介绍
基于GD32F527系列MCU的多媒体门禁系统,主控GD32F527系列MCU,具备摄像头采集图像(DMA直接到SDRAM),保存照片,查看照片。DCI数字图像接口、TLI接口驱动TFT-LCD屏幕,Wi-Fi模块(MQTT协议)联网上传数据,语音识别控制开门、开灯等,RFID门禁卡识别,手机APP远程监控与控制(HTTP协议)。

硬件需要
语音识别模块、MFRC522、SG90舵机、TFTLCD、OV2640摄像头、Wi-Fi模块、LED灯、调试串口、按键输入。
主要功能
语音识别开门、打开灯光、打开摄像头、拍照、查看照片进行对应工作。RFID门禁卡刷去在TFT-LCD屏幕上显示序列号,同时还会语音播报主人几,在手机app上显示灯、门、序列号等信息,还可以进行远程控制。
GD32多媒体门禁系统硬件连接关系表,详细硬件连接关系表如下:
2.1OV2640摄像头模块
通过DCI(数字相机接口)连接到GD32:
DCI_PIXCLK (PA6)
DCI_VSYNC (PG9)
DCI_HSYNC (PA4)
DCI_D0 (PC6)
DCI_D1 (PC7)
DCI_D2 (PC8)
DCI_D3 (PC9)
DCI_D4 (PC11)
DCI_D5 (PD3)
DCI_D6 (PB8)
DCI_D7 (PB9)
SCCB_SCL (PA4) -用于配置摄像头
SCCB_SDA (PC6) -用于配置摄像头
2.2TFTLCD显示屏
通过TLI(LCD-TFT控制器)连接:
LCD_R7 (PG6)
LCD_R6 (PH12)
LCD_R5 (PH11)
LCD_R4 (PH10)
LCD_R3 (PH9)
LCD_R2 (PH8)
LCD_R1 (PH3)
LCD_R0 (PH2)
LCD_G7 (PI2)
LCD_G6 (PI1)
LCD_G5 (PI0)
LCD_G4 (PH15)
LCD_G3 (PH14)
LCD_G2 (PH13)
LCD_G1 (PE6)
LCD_G0 (PE5)
LCD_B7 (PI7)
LCD_B6 (PI6)
LCD_B5 (PI5)
LCD_B4 (PI4)
LCD_B3 (PG11)
LCD_B2 (PG10)
LCD_B1 (PG12)
LCD_B0 (PE4)
LCD_HSYNC (PI10)
LCD_VSYNC (PI9)
LCD_PCLK (PG7)
LCD_PWM_BackLight (PB15)
2.3MFRC522 RFID读卡器模块
通过软件模拟SPI接口连接:
SDA (PA15) -片选信号
SCK (PB3) -时钟信号
MOSI (PB5) -主机输出从机输入
MISO (PB4) -主机输入从机输出
RST (PA8) -复位信号
2.4Wi-Fi模块
通过UART2串口连接:
TX (PB10) -发送数据到Wi-Fi模块
RX (PB11) -从Wi-Fi模块接收数据
2.5语音识别模块
通过UART1串口连接:
TX (PA2) -发送数据到语音识别模块
RX (PA3) -从语音识别模块接收数据
2.6SG90舵机
通过TIMER0_CH3 PWM信号控制:
PWM信号 (PA11) -控制舵机角度
2.7指示LED灯
通过GPIO控制:
LED1 (PF8) -一个指示灯
LED2 (PE3) -另一个指示灯
2.8调试串口
通过UART3连接(用于printf调试输出):
TX (PC10) -调试信息输出
RX (PC11) -接收调试命令
2.9按键输入
通过外部中断连接:
WAKEUP按键(PA0) -外部中断0
TAMPER按键(PC13) -外部中断13
USER按键(PB14) -外部中断14
设计流程
针对MRCF522模块采用SPI通信,对数据进行读取
//功 能:防冲突检测读取选中卡片的卡序列号
//参数说明: pSnr[OUT]:卡片序列号,4字节
//返 回: 成功返回MI_OK
charMFRC522_Anticoll(unsignedchar *pSnr)
{
char status;
unsignedchar i, snr_check = 0;
unsignedint unLen;
unsignedchar ucComMF522Buf[MAXRLEN];
ClearBitMask(Status2Reg, 0x08);
Write_MFRC522(BitFramingReg, 0x00);
ClearBitMask(CollReg, 0x80);
ucComMF522Buf[0] = PICC_ANTICOLL1;
ucComMF522Buf[1] = 0x20;
status = MFRC522_ToCard(PCD_TRANSCEIVE, ucComMF522Buf, 2, ucComMF522Buf, &unLen);
if (status == MI_OK)
{
for (i = 0; i < 4; i++)
{
*(pSnr + i) = ucComMF522Buf[i];
snr_check ^= ucComMF522Buf[i];
}
if (snr_check != ucComMF522Buf[i])
{
status = MI_ERR;
}
}
SetBitMask(CollReg, 0x80);
return status;
}
读取到的数据因为要显示在LCD屏幕上通过下列代码进行数据转换,4字节卡号转换为8个字符+ 1结束符
voidbyte_array_to_hex_string(unsignedchar *byte_array, int len, char *hex_string)
{
constchar hex_chars[] = "0123456789ABCDEF";
int i;
for (i = 0; i < len; i++)
{
hex_string[i * 2] = hex_chars[(byte_array[i] >> 4) & 0x0F];
hex_string[i * 2 + 1] = hex_chars[byte_array[i] & 0x0F];
}
hex_string[len * 2] = '�'; // 添加字符串结束符
}
联网功能是通过AT指令控制Wi-Fi模块进行mqtt协议发送数据以及解包
voidESP8266_Init(void)
{
ESP8266_Clear();
printf("1. AT
");
// OLED_Clear(); OLED_ShowString(0,0,"1.AT...",8);
while (ESP8266_SendCmd("AT
", "OK"))
delay_1ms(500);
printf("2. CWMODE
");
// OLED_ShowString(0,2,"2.CWMODE...",8);
while (ESP8266_SendCmd("AT+CWMODE=1
", "OK"))
delay_1ms(500);
printf("3. AT+CWDHCP
");
// OLED_ShowString(0,4,"3.AT+CWDHCP...",8);
while (ESP8266_SendCmd("AT+CWDHCP=1,1
", "OK"))
delay_1ms(500);
printf("4. CWJAP
");
// OLED_ShowString(0,6,"4.CWJAP...",8);
while (ESP8266_SendCmd(ESP8266_WIFI_INFO, "GOT IP"))
delay_1ms(500);
printf("5. ESP8266 Init OK
");
// OLED_Clear(); OLED_ShowString(0,0,"ESP8266 Init OK",16); delay_ms(500);
}
语音识别功能通过天问语音模块进行多线程控制

灯光、用户识别标志灯通过rt_device进行控制,手机APP为通过Vue2结构进行设计
多媒体智能门禁系统 Multimedia Smart Access Control System 灯光状态 {{ led == 1 ? '开启' : '关闭' }} 门状态 {{ door == 1 ? '开门' : '关门' }} 门禁卡 {{ formatCardId(cardid) }} 无卡片信息 拍照时间 {{ carmtime || '暂无记录' }} 远程控制 LED4 灯光控制 门锁控制
全部0条评论
快来发表一下你的评论吧 !