3-05-PN532:NFC近场通讯模块¶
# -*- coding: utf-8 -*-
#实验效果:NFC近场通讯模块 IIC读取卡片信息
#接线:使用windows或linux电脑连接一块arduino主控板,NFC近场通讯模块接到I2C口SCL SDA
import time
from pinpong.board import Board
from pinpong.libs.dfrobot_pn532 import PN532
Board("uno").begin() #初始化,选择板型和端口号,不输入端口号则进行自动识别
#Board("uno","COM36").begin() #windows下指定端口初始化
#Board("uno","/dev/ttyACM0").begin() #linux下指定端口初始化
#Board("uno","/dev/cu.usbmodem14101").begin() #mac下指定端口初始化
nfc = PN532()
while not nfc.begin():
print("initial failure")
time.sleep(1)
print("Please place the info card/tag on module..... ")
while True:
if nfc.scan():
info = nfc.get_information()
if info != None:
print("----------------NFC card/tag information-------------------")
print("UID Lenght: %d"%info.lenght)
print("UID: %x %x %x %x"%(info.uid[0],info.uid[1],info.uid[2],info.uid[3] ))
print("AQTA: %x %x"%(info.AQTA[0], info.AQTA[0]))
print("SAK: 0x%x"%(info.sak))
print("Type: %s"%(info.types))
print("Manu facturer: %s"%(info.manu))
print("RF Technology: %s"%(info.RF))
print("Memory Size: %d bytes(total)/%d bytes(available)"%(info.size_total, info.size_available))
print("Block/Page Size: %d bytes"%(info.block))
print("Number of Blocks/pages: %d"%(info.num_block))
time.sleep(1)
# -*- coding: utf-8 -*-
#实验效果:NFC近场通讯模块 IIC读取卡片内信息
#接线:使用windows或linux电脑连接一块arduino主控板,NFC近场通讯模块接到I2C口SCL SDA
import time
from pinpong.board import Board
from pinpong.libs.dfrobot_pn532 import PN532
Board("uno").begin() #初始化,选择板型和端口号,不输入端口号则进行自动识别
#Board("uno","COM36").begin() #windows下指定端口初始化
#Board("uno","/dev/ttyACM0").begin() #linux下指定端口初始化
#Board("uno","/dev/cu.usbmodem14101").begin() #mac下指定端口初始化
nfc = PN532()
def print_data(block):
value = nfc.read_data(block)
if value != None:
for i in value:
print("0x%x "%(i), end="")
print("")
else:
print_data(block)
while not nfc.begin():
print("initial failure")
time.sleep(1)
print("Waiting for a card......")
while True:
if nfc.scan():
NFC = nfc.get_information()
if NFC != None:
if NFC.lenght == 0x02 or NFC.lenght == 0x04:
print("----------------Here is the card information to read-------------------")
for i in range(NFC.num_block):
if i == 0:
print("Block %d:UID0-UID3/MANUFACTURER--------->"%(i), end="")
print_data(i);
elif (i+1)%4==0 and i < 128:
print("Block %d:KEYA/ACCESS/KEYB--------------->"%(i), end="")
print_data(i)
elif (i+1)%16==0 and i > 127:
print("Block %d:KEYA/ACCESS/KEYB--------------->"%(i), end="")
print_data(i)
else:
print("Block %d:DATA ------------------------>"%(i), end="")
print_data(i)
else:
print("The card type is not mifareclassic...")
time.sleep(3)
# -*- coding: utf-8 -*-
#实验效果:NFC近场通讯模块 IIC读写卡片信息
#接线:使用windows或linux电脑连接一块arduino主控板,NFC近场通讯模块接到I2C口SCL SDA
import time
from pinpong.board import Board
from pinpong.libs.dfrobot_pn532 import PN532
Board("uno").begin() #初始化,选择板型和端口号,不输入端口号则进行自动识别
#Board("uno","COM36").begin() #windows下指定端口初始化
#Board("uno","/dev/ttyACM0").begin() #linux下指定端口初始化
#Board("uno","/dev/cu.usbmodem14101").begin() #mac下指定端口初始化
nfc = PN532()
write_data = "DFRobot NFC"
#write_data = [1, 2, 3, 4, 5, 6, 7, 8, 9]
#write_data = (10, 9, 8, 7, 6, 5, 4, 3, 2, 1)
block_num = 2
while not nfc.begin():
print("initial failure")
time.sleep(1)
print("Waiting for a card......")
def parse_data(read_data):
if read_data != None:
print("read success! data is ", end=" ")
print(read_data)
else:
print("read failure!")
while True:
if nfc.scan():
info = nfc.get_information()
if info != None:
if info.lenght == 0x02 or info.lenght == 0x04:
if not nfc.write_data(block_num, write_data):
print("write failure!")
else:
print("write success! data is", end=" ")
print(write_data)
read_data= nfc.read_data(block_num)
parse_data(read_data)
else:
print("The card type is not mifareclassic...")
time.sleep(2)