通過ml-rc522讀取s50ic卡的使用者身份證明資訊使用spi通訊協議傳送給esp32,esp32接受到資訊後與自身設定的可用的使用者身份證明資訊進行對比,並顯示是否驗證通過。
1.連線esp32和ml-rc522的引腳2.將程式上傳到esp32
3.使用ml-rc522讀取標籤卡片使用者身份證明並列印驗證資訊
4.若驗證通過,驅動電機
ml-rc522 rfid模組1)連線引腳s50 異性ic卡
esp32開發板
sg90舵機
杜邦線
rc522:
rc522的引腳:
引腳依次為:sda sck mosi miso scl gnd rst 3.3v
esp32:
esp32的引腳圖:
連線:將rc522與esp32上對應的引腳連線:
2)上傳程式
#include
#include
#include
#include <
ble2902
.h>
#include
#include
#include <
spi.h>
#include <
mfrc522
.h>
#define ss_pin
21//定義rc522的sda引腳的接線位置
#define rst_pin
22//定義rc522的rst引腳的接線位置
#define servo_pin
15blecharacteristic *pcharacteristic;
bool deviceconnected =
false
;#define service_uuid
"6e400001-b5a3-f393-e0a9-e50e24dcca9e"
#define characteristic_uuid_rx
"6e400002-b5a3-f393-e0a9-e50e24dcca9e"
#define characteristic_uuid_tx
"6e400003-b5a3-f393-e0a9-e50e24dcca9e"
#define openinterval 5000
/* * 按鍵
*/const byte rows=4
;//four rows
const byte cols=3
;//three columns
char keys[
rows][
cols]=
,,,}
;byte rowpins[
rows]=
;//connect to the row pinouts of the keypad
byte colpins[
cols]=
;//connect to the column pinouts of the keypad
/* * rfid
*/struct rfidtag
;mfrc522
rfid
(ss_pin
,rst_pin);
//例項化類
struct rfidtag tags[20]
=,"mini_tag"},
,"mini_tag1"},
,"mini_tag2"},
};byte totaltags =
sizeof
(tags)
/sizeof
(rfidtag)
;//計算結構資料的數量
keypad keypad =
keypad
(makekeymap
(keys)
, rowpins, colpins,
rows
,cols);
byte ble_rx_buffer[20]
;//接收藍芽指令
byte verfi_code[6]
=;//初始密碼
byte init_pw[6]
=;//初始按鍵密碼
servo myservo;
int pos=0;
bool toggle;
//開鎖判斷位
void
locker
(bool toggle)
else
delay
(500);
// 等馬達轉到定位
myservo.
detach()
;}class
myservercallbacks
:public bleservercallbacks
;void
ondisconnect
(bleserver* pserver)};
//55aa1000313233343536 藍芽傳送開門指令,hex 16進製制傳送
class
mycallbacks
:public blecharacteristiccallbacks
if(ble_rx_buffer[0]
==0x55
&& ble_rx_buffer[1]
==0xaa
)else
break;}
case
0x20
:case
0x30
:case
0x31
:case
0x32:}
//locker(toggle);}}
};/*配置藍芽
* 引數:blename 藍芽名字
*/void
setupble
(string blename)
/*按鍵輸入的匹配函式
* 引數:key為一次按鍵輸入的值
*/bool compare_pw
(char key)
else
keys_len=0;
//清零
break;}
case
'*':
default
:break;}
}}return pw_flag;
}void
printdec
(byte *buffer, byte buffersize)}/*
* rfid匹配函式
* 引數:card_num為卡片資料的總數
*/bool match_card
(byte card_num)
if(i==card_num-1)
}// 使放置在讀卡區的ic卡進入休眠狀態,不再重複讀卡
rfid.
picc_halta()
;// 停止讀卡模組編碼
rfid.
pcd_stopcrypto1()
;}return foundtag;
}void
setup()
void
loop()
if(toggle)if(
millis()
- toggle_time > openinterval && lock_back_flag)
}
3)讀取s50資訊並驗證
將註冊過的標籤接近ml-rc522串列埠監視器列印驗證結果,串列埠顯示標籤的名字,servo馬達轉動。
否則,串列埠顯示驗證失敗。
實訓小結(4)
今天已經實訓結束了,得個空閒的時候將之前沒上傳的筆記上傳 隨機數隨機數其實是偽隨機數,這些數其實是有規律的 seed 種子 初始值 隨機數生成器 演算法 返回兩樣東西 隨機數,生成下乙個隨機數的種子 這個種子用來再繼續生成新的隨機數 while num 5 np.random.seed 1 prin...
實訓課任務4
任務04 身份證號碼中出生年月的提取 1 實訓目的 掌握字串函式的使用方法。2 實訓內容 1 任務描述 編寫乙個程式 輸入乙個身份證號,判斷該號碼對應的人是否是18至25歲女孩,是則輸出 yes 否則輸出 no 2 功能要求 輸入一行給出正整數n 100 是輸入的身份證號碼的個數。判斷身份證號持有者...
蘇嵌實訓4
日期 2018.10.11 班級 15電信單招班 姓名 劉鑫 學號 15090734 本日任務完成情況 本日任務已按計畫完成。本日開發中出現的問題彙總 無 本日未解決問題 無 本日開發收穫 mkfifo 建立具名管道 pipe 建立管道 alarm 設定訊號傳送鬧鐘 memset 一般對陣列快速清零...