【毕设教程】单片机RFID模块的使用 - 物联网 嵌入式 毕业设计 stm32
文章目錄
- 1 簡介
- 2 RFID模塊
- 2.1 RFID模塊組成
- 3 連接單片機
- 4 代碼
- 6 最后
1 簡介
Hi,大家好,這里是丹成學(xué)長,今天向大家介紹單片機項目開發(fā)常用外圍器件
RFID模塊的使用
大家可用于 課程設(shè)計 或 畢業(yè)設(shè)計
單片機-嵌入式畢設(shè)選題大全及項目分享:
https://blog.csdn.net/m0_71572576/article/details/125409052
2 RFID模塊
射頻識別「Radio Frequency IDentification,簡稱RFID」技術(shù),又稱為無線射頻識別,是一種通信技術(shù),可通過無線電訊號識別特定目標(biāo)并讀寫相關(guān)數(shù)據(jù),而無需識別系統(tǒng)與特定目標(biāo)之間建立機械或光學(xué)接觸,普遍應(yīng)用于企業(yè)/校園一卡通、公交儲值卡、高速公路收費、停車場、小區(qū)管理等。
RFID 技術(shù)利用無線射頻方式在閱讀器和射頻卡之間進行非接觸雙向數(shù)據(jù)傳輸,以達(dá)到目標(biāo)識別和數(shù)據(jù)交換的目的。
2.1 RFID模塊組成
- 標(biāo)簽(Tag,即射頻卡),耦合元件及芯片組成,標(biāo)簽含有內(nèi)置天線,用于和射頻天線間進行通信。
- 閱讀器:讀取(在讀寫卡中還可以寫入)標(biāo)簽信息的設(shè)備。
- 天線:在標(biāo)簽和讀取器間傳遞射頻信號。
這里使用的RFID-RC522模塊采用MFRC522芯片,SPI通訊方式,支持Mifarel S50、S70 、Pro、Desfire等類型的卡,附帶的白卡和鑰匙扣是S50卡,每張卡都有自己的標(biāo)識(UID)。
3 連接單片機
這里以arduino單片機為例,同學(xué)可以選其他單片機,如stm32,esp8266等等
RC522模塊的3.3V、GND分別對應(yīng)連接開發(fā)板的3.3V、GND,模塊的MOSI、MISO、SCK分別連接開發(fā)板的SPI接口11、12、13,模塊的SDA、RST分別連接開發(fā)板數(shù)字管腳10、9。
實物連接:
4 代碼
#include <SPI.h> #include <MFRC522.h>#define SS_PIN 10 #define RST_PIN 9MFRC522 rfid(SS_PIN, RST_PIN);byte nuidPICC[4]; //存儲讀取的UIDvoid setup() {Serial.begin(9600);SPI.begin();rfid.PCD_Init();Serial.println("RC522初始化完成..."); }void loop() {//搜索新卡if ( ! rfid.PICC_IsNewCardPresent())return;// 驗證NUID是否可讀if ( ! rfid.PICC_ReadCardSerial())return;MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);// 檢查是否MIFARE卡類型if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI &&piccType != MFRC522::PICC_TYPE_MIFARE_1K &&piccType != MFRC522::PICC_TYPE_MIFARE_4K) {Serial.println("不支持讀取此卡類型");return;}// 保存讀取到的UIDfor (byte i = 0; i < 4; i++) {nuidPICC[i] = rfid.uid.uidByte[i];}Serial.print("十六進制UID:");printHex(rfid.uid.uidByte, rfid.uid.size);Serial.println();Serial.print("十進制UID:");printDec(rfid.uid.uidByte, rfid.uid.size);Serial.println();// 使放置在讀卡區(qū)的IC卡進入休眠狀態(tài),不再重復(fù)讀卡rfid.PICC_HaltA();// 停止讀卡模塊編碼rfid.PCD_StopCrypto1(); }// 十六進制輸出 void printHex(byte *buffer, byte bufferSize) {for (byte i = 0; i < bufferSize; i++) {Serial.print(buffer[i] < 0x10 ? " 0" : " ");Serial.print(buffer[i], HEX);} }//十進制輸出 void printDec(byte *buffer, byte bufferSize) {for (byte i = 0; i < bufferSize; i++) {Serial.print(buffer[i] < 0x10 ? " 0" : "");Serial.print(buffer[i], DEC);} }打開串口助手,講卡片接近讀卡器,可以看到,串口輸出卡片數(shù)據(jù):
單片機-嵌入式畢設(shè)選題大全及項目分享:
https://blog.csdn.net/m0_71572576/article/details/125409052
6 最后
總結(jié)
以上是生活随笔為你收集整理的【毕设教程】单片机RFID模块的使用 - 物联网 嵌入式 毕业设计 stm32的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: gitbook asciidoc 项目生
- 下一篇: iPhone 短信欺骗漏洞披露,伪造短信