91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

帶RFID的ESP32訪問控制

454398 ? 來源:網(wǎng)絡(luò)整理 ? 作者:佚名 ? 2019-11-04 17:26 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

步驟1:操作

RFID系統(tǒng)基本上由帶有解碼器的收發(fā)器,天線和應(yīng)答器組成。以及它如何運(yùn)作?這些卡中有一個(gè)卷軸。當(dāng)您從閱讀器接近它們時(shí),它們會(huì)通過連接到閱讀器的天線發(fā)出無線電信號(hào)。帶電標(biāo)簽(即卡)對(duì)存儲(chǔ)在其內(nèi)存中的信息進(jìn)行調(diào)制,然后將該數(shù)據(jù)發(fā)送到讀取器。然后,該卡進(jìn)入讀取區(qū)域并從讀取器接收電源以執(zhí)行操作。 RFID閱讀器接收標(biāo)簽發(fā)送的信息,將數(shù)據(jù)解碼并將其發(fā)送到服務(wù)器應(yīng)用程序。

步驟2:內(nèi)存

《如前所述,這種芯片內(nèi)部有1k的內(nèi)存。并且,EEPROM存儲(chǔ)器的組織方式如下:4個(gè)塊的16個(gè)扇區(qū)。每個(gè)塊包含16個(gè)字節(jié)。請(qǐng)記住,在源代碼中,您僅引用塊號(hào)。

步驟3:電路

在此圖中,帶有RFID芯片的鑰匙扣,除了組裝件,我們還有傳統(tǒng)的卡。以及該電路如何工作?嗯,在互聯(lián)網(wǎng)上,您會(huì)發(fā)現(xiàn)RFID-RC522模塊非常適合Arduino使用,但問題是該Arduino(無論是Mega,Nano),無論型號(hào)如何,都無法通信,例如WiFi網(wǎng)絡(luò),以太網(wǎng),彼此之間。所以我們?cè)谶@里使用ESP32。它已經(jīng)具有藍(lán)牙,RF,即易于通信。那么我在這里指出,幾乎所有與Arduino兼容的東西都可以在ESP32上使用。

返回電路,當(dāng)在對(duì)卡或芯片進(jìn)行分析時(shí),綠色LED亮起時(shí),這意味著標(biāo)識(shí)已完成,訪問被釋放。紅色LED點(diǎn)亮?xí)r,表明數(shù)據(jù)尚未通過驗(yàn)證。

步驟4:WiFi NodeMCU-32S ESP-WROOM-32

步驟5:RFID-RC522

在這里,我們獲得了卡和鑰匙圈以及RFID天線的圖像。一個(gè)重要的細(xì)節(jié)是它的接口是SPI。

第6步:組裝

在我們的組裝中,我們的ESP32由USB,并以Arduino IDE的串行連接,有兩個(gè)LED指示讀取是否成功,還有RFID讀取器RC522。我們有帶芯片和卡的鑰匙圈。

將鑰匙圈放在播放器上會(huì)顯示0表示讀取數(shù)據(jù),1表示記錄數(shù)據(jù)。我們以一個(gè)示例為例,該示例顯示讀取芯片或卡后,如果綠色指示燈點(diǎn)亮,則讀取器會(huì)識(shí)別出該數(shù)字。如果指示燈為紅色,則表示發(fā)生了某種類型的錯(cuò)誤,并且未執(zhí)行身份驗(yàn)證。

在示例中,我仍然展示了如何將數(shù)據(jù)寫入標(biāo)簽,下面將對(duì)此進(jìn)行說明。

第7步:庫

添加以下庫“ MFRC522”。

只需訪問“草圖” 》》包括庫》》管理庫。..”

步驟8:源代碼

我們的程序?qū)匆韵路绞焦ぷ鳎簡(jiǎn)?dòng)后,程序?qū)⒌却ɑ驑?biāo)簽被識(shí)別。之后,將出現(xiàn)一個(gè)菜單,供用戶在閱讀或記錄內(nèi)容之間進(jìn)行選擇。然后將執(zhí)行該操作。

步驟9:設(shè)置

