为了好玩,我在 NodeMCU 的 LUA 中实现了 Arduino RC522 库。
Herllo Ben,我在 nodemcu v3 上遇到了一些关于该库的问题。
您可以查看 GitHub 或在 FB 上联系我以澄清来源吗?
我只需要读取卡的 UID。我正在使用这个 MAIN
代码:
全选----------------------------------------------------------------------
-- Main
----------------------------------------------------------------------
-- Ini
tialise 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 标签的末尾,即将准备好获取下一个标签?如果标签持续存在于阅读器范围内怎么办?