找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2082|回复: 0
打印 上一主题 下一主题
收起左侧

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
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代码函数,不需要很懂,会用就行!

51hei.png (6.8 KB, 下载次数: 51)

51hei.png

STM32F103RB连接RC522+python串口输出.7z

218.46 KB, 下载次数: 28, 下载积分: 黑币 -5

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表