在這一部分中,我們處理庫的包含并定義緩沖區(qū)和塊數(shù)據(jù)大小。我們創(chuàng)建對(duì)象并初始化引腳,以及串行,SPI通信,LED和天線服務(wù)。我已經(jīng)開始在串行監(jiān)視器上包含消息了。

#include //library responsible for communicating with the module RFID-RC522

#include //library responsible for communicating of SPI bus

#define SS_PIN 21

#define RST_PIN 22

#define SIZE_BUFFER 18

#define MAX_SIZE_BLOCK 16

#define greenPin 12

#define redPin 32

//used in authentication

MFRC522::MIFARE_Key key;

//authentication return status code

MFRC522::StatusCode status;

// Defined pins to module RC522

MFRC522 mfrc522(SS_PIN, RST_PIN);

void setup()

{

Serial.begin(9600);

SPI.begin(); // Init SPI bus

pinMode(greenPin, OUTPUT);

pinMode(redPin, OUTPUT);

// Init MFRC522

mfrc522.PCD_Init();

Serial.println(“Approach your reader card.。.”);

Serial.println();

步驟10:循環(huán)

在循環(huán)中,我們等待卡方法并選擇相同的方法。在菜單中,我們提供了讀取或?qū)懭霐?shù)據(jù)的選項(xiàng)。當(dāng)設(shè)備應(yīng)從活動(dòng)狀態(tài)變?yōu)橥V範(fàn)顟B(tài)時(shí),我們對(duì)此部分進(jìn)行了指示。我們必須使用這種方法來啟用新的讀數(shù)。

void loop()

{

// Aguarda a aproximacao do cartao

//waiting the card approach

if ( ! mfrc522.PICC_IsNewCardPresent())

{

return;

}

// Select a card

if ( ! mfrc522.PICC_ReadCardSerial())

{

return;

}

// Dump debug info about the card; PICC_HaltA() is automatically called

// mfrc522.PICC_DumpToSerial(&(mfrc522.uid));

//call menu function and retrieve the desired option

int op = menu();

if(op == 0)

readingData();

else if(op == 1)

writingData();

else {

Serial.println(F(“Incorrect Option!”));

return;

}

//instructs the PICC when in the ACTIVE state to go to a “STOP” state

mfrc522.PICC_HaltA();

// “stop” the encryption of the PCD, it must be called after communication with authentication, otherwise new communications can not be initiated

mfrc522.PCD_StopCrypto1();

}

步驟11:閱讀

在這一部分中,我們將閱讀卡/標(biāo)簽的數(shù)據(jù)。我們必須準(zhǔn)備所有鍵,處理緩沖區(qū)的大小,并對(duì)要操作的塊進(jìn)行身份驗(yàn)證。最后,我們?cè)O(shè)置讀取數(shù)據(jù)的打印方式。

//reads data from card/tag

void readingData()

{

//prints the technical details of the card/tag

mfrc522.PICC_DumpDetailsToSerial(&(mfrc522.uid));

//prepare the key - all keys are set to FFFFFFFFFFFFh

for (byte i = 0; i 《 6; i++) key.keyByte[i] = 0xFF;

//buffer for read data

byte buffer[SIZE_BUFFER] = {0};

//the block to operate

byte block = 1;

byte size = SIZE_BUFFER;

//authenticates the block to operate

status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, &key, &(mfrc522.uid)); //line 834 of MFRC522.cpp file

if (status != MFRC522::STATUS_OK) {

Serial.print(F(“Authentication failed: ”));

Serial.println(mfrc522.GetStatusCodeName(status));

digitalWrite(redPin, HIGH);

delay(1000);

digitalWrite(redPin, LOW);

return;

}

//read data from block

status = mfrc522.MIFARE_Read(block, buffer, &size);

if (status != MFRC522::STATUS_OK) {

Serial.print(F(“Reading failed: ”));

Serial.println(mfrc522.GetStatusCodeName(status));

digitalWrite(redPin, HIGH);

delay(1000);

digitalWrite(redPin, LOW);

return;

}

else{

digitalWrite(greenPin, HIGH);

delay(1000);

digitalWrite(greenPin, LOW);

}

Serial.print(F(“ Data from block [”));

Serial.print(block);Serial.print(F(“]: ”));

