|
一、准备工作
1.Stm32103RB板子,rc522模块,PyCharm软件
2.stm32f103rb原理图
由原理图我们可以知道
Stm32103RB板子的串口输出和输入是PA2和PA3
二、代码编写
1. 连线说明:
* 1--SDA <----->PA4
* 2--SCK <----->PA5
* 3--MOSI <----->PA7
* 4--MISO <----->PA6
* 5--悬空
* 6--GND <----->GND
* 7--RST <----->PB0
* 8--VCC <----->VCC
2. 可以自己改引脚
rcc522_config.h
##################RC522配置##########
#define RC522_SPI_GPIO GPIOA
#define RC522_SPI_GPIO_ENABLED RCC_APB2Periph_GPIOA
#define RC522_SPI_GPIO_PIN_CS GPIO_Pin_4
#define RC522_SPI_GPIO_PIN_SCK GPIO_Pin_5
#define RC522_SPI_GPIO_PIN_MISO GPIO_Pin_6
#define RC522_SPI_GPIO_PIN_MOSI GPIO_Pin_7
#define RC522_SPI_GPIO_RST GPIOB
#define RC522_SPI_GPIO_RST_ENABLED RCC_APB2Periph_GPIOB
#define RC522_SPI_GPIO_PIN_RST GPIO_Pin_0
#endif
```
rc522.h
***********************RC522 函数宏定义**********************/
#define RC522_CS_Enable() GPIO_ResetBits ( GPIOA, GPIO_Pin_4 )
#define RC522_CS_Disable() GPIO_SetBits ( GPIOA, GPIO_Pin_4 )
#define RC522_Reset_Enable() GPIO_ResetBits( GPIOB, GPIO_Pin_0 )
#define RC522_Reset_Disable() GPIO_SetBits ( GPIOB, GPIO_Pin_0 )
#define RC522_SCK_0() GPIO_ResetBits( GPIOA, GPIO_Pin_5 )
#define RC522_SCK_1() GPIO_SetBits ( GPIOA, GPIO_Pin_5 )
#define RC522_MOSI_0() GPIO_ResetBits( GPIOA, GPIO_Pin_7 )
#define RC522_MOSI_1() GPIO_SetBits ( GPIOA, GPIO_Pin_7 )
#define RC522_MISO_GET() GPIO_ReadInputDataBit ( GPIOA, GPIO_Pin_6 )
3. python编码 (根据串口的不同,自行修改,默认COM3)
```c
import serial
import pymysql # 导入pymysql包
log = 0
Data = []
#连接串口
serial = serial.Serial('COM3',115200,timeout=2) #连接COM3,波特率位115200
if serial.isOpen():
print ('串口已打开')
else:
print ('串口未打开')
# mysql
def saveMySql():
conn = pymysql.connect("localhost", "root", "123456", "ID")
# 打开数据库,配置数据库
cursor = conn.cursor() # 数据库操作
try:
sql = 'INSERT INTO data(ID)VALUES(%s)' # 存入数据库
cursor.execute(sql, (Data)) # 执行数据库语句
conn.commit()
except :
conn.rollback()
print('data error!')
conn.close()
while (1):
s = serial.readline()
log += 1 # 传输次数记录+1
data_pre = str(s) # 强制用字符串格式
Data = data_pre[5:16]
print(Data)
if Data.strip() == '':
print("请刷卡")
else:
saveMySql()
```
三、效果演示和功能实现
效果: 如不刷卡,则会一直提示刷卡 当使用IC卡刷卡时,将自动保存到数据库
刷卡后
刷卡后数据库ID
四、问题
1. 如果刷卡的时候重复刷,会报错,因为ID唯一
2. 对于ID的数据没有任何处理
3. 对于具体一些rc522代码函数,不需要很懂,会用就行!
|
评分
-
查看全部评分
|