吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

怎樣通過USB進行Arduino Python通信

454398 ? 來源:wv ? 2019-10-24 11:52 ? 次閱讀

第1步:計算機環境

在計算機方面,我們將使用一個稱為PySerial的Python模塊。巧合的是,PySerial允許通過Python使用串行連接。在Windows上安裝PySerial是一個非常簡單的過程。 注意:此“假設”假設您已安裝Python 2. *!如果您不這樣做,PySerial仍然可以使用,但是您可能需要稍微更改代碼以適應新標準。

要在Windows上安裝,只需訪問PySerial的下載頁面,下載Windows二進制文件并運行它(在撰寫本文時為pyserial-2.7.win32.exe)。然后,通過打開新的Python解釋器實例并運行以下命令來測試安裝:

import serial

步驟2:初始連接

要從Python啟動與Arduino的連接,我們首先必須確定Arduino處于哪個 COM端口。幸運的是,Ardunio編程環境使此任務變得簡單。

只需查看Arduino IDE的右下角,您將看到一些包含COM端口號的文本。我們將使用它來啟動我們的Python串行連接,如下所示:

arduino = serial.Serial(‘COM1’, 115200, timeout=.1)

上面的代碼將在“ COM1”上使用“ 115200”波特創建一個名為“ ardunio”的新串行對象,速率和.1秒超時。保持選定的波特率非常重要,因為它必須與Ardiuno端的波特率完全匹配。

第3步:Ardiuno與Python的通信

在Ardunio和Python之間進行通信比通過其他方式更容易。首先,我們需要一些代碼來啟動Ardunio的串行連接,并傳遞一條消息。我們可以使用Arduino的Serial.write()函數來做到這一點,就像這樣:

void setup() {

Serial.begin(115200); // use the same baud-rate as the python side

}

void loop() {

Serial.println(“Hello world from Ardunio!”); // write a string

delay(1000);

}

這段代碼將編寫一個“來自Ardunio的Hello world!”。每秒一次連接到串行連接。現在,我們將構建一個Python腳本,該腳本能夠接收這些消息,并根據需要對其進行處理。首先,我們必須像上一頁一樣啟動連接,然后創建一個循環,該循環從流中獲取當前信息,并將其打印到控制臺。

import serial

arduino = serial.Serial(‘COM1’, 115200, timeout=.1)

while True:

data = arduino.readline()[:-2] #the last bit gets rid of the new-line chars

if data:

print data

請注意,在這種情況下,readline()處于阻塞狀態,因此它將等待直到新行完全通過串行緩沖區為止。通常,readline()會占據空白行,因此我放入了if語句來檢查數據是否實際包含任何內容。如果您想更精確地獲取非阻塞數據,則可以在Arduino端使用read()并使用Serial.write()(用于字節)或Serial.print()(用于ASCII字符),但是您需要

第4步:Python與Arduino通訊

這一步有點難,因為這需要我們在事物的Arduino方面解析數據。為了幫助加快速度,我繼續編寫了一個簡單的循環,該循環從Serial緩沖區中獲取當前數據,并創建一個以Null結尾的字符串(C字符串),然后將其傳遞回Serial連接。您可以使用此技術來編寫實際的解析器,方法是指定自己的數據包前綴和后綴,然后在串行緩沖區中掃描這些內容,并相應地創建字符串。

void setup() {

Serial.begin();

}

void loop() {

if(Serial.available() 》 0) {

char data = Serial.read();

char str[2];

str[0] = data;

str[1] = ‘’;

Serial.print(str);

}

}

現在我們可以編寫一個簡單的腳本,將數據從Python發送到Arduino,然后打印出返回的內容。

import serial, time

arduino = serial.Serial(‘COM1’, 115200, timeout=.1)

time.sleep(1) #give the connection a second to settle

arduino.write(“Hello from Python!”)

while True:

data = arduino.readline()

if data:

print data.rstrip(‘ ’) #strip out the new lines for now

# (better to do .read() in the long run for this reason

不難看出如何進一步擴展此方法以允許兩個設備之間進行復雜的通信。我將在以后的“ ible”中介紹這種通信的一個示例,在該示例中,我將制作一種能夠在任何PC游戲上工作的游戲手柄設備!

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • usb
    usb
    +關注

    關注

    60

    文章

    7981

    瀏覽量

    266101
  • python
    +關注

    關注

    56

    文章

    4807

    瀏覽量

    85040
  • Arduino
    +關注

    關注

    188

    文章

    6477

    瀏覽量

    187827
