標題: STM32F103RB+連接RC522+python串口保存數(shù)據(jù) [打印本頁]

作者: gjgerry    時間: 2020-4-11 15:26
標題: STM32F103RB+連接RC522+python串口保存數(shù)據(jù)
一、準備工作
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 函數(shù)宏定義**********************/
        #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編碼 (根據(jù)串口的不同,自行修改,默認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")  
            # 打開數(shù)據(jù)庫,配置數(shù)據(jù)庫
            cursor = conn.cursor()  # 數(shù)據(jù)庫操作
            try:
                sql = 'INSERT INTO data(ID)VALUES(%s)'  # 存入數(shù)據(jù)庫
                cursor.execute(sql, (Data))  # 執(zhí)行數(shù)據(jù)庫語句
                conn.commit()
            except :
                conn.rollback()
                print('data error!')
            conn.close()
        
        while (1):
            s = serial.readline()
            log += 1  # 傳輸次數(shù)記錄+1
            data_pre = str(s)  # 強制用字符串格式
            Data = data_pre[5:16]
            print(Data)
            if Data.strip() == '':
                print("請刷卡")
            else:
                saveMySql()
        ```
三、效果演示和功能實現(xiàn)
效果: 如不刷卡,則會一直提示刷卡 當使用IC卡刷卡時,將自動保存到數(shù)據(jù)庫

刷卡后

刷卡后數(shù)據(jù)庫ID

四、問題
1. 如果刷卡的時候重復刷,會報錯,因為ID唯一
2. 對于ID的數(shù)據(jù)沒有任何處理
3. 對于具體一些rc522代碼函數(shù),不需要很懂,會用就行!

51hei.png (6.8 KB, 下載次數(shù): 52)

51hei.png

STM32F103RB連接RC522+python串口輸出.7z

218.46 KB, 下載次數(shù): 28, 下載積分: 黑幣 -5






歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1