//prints read data

for (uint8_t i = 0; i 《 MAX_SIZE_BLOCK; i++)

{

Serial.write(buffer[i]);

}

Serial.println(“ ”);

}

步驟12:記錄

要將數(shù)據(jù)寫入卡/標(biāo)簽,我們必須遵循一些步驟。從選擇記錄選項(xiàng)的那一刻起,我們有30秒的時(shí)間通過串行進(jìn)行數(shù)據(jù)輸入。用“#”字符輸入要寫入的數(shù)據(jù)并準(zhǔn)備密鑰。您將需要清除緩沖區(qū)并寫入塊1,因?yàn)樵趬K0中,我們已經(jīng)保存了卡號(hào),該卡號(hào)已經(jīng)在工廠中了。因此,我們不會(huì)觸摸塊0。

我們處理數(shù)據(jù)的大小,并插入一個(gè)用于身份驗(yàn)證的命令并啟用安全通信。如果未認(rèn)證的數(shù)據(jù),我們還會(huì)將錯(cuò)誤消息與讀數(shù)的一部分相等,以進(jìn)行顯示。我們將數(shù)據(jù)記錄在適當(dāng)?shù)膲K中。

//prints thecnical details from of the card/tag

mfrc522.PICC_DumpDetailsToSerial(&(mfrc522.uid));

// waits 30 seconds dor data entry via Serial

Serial.setTimeout(30000L) ;

Serial.println(F(“Enter the data to be written with the ‘#’ character at the end [maximum of 16 characters]:”));

//prepare the key - all keys are set to FFFFFFFFFFFFh

for (byte i = 0; i 《 6; i++) key.keyByte[i] = 0xFF;

//buffer para armazenamento dos dados que iremos gravar

//buffer for storing data to write

byte buffer[MAX_SIZE_BLOCK] = “”;

byte block; //the block to operate

byte dataSize; //size of data (bytes)

//recover on buffer the data from Serial

//all characters before chacactere ‘#’

dataSize = Serial.readBytesUntil(‘#’, (char*)buffer, MAX_SIZE_BLOCK);

//void positions that are left in the buffer will be filled with whitespace

for(byte i=dataSize; i 《 MAX_SIZE_BLOCK; i++)

{

buffer[i] = ‘ ’;

}

block = 1; //the block to operate

String str = (char*)buffer; //transforms the buffer data in String

Serial.println(str);

//authenticates the block to operate

//Authenticate is a command to hability a secure communication

status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A,

block, &key, &(mfrc522.uid));

if (status != MFRC522::STATUS_OK) {

Serial.print(F(“PCD_Authenticate() failed: ”));

Serial.println(mfrc522.GetStatusCodeName(status));

digitalWrite(redPin, HIGH);

delay(1000);

digitalWrite(redPin, LOW);

return;

}

//else Serial.println(F(“PCD_Authenticate() success: ”));

//Writes in the block

status = mfrc522.MIFARE_Write(block, buffer, MAX_SIZE_BLOCK);

if (status != MFRC522::STATUS_OK) {

Serial.print(F(“MIFARE_Write() failed: ”));

Serial.println(mfrc522.GetStatusCodeName(status));

digitalWrite(redPin, HIGH);

delay(1000);

digitalWrite(redPin, LOW);

return;

}

else{

Serial.println(F(“MIFARE_Write() success: ”));

digitalWrite(greenPin, HIGH);

delay(1000);

digitalWrite(greenPin, LOW);

}

}

步驟13:菜單

在這里編寫菜單。監(jiān)視器顯示所有選項(xiàng),并等待發(fā)送數(shù)據(jù)。選擇一個(gè)選項(xiàng)后,它將從讀取的值中刪除48,該值在Ascii表中為0。該表是舊的,不在PC上使用,但是在Arduino和微控制器上,您將不得不處理它。如果您不知道,請(qǐng)?jiān)诨ヂ?lián)網(wǎng)上搜索一下它是什么。

//menu to operation choice

int menu()