收藏 人收藏

    評論

    相關推薦

    如何使用Arduino實現CAN總線通信

    CAN(Controller Area Network)總線是一種常用于汽車和工業控制系統的串行通信協議,以其高可靠性和實時性而聞名。Arduino,作為一種流行的開源微控制器平臺,可以通過附加
    的頭像 發表于 12-23 09:06 ?525次閱讀

    基于Arduino的串口通信項目

    Arduino Mega等。 USB數據線 :用于將Arduino開發板連接到計算機。 串口設備 :可以是另一個Arduino開發板、傳感器模塊、執行器等,只要它支持串口
    的頭像 發表于 11-22 09:24 ?858次閱讀

    使用Python進行串口通信的案例

    當然!以下是一個使用Python進行串口通信的簡單示例。這個示例展示了如何配置串口、發送數據以及接收數據。我們將使用 pyserial 庫,這是一個非常流行的用于串口通信
    的頭像 發表于 11-22 09:11 ?477次閱讀

    如何使用Arduino實現CAN總線通信

    開源硬件平臺,通過添加CAN總線模塊,也可以實現CAN通信。 硬件準備 Arduino開發板 :可以選擇Arduino Uno、Mega等型號。 CAN總線模塊 :如MCP2515或M
    的頭像 發表于 11-12 10:09 ?1374次閱讀

    USB2ANY控制lmx2595evm,是否可以通過python或者FPGA直接與evm通信來控制?

    USB2ANY控制lmx2595evm,寫入寄存器值的常用方法是使用TICS Pro軟件控制,請問我是否可以通過python或者FPGA直接與evm通信來控制
    發表于 11-08 16:26

    如何用python控制usb2any?

    我想用python控制usb2any,在網上搜索后得到的關于usb2any的資料很少,是否有官方的usb2any函數庫?
    發表于 11-08 14:36

    使用Python進行圖像處理

    下面是一個關于使用Python在幾行代碼中分析城市輪廓線的快速教程。
    的頭像 發表于 11-07 10:14 ?279次閱讀
    使用<b class='flag-5'>Python</b><b class='flag-5'>進行</b>圖像處理

    如何用python控制usb2any?

    我想用python控制usb2any,在網上搜索后得到的關于usb2any的資料很少,是否有官方的usb2any函數庫?
    發表于 09-27 06:44

    使用Python進行Ping測試

    )請求包,然后等待目標主機返回響應包,從而測量網絡的延遲和丟包情況。隨著Python編程語言的廣泛應用,越來越多的網絡工程師開始使用Python進行自動化網絡測試和管理任務。本篇文章將詳細介紹如何使用
    的頭像 發表于 08-12 17:56 ?601次閱讀
    使用<b class='flag-5'>Python</b><b class='flag-5'>進行</b>Ping測試

    用pycharm進行python爬蟲的步驟

    以下是使用PyCharm進行Python爬蟲的步驟: 安裝PyCharm和Python 首先,您需要安裝PyCharm和Python。PyCharm是一個流行的
    的頭像 發表于 07-11 10:11 ?953次閱讀

    使用Python進行自然語言處理

    在探討使用Python進行自然語言處理(NLP)的廣闊領域時,我們首先需要理解NLP的基本概念、其重要性、Python在NLP中的優勢,以及如何通過
    的頭像 發表于 07-04 14:40 ?502次閱讀

    如何使用Python進行神經網絡編程

    神經網絡簡介 神經網絡是一種受人腦啟發的機器學習模型,由大量的節點(或稱為“神經元”)組成,這些節點在網絡中相互連接。每個節點可以接收輸入,對輸入進行加權求和,然后通過一個激活函數產生輸出
    的頭像 發表于 07-02 09:58 ?452次閱讀

    求助,在esp-idf中使用arduino作為組件后怎樣使用arduino的庫?

    在esp-idf中使用arduino作為組件后怎樣使用arduino的庫,例如我此時需要使用arduino的第三方庫blinker,怎樣使用
    發表于 06-12 07:21

    用STM32WB5MMG的設計的傳感模塊與USB dongle進行通信遇到的疑問求解

    通過用STM32WB5MMG的設計的傳感模塊與USB dongle進行通信(藍牙通知 單次通知數據243Bytes) 1.我只有每次下載完程序才能正常與
    發表于 05-24 08:22

    CY7C68013A通過USB與平板設備通信,平板能找到該USB設備但顯示無驅動的原因?

    使用貴司的CY7C68013A通過USB 與平板設備(安卓設備)通信時遇見問題,平板能找到該USB設備,但是顯示無驅動,不能進行數據傳輸。請
    發表于 02-27 06:35
    网上百家乐官网作| 澳门百家乐官网网上娱乐场开户注册| 在线百家乐官网策| 沙龙百家乐娱乐平台| 大发8888娱乐城| 皇冠百家乐代理网| 百家乐园试玩| 百家乐官网增值公式| 赌博百家乐官网游戏| 玩百家乐最好方法| 大发888老虎机手机版| 保单百家乐官网游戏机| 网页百家乐| 大发888澳88| 网页百家乐官网游戏| 新世纪百家乐官网的玩法技巧和规则| 赌博百家乐判断决策| 伟博娱乐场| 试玩百家乐官网的玩法技巧和规则 | 伟德百家乐官网下载| 百家乐官网合作| 大发888娱乐城客服lm0| 什么百家乐官网平注法| 网上百家乐如何打水| 皇冠开户网址| 诺贝尔百家乐官网的玩法技巧和规则 | 云鼎娱乐城信誉度| 百家乐官网赌博技巧网| 百家乐博彩的玩法技巧和规则| 圣淘沙娱乐城真人赌博| 百家乐官网博弈之赢者理论| 威尼斯人娱乐城提款| 百家乐官网投注之对冲投注| 百家乐赌场牌路分析| 周宁县| 百家乐的桌子| 即墨市| 圣安娜百家乐包杀合作| 百家乐官网是多少个庄闲| 百家乐筹码盒| 百家乐官网娱乐城棋牌|