嵌入式AIoT必看!30+行業(yè)場景技術分享,重塑端側(cè)硬件
Screen-Lock智能藍牙指紋鎖基于樂鑫ESP32C3模組構(gòu)建, 搭載 RISC-V 32 位單核處理器,并使用海凌科ZW101及LD2402模塊實現(xiàn)智能屏鎖功能,支持人體檢測,適用于學習監(jiān)督,員工統(tǒng)計,信息安全保護。
Screen-Lock智能藍牙指紋鎖采用Espressif ESP32C3模組作為本項目主控,提供WIFI及藍牙能力;采用Hi-Link ZW101指紋模組,實現(xiàn)指紋解鎖輸入密碼功能;采用Hi-Link LD2402人體雷達,實現(xiàn)人體距離檢測功能;采用TP4054充電IC,實現(xiàn)鋰電池充電功能;支持3V振動馬達,用于提醒,總體功能清單如下:
藍牙HID輸入
離開工位時自動鎖屏
回到工位時指紋解鎖
統(tǒng)計工作時長及離開時長
統(tǒng)計休息次數(shù)
統(tǒng)計經(jīng)過時的次數(shù)
久坐提醒
用眼距離過近提醒
Web控制中心
Screen-Lock智能紋鎖架構(gòu)設計
主控電路這里選用ESP32C3芯片,借助C3的藍牙功能通過HID實現(xiàn)鎖屏和輸入密碼,借助C3的WIFI功能通過局域網(wǎng)搭建Web服務實現(xiàn)可視化數(shù)據(jù)及設備控制中心。C3芯片價格便宜且引腳IO足夠。
指紋模塊選用Hi-Link ZW101模塊,由于該模塊默認串口波特率較低,所以使用軟件模擬串口進行通訊,把C3的硬件串口留給LD2402使用,這里還引出了一條T_OUT信號線,這是一條觸摸信號線,你可以把他當作觸摸按鍵使用。
人體檢測模塊選用HI-Link LD2402人體存在24G毫米波雷達模塊,這個模塊的串口波特率為115400,比較高,所以這里使用硬件串口通訊,模組帶一個輸出IO,用于判斷是否有人存在,不過這個IO比較多余,可以去除掉,因為串口會實時發(fā)送數(shù)據(jù)告訴人體距離,如果你有擴展需求可以去掉這個IO接其他外設。
供電電路使用LDO方案,這里選用ME6217C33M5G芯片,尺寸小巧,外圍器件較少。
充電IC選用TP4054,價格便宜,而且體積小,很適合集成,CHRG這里也引出一條IO,可以反饋電池充電狀態(tài)。
屏幕選用SSD1306,0.91寸屏,用作信息提示。
振動馬達也是用作提醒功能使用,3.3V使用NMOS通過IO控制,我這里用的AO3400A支持5.7A,可以選便宜點的,馬達額定電流只有80mA。
Screen-Lock智能紋鎖軟件開發(fā)
開發(fā)環(huán)境
軟件環(huán)境:VSCode+PlatformIO
開發(fā)語言:C/C++
依賴庫
EspSoftwareSerial:軟串口驅(qū)動庫
Adafruit SSD1306:屏幕驅(qū)動庫
藍牙HID驅(qū)動
藍牙HID基于BleKeyboard庫修改,原庫年久失修,由于安全協(xié)議問題會導致最新Windows及Android系統(tǒng)拒絕與其通訊。通過在原庫 void BleKeyboard::begin (void) 中添加以下兩行解決
pSecurity->setCapability(ESP_IO_CAP_NONE);//安全設置pSecurity->setInitEncryptionKey(ESP_BLE_ENC_KEY_MASK | ESP_BLE_ID_KEY_MASK);
指紋驅(qū)動
指紋庫基于Hi-Link提供的例程修改,原例程缺少一些數(shù)據(jù)位判斷及適當延時,導致接收到的數(shù)據(jù)包未過濾而返回通訊失敗。通過對原庫receiveResponse()函數(shù)改良,添加數(shù)據(jù)位判斷,以及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字節(jié)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;}
固件燒錄
首次燒錄連接設備時,主控可能會不斷重啟導致端口不穩(wěn)定,這時候要先按住BOOT鍵,然后再按RST鍵,最后松開BOOT鍵進入下載模式即可。
如果你通過源碼燒錄,不需要自己設置分區(qū),platformio會自動按照默認分區(qū)表配置分區(qū)燒錄,你只需要點擊燒錄箭頭即可自動編譯,自動查找端口,自動燒錄。
為了簡化燒錄,附件中提供的固件是bootloader.bin + partitions.bin + firmware.bin 合并后的固件,所以如果你使用附件提供的合并固件,僅需設置燒錄地址為0即可。
如果你通過源碼編譯,則會在build目錄下產(chǎn)生bootloader.bin partitions.bin firmware.bin這三個bin文件,所以在燒錄時請按照下圖提供的分區(qū)地址燒錄。
原理圖
PCB板
Screen-Lock智能紋鎖成品
-
模塊
+關注
關注
7文章
2815瀏覽量
52433 -
嵌入式
+關注
關注
5177文章
19996瀏覽量
325096 -
指紋門鎖
+關注
關注
0文章
12瀏覽量
2408
發(fā)布評論請先 登錄
【華強芯城指紋模塊試用申請】指紋門鎖
【華強芯城指紋模塊試用申請】智能門鎖
藍牙智能門鎖解決方案 BLE藍牙指紋智能門鎖開發(fā)方案
智能指紋鎖成智能家居入口,或迎來大規(guī)模爆發(fā)
基于W600 RT-Thread智能指紋門鎖的設計方案
基于STM32F103做的WIFI指紋智能門鎖
嵌入式指紋鎖的設計與實現(xiàn)

智能指紋門鎖有什么優(yōu)勢
一步一步教你用Zview擬合交流阻抗譜

評論