本帖最后由 yonko 于 2018-10-28 20:49 編輯
文-沙鷗 2018-10-27
什么是“讀書百遍,其義自見”,就是讀一遍官方手冊,不明覺厲,讀第二遍手冊,有一點點懂,第三遍第四遍即以后,慢慢地,一點一點地,終于懂了。
這讓我終于承認了我不是一目十行、過目不忘、超強理解的天才,幾經周折最終把這個指紋模塊調試成功通過驗證,當然除了我自己,也要感謝廠家的技術支持。本文我將用更加通俗和便于理解的方式把這個模塊的大部分知識點講述一遍,我想,你只需要一遍就能輕松搞定R307了。
1, R307的概述和總體實現流程
不少單位考勤或者門禁是用了指紋的,手指摁一下,嘟的一聲,顯示工號、姓名和上班的時間,你完成了考勤,手指摁一下,啪的一聲,門打開了,你可以順利進入,這就是指紋技術,指紋的應用已經很常見了,其中R307就是其中很常見的指紋模塊。
R307是光學指紋模塊,同時帶有觸摸感應輸出信號接口。
R307可以使用串口或者USB進行操作控制,本文主要講串口的實現方式。
●R307的接口是怎樣的
1.JPG (31.23 KB, 下載次數: 28)
下載附件
2018-10-27 20:48 上傳
2.JPG (42.14 KB, 下載次數: 24)
下載附件
2018-10-27 20:48 上傳
如圖 1圖 2就是R307的主要引腳的接線說明和定義,一般用的時候需要把R307模塊接上位機,上位機可以是電腦,也可以是微處理器(MCU)控制板,也可以是PLC等。假如是MCU,可以如圖 3那樣子接線,PLC也類似,假如是接電腦可以用USB轉TTL串口線,注意串口線與R307模塊需要共地。
注意:R307的串口是TTL電平,不要搞成RS232去了,會損壞模塊。
3.JPG (22.54 KB, 下載次數: 32)
下載附件
2018-10-27 20:48 上傳
R307的5#引腳是觸摸感應的接口,要使用的話先要把6#引腳接到電源正極VCC,那么當有手指觸摸到指紋模塊的時候5#引腳會輸出一個電平,沒有手指觸摸的時候5#引腳輸出另一種電平,MCU檢測這個電平信號變化就能判斷是否有手指觸摸。這個功能是根據需要選擇使用的。
●R307的一些重要的內部系統資源
>>圖像緩沖區ImageBuffer: 模塊內設有一個 72K 字節的圖像緩沖區, 圖像緩沖區 ImageBuffer 用于存放圖像數據和模塊內部圖像處理使用。 使用上傳和下載圖像指令時,圖像為 256 ╳ 288 像素 BMP 格式。 通過 UART 口上傳或下載圖像時為了加快速度,只用到像素字節的高 4 位,即將兩個像素合成一個字節傳送。通過 USB 口則是整 8 位像素。
>>特征文件緩沖區CharBuffer1 和 CharBuffer2: 二個 512bytes(256 字) 大小的特征文件緩沖區,用戶可以通過指令讀寫任意一個緩沖區。CharBuffer1 或 CharBuffer2 既可以用于存放普通特征文件也可以用于存放模板特征文件。
圖像緩沖區和兩個特征文件緩沖區中的內容在模塊斷電后丟失。
>>指紋庫: 不同模塊的指紋庫容量不同。每個指紋模塊的指紋模板都是按照序號存放。序號pageID定義為: 0、 1、 2、 3......(N-1)(N 為模塊指紋庫容量)。用戶只能根據相應序號訪問指紋庫的相應模板內容;相應的存儲和搜索功能都是針對指紋序號進行操作。R307可以存儲1000個指紋模板。
4.JPG (24.07 KB, 下載次數: 51)
下載附件
2018-10-27 20:58 上傳
以上的R307內部資源在接下來的文章中會有應用,不理解也沒什么關系,本文會告訴你怎么使用。
●本文主要講講怎么實現以下兩個功能
① 功能1:把手指摁在指紋模塊上,實現注冊,與一個唯一的編號建立聯系
當手指摁在指紋模塊上的時候,上位機檢測到有觸摸,上位機給這個指紋指定一個編號,有了這個編號就能與什么照片,什么工號,什么姓名一一對應了,這就是指紋的注冊。這個功能用于管理員給新成員注冊指紋的時候使用。
★一般注冊功能需要采集兩次指紋,生成指紋特征文件,合成模板,保存指紋模板到指定的指紋庫ID號存儲空間,這個指紋庫ID號和具體人員的編號對應即可。具體實現流程是這樣的:
->手指摁在指紋模塊上;
->上位機發送讀取指紋圖像到ImageBuffer的指令(GR_Getimage),指紋模塊接收到指令后執行,并反饋是否成功的信息,如不成功,上位機可以選擇再發送一次指令;
->上位機發送根據指紋圖像生成指紋特征文件、存特征文件到CharBuffer1的指令(GR_genchar),指紋模塊接收到指令后執行,反饋是否成功的信息,如不成功,上位機可以選擇再次發送一次指令;
說到特征文件,特征文件的大小為256字節,然后其實我也不是很理解什么是特征文件,我想可以理解為一連串的數字,這個數字串就是你的指紋的唯一代表。根據這個數字串就能辨別不同的指紋。
->上位機發指令再一次讀取指紋圖像(GR_Getimage),生成指紋特征文件,不過這次存特征文件到CharBuffer2(GR_genchar)。
-> 上位機發指令將CharBuffer1 和CharBuffer2中的指紋特征文件合成并注冊指紋模板(GR_RegModel),指紋模板文件會保存在CharBuffer1 和CharBuffer2中,然后等待下位機的反饋信息。我也不清楚指紋模板是什么意思,就暫且理解為指紋模板類似于指紋特征吧。
->上位機發送指令將CharBuffer1 或CharBuffer2中的指紋模板保存在指紋庫中指定的ID號代表的存儲空間里面(GR_StoreChar),等待下位機反饋。
OK,以上就完成了指紋注冊,并與唯一的ID號建立聯系。
② 功能2:把手指摁在指紋模塊上,自動搜索這個指紋代表的編號
當手指摁在指紋模塊上的時候,模塊在指紋庫自動搜索對應的編號,并把編號傳輸給上位機,然后就能在上位機上顯示什么照片、工號、姓名了,需要的話還可以記錄上下班時間、執行開門關門等功能。
★這個的流程就是,先采集指紋圖像到ImageBuffer,根據指紋圖像生成指紋特征存儲到CharBuffer1 或CharBuffer2中(GR_genchar),再以CharBuffer1 或CharBuffer2中的指紋特征查找指紋庫,一般就能獲取匹配的指紋在指紋庫中的ID號。
補充說明一下,雖然指紋特征文件是一連串的數字,但是你要做指紋匹配還是只能在指紋模塊上進行對比,將CharBuffer1 或CharBuffer2中的特征文件與指紋庫中文件對比,因為就算是一個手指,兩次采集的指紋特征文件數據看起來也是很不一樣的,傳到其他設備或者平臺是無法對比的。
2, 一點一點詳解R307的操作
上一章說了我們使用指紋模塊,需要上位機給模塊發指令,模塊執行后再反饋信息。那么通信協議怎樣的呢?指令和反饋信息的格式又是怎樣的呢?
●通信協議
5.JPG (36.56 KB, 下載次數: 32)
下載附件
2018-10-27 20:59 上傳
●指令和反饋信息的格式
R307模塊的指令很多,這里僅僅對GR_GetImage指令和應答反饋信息介紹一下,更多的信息去看官方說明書吧。
6.JPG (42.54 KB, 下載次數: 32)
下載附件
2018-10-27 20:59 上傳
【包頭】是固定的0XEF01。
【模塊地址】默認是0xffffffff,用戶可以自己去用指令修改,這個就是模塊的身份證,在多個模塊使用的時候應該用得著。
【包標識】是根據包的類型變化的,用于區別指令包、應答包、結束包等的類型,具體表示什么意思去查官方手冊吧。
【包長度】這個指令包中包長度屁股后面到結尾所有數據的字節個數,也就是包含了多少個字節的數據。
【指令碼】是根據指令變化的,比如錄入圖像是01,生成特征的指令是02,然后其他的去查官方說明書吧。
【校驗和】就是包標識到校驗和前的所有數據的相加的數值。
7.JPG (29.37 KB, 下載次數: 33)
下載附件
2018-10-28 20:48 上傳
8.JPG (36.77 KB, 下載次數: 43)
下載附件
2018-10-27 20:59 上傳
反饋信息的格式和信息含義與指令的類似,可以做類比思考。
●舉個的例子
這里舉個具體的例子來練一練,看看怎么使用這個模塊的。
->接線。接好線,上電。
->通信協議設置
假如上位機是電腦,用串口助手調試的話,就如圖 9這樣設置串口通信協議吧。
9.JPG (38.93 KB, 下載次數: 26)
下載附件
2018-10-27 21:00 上傳
->發送指令和應答
t1.JPG (71.01 KB, 下載次數: 34)
下載附件
2018-10-27 21:00 上傳
3, 小結
寫了這么多,已經將五十多頁的官方說明書精簡為這么幾頁了,要再精簡的話,只需要關注文中帶★標注的那幾句話即可。更多精彩,歡迎關注微信公眾號“永珂在線”,電路板工控自動化控制器儀器軟件APP定制開發,業務QQ 2531263726。
不過R307并不適合于聯網云端使用,例如一個模塊將指紋特征數據提交到服務器,其他模塊共用服務器這個指紋特征數據,這種情況R307不適合,因為光學指紋模塊每個模塊的光路可能有細微的差異,同一根手指在這個模塊和另一個模塊生成的指紋特征可能會不一致,可能無法識別。如需要聯網使用,大面積電容式指紋模塊是較好的選擇。
微信隨意打賞-小.png (35.62 KB, 下載次數: 38)
下載附件
2018-10-27 21:01 上傳
|