找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2616|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

STM32F103RB+連接RC522+python串口保存數(shù)據(jù)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
一、準(zhǔn)備工作
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ù)串口的不同,自行修改,默認(rèn)COM3)

        ```c
        import serial
        import pymysql  # 導(dǎo)入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)  # 強(qiáng)制用字符串格式
            Data = data_pre[5:16]
            print(Data)
            if Data.strip() == '':
                print("請刷卡")
            else:
                saveMySql()
        ```
三、效果演示和功能實(shí)現(xiàn)
效果: 如不刷卡,則會一直提示刷卡 當(dāng)使用IC卡刷卡時,將自動保存到數(shù)據(jù)庫

刷卡后

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

四、問題
1. 如果刷卡的時候重復(fù)刷,會報錯,因?yàn)镮D唯一
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

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表