**
基于Arduino的密碼+指紋智能鎖(LCD1602顯示器)**
設(shè)計(jì)背景:隨著科技的不斷進(jìn)步,智能鎖的使用也越來(lái)越普遍,市場(chǎng)上的智能鎖多種多樣,有單一的智能鎖,比如密碼鎖,藍(lán)牙鎖,指紋鎖,人臉識(shí)別技術(shù)開鎖,甚至還有瞳孔識(shí)別等高階智能鎖;不過(guò)我們?nèi)粘R?jiàn)到的、使用普遍的多為他們的結(jié)合體,功能并不單一。雖然智能門鎖出現(xiàn)的時(shí)間已經(jīng)比較長(zhǎng)了,已經(jīng)算是一款非常成熟的產(chǎn)品了,但是一款產(chǎn)品的發(fā)展年限,一定是永無(wú)止境的,需要開發(fā)人員不斷地追求進(jìn)步,才是現(xiàn)在的市場(chǎng),因?yàn)橛脩舻男枨笤诓粩嗟淖兓,所以產(chǎn)品自然會(huì)變,而產(chǎn)品的優(yōu)點(diǎn)和缺點(diǎn)也是避免不了的。換句話說(shuō),盡管智能鎖發(fā)展得很好,但是也存在一定的缺點(diǎn)和問(wèn)題,比如安全性、穩(wěn)定性、耐用度等。在這個(gè)背景下,以及對(duì)智能鎖懷著好奇之心還有不可描述的興趣,我決定自己做一個(gè)智能鎖感受一下。
作為一名窮逼大學(xué)生,要做一個(gè)智能鎖肯定得考慮到成本問(wèn)題,密碼鎖雖然成本低但是我又不想只是做一個(gè)單一的密碼鎖,想玩點(diǎn)特殊的,最后決定使用光學(xué)指紋識(shí)別模塊,提升智能鎖的檔次,光學(xué)指紋識(shí)別模塊相比于其他指紋識(shí)別模塊更便宜而且使用簡(jiǎn)單。
然后我們?cè)俸?jiǎn)單了解以下指紋鎖,方便我們后續(xù)對(duì)它進(jìn)行設(shè)計(jì)和研究。指紋鎖是在原有機(jī)械鎖的技術(shù)上增加指紋開鎖功能,指紋開鎖的主要技術(shù)是將用戶的指紋信息先儲(chǔ)存起來(lái),當(dāng)用戶用指紋驗(yàn)證時(shí),指紋識(shí)別系統(tǒng)會(huì)把用戶的指紋和儲(chǔ)存的指紋相對(duì)比,如果驗(yàn)證的指紋與預(yù)先儲(chǔ)存的指紋相匹配,門鎖就會(huì)打開,如果不相匹配,會(huì)提示錯(cuò)誤,門鎖無(wú)法打開。指紋鎖是通過(guò)指紋是否匹配的方法來(lái)認(rèn)識(shí)主人與開鎖的,那么識(shí)別指紋的真假成了指紋鎖的一個(gè)重要技術(shù)指標(biāo)。目前市場(chǎng)廣泛使用識(shí)別指紋的探頭可分了兩類,一類是光學(xué)指紋頭。較便宜,另一類是半導(dǎo)體指紋頭靈敏度更好也更精細(xì),當(dāng)然價(jià)格也是光學(xué)指紋頭的兩倍多。當(dāng)然,除了這兩種,還有溫差感應(yīng)式指紋識(shí)別和生物射頻指紋識(shí)別,這兩種并不常見(jiàn),原因是前者受溫度影響較大,識(shí)別面積范圍小,后者雖然很牛逼,但是老貴了。扯遠(yuǎn)了,感興趣的話大家可以去了解一下指紋學(xué)。
指紋鎖是機(jī)械鎖升級(jí)過(guò)來(lái)的,其主要目的是能夠保障財(cái)物安全的情況下,提高了我們生活的便利性,相比于機(jī)械鎖,指紋鎖是高出一個(gè)級(jí)別的,不法分子想要偽造主人的假指紋,比撬鎖的難度高出幾百倍。
總的來(lái)說(shuō),使用指紋鎖比使用機(jī)械鎖要更安全、更便捷、更舒心。大家可以放心大膽使用。密碼鎖就不多解釋了,因?yàn)樘R?jiàn)了,懂得都懂。
當(dāng)然,做出來(lái)的產(chǎn)品那得必須考慮他的實(shí)用性,做出來(lái)不能用或者不實(shí)用,只能看那就違背了產(chǎn)品本身的定義。設(shè)計(jì)制作這個(gè)智能鎖時(shí),我還在住在大學(xué)宿舍,那么,首當(dāng)其沖的便是我們宿舍的門鎖,對(duì),我得想想怎么把普通的機(jī)械鎖在不拆除的前提下改成智能鎖,最后,對(duì)門鎖進(jìn)行點(diǎn)對(duì)點(diǎn)的受力分析,決定用舵機(jī)做傳動(dòng)機(jī)構(gòu),用釣魚線做傳動(dòng)繩拉動(dòng)門鎖開關(guān),實(shí)現(xiàn)開鎖。因?yàn)槊總(gè)人原先的機(jī)械鎖都不一樣,要改動(dòng)的話大家根據(jù)實(shí)際情況自己設(shè)計(jì),這里只提供一個(gè)想法,就不多解釋或者上圖了。當(dāng)然如果要拆掉原先的鎖自己換上一個(gè)鎖軸那就簡(jiǎn)單多了。好,廢話不多說(shuō),總之大家可以簡(jiǎn)單的理解為我是用舵機(jī)模擬開鎖。
先給大家簡(jiǎn)單介紹以下設(shè)計(jì)所需要的硬件,之后會(huì)告訴大家怎么連線,包括仿真和實(shí)物接線圖,我只是給出一個(gè)參考,大家自己設(shè)計(jì)的話完全可以根據(jù)自己的設(shè)計(jì)要求自己更改接線端口。
控制芯片Arduino UNO
額…這個(gè)不多說(shuō),新手的話網(wǎng)上有很多資料,老手的話就更不用說(shuō)了,我這里就直接放上在網(wǎng)上看到寫的比較好的之一,新手可以學(xué)習(xí)了解以下。
Arduino UNO數(shù)據(jù)手冊(cè)(新手入門)
圖片來(lái)源于上述網(wǎng)址,意在讓大家認(rèn)識(shí)一下Arduino UNO 芯片
4×4矩陣按鍵
4×4矩陣鍵盤又稱為行列式鍵盤,它是用4條I/O線作為行線,4條I/O線作為列線組成的鍵盤。在行線和列線的每一個(gè)交叉點(diǎn)上,設(shè)置一個(gè)按鍵。這樣鍵盤中按鍵的個(gè)數(shù)是4×4個(gè)。這種行列式鍵盤結(jié)構(gòu)能夠有效地提高單片機(jī)系統(tǒng)中I/O口的利用率。由于單片機(jī)IO端口具有線與的功能,因此當(dāng)任意一個(gè)按鍵按下時(shí),行和列都有一根線被線與,通過(guò)運(yùn)算就可以得出按鍵的坐標(biāo)從而判斷按鍵鍵值。
下圖是我在某寶買的矩陣鍵盤包括它的原理圖:
LCD1602顯示器
這個(gè)顯示器我相信很多電子芯片愛(ài)好者肯定都有接觸或了解過(guò),要想用它來(lái)顯示你總得知道它的工作原理吧,不清楚的話,前人之述備矣,網(wǎng)上解釋得很清楚了,大家可以去了解一下,方便后續(xù)工作地進(jìn)行。
LCD1602一般是16條引腳,我也有見(jiàn)過(guò)14條引腳的,但與16腳的相比缺少了背光電源A(15腳)和地線K(16腳),起始功能原理差不多,常見(jiàn)的還是16引腳的。下面是它的功能引腳,知道這個(gè)有利于接線。還有啥其他的具體知識(shí),網(wǎng)上搜一下相關(guān)數(shù)據(jù)手冊(cè)就全出來(lái)了,這里就不多此一舉了。
AS608光學(xué)指紋識(shí)別模塊
ATK-AS608 指紋識(shí)別模塊是 ALIENTEK 推出的一款高性能的光學(xué)指紋識(shí)別模塊。
ATK-AS608 模塊采用了國(guó)內(nèi)著名指紋識(shí)別芯片公司杭州晟元芯片技術(shù)有限公司(Synochip)
的 AS608 指紋識(shí)別芯片。芯片內(nèi)置 DSP 運(yùn)算單元,集成了指紋識(shí)別算法,能高效快速采集圖像并識(shí)別指紋特征。模塊配備了串口、USB 通訊接口,用戶無(wú)需研究復(fù)雜的圖像處理及指紋識(shí)別算法,只需通過(guò)簡(jiǎn)單的串口、USB 按照通訊協(xié)議便可控制模塊。本模塊可應(yīng)用于各種考勤機(jī)、保險(xiǎn)箱柜、指紋門禁系統(tǒng)、指紋鎖等場(chǎng)合。
它長(zhǎng)這樣:
PCB原理圖:
模塊引腳描述:
大家可以去網(wǎng)上找一下相關(guān)數(shù)據(jù)手冊(cè),當(dāng)然,我相信你要是去某寶買的話都會(huì)有數(shù)據(jù)手冊(cè)給你的,只是想學(xué)習(xí)了解,沒(méi)有去買,然后實(shí)在找不到的話,我最后會(huì)放在我提供的資料包里,大家下載后可學(xué)習(xí)。
MG90S舵機(jī)
我用的舵機(jī)是小規(guī)格的,俗稱9g舵機(jī),了解過(guò)舵機(jī)的都知道,舵機(jī)實(shí)際上是通過(guò)脈寬調(diào)制來(lái)控制舵機(jī)角度的,舵機(jī)的控制信號(hào)是周期20ms 的脈寬調(diào)制(PWM)信號(hào),其中脈沖寬度從 0.5ms-2.5ms,相對(duì)應(yīng)舵盤的位置為 0~180 度,呈線性變化。我用Arduino做控制的話,實(shí)際上根據(jù)舵機(jī)的原理,寫代碼的方式也有兩種,一種是直接寫角度,另一種就是寫入PWM信號(hào)。代碼我后面也會(huì)給大家提供出來(lái)供大家下載。具體舵機(jī)啥原理,這玩意的資料網(wǎng)上很多,寫的也很清楚,這里不做多解釋。
圖片來(lái)源于網(wǎng)絡(luò)。附圖是為了強(qiáng)調(diào),舵機(jī)三條線的顏色分別表示為中間紅色接開發(fā)板5V電源,灰色接地,橙色接信號(hào)端,一般都是這樣的。了解一下方便后續(xù)接線。
LCD1602的VSS,VEE,RW均接地,其中為了使顯示更清晰,VEE需要串一個(gè)電位器調(diào)節(jié)電阻或者直接串上1K~2.2K左右的電阻,LCD1602的VDD端接開發(fā)板5V電源;舵機(jī)紅線接開發(fā)板5V電源,灰線接地;AS608指紋模塊Vi接開發(fā)板3.3V電源端,GND接開發(fā)板地。
Proteus仿真接線圖:
因?yàn)榉抡胬锸亲霾坏街讣y識(shí)別的,所以就沒(méi)有在仿真中加入指紋識(shí)別模塊,大家完全可以用某些元件代替,比如說(shuō)就加個(gè)LED燈,我就懶得加了,因?yàn)槲易龇抡嬷饕窍肟碙CD1602配合按鍵的效果以及我的代碼能不能應(yīng)付得過(guò)來(lái),所以仿真做不做指紋模塊對(duì)我來(lái)說(shuō)不重要。
Proteus仿真效果圖(部分):
用Arduino做控制芯片的話,肯定都聽(tīng)過(guò)Arduino專門的IDE編程軟件,去官網(wǎng)下載就好,也有Mixly圖形化編程軟件,但是個(gè)人還是建議用專門的IDE軟件會(huì)好點(diǎn),因?yàn)殚_源的庫(kù)文件比較多。說(shuō)到庫(kù)文件,好像指紋識(shí)別的庫(kù)文件需要自行下載并移到IDE庫(kù)文件夾中的,一般是不自帶的,我提供的資料里面有這次設(shè)計(jì)所需要的所有庫(kù)文件,大家只需要把我里面壓縮包Adafruit_Fingerprint_Sensor_Library.rar和Keypad-master.rar解壓后復(fù)制到Arduino根目錄的libraries文件夾內(nèi)即可。
由于程序篇幅太長(zhǎng),這里僅提供思路,源碼在我的資料包里都有。
寫程序之前,得先弄清楚你要想實(shí)現(xiàn)什么功能,對(duì)于Arduino而言,很多代碼都是開源的,可以直接復(fù)制了用,我們只需要根據(jù)自己實(shí)際電路微改一下就行。廢話不多說(shuō),整個(gè)密碼+指紋鎖就是既能用密碼開鎖,也能用指紋開鎖,LCD1602時(shí)刻給用戶顯示提示,免得用戶一臉懵逼,不知道自己在干嘛,按鍵得充分應(yīng)用起來(lái),我是設(shè)置了按鍵有讓用戶選擇開鎖方式的功能,在主界面時(shí)用戶可以選擇開鎖方式,按下指定鍵即可切換開鎖方式,使用靈活,當(dāng)密碼輸入正確,顯示器做出提示,舵機(jī)轉(zhuǎn)動(dòng);當(dāng)指紋識(shí)別正確,顯示器做出提示,舵機(jī)也能轉(zhuǎn)動(dòng)。錯(cuò)誤的話當(dāng)然會(huì)提示你錯(cuò)誤,重新輸入或者重新指紋識(shí)別啦。具體看我資料里的用戶使用手冊(cè),需要強(qiáng)調(diào)以下,因?yàn)槟承┰颍姨峁┑倪@個(gè)資料只是基礎(chǔ)版,能夠基本實(shí)現(xiàn)其功能,供大家學(xué)習(xí)了解足以,完美版也有而且我還在不斷完善,感興趣且想要深入了解的朋友可以在討論區(qū)留言討論,如果針對(duì)初版有更好的想法歡迎討論。
下面我附上部分代碼:
/*定義部分*/Servo myservo;指紋識(shí)別函數(shù)我就不說(shuō)了,因?yàn)槌醮姹菊娴木秃芎?jiǎn)單,給大家個(gè)提示,我們完全可以直接在官網(wǎng)提供的Adafruit_Fingerprint_Sensor_Library文件里看到它的指紋載入、識(shí)別、刪除函數(shù),然后做些修改或增添就好,有C語(yǔ)言基礎(chǔ)那就是小CASE。
實(shí)物效果圖:
我把初代,能夠基本實(shí)現(xiàn)其功能的資料都放在那里了,里面還有使用手冊(cè),感興趣的可以下載看看。
密碼+指紋鎖資料包
然后我錄了視頻放B站了,感興趣的可以看一下,喜歡就點(diǎn)贊加關(guān)注吧!
整體效果視
歡迎光臨 (http://www.torrancerestoration.com/bbs/) | Powered by Discuz! X3.1 |