乐鑫技术交流
直播中

乔丽娜

7年用户 1086经验值
私信 关注
[问答]

如何在NodeMCU的LUA中实现Arduino RC522库?

为了好玩,我在 NodeMCU 的 LUA 中实现了 Arduino RC522 库。

Herllo Ben,我在 nodemcu v3 上遇到了一些关于该库的问题。
您可以查看 GitHub 或在 FB 上联系我以澄清来源吗?
我只需要读取卡的 UID。我正在使用这个 MAIN
代码:全选----------------------------------------------------------------------
-- Main
----------------------------------------------------------------------

-- Initialise the RC522
spi.setup(1, spi.MASTER, spi.CPOL_LOW, spi.CPHA_LOW, spi.DATABITS_8, 0)
gpio.mode(pin_rst,gpio.OUTPUT)
gpio.mode(pin_ss,gpio.OUTPUT)
gpio.write(pin_rst, gpio.HIGH)      -- needs to be HIGH all the time for the RC522 to work
gpio.write(pin_ss, gpio.HIGH)       -- needs to go LOW during communications
RC522.dev_write(0x01, mode_reset)   -- soft reset
RC522.dev_write(0x2A, 0x8D)         -- Timer: auto; preScaler to 6.78MHz
RC522.dev_write(0x2B, 0x3E)         -- Timer
RC522.dev_write(0x2D, 30)           -- Timer
RC522.dev_write(0x2C, 0)            -- Timer
RC522.dev_write(0x15, 0x40)         -- 100% ASK
RC522.dev_write(0x11, 0x3D)         -- CRC initial value 0x6363
-- turn on the antenna
current = RC522.dev_read(reg_tx_control)
if bit.bnot(bit.band(current, 0x03)) then
    RC522.set_bitmask(reg_tx_control, 0x03)
end

--print("RC522 Firmware Version: 0x"..string.format("%X", RC522.getFirmwareVersion()))

tmr.alarm(0, 3000, tmr.ALARM_AUTO, function()


print("RC522 Firmware Version: 0x"..string.format("%X", RC522.getFirmwareVersion()))

    isTagNear, cardType = RC522.request()
   
    if isTagNear == true then
      tmr.stop(0)
      err, serialNo = RC522.anticoll()
      print("Tag Found: "..appendHex(serialNo).."  of type: "..appendHex(cardType))
  
end) --timer

而且它不起作用,我不知道为什么。我是 LUA 的新手,只了解参考 Miguel 制作的 Arduino lib 的构造。所以如果有任何建议,我会给你一杯啤酒。
我还应该添加:
代码:全选 -- halt tag and get ready to read another.
      buf = {}
      buf[1] = 0x50  --MF1_HALT
      buf[2] = 0
      crc = RC522.calculate_crc(buf)
      table.insert(buf, crc[1])
      table.insert(buf, crc[2])
      err, back_data, back_length = RC522.card_write(mode_transrec, buf)
      RC522.clear_bitmask(0x08, 0x08)    -- Turn off encryption
      
      tmr.start(0)

在 IF 标签的末尾,即将准备好获取下一个标签?如果标签持续存在于阅读器范围内怎么办?

更多回帖

发帖
×
20
完善资料,
赚取积分