色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

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

帶RFID的ESP32訪問控制

454398 ? 來源:網(wǎng)絡(luò)整理 ? 作者:佚名 ? 2019-11-04 17:26 ? 次閱讀

步驟1:操作

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

步驟2:內(nèi)存

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

步驟3:電路

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

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

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

步驟5:RFID-RC522

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

第6步:組裝

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

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

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

第7步:庫

添加以下庫“ MFRC522”。

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

步驟8:源代碼

我們的程序?qū)匆韵路绞焦ぷ鳎簡雍螅绦驅(qū)⒌却ɑ驑撕灡蛔R別。之后,將出現(xiàn)一個菜單,供用戶在閱讀或記錄內(nèi)容之間進行選擇。然后將執(zhí)行該操作。

步驟9:設(shè)置

在這一部分中,我們處理庫的包含并定義緩沖區(qū)和塊數(shù)據(jù)大小。我們創(chuàng)建對象并初始化引腳,以及串行,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ù)的選項。當設(shè)備應(yīng)從活動狀態(tài)變?yōu)橥V範顟B(tài)時,我們對此部分進行了指示。我們必須使用這種方法來啟用新的讀數(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:閱讀

在這一部分中,我們將閱讀卡/標簽的數(shù)據(jù)。我們必須準備所有鍵,處理緩沖區(qū)的大小,并對要操作的塊進行身份驗證。最后,我們設(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ù)寫入卡/標簽,我們必須遵循一些步驟。從選擇記錄選項的那一刻起,我們有30秒的時間通過串行進行數(shù)據(jù)輸入。用“#”字符輸入要寫入的數(shù)據(jù)并準備密鑰。您將需要清除緩沖區(qū)并寫入塊1,因為在塊0中,我們已經(jīng)保存了卡號,該卡號已經(jīng)在工廠中了。因此,我們不會觸摸塊0。

我們處理數(shù)據(jù)的大小,并插入一個用于身份驗證的命令并啟用安全通信。如果未認證的數(shù)據(jù),我們還會將錯誤消息與讀數(shù)的一部分相等,以進行顯示。我們將數(shù)據(jù)記錄在適當?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)視器顯示所有選項,并等待發(fā)送數(shù)據(jù)。選擇一個選項后,它將從讀取的值中刪除48,該值在Ascii表中為0。該表是舊的,不在PC上使用,但是在Arduino和微控制器上,您將不得不處理它。如果您不知道,請在互聯(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

}
責任編輯:wv

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

    關(guān)注

    388

    文章

    6142

    瀏覽量

    237755
  • ESP32
    +關(guān)注

    關(guān)注

    18

    文章

    971

    瀏覽量

    17203
