在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<abbr id="27omo"></abbr>

<menu id="27omo"><dl id="27omo"></dl></menu>
    • <label id="27omo"><tt id="27omo"></tt></label>

      新聞中心

      EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 如何將RFID閱讀器與Raspberry Pi Pico一起使用

      如何將RFID閱讀器與Raspberry Pi Pico一起使用

      作者: 時(shí)間:2025-03-12 來(lái)源:Toms hardware 收藏

      卡和標(biāo)簽無(wú)處不在!我們?cè)诮ㄖ镏惺褂盟鼈冞M(jìn)行訪問(wèn)控制。打印機(jī)和復(fù)印機(jī)可以使用它們來(lái)識(shí)別工作人員。牲畜標(biāo)簽和寵物識(shí)別標(biāo)簽都使用一種 形式。讀取 設(shè)備的技術(shù)很便宜,大約 5 美元就可以買到,而 4 美元, 可以從卡/標(biāo)簽中讀取 ID。

      本文引用地址:http://www.biyoush.com/article/202503/467963.htm

      Pico NFC

      (圖片來(lái)源:Tom's Hardware)

      在此作方法中,我們將學(xué)習(xí)如何使用 MFRC522 讀取 RFID 標(biāo)簽和卡,目標(biāo)是創(chuàng)建一個(gè)虛構(gòu)的 RFID 門禁系統(tǒng),該系統(tǒng)允許用戶進(jìn)入建筑物,或提醒安全人員將其移除。在我們這樣做之前,我們需要識(shí)別我們的卡/標(biāo)簽的 ID。本作指南的第一部分將執(zhí)行此作,然后我們將插入一些代碼來(lái)控制兩個(gè) LED 以模擬鎖定機(jī)制。

      為此,您將需要

      • 運(yùn)行 MicroPython 的

      • MFRC522 RFID

      • 大型面包板

      • 11 x 公對(duì)公跳線

      • 綠色 LED

      • 紅燈 LED

      • 2 x 100 歐姆電阻器(棕色 - 黑色 - 棕色 - 金色)

      構(gòu)建硬件

      Pico NFC

      (圖片來(lái)源:Tom's Hardware)

      硬件構(gòu)建分為兩個(gè)部分。首先是 MFRC522 RFID 閱讀器的接線。讀取器使用 SPI 與 Raspberry Pi Pico 通信,它需要 7 個(gè)引腳才能做到這一點(diǎn)。兩個(gè)用于電源(3.3V 和 GND),其余用于 SPI。

      MFRC522

      Raspberry Pi Pico

      Wire Color

      SDA

      GP1

      藍(lán)

      SCK

      GP2

      MOSI

      GP3

      紫色

      GP4

      藍(lán)

      接地

      任何 GND

      RST

      GP0

      3.3

      3V3 輸出(物理引腳 36)

      Pico NFC

      (圖片來(lái)源:Tom's Hardware)

      其次是我們的輸出。要查看是否顯示了正確的卡,我們需要添加兩個(gè) LED。紅色表示 RFID 卡不正確,綠色表示卡正確。LED 連接到 GPIO 引腳,我們控制該引腳以打開(kāi)/關(guān)閉 LED,并通過(guò) 100 歐姆電阻器連接到任何可用的 GND 引腳。您可以使用 220 或 330 歐姆的電阻器,我的辦公桌上恰好有一些 100 歐姆的電阻器。需要找出正確的電阻器嗎?我們?yōu)槟鷾?zhǔn)備了一份指南!

      標(biāo)題單元格 - 列 0

      Raspberry Pi Pico

      Wire Color

      紅色 LED 陽(yáng)極 (+)

      GP14

      紅色 LED 陰極 (-)

      任何 GND

      綠色 LED 陽(yáng)極 (+)

      GP15 系列

      綠色 LED 陰極 (-)

      任何 GND

      Pico NFC

      (圖片來(lái)源:Tom's Hardware)

      在繼續(xù)之前,請(qǐng)檢查您的接線是否正確。

      安裝 RFID 讀取器軟件

      MFRC522 是一個(gè)簡(jiǎn)單的 RFID 閱讀器,為了使其更簡(jiǎn)單,我們使用了一個(gè) MicroPython 模塊,該模塊將縮短使用閱讀器的工作。pico-rfid 模塊來(lái)自 Tom 的 Hardware 的朋友 Kevin McAleer,基于 Danjperron 的工作。

      1. 將 Raspberry Pi Pico 連接到計(jì)算機(jī),然后打開(kāi) Thonny。我們假設(shè)您已經(jīng)知道如何設(shè)置 Raspberry Pi Pico。如果沒(méi)有,我們有方便的指南。

      2. 創(chuàng)建一個(gè)新的空白文件,并將此鏈接的內(nèi)容復(fù)制到空白文件中。然后將其作為 mfrc522.py 保存到 Raspberry Pi Pico。這是 Python 模塊/庫(kù),它將使我們的代碼能夠與 RFID 閱讀器通信。

      編寫項(xiàng)目代碼

      完成所有設(shè)置后,我們現(xiàn)在開(kāi)始對(duì)項(xiàng)目進(jìn)行編碼。為此,我們將再次使用 Thonny,并編寫代碼來(lái)檢查提供給閱讀器的任何 RFID 卡的 ID。對(duì)于第一部分,我們需要記下 ID,因?yàn)樯院笪覀儗⑵渑c條件測(cè)試一起使用,該測(cè)試檢查 ID 是否與硬編碼值匹配,然后它將允許輸入。如果沒(méi)有,那么我們將收到 ACCESS DENIED 消息。

      1. 在 Thonny 中創(chuàng)建新的空白文件。

      2. 導(dǎo)入三個(gè)模塊(庫(kù)),用于使用 MFRC522 RFID 閱讀器、控制代碼的速度以及使用 GPIO。

      from mfrc522 import MFRC522
      import utime
      from machine import Pin

      3. 創(chuàng)建一個(gè)對(duì)象 reader 來(lái)告訴代碼 RFID reader 的連接位置。

      reader = MFRC522(spi_id=0,sck=2,miso=4,mosi=3,cs=1,rst=0)

      4. 為紅色和綠色 LED 創(chuàng)建兩個(gè)對(duì)象,告訴代碼 LED 的連接位置以及它們是我們想要將電流發(fā)送到的輸出設(shè)備。

      red = Pin(14, Pin.OUT)
      green = Pin(15, Pin.OUT)

      5. 向用戶寫一條短消息,指示他們向讀者出示卡片。 “n” 是 Python 的語(yǔ)法,用于在 print() 函數(shù)的末尾引入新行。

      print("Present the card to the readern")

      6. 創(chuàng)建一個(gè)名為 “PreviousCard” 的列表,并在其中存儲(chǔ)值 0。我們稍后將使用此列表來(lái)存儲(chǔ)當(dāng)前卡 ID。

      PreviousCard = [0]

      7. 創(chuàng)建一個(gè) while True 循環(huán)以持續(xù)運(yùn)行其中的代碼。

      while True:

      8. 初始化讀取器,使其可供使用。

         reader.init()

      9. 創(chuàng)建一個(gè)元組來(lái)存儲(chǔ)讀取器狀態(tài)和 RFID 標(biāo)簽類型。

         (stat, tag_type) = reader.request(reader.REQIDL)

      10. 如果讀卡器準(zhǔn)備好了,if 條件將讀取卡的內(nèi)容。然后,它將使用卡片中的詳細(xì)信息更新 stat 和 uid 對(duì)象。

         if stat == reader.OK:
              (stat, uid) = reader.SelectTagSN()

      11. 如果卡片的 uid 與 PreviousCard 對(duì)象中存儲(chǔ)的值相同,則代碼將繼續(xù)。當(dāng)同一張卡重復(fù)顯示給讀者時(shí),就會(huì)發(fā)生這種情況。

             if uid == PreviousCard:
                  continue

      12. 創(chuàng)建一個(gè) if 條件語(yǔ)句以檢查卡讀取是否正常。

             if stat == reader.OK:

      13. 向用戶打印一條消息,然后將卡片的 UID 存儲(chǔ)到一個(gè)名為 “card” 的對(duì)象中。然后將卡詳細(xì)信息打印到 Python shell。

                   print("The card details are as follows")
                  card = reader.tohexstring(uid)
                  print(card)

      14. 使用顯示的卡的 uid 更新 PreviousCard 對(duì)象。

                  PreviousCard = uid

      15. 創(chuàng)建一個(gè) else 條件,該條件將在沒(méi)有卡片時(shí)運(yùn)行。更新 PreviousCard 對(duì)象。然后在 main 循環(huán)重復(fù)之前向代碼添加 50ms 的暫停。

         else:
              PreviousCard=[0]
          utime.sleep_ms(50)

      16. 將代碼作為 reader.py 保存到 Raspberry Pi Pico,然后單擊 Run >> Run Current Script(或按綠色的播放按鈕)。按照說(shuō)明將 RFID 卡/標(biāo)簽出示給讀卡器。

      17. 復(fù)制整個(gè)卡詳細(xì)信息,這是 RFID 卡的 uid,我們將在此作方法的下一部分需要它。 uid 看起來(lái)像這樣,你的 uid 會(huì)有所不同。

      [0x04, 0xBC, 0xA0, 0x9A, 0xB3, 0x43, 0x80]

      完整代碼列表

      from mfrc522 import MFRC522
      import utime
      from machine import Pin
                    
      reader = MFRC522(spi_id=0,sck=2,miso=4,mosi=3,cs=1,rst=0)
      red = Pin(14, Pin.OUT)
      green = Pin(15, Pin.OUT)
      
      print("Present the card to the readern")
      PreviousCard = [0]
      
      while True:
          reader.init()
          (stat, tag_type) = reader.request(reader.REQIDL)
          if stat == reader.OK:
              (stat, uid) = reader.SelectTagSN()
              if uid == PreviousCard:
                  continue
              if stat == reader.OK:
                  print("The card details are as follows")
                  card = reader.tohexstring(uid)
                  print(card)
                  PreviousCard = uid
          else:
              PreviousCard=[0]
          utime.sleep_ms(50)

      我們已經(jīng)有了代碼,現(xiàn)在我們需要告訴項(xiàng)目代碼我們想要使用該代碼來(lái)授予我們?cè)L問(wèn)權(quán)限,并點(diǎn)亮綠色 LED。如果向讀卡器出示另一張卡/標(biāo)簽,則紅色 LED 將亮起。

      1. 在這兩行之間,創(chuàng)建新的代碼行。

                  print(card)
      NEWCODE GOES HERE
                  	PreviousCard = uid

      2. 創(chuàng)建一個(gè) if 條件來(lái)檢查卡的 uid。請(qǐng)注意,它看起來(lái)像一個(gè) Python 列表,但實(shí)際上它是以字符串形式存儲(chǔ)的,因此我們需要將值包裝在 “ ” 中。不要忘記 [ ] 括號(hào)。

                 if card == "[0x04, 0xBC, 0xA0, 0x9A, 0xB3, 0x43, 0x80]":

      3. 如果存儲(chǔ)在 card 對(duì)象中的值與硬編碼值匹配,則向 Python shell 打印“ACCESS GRANTED”。

                     print("ACCESS GRANTED")

      4. 創(chuàng)建一個(gè) for 循環(huán)以打開(kāi)/關(guān)閉綠色 LED 十次,每次狀態(tài)變化之間有 0.1 秒的間隔。在 for 循環(huán)結(jié)束時(shí)關(guān)閉綠色 LED。

                     for i in range(10):
                          green.toggle()
                          utime.sleep(0.1)
                      green.off()

      5. 當(dāng)無(wú)法識(shí)別的卡片/標(biāo)簽呈現(xiàn)給讀者時(shí),請(qǐng)使用 else 條件。 這將像綠色 LED 一樣打開(kāi)和關(guān)閉紅色 LED。

                 else:
                      print("ACCESS DENIED")
                      for i in range(10):
                          red.toggle()
                          utime.sleep(0.1)
                      red.off()

      6 .將代碼另存為 Raspberry Pi Pico reader.py。單擊 Run >> Run Current Script(或按綠色的播放按鈕)。按照說(shuō)明將 RFID 卡/標(biāo)簽出示給讀卡器。如果卡正確無(wú)誤,則綠色 LED 將閃爍,并且 Python shell 將打印 “ACCESS GRANTED”。嘗試另一個(gè) RFID 卡/標(biāo)簽,這應(yīng)該會(huì)使紅色 LED 亮起,并且 Python shell 將打印“ACCESS DENIED”

      完整代碼列表

      from mfrc522 import MFRC522
      import utime
      from machine import Pin
                    
      reader = MFRC522(spi_id=0,sck=2,miso=4,mosi=3,cs=1,rst=0)
      red = Pin(14, Pin.OUT)
      green = Pin(15, Pin.OUT)
      
      print("Present the card to the readern")
      PreviousCard = [0]
      
      while True:
          reader.init()
          (stat, tag_type) = reader.request(reader.REQIDL)
          if stat == reader.OK:
              (stat, uid) = reader.SelectTagSN()
              if uid == PreviousCard:
                  continue
              if stat == reader.OK:
                  print("The card details are as follows")
                  card = reader.tohexstring(uid)
                  print(card)
                  if card == "[0x04, 0xBC, 0xA0, 0x9A, 0xB3, 0x43, 0x80]":
                      print("ACCESS GRANTED")
                      for i in range(10):
                          green.toggle()
                          utime.sleep(0.1)
                      green.off()
                  else:
                      print("ACCESS DENIED")
                      for i in range(10):
                          red.toggle()
                          utime.sleep(0.1)
                      red.off()
                  PreviousCard = uid
          else:
              PreviousCard=[0]
          utime.sleep_ms(50)




      關(guān)鍵詞: RFID 閱讀器 Raspberry Pi Pico

      評(píng)論


      相關(guān)推薦

      技術(shù)專區(qū)

      關(guān)閉