樹莓派5實現串口通信教程

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()

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/86755.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/86755.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/86755.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

(五)Linux性能優化-CPU-性能優化

性能優化文章參考倪朋飛老師的Linux性能優化實戰課程 性能優化方法論 Q:怎么評估性能優化的效果? A:對系統的性能指標進行量化,并且要分別測試出優化前、后的性能指標,用前后指標的變化來對比呈現效果。確定性能的量…

ThreadLocal原理及內存泄漏分析

介紹 每個線程內部都有一個私有的 ThreadLocalMap 實例&#xff0c;用于存儲該線程關聯的所有 ThreadLocal 變量。 ThreadLocalMap 內部的 Entry 繼承自 WeakReference<ThreadLocal<?>>。所以**Entry 的 key&#xff08;即 ThreadLocal 對象本身&#xff09;是通…

Oracle OCP認證考試考點詳解083系列18

題記&#xff1a; 本系列主要講解Oracle OCP認證考試考點&#xff08;題目&#xff09;&#xff0c;適用于19C/21C,跟著學OCP考試必過。 86. 第86題&#xff1a; 題目 解析及答案&#xff1a; 86、使用FLASHBACK TABLE的兩個先決條件是什么&#xff1f; A&#xff09;必須對…

git merge合并分支push報錯:Your branch is ahead of ‘xxx‘ by xx commits.

git merge合并分支push報錯&#xff1a;Your branch is ahead of xxx by xx commits. Your branch is ahead of xxx by xx commits.(use "git push" to publish your local commits)解決方案&#xff1a; git checkout 到要合入的分支&#xff0c;然后&#xff1a; …

英語作文模板

核心原則&#xff1a;三段式結構 ?英文: The core principle is a three-paragraph structure (Introductory paragraph Main body paragraph Concluding paragraph).?中文: 核心原則是采用三段式結構&#xff08;開頭引論段 中間主體段 結尾總結段&#xff09;。 模板 …

[安卓按鍵精靈輔助工具]一些安卓端可以用的雷電模擬器adb命令

在雷電論壇上看到很多adb命令&#xff0c;不過并沒有針對安卓按鍵進行處理&#xff0c;這里做了一下測試&#xff0c;把能用在安卓按鍵上的adb命令整理出來。 調用adb命令使用的山海插件中的Execute 執行shell命令 adb命令源碼如下&#xff1a; Import "shanhai.lua&quo…

uni-app項目怎么實現多服務環境切換

前情 uni-app是我比較喜歡的跨平臺框架&#xff0c;它能開發小程序/H5/APP(安卓/iOS)&#xff0c;重要的是對前端開發友好&#xff0c;自帶的IDE可視化的運行和打包也讓開發體驗也非常棒&#xff0c;公司項目就是主推uni-app&#xff0c;現在我的開發模式是用HBuilder X跑項目…

論文閱讀:強化預訓練

大型語言模型 (LLMs) 的驚人能力很大程度上歸功于在海量文本語料庫上進行下一詞元預測 (Next-Token Prediction, NTP) 的規模化訓練。與此同時&#xff0c;強化學習 (Reinforcement Learning, RL) 已成為微調 LLMs、使其與人類偏好對齊或增強特定技能&#xff08;如復雜推理&am…

Java 大視界——Java大數據在智能安防視頻監控中的異常事件快速響應與處理機制

??摘要&#xff1a;?? 在智慧城市和工業4.0浪潮下&#xff0c;智能安防系統日均產生PB級視頻流數據。如何在實時性、準確性、成本三者間取得平衡&#xff0c;成為行業核心挑戰。本文將深入探討??Java技術棧在大規模視頻分析系統中的核心作用??&#xff1a;基于FlinkJav…

華為云Flexus+DeepSeek征文| 基于Dify-LLM平臺應用實踐:創建智能知識庫問答助手

華為云FlexusDeepSeek征文&#xff5c; 基于Dify-LLM平臺應用實踐&#xff1a;創建智能知識庫問答助手 前言一、相關名詞介紹1.1 華為云Flexus X實例介紹1.2 華為云ModelArts Studio介紹 二、本次實踐介紹2.1 本次實踐環境介紹2.2 Dify平臺介紹 三、搭建Dify-LLM開發平臺3.1 進…