收藏 人收藏

    評論

    相關(guān)推薦

    ESP32-S3-WROOM-1/ESP32-S3-WROOM-1U技術(shù)規(guī)格書

    電子發(fā)燒友網(wǎng)站提供《ESP32-S3-WROOM-1/ESP32-S3-WROOM-1U技術(shù)規(guī)格書.pdf》資料免費下載
    發(fā)表于 12-07 15:30 ?0次下載

    esp32上使用chatGPT做一些有意思的事情

    對OpenAI API的請求。 4、使用HTTP請求向OpenAI API發(fā)送文本輸入,接收JSON格式的響應(yīng)。 5、解析響應(yīng)并使用它來控制ESP32控制
    的頭像 發(fā)表于 10-18 10:04 ?401次閱讀

    ESP32控制器系列指南

    2024-05-29 Don Wilcher [微控制器] ESP32控制器已成為物聯(lián)網(wǎng) (IoT) 和嵌入式控制器領(lǐng)域的核心部分。 ESP32
    的頭像 發(fā)表于 10-02 18:21 ?2622次閱讀
    <b class='flag-5'>ESP32</b> 微<b class='flag-5'>控制</b>器系列指南

    ESP32控制舵機的正反轉(zhuǎn)原理是什么

    舵機是一種將電信號轉(zhuǎn)換為機械運動的設(shè)備,廣泛應(yīng)用于機器人、無人機、汽車等領(lǐng)域。ESP32是一款功能強大的微控制器,具有豐富的外設(shè)接口和高性能的處理能力,可以方便地控制舵機實現(xiàn)正反轉(zhuǎn)等動作。本文將介紹
    的頭像 發(fā)表于 08-20 09:13 ?1063次閱讀

    簡述三種esp32的開發(fā)方式是什么

    ESP32是一款由樂鑫(Espressif)推出的低功耗、高性能的Wi-Fi和藍牙雙模無線通信芯片,廣泛應(yīng)用于物聯(lián)網(wǎng)、智能家居、智能硬件等領(lǐng)域。本文將詳細介紹三種ESP32的開發(fā)方式:Arduino
    的頭像 發(fā)表于 08-20 09:11 ?2853次閱讀

    esp32esp8266代碼共用嗎

    本文將介紹ESP32ESP8266兩款流行的微控制器在代碼共用性方面的可能性與差異性。 一、引言 隨著物聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,越來越多的智能設(shè)備開始進入我們的生活。其中,ESP32
    的頭像 發(fā)表于 08-19 18:23 ?1114次閱讀

    esp8266和esp32區(qū)別是什么

    以下是關(guān)于ESP8266和ESP32的主要區(qū)別: 處理器和架構(gòu) : ESP8266 :使用一個Tensilica L106 80MHz的處理器,屬于Xtensa架構(gòu)。 ESP32 :使
    的頭像 發(fā)表于 08-19 18:16 ?5249次閱讀

    esp32用什么軟件編程

    ESP32是一款由樂鑫(Espressif)推出的低功耗、高性能的Wi-Fi和藍牙雙模微控制器,廣泛應(yīng)用于物聯(lián)網(wǎng)、智能家居、智能穿戴等領(lǐng)域。要對ESP32進行編程,需要選擇合適的編程軟件和開發(fā)環(huán)境
    的頭像 發(fā)表于 08-19 17:24 ?3408次閱讀

    ESP32-WROOM-32E、ESP32-WROOM-32D、ESP32-WROOM-32U 有什么區(qū)別?ESP32-WROOM-32 后綴字母代表的意思是?

    相信很多人心里都有這樣的疑問,今天就教大家怎么區(qū)分它們。 32D和32U是同一個芯片ESP32-D0WD的模組,主要區(qū)別的天線模式,分別是板載和IPEX外接天線。 32E是用的升級版的芯片
    的頭像 發(fā)表于 07-17 10:09 ?9399次閱讀
    <b class='flag-5'>ESP32</b>-WROOM-32E、<b class='flag-5'>ESP32</b>-WROOM-32D、<b class='flag-5'>ESP32</b>-WROOM-32U  有什么區(qū)別?<b class='flag-5'>ESP32</b>-WROOM-32 后綴字母代表的意思是?

    ESP32能取代STM32嗎?哪個更好?

    不能!首先二者不存在哪個更好的問題,因為這兩個芯片使用場景各不相同,在嵌入式系統(tǒng)領(lǐng)域,ESP32和STM32都是常見的單片機系列,它們各自具有一定的優(yōu)勢和適用場景。本文主要探討ESP32是否能夠取代
    的頭像 發(fā)表于 07-06 08:04 ?1.1w次閱讀
    <b class='flag-5'>ESP32</b>能取代STM32嗎?哪個更好?

    ESP32作為STA模式,手機不能訪問esp32是什么問題呢?

    我使用該目錄下的httP ,ESP32 作為STA模式, 連接后,PC 端可以訪問ESP32,PC端可以訪問手機,他們都在同一個網(wǎng)絡(luò)。但是手機不能
    發(fā)表于 06-19 06:09

    ESP32-S3控制WS2812燈顯示異常如何解決?

    本人用ESP32S3設(shè)計一款產(chǎn)品,在用ESP32-S3控制WS2812燈時出現(xiàn)多燈顯示異常,燈珠無法正常顯示。(顏色和位置都不對),異常率100%。 燈
    發(fā)表于 06-05 06:17

    樂鑫科技發(fā)布全新ESP32-H4 SoC

    樂鑫信息科技最新發(fā)布了ESP32-H4,這一創(chuàng)新產(chǎn)品是對其ESP32-H2系列的完美補充,進一步鞏固了公司在802.15.4和Bluetooth LE領(lǐng)域的產(chǎn)品布局。ESP32-H4作為新一代SoC
    的頭像 發(fā)表于 05-06 15:18 ?993次閱讀

    ESP32-C2在小魔方遙控器的應(yīng)用

    我們經(jīng)常提起的ESP32-C3和ESP32-S3,ESP32-C2感覺話題度沒有那么多,但其應(yīng)用上不可小覷。今天小啟就跟大家講講ESP32-C2在小魔方遙控器的應(yīng)用。1射頻性能拉滿,成
    的頭像 發(fā)表于 01-13 08:03 ?838次閱讀
    <b class='flag-5'>ESP32</b>-C2在小魔方遙控器的應(yīng)用

    esp32外置flash的大小

    ESP32是一款功能強大的微控制器,廣泛應(yīng)用于物聯(lián)網(wǎng)和嵌入式設(shè)備領(lǐng)域。雖然ESP32內(nèi)置了一定的閃存空間,但有時候我們可能需要更大的儲存空間來存儲更多的數(shù)據(jù)或者程序。因此,一些廠商推出了外置
    的頭像 發(fā)表于 01-09 11:24 ?4069次閱讀
    主站蜘蛛池模板: 青柠在线观看免费高清电视剧荣耀 | 午夜办公室在线观看高清电影| 双性诱受灌满哭求饶BL| 亚州三级久久电影| 做你的爱人BD日本| 搞基福利社| 精品三级在线观看| 欧美老妇与zozoz0交| 午夜AV亚洲一码二中文字幕青青 | 天美麻豆成人AV精品视频| 伊人久久网站| 第九色区av天堂| 久久妇女高潮几次MBA| 欧美亚洲国内日韩自拍视频| 一本道色综合手机久久| avove旗袍丝袜高跟啪啪| 国产强奷伦奷片| 美女厕所撒尿ass| 午夜AV国产欧美亚洲高清在线| 共妻肉多荤文高h一女n男| 日欧一片内射VA在线影院| 在线超碰免费视频观看| 国产啪精品视频网免费| 我强进了老师身体在线观看| bbwxxxx交女警| 久久99AV无色码人妻蜜| 午夜国产免费视频亚洲| 国产精品亚洲精品久久国语| 欧美一区二区视频高清专区| jiz中国zz| 日本人六九视频| 99热久久久无码国产精品性麻豆 | 2021久久最新国产精品| 国产午夜视频在线| 日本 稀土矿| 99久久精品免费看国产免费| 欧美A级肉欲大片XXX| 中文字幕久久久| 久久www免费人成_看片高清| 伊人久久影院| 毛片网站在线观看|