原理圖
的 電路 的
獲取PySerial
Python的許多優(yōu)秀功能之一是在使用PIP工具時安裝庫是多么容易。在您的計算機上,打開終端或命令提示符并鍵入“PIP”。如果您收到無法識別的錯誤,那么您的PIP無法正確安裝。安裝Python時,請確保選中“添加到環(huán)境變量”選項。 PIP工作后,運行下面顯示的命令安裝PySerial:
pip install PySerial
我們的項目中包含PySerial,是時候打開Python IDLE并創(chuàng)建我們的串口項目了!
PySerial
使用PySerial時,需要配置一些參數(shù)(在與在微控制器上設置UART外設類似的方式),包括。..。..
波特率 - COM端口的運行速度。 Arduino項目傾向于在115200運行
端口 - 正在使用的端口名稱(在設備管理器中查找)
奇偶校驗位 - 這些用于錯誤糾正但通常不使用
停止位 - 除非存在時序問題,否則只使用一個停止位
超時 - 用于防止串行掛起的端口
除了定義上面顯示的參數(shù)外,還需要導入串口模塊。下面的代碼摘錄顯示了如何導入串行模塊并配置UART端口以使用115200波特的COM3,沒有奇偶校驗,一個停止位和兩秒的超時。
import serial
serialPort = serial.Serial(port = “COM4”, baudrate=115200,
bytesize=8, timeout=2, stopbits=serial.STOPBITS_ONE)
這很容易使用設備管理器時,找到USB到串行設備所在的COM端口。打開開始菜單,然后鍵入“設備管理器”。加載設備管理器時,查找名為“ports”的部分并展開它。默認情況下,大多數(shù)Windows計算機都有一個用于內(nèi)部通信的COM1端口,因此請勿使用該COM端口。假設您只連接了一個COM設備,則第二個COM端口將是您的微控制器。
使用串口非常簡單,只需要一些功能,包括。..。..
open() - 這將打開串口
close() - 這將關(guān)閉串口
readline () - 這將從串口讀取一個字符串
read(size) - 這將從串口讀取n個字節(jié)
write(data) - 這將把傳遞給函數(shù)的數(shù)據(jù)寫入串口
in_waiting - 這個變量保存緩沖區(qū)中的字節(jié)數(shù)
在我們的簡單程序中,我們首先打開串口先前已定義。必須調(diào)用open()函數(shù),因為它允許我們的程序“聲明”端口并阻止任何其他進程訪問它。如果尚未打開端口,也無法訪問該端口。
下一段代碼是一個無限循環(huán),它做了一些事情。..。..
檢查緩沖區(qū)中是否有任何數(shù)據(jù)等待
/li》
當數(shù)據(jù)到達時,將數(shù)據(jù)傳輸?shù)阶兞俊皊erialString”
打印“serialString”的值
寫一個字符串回到發(fā)送數(shù)據(jù)的設備,通知它我們收到了字符串
serialString = “” # Used to hold data coming over UART
while(1):
# Wait until there is data waiting in the serial buffer
if(serialPort.in_waiting 》 0):
# Read data out of the buffer until a carraige return / new line is found
serialString = serialPort.readline()
# Print the contents of the serial data
print(serialString.decode(‘Ascii’))
# Tell the device connected over the serial port that we recevied the data!
# The b at the beginning is used to indicate bytes!
serialPort.write(b“Thank you for sending data ”)
我們的微控制器電路/代碼
為了測試我們的Python串口程序,我們將使用一個非常小的PIC芯片,PIC16F1825 ,將使用XC8編碼。該芯片具有UART端口,這意味著我們可以將其直接連接到USB轉(zhuǎn)串口轉(zhuǎn)換器(例如FTDI 232R)。幸運的是,這里使用的FTDI模塊從USB端口提供電源,因此我們不需要任何電源電路(更容易構(gòu)建)。
PIC的代碼由三個主要區(qū)域組成:
主要代碼 - 主要執(zhí)行代碼(在main()中找到)
功能 - 包括將字符串寫入UART并配置UART
配置位不會被深入介紹,但它們確保PIC不使用PLL,而是使用內(nèi)部振蕩器模塊作為其時鐘源。
// CONFIG1
#pragma config FOSC = INTOSC pin)
#pragma config WDTE = OFF
#pragma config PWRTE = OFF
#pragma config MCLRE = ON
#pragma config CP = OFF
#pragma config CPD = OFF
#pragma config BOREN = OFF
#pragma config CLKOUTEN = OFF
#pragma config IESO =
#pragma config FCMEN = ON
// CONFIG2
#pragma config WRT = OFF
#pragma config PLLEN = OFF
#pragma config STVREN = ON
#pragma config BORV = LO
#pragma config LVP = ON
主要功能PIC可以做三件事:將器件配置為使用8MHz的時鐘頻率(對于UART模塊),配置UART外設;然后通過UART端口發(fā)送/接收字符串。讀取和寫入字符串的實際函數(shù)已在函數(shù)中定義,這使得在主代碼中更容易使用UART端口,但我們不會介紹此代碼的說明。
void main(void)
{
// Configure pins as digital
ANSELA = 0;
ANSELC = 0;
OSCCONbits.IRCF = 0b1110;
configUART();
while(1)
{
sendStringUART(“Hello, this is the PIC16F1825”);
readStringUART(stringBuffer);
}
}
這些函數(shù)提供了有用的功能,下面是函數(shù)原型:
void configUART(void);
void sendByteUART(char data);
void sendStringUART(const char *string);
void readStringUART(char *buffer);
結(jié)果
如果一切都按計劃進行,當Python程序運行并且PIC設備打開時,我們應該會看到類似于下面顯示的窗口的內(nèi)容。如果是這樣,那么我們的PIC程序和Python程序就能完美地相互通信。雖然這個例子非常簡單,但它表明Python可以很容易地集成到微控制器項目中,包括PIC,AVR,STM,Arduino甚至Raspberry Pi!
-
python
+關(guān)注
關(guān)注
56文章
4797瀏覽量
84692 -
串行端口
+關(guān)注
關(guān)注
0文章
31瀏覽量
11667
發(fā)布評論請先 登錄
相關(guān)推薦
評論