
Screen-Lock智能藍牙指紋鎖基于樂鑫ESP32C3模組構建, 搭載 RISC-V 32 位單核處理器,并使用海凌科ZW101及LD2402模塊實現智能屏鎖功能,支持人體檢測,適用于學習監督,員工統計,信息安全保護。
Screen-Lock智能藍牙指紋鎖采用Espressif ESP32C3模組作為本項目主控,提供WIFI及藍牙能力;采用Hi-Link ZW101指紋模組,實現指紋解鎖輸入密碼功能;采用Hi-Link LD2402人體雷達,實現人體距離檢測功能;采用TP4054充電IC,實現鋰電池充電功能;支持3V振動馬達,用于提醒,總體功能清單如下:
藍牙HID輸入
離開工位時自動鎖屏
回到工位時指紋解鎖
統計工作時長及離開時長
統計休息次數
統計經過時的次數
久坐提醒
用眼距離過近提醒
Web控制中心
Screen-Lock智能紋鎖架構設計

主控電路這里選用ESP32C3芯片,借助C3的藍牙功能通過HID實現鎖屏和輸入密碼,借助C3的WIFI功能通過局域網搭建Web服務實現可視化數據及設備控制中心。C3芯片價格便宜且引腳IO足夠。

指紋模塊選用Hi-Link ZW101模塊,由于該模塊默認串口波特率較低,所以使用軟件模擬串口進行通訊,把C3的硬件串口留給LD2402使用,這里還引出了一條T_OUT信號線,這是一條觸摸信號線,你可以把他當作觸摸按鍵使用。

人體檢測模塊選用HI-Link LD2402人體存在24G毫米波雷達模塊,這個模塊的串口波特率為115400,比較高,所以這里使用硬件串口通訊,模組帶一個輸出IO,用于判斷是否有人存在,不過這個IO比較多余,可以去除掉,因為串口會實時發送數據告訴人體距離,如果你有擴展需求可以去掉這個IO接其他外設。

供電電路使用LDO方案,這里選用ME6217C33M5G芯片,尺寸小巧,外圍器件較少。

充電IC選用TP4054,價格便宜,而且體積小,很適合集成,CHRG這里也引出一條IO,可以反饋電池充電狀態。

屏幕選用SSD1306,0.91寸屏,用作信息提示。

振動馬達也是用作提醒功能使用,3.3V使用NMOS通過IO控制,我這里用的AO3400A支持5.7A,可以選便宜點的,馬達額定電流只有80mA。
Screen-Lock智能紋鎖軟件開發

開發環境
軟件環境:VSCode+PlatformIO
開發語言:C/C++
依賴庫
EspSoftwareSerial:軟串口驅動庫
Adafruit SSD1306:屏幕驅動庫
藍牙HID驅動
藍牙HID基于BleKeyboard庫修改,原庫年久失修,由于安全協議問題會導致最新Windows及Android系統拒絕與其通訊。通過在原庫 void BleKeyboard::begin (void) 中添加以下兩行解決
pSecurity->setCapability(ESP_IO_CAP_NONE);//安全設置pSecurity->setInitEncryptionKey(ESP_BLE_ENC_KEY_MASK | ESP_BLE_ID_KEY_MASK);
指紋驅動
指紋庫基于Hi-Link提供的例程修改,原例程缺少一些數據位判斷及適當延時,導致接收到的數據包未過濾而返回通訊失敗。通過對原庫receiveResponse()函數改良,添加數據位判斷,以及init初始化添加等待延時解決。
boolreceiveResponse(){uint8_t response[64];uint8_tindex=0;uint32_t startTime = millis();//先等待包頭 EF01bool headerFound = false;while(millis() - startTime 2000) { ?//?延長等待時間到2秒if?(fingerprintSerial.available()) {uint8_t b = fingerprintSerial.read();if?(!headerFound) {if?(index?==?0?&& b ==?0xEF) {? ? ? ? response[index++] = b;? ? ? } elseif (index?==?1?&& b ==?0x01) {? ? ? ? response[index++] = b;? ? ? ? headerFound = true;? ? ? }?else?{? ? ? ? index?=?0;?//?重新開始找包頭? ? ? }? ? }?else?{? ? ? response[index++] = b;if?(index?>=9) {//包長度在第7和8字節uint16_t packetLen = ((uint16_t)response[7] <8) | response[8];if?(index?>=9+ packetLen) {//收到完整包break; } } } }}#if defined(HLK_DEBUG)Serial.println("Received response:");printResponse(response,index);#endif// 簡單校驗包頭和確認碼if(index>=12&& response[0] ==0xEF&& response[1] ==0x01&& response[9] ==0x00) {returntrue;}returnfalse;}
固件燒錄
首次燒錄連接設備時,主控可能會不斷重啟導致端口不穩定,這時候要先按住BOOT鍵,然后再按RST鍵,最后松開BOOT鍵進入下載模式即可。
如果你通過源碼燒錄,不需要自己設置分區,platformio會自動按照默認分區表配置分區燒錄,你只需要點擊燒錄箭頭即可自動編譯,自動查找端口,自動燒錄。

為了簡化燒錄,附件中提供的固件是bootloader.bin + partitions.bin + firmware.bin 合并后的固件,所以如果你使用附件提供的合并固件,僅需設置燒錄地址為0即可。

如果你通過源碼編譯,則會在build目錄下產生bootloader.bin partitions.bin firmware.bin這三個bin文件,所以在燒錄時請按照下圖提供的分區地址燒錄。

原理圖

PCB板

Screen-Lock智能紋鎖成品





-
模塊
+關注
關注
7文章
2843瀏覽量
53361 -
嵌入式
+關注
關注
5202文章
20522瀏覽量
335500 -
指紋門鎖
+關注
關注
0文章
12瀏覽量
2645
發布評論請先 登錄
【華強芯城指紋模塊試用申請】指紋門鎖
藍牙智能門鎖解決方案 BLE藍牙指紋智能門鎖開發方案
智能指紋鎖成智能家居入口,或迎來大規模爆發
基于W600 RT-Thread智能指紋門鎖的設計方案
大神教你:嵌入式LWIP網絡客戶端設計
一步一步教你用Zview擬合交流阻抗譜
30元,嵌入式大神教你用ZW101+LD2402模塊手搓智能指紋門鎖!
評論