1,安裝依賴
確保已經安裝 pyserial:
pip3 install pyserial
如果無法用pip3安裝,那就創建一個虛擬環境進行安裝
如果你想安裝最新版本的 pyserial 或其它非 Debian 打包的庫,建議在用戶目錄下創建一個虛擬環境:
安裝完整的 Python3(如果尚未安裝)
sudo apt update
sudo apt install python3-full python3-venv
在你的項目目錄創建并激活 venv
cd ~/myproject
python3 -m venv venv
source venv/bin/activate
然后就可以在虛擬環境中用 pip 安裝
pip install pyserial
運行腳本時,確保虛擬環境已激活((venv) 出現在命令行提示符),這樣 import serial 就能找到你通過 pip 安裝的包。
若要退出虛擬環境,執行
deactivate
2,啟用串口
在樹莓派上執行 sudo raspi-config,進入 Interface Options → Serial Port,
“Would you like a login shell to be accessible over serial?” 選擇 No
“Would you like the serial port hardware to be enabled?” 選擇 Yes
重啟后,串口 /dev/serial0 就可用了。
特別注意,如果還是不能用,多半是映射錯誤:
串口未啟用或映射錯誤
在 Raspberry Pi 5 上,/dev/serial0 默認是否真正映射到了 UART0,要確認。
請先確認 /boot/firmware/config.txt 中是否有以下配置(最重要的):
enable_uart=1
dtoverlay=uart0
然后執行:
ls -l /dev/serial0
你應看到:
serial0 -> ttyAMA0
特別注意:樹莓派5的uart0引腳是GPIO14(TXD),GPIO15(RXD)
3,做好上面配置后,借鑒以下代碼即可進行樹莓派5的串口通信
#!/usr/bin/env python3
# -*- coding: utf-8 -*-import serial
import timedef main():# 串口設備名稱,樹莓派 5 上 /dev/serial0 通常會映射到 UART0port = '/dev/serial0'# 波特率(根據需要修改,常用 9600、115200 等)baudrate = 115200# 打開串口try:ser = serial.Serial(port=port,baudrate=baudrate,bytesize=serial.EIGHTBITS,parity=serial.PARITY_NONE,stopbits=serial.STOPBITS_ONE,timeout=1) # 讀取超時 1 秒except serial.SerialException as e:print(f"無法打開串口 {port}: {e}")returnprint(f"串口 {port} 已打開,波特率 {baudrate}")try:while True:# 要發送的字符串msg = "hello word?"# 注意要發送 bytes,末尾可加 \r\n 根據接收端需求ser.write(msg.encode('utf-8') + b'\r\n')print(f"已發送: {msg}")# 讀取接收緩存中的所有數據incoming = ser.readline().decode('utf-8', errors='ignore').strip()if incoming:print(f"接收到: {incoming}")# 每隔 1 秒發送一次time.sleep(1)except KeyboardInterrupt:print("\n檢測到 Ctrl+C,中斷程序。")finally:ser.close()print("串口已關閉。")if __name__ == '__main__':main()