兆易創(chuàng)新本月正式推出GD32F503/505高性能系列32位通用微控制器,新品將全面支持RT-Thread平臺。GD32F503/505高性能系列顯著擴大了基于Arm Cortex-M33內(nèi)核的產(chǎn)品陣容,為GD32 MCU高性能產(chǎn)品線再添新銳。該系列基于Armv8-M架構(gòu),主頻高達(dá)280MHz,具備靈活的存儲配置、高集成度、內(nèi)置多種安全功能,為高性能計算提供堅實基礎(chǔ),可廣泛應(yīng)用于數(shù)字電源、工業(yè)自動化、電機控制、掃地機、BMS、人形機器人等多元化場景。
GD32F503/505系列MCU現(xiàn)已開放樣品及開發(fā)板申請,感興趣的小伙伴可以微信聯(lián)系RT-Thread小師弟(rtthread2020)。
目錄
嵌入式項目介紹
硬件連接
設(shè)計流程
項目源碼
1 嵌入式項目介紹
1.1介紹
基于GD32F527I-EVAL的多媒體門禁系統(tǒng),主控GD32F527I-EVAL,具備攝像頭采集圖像(DMA直接到SDRAM),保存照片,查看照片。DCI數(shù)字圖像接口、TLI接口驅(qū)動TFT-LCD屏幕,ESP01S(MQTT協(xié)議)聯(lián)網(wǎng)上傳數(shù)據(jù),語音識別控制開門、開燈等,RFID門禁卡識別,手機APP遠(yuǎn)程監(jiān)控與控制(HTTP協(xié)議)。

鏈接:【基于 GD32F527I-EVAL 的多媒體智能門禁系統(tǒng)-嗶哩嗶哩】https://b23.tv/hOGykGD
1.2硬件需要:
語音識別模塊、MFRC522、SG90舵機、TFTLCD、OV2640攝像頭、ESP01S、LED燈、調(diào)試串口、按鍵輸入。
1.3主要功能:
語音識別開門、打開燈光、打開攝像頭、拍照、查看照片進行對應(yīng)工作。RFID門禁卡刷去在TFT-LCD屏幕上顯示序列號,同時還會語音播報主人幾,在手機app上顯示燈、門、序列號等信息,還可以進行遠(yuǎn)程控制。
2 硬件連接
2.1 OV2640攝像頭模塊
通過DCI(數(shù)字相機接口)連接到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.2 TFTLCD顯示屏
通過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.3 MFRC522 RFID讀卡器模塊
通過軟件模擬SPI接口連接:
SDA (PA15) - 片選信號
SCK (PB3) - 時鐘信號
MOSI (PB5) - 主機輸出從機輸入
MISO (PB4) - 主機輸入從機輸出
RST (PA8) - 復(fù)位信號
2.4 ESP01S WiFi模塊
通過UART2串口連接:
TX (PB10) - 發(fā)送數(shù)據(jù)到ESP01S
RX (PB11) - 從ESP01S接收數(shù)據(jù)
2.5 語音識別模塊
通過UART1串口連接:
TX (PA2) - 發(fā)送數(shù)據(jù)到語音識別模塊
RX (PA3) - 從語音識別模塊接收數(shù)據(jù)
2.6 SG90舵機
通過TIMER0_CH3 PWM信號控制:
PWM信號 (PA11) - 控制舵機角度
2.7 指示LED燈
通過GPIO控制:
LED1 (PF8) - 一個指示燈
LED2 (PE3) - 另一個指示燈
2.8 調(diào)試串口
通過UART3連接(用于printf調(diào)試輸出):
TX (PC10) - 調(diào)試信息輸出
RX (PC11) - 接收調(diào)試命令
2.9 按鍵輸入
通過外部中斷連接:
WAKEUP按鍵 (PA0) - 外部中斷0
TAMPER按鍵 (PC13) - 外部中斷13
USER按鍵 (PB14) - 外部中斷14
3 設(shè)計流程
3.1針對MRCF522模塊采用SPI通信,對數(shù)據(jù)進行讀取
// 功 能:防沖突檢測讀取選中卡片的卡序列號// 參數(shù)說明: pSnr[OUT]:卡片序列號,4字節(jié)// 返 回: 成功返回MI_OKcharMFRC522_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;}
讀取到的數(shù)據(jù)因為要顯示在LCD屏幕上通過下列代碼進行數(shù)據(jù)轉(zhuǎn)換,4字節(jié)卡號轉(zhuǎn)換為8個字符 + 1結(jié)束符
voidbyte_array_to_hex_string(unsignedchar *byte_array,intlen, char *hex_string){constchar hex_chars[] ="0123456789ABCDEF";inti;for(i =0; i >4) &0x0F]; hex_string[i *2+1] = hex_chars[byte_array[i] &0x0F]; } hex_string[len*2] ='\0';// 添加字符串結(jié)束符}
3.2聯(lián)網(wǎng)功能是通過AT指令控制esp01s進行mqtt協(xié)議發(fā)送數(shù)據(jù)以及解包
voidESP8266_Init(void){ ESP8266_Clear(); printf("1. AT\r\n"); // OLED_Clear(); OLED_ShowString(0,0,"1.AT...",8); while(ESP8266_SendCmd("AT\r\n","OK")) delay_1ms(500); printf("2. CWMODE\r\n"); // OLED_ShowString(0,2,"2.CWMODE...",8); while(ESP8266_SendCmd("AT+CWMODE=1\r\n","OK")) delay_1ms(500); printf("3. AT+CWDHCP\r\n"); // OLED_ShowString(0,4,"3.AT+CWDHCP...",8); while(ESP8266_SendCmd("AT+CWDHCP=1,1\r\n","OK")) delay_1ms(500); printf("4. CWJAP\r\n"); // OLED_ShowString(0,6,"4.CWJAP...",8); while(ESP8266_SendCmd(ESP8266_WIFI_INFO,"GOT IP")) delay_1ms(500); printf("5. ESP8266 Init OK\r\n"); // OLED_Clear(); OLED_ShowString(0,0,"ESP8266 Init OK",16); delay_ms(500);}
3.3語音識別功能通過天問語音模塊進行多線程控制

3.4燈光、用戶識別標(biāo)志燈通過rt_device進行控制,手機APP為通過Vue2結(jié)構(gòu)進行設(shè)計
view>
view> view>
view>
view>
view>
view> view> view>
view> view> view> view>

基于RT-Thread與GD32F527I-EVAL的多媒體門禁系統(tǒng) | 技術(shù)集結(jié)