實訓4 RFID刷卡開鎖

2021-10-07 00:14:24 字數 4079 閱讀 6566

通過ml-rc522讀取s50ic卡的使用者身份證明資訊使用spi通訊協議傳送給esp32,esp32接受到資訊後與自身設定的可用的使用者身份證明資訊進行對比,並顯示是否驗證通過。

1.連線esp32和ml-rc522的引腳

2.將程式上傳到esp32

3.使用ml-rc522讀取標籤卡片使用者身份證明並列印驗證資訊

4.若驗證通過,驅動電機

ml-rc522 rfid模組

s50 異性ic卡

esp32開發板

sg90舵機

杜邦線

1)連線引腳

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 一般對陣列快速清零...