{

Serial.println(F(“ Choose an option:”));

Serial.println(F(“0 - Reading data”));

Serial.println(F(“1 - Writing data ”));

//waits while the user does not start data

while(!Serial.available()){};

//retrieves the chosen option

int op = (int)Serial.read();

//remove all characters after option (as per example)

while(Serial.available()) {

if(Serial.read() == ‘ ’) break;

Serial.read();

}

return (op-48);//subtract 48 from read value, 48 is the zero from ascii table

}
責(zé)任編輯:wv

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • RFID
    +關(guān)注

    關(guān)注

    392

    文章

    6925

    瀏覽量

    248380
  • ESP32
    +關(guān)注

    關(guān)注

    26

    文章

    1201

    瀏覽量

    21921
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    ESP32/ESP8266開發(fā)板單向一對(duì)多ESP-NOW無線通信

    通過ESP-NOW無線通信協(xié)議實(shí)現(xiàn)ESP32開發(fā)板向多個(gè)ESP32/ESP 8266開發(fā)板發(fā)送數(shù)據(jù)。
    的頭像 發(fā)表于 03-13 09:23 ?58次閱讀
    <b class='flag-5'>ESP32</b>/<b class='flag-5'>ESP</b>8266開發(fā)板單向一對(duì)多<b class='flag-5'>ESP</b>-NOW無線通信

    ESP32開發(fā)板創(chuàng)建同步WebServer網(wǎng)頁服務(wù)器

    ESP32 內(nèi)置了 Wi-Fi 功能,能夠作為網(wǎng)頁服務(wù)器(Web Server)向網(wǎng)絡(luò)中的其他設(shè)備提供服務(wù)。通過在 ESP32 上運(yùn)行網(wǎng)頁服務(wù)器,可以創(chuàng)建基于瀏覽器的用戶界面,用于監(jiān)控傳感器數(shù)據(jù)或控制設(shè)備狀態(tài),是實(shí)現(xiàn)物聯(lián)網(wǎng)(Io
    的頭像 發(fā)表于 01-30 11:36 ?247次閱讀
    <b class='flag-5'>ESP32</b>開發(fā)板創(chuàng)建同步WebServer網(wǎng)頁服務(wù)器

    無需安裝!在瀏覽器里就能玩轉(zhuǎn)ESP32/ESP8266,這個(gè)神器絕了!

    無需安裝!在瀏覽器里就能玩轉(zhuǎn)ESP32/ESP8266,這個(gè)神器絕了!【往期精選】十年嵌入式最深的痛,不是Bug,而是抓不到日志!vivo宣布原生支持HomeAssistant生態(tài)設(shè)備接入(含
    的頭像 發(fā)表于 01-10 10:01 ?939次閱讀
    無需安裝!在瀏覽器里就能玩轉(zhuǎn)<b class='flag-5'>ESP32</b>/<b class='flag-5'>ESP</b>8266,這個(gè)神器絕了!

    ESP32 Wi-Fi 控制 LED 燈的原理

    在智能家居、物聯(lián)網(wǎng)設(shè)備中,用手機(jī)通過Wi-Fi控制燈光、風(fēng)扇或插座,已經(jīng)非常普遍。而在嵌入式開發(fā)中,ESP32是最常用的Wi-Fi模塊之一。本文將帶你系統(tǒng)理解:ESP32是如何通過Wi-Fi實(shí)現(xiàn)遠(yuǎn)程
    的頭像 發(fā)表于 01-09 19:04 ?326次閱讀
    <b class='flag-5'>ESP32</b> Wi-Fi <b class='flag-5'>控制</b> LED 燈的原理

    ESP32藍(lán)牙驅(qū)動(dòng)MAX98357對(duì)音頻音樂播放

    本文介紹了MAX98357音頻模塊的基本特性,并利用ESP32的藍(lán)牙功能程序驅(qū)動(dòng)此模塊,最后用手機(jī)藍(lán)牙連接ESP32播放手機(jī)音樂
    的頭像 發(fā)表于 12-19 19:55 ?2781次閱讀
    <b class='flag-5'>ESP32</b>藍(lán)牙驅(qū)動(dòng)MAX98357對(duì)音頻音樂播放

    VSCode + ESP-IDF環(huán)境下給ESP32-S3項(xiàng)目添加頭文件

    VSCode + ESP-IDF環(huán)境下給ESP32-S3項(xiàng)目添加頭文件
    的頭像 發(fā)表于 11-28 07:27 ?2477次閱讀

    #ESP32S3野牛小智

    ESP32
    丙丁先生
    發(fā)布于 :2025年11月25日 08:34:06

    ESP32-WROOM-32 技術(shù)規(guī)格書

    電子發(fā)燒友網(wǎng)站提供《ESP32-WROOM-32 技術(shù)規(guī)格書.pdf》資料免費(fèi)下載
    發(fā)表于 11-11 17:27 ?0次下載

    樂鑫ESP32-C6和ESP32-C61究竟該如何選擇?一文讀懂本質(zhì)區(qū)別

    樂鑫科技推出的ESP32-C6和ESP32-C61均支持Wi-Fi6,但定位不同。ESP32-C6是多協(xié)議樞紐,集成Wi-Fi6、藍(lán)牙5、Zigbee和Thread,適合智能家居網(wǎng)關(guān)和Matter
    的頭像 發(fā)表于 10-28 14:17 ?2156次閱讀
    樂鑫<b class='flag-5'>ESP32</b>-C6和<b class='flag-5'>ESP32</b>-C61究竟該如何選擇?一文讀懂本質(zhì)區(qū)別

    專為 ESP32-P4C5 核心板打造的高效開發(fā)利器

    SDK+詳盡文檔,新手秒上手,高手效率翻倍!雙芯片設(shè)計(jì),釋放澎湃性能ESP32-P4C5核心板采用樂鑫科技的ESP32-P4+ESP32-C5雙芯架構(gòu)!·ESP32-P
    的頭像 發(fā)表于 08-11 18:19 ?1232次閱讀
    專為 <b class='flag-5'>ESP32</b>-P4C5 核心板打造的高效開發(fā)利器

    ESP32-運(yùn)行網(wǎng)頁服務(wù)器(Web Server)-實(shí)用篇

    在前一篇文章《ESP32-運(yùn)行網(wǎng)頁服務(wù)器(WebServer)-入門篇》,我們介紹了ESP32運(yùn)行網(wǎng)頁服務(wù)器(WebServer)的原理,然后我們基于ESP32實(shí)現(xiàn)了一個(gè)demo代碼;看到很多同學(xué)都留言發(fā)表了自己的看法,有很多同
    的頭像 發(fā)表于 07-28 18:05 ?3699次閱讀
    <b class='flag-5'>ESP32</b>-運(yùn)行網(wǎng)頁服務(wù)器(Web Server)-實(shí)用篇

    ESP32開發(fā)板元件資料

    ESP32開發(fā)板元件
    發(fā)表于 07-21 14:47 ?15次下載

    ESP32驅(qū)動(dòng)MFRC522 RFID模塊讀寫IC卡數(shù)據(jù)

    本文將介紹ESP32開發(fā)板驅(qū)動(dòng)MFRC522 RFID模塊,讀取RFID卡原始數(shù)據(jù)、獲取RFID卡的UID,并將個(gè)人數(shù)據(jù)添加到RFID卡中。
    的頭像 發(fā)表于 05-28 15:52 ?1482次閱讀
    <b class='flag-5'>ESP32</b>驅(qū)動(dòng)MFRC522 <b class='flag-5'>RFID</b>模塊讀寫IC卡數(shù)據(jù)

    ESP32-CAMOV2640攝像頭視頻顯示

    本文介紹了如何在Arduino IDE上開發(fā)實(shí)現(xiàn)ESP32-CAM模塊獲取實(shí)時(shí)圖像視頻
    的頭像 發(fā)表于 05-23 10:47 ?1780次閱讀
    <b class='flag-5'>ESP32</b>-CAM<b class='flag-5'>帶</b>OV2640攝像頭視頻顯示

    樂鑫ESP32-C5全面進(jìn)入量產(chǎn)

    樂鑫信息科技 (688018.SH) 宣布,ESP32-C5 現(xiàn)已全面進(jìn)入量產(chǎn)。
    的頭像 發(fā)表于 05-06 16:50 ?1447次閱讀