精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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!”。每秒一次連接到串行連接?,F在,我們將構建一個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

    文章

    7896

    瀏覽量

    263996
  • python
    +關注

    關注

    56

    文章

    4782

    瀏覽量

    84453
  • Arduino
    +關注

    關注

    187

    文章

    6464

    瀏覽量

    186651
收藏 人收藏

    評論

    相關推薦

    基于Arduino的串口通信項目

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

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

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

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

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

    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控制usb2any?

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

    使用Python進行Ping測試

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

    使用Python進行自然語言處理

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

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

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

    求助,在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

    通過Python腳本實現WIFI密碼的自動猜解

    本文將記錄學習下如何通過 Python 腳本實現 WIFI 密碼的自動猜解。
    的頭像 發表于 01-25 10:46 ?3303次閱讀
    <b class='flag-5'>通過</b><b class='flag-5'>Python</b>腳本實現WIFI密碼的自動猜解

    如何使用Python進行圖像識別的自動學習自動訓練?

    如何使用Python進行圖像識別的自動學習自動訓練? 使用Python進行圖像識別的自動學習和自動訓練需要掌握一些重要的概念和技術。在本文中,我們將介紹如何使用
    的頭像 發表于 01-12 16:06 ?537次閱讀

    Arduino的功能及其限制

    它在某些方面的限制。 精簡而易用的編程環境:Arduino IDE提供了一個友好的編程環境,使得即使沒有編程經驗的人也可以輕松地開始編寫代碼。 強大的互聯功能:Arduino可以通過各種通信
    的頭像 發表于 12-21 14:15 ?1148次閱讀