|
一、準備工作
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代碼函數,不需要很懂,會用就行!
|
評分
-
查看全部評分
|