人臉識別門禁專案總結(STM32部分)

2021-10-01 15:14:51 字數 3164 閱讀 9493

大概乙個月前吧,因為學校要驗收實驗室的一些專案,所以老師就把這活給了我和我的小夥伴,小夥伴那邊主要搞得是樹莓派那邊,我這邊就是負責的就是32。因為學長提前都做好過,意思就是我們再浮現一下,順便學學,增加增加經驗。當時剛學完ucosiii,實戰是非常重要的,因此當時就把這活攬下來了。過程嘛,挺難受的,乙個周弄出來其實時間還是充裕的,就是還要上課什麼的,基本也只能晚上搞,自己前幾天還浪的很,所以大概加班了三天才弄出來,hhhh,不過幸好還是弄出來了。

敲的學長的圖(我們搞的沒拍。。。。。。)

首先,由人機互動模組oled顯示整個門禁的功能。分四塊:1.人臉識別開鎖功能2.密碼開鎖功能3.來客(遊客)歡迎功能4.root操作功能(包括修改密碼,增加使用者,觀察來訪記錄)當選用1,2功能進行開鎖時,成功開鎖後,繼電器控制的燈亮起(用此來模擬門鎖),蜂鳴器連續發聲兩次。如果開鎖失敗,蜂鳴器會間斷發聲兩次,發出警告。這樣基本模擬完成了乙個人臉識別門禁。

下面是各功能詳細闡述:

1.人臉識別開鎖功能:這個功能的主控端主要是樹莓派4b,裡面包含了訓練好的人臉資料集,通過opencv將來訪人員和資料集的人臉進行比對,比對完成後,樹莓派端將所含資訊打包傳送回stm32端,32接收到包後,通過比對資料來辨別是否開啟門鎖。

2.密碼開鎖功能:進入後,輸入密碼,如果密碼相同則開啟門鎖,反之不開

3.來客(遊客)歡迎功能:沒啥用的功能,不談

4.root操作功能:進入root前,首先要輸入root密碼。進入後,root下大致分了分了三個功能。首先是修改root密碼,使用者輸入原密碼兩次進行比對,若都和原root密碼相同,則再輸入新root密碼修改即可。下來是門客到訪記錄,通過串列埠列印,列印近期開門記錄,包括哪乙個使用者 以及來訪日期。最後乙個功能是使用者的增刪改查一些操作,但是不能增加人臉識別的使用者(因為這個需要後端訓練),密碼輸入的使用者可以。

想了想,主函式還是得放出來的

#include

//const char *persons_date[15]=;

char persons_date[25]

[6];

//最大可以新增25個使用者

u8 buf=

;u16 punch_num;

int face_x=

80,face_y=

60;

u8 face_id;

//人臉號

intmain

(void

)

主函式就是以上部分,完成了各功能模組的初始化。提醒一下,在進行初始化的時候,一定要把能弄得全一弄,哎,怎麼說呢。就是像系統初始化,延時初始化,串列埠初始化等等這些大部分每個程式都要用到的東西全一弄,省的到時候出問題了,半天不知道問題出在哪了。關jtag介面當然也是必須的,好幾次都在這裡採坑了。因為自己主要負責的是32端,所以總結大部分是和32有關的。

一.oled顯示問題:

當時學長用的是一塊lcd的模組,而當時我們沒有那個模組了,所以只能用oled模組來代替。遇到的問題就是oled怎麼都顯示不出來。。。。。。。以下是其部分**

oled_clear()

;oled_showstring(00

,00,"smata door");

oled_shownumber(00

,10,4

,calendar.w_year,12)

;oled_shownumber(00

,15,2

,calendar.w_month,12)

;oled_shownumber(00

,20,2

,calendar.w_date,12)

;oled_shownumber(00

,25,2

,calendar.hour,12)

;oled_shownumber(00

,30,2

,calendar.min,12)

;oled_showstring(00

,35,"/");

oled_showstring(00

,40,"/");

oled_showstring(00

,45,":");

oled_showstring(00

,50,"a:face");

oled_showstring(00

,55,"b:pwd");

oled_showstring(00

,60,"c:visit");

oled_showstring(00

,65,"d:root");

oled_refresh_gram()

;

為什麼不回顯呢?主要問題有兩個。一是自己忘了呼叫oled_refresh_gram()函式這個函式的功能就是把你寫好的內容,重新整理到oled顯示屏上。如果沒有這個函式,你寫好的內容是進入不了oled顯示屏上特定的位址的,所以更不要說顯示了。

下乙個問題就是io口問題::這個問題我吐了,一句話就是沒關jtag,以後一定記著!

二.按鍵問題(至今未解決)

如果說前面的是小吐,那這個就是狂吐。為什麼這麼說呢,按鍵它一直在出問題,出各種問題!!!原始碼實在是不想貼了,改吐了都。。。一開始按鍵對應不上,按這個鍵卻顯示那個鍵的功能。解決的方法就是==人也是導體,所以盡量不要接觸按鍵底下的走針,影響很大!!!==這是第乙個,第二個就是,第三列總是有問題。嗯,這就是現在我還是沒有解決的,網上找了一下資料,也沒有相關的。具體什麼問題呢,向上圖一樣,我用的按鍵是4x4按鍵,第三列的所有數字,按下後都會顯示第二列第四行的數字,並且一次性列印很多,這是我無法理解的。基本能排查的問題都排查了,像是io口問題,**問題,硬體問題均排查了,考慮了不下5種錯誤情況,可依舊沒有解決。。。。。。。以後一定要好好看看。。。。。

這次專案是把學長的東西重做,第一感受就是,和學長的差距太大了,和大佬的差距太大了。有原始碼,有資料,卻還是搞了很長時間。。。。。那幾天心情挺低落的,還好。。。。。

學期末到了,最後一篇正式部落格,寒假繼續自己的求學之旅。嗯,只有學習,才是最真實的。

stm32指紋 藍芽識別門禁系統專案詳解

摘要 本著做stm32專案的初心,在11月份中旬便開始著手了這個專案的開展,如今已經12月份下旬了,也是將近乙個多月了。也算是接近專案的尾聲了,在這段時間,學到了不少東西,記錄下來,也算是對自己的乙個交代吧。專案物料清單 專案物料清單很重要,在做專案的前期,找了一些資料,大部分都是沒有物料清單的,這...

STM32識別車牌

本系統以stm32f103rbt6微控制器為主控,控制ov7670攝像頭 帶fifo 進行影象採集,通過模式識別 匹配,最後獲得車牌的識別結果。為盡大可能的提高處理速度,stm32微控制器進行了16倍頻。識別主要過程包括影象採集 二值化分析 識別車牌區域 字元分割 字元匹配五過程。影象採集 影象通過...

STM32電燈總結

stm32點亮三個led燈學習總結 在進行位址進行巨集定義時候,一定要強制性型別轉化 現在我們開始對時鐘rcc裡面的rcc apb2 enr使能暫存器進行位址的巨集定義,有 define periph base unsigned int 0x40000000 define ahb periph ba...