STM32F103RB+连接RC522+python串口保存数据
一、准备工作
1.Stm32103RB板子,rc522模块,PyCharm软件
2.stm32f103rb原理图
由原理图我们可以知道
Stm32103RB板子的串口输出和输入是PA2和PA3
二、代码编写
- 连线说明:
- 1–SDA <----->PA4
- 2–SCK <----->PA5
- 3–MOSI <----->PA7
- 4–MISO <----->PA6
- 5–悬空
- 6–GND <----->GND
- 7–RST <----->PB0
- 8–VCC <----->VCC
-
可以自己改引脚
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 )
-
python编码 (根据串口的不同,自行修改,默认COM3)
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
四、问题
- 如果刷卡的时候重复刷,会报错,因为ID唯一
- 对于ID的数据没有任何处理
- 对于具体一些rc522代码函数,不需要很懂,会用就行!
资源下载:链接:https://download.csdn.net/download/qq_40501206/12308681