Spark on yarn的作業提交流程

一、YarnClient 二、YarnCluster 三、詳細描述 客戶端&#xff08;Client&#xff09;通過YARN的ResourceManager提交應用程序。在此過程中&#xff0c;客戶端進行權限驗證&#xff0c;生成Job ID和資源上傳路徑&#xff0c;并將這些信息返回給客戶端。客戶端將jar包、配置…

MySQL 主從復制與一主多從架構實戰詳解

文章目錄 一、MySQL 主從復制的本質原理 數據同步流程&#xff1a; 主從復制三大線程&#xff1a; 二、主從復制的三種模式 三、一主多從架構設計與應用 應用場景&#xff1a; 優勢&#xff1a; 四、單機模擬主從復制&#xff08;實戰配置&#xff09; 環境準備&#xff1a…

分布式光纖測溫及紅外測溫系統的區別?

在現代工業監控系統中&#xff0c;溫度監測是保障設備安全運行的關鍵環節。分布式光纖測溫&#xff08;DTS&#xff09;和紅外測溫&#xff08;IR&#xff09;是兩種常見的溫度監測技術。 本文將介紹這兩種技術的原理、優勢以及應用場景的區別。 光纖測溫技術的原理是利用光纖…

sql優化:使用 exists 優化 in () 或 = ()

1、使用 exists 優化 in () 優化前&#xff1a; select id, order_no, apply_time, apply_dept, apply_operator, purpose, stage, remark from BranchWarehouseApplyMaster where stage 0 and warehouse_id 1 and apply_dept in ( select emp_DeptID from Employee where …

HTTP 響應狀態碼

HTTP 響應狀態碼&#xff08;Response Status Codes&#xff09; HTTP 響應狀態碼用于表示服務器對客戶端請求的處理結果&#xff0c;由3位數字 組成&#xff0c;分為5類&#xff1a; 狀態碼 類別 常見狀態碼 說明 1xx 信息響應 100&#xff08;Continue&#xff09; …

如何通過插件系統打造個性化效率工作流

在現代工作流中&#xff0c;快速調用工具與自動化操作已成為提升生產力的核心環節。一款真正出色的效率工具&#xff0c;不僅要在響應速度和跨平臺兼容性上表現出色&#xff0c;更需要具備高度的可擴展性&#xff0c;以滿足多樣化的使用場景。 它不僅輕量高效&#xff0c;還支…

Spring上下文模塊設計

經過此前我們設計的如&#xff1a;IoC、Web、數據訪問、AOP等模塊的設計&#xff0c;我們從設計上已經搭建好了Spring的基礎骨架了&#xff0c;但聰明的碼友會思考想到&#xff1a;作為一個基礎框架而言&#xff0c;目前應該是已經夠用了的&#xff0c;但是上進的碼友怎么會就此…

keil5怎么關閉工程

在project里面有一個close project&#xff0c;點擊后就關掉了&#xff0c;之前還按照其他軟件的操作習慣&#xff0c;右鍵工程選項&#xff0c;但是始終沒有發現關閉選項。

騰訊云:6月30日起,自動禁用,及時排查

大家好&#xff0c;我是小悟。 騰訊云發布公告&#xff0c;宣布從2025年6月30日開始&#xff0c;對長期未使用的AccessKey&#xff08;API訪問密鑰&#xff09;進行自動禁用。 簡單來說&#xff0c;如果你的密鑰在90天內沒動靜&#xff0c;系統就會把它關掉&#xff0c;不管是…

【C++】多重繼承與虛繼承

多重繼承與虛繼承 1.單繼承和多重繼承的區別2.語法規則示例代碼&#xff1a;多重繼承子類指定父類的構造示例代碼&#xff1a;多重繼承子類隱藏父類的同名方法 3.虛繼承解決多重繼承遇到的bug示例代碼&#xff1a;環狀繼承引發的問題 3.1 虛基類&#xff1a;3.2 語法規則&#…