STM32F103RB+连接RC522+python串口输出保存数据

STM32F103RB+连接RC522+python串口保存数据

一、准备工作
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
  1. 可以自己改引脚

     	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 )
    
  2. 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
在这里插入图片描述

四、问题

  1. 如果刷卡的时候重复刷,会报错,因为ID唯一
  2. 对于ID的数据没有任何处理
  3. 对于具体一些rc522代码函数,不需要很懂,会用就行!

资源下载:链接:https://download.csdn.net/download/qq_40501206/12308681

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

帅气转身而过

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值