Python席卷了編碼世界。除了這種新語言的興起之外,DIY電子產品領域也蓬勃發展。 Arduino和Raspberry Pi等公司的開發板和單板計算機已經改變了人們創建家用自釀電子產品的方式。如果可以用Python編程Arduino會很棒嗎?
沒有比結合兩個很棒的東西更好的感覺了。可悲的是,不可能用Python直接對Arduino進行編程,因為開發板上沒有用于語言解釋的選項。但是,可以使用Python程序直接控制USB。
本文將向您展示如何設置Arduino UNO(盡管任何Arduino兼容板都可以在這里工作),以便通過該程序進行編程和控制使用Python程序的命令行。本教程是針對Windows 10編寫的,但也適用于Mac和Linux。您甚至可以使用此工作流程直接從Raspberry Pi控制Arduino,以獲得終極的雙向DIY體驗。
為Python設置Arduino
對于今天的項目,我們將使用Arduino Uno,以及適用于Python的pyFirmata接口。盡管在編寫pyFfirmata接口僅支持Arduino Uno,Mega,Due和Nano時,您幾乎可以使用任何與Arduino兼容的板。如果您已經是Python專家,則可以在pyFirmata中添加自己的主板支持-如果需要,請確保更新其GitHub!
尚未安裝Arduino IDE。如果您不熟悉微控制器,那么我們的Arduino初學者指南將幫助您完成一切。
連接Arduino板并打開IDE。確保在工具菜單中選擇了正確的板卡和端口。加載 StandardFirmata 示例草圖并將其上傳到電路板上。只要您通過USB將Arduino連接到計算機,就可以直接控制Arduino。只要將草圖上傳到板上沒有任何錯誤,您就可以繼續。
Python和命令行控制
我們將使用Python 3.4來控制Arduino,因為您將要安裝的模塊將其指定為最新的兼容版本。在此之前的任何版本都應該可以正常工作,并且據報導更高的版本可以工作。您可以從Python Software Foundation網站下載適用于Windows 10的Python 3.4。如果您想運行多個版本的Python,我們的Python虛擬環境指南將可以為您提供幫助。
一旦您安裝了Python,我們希望將其添加到系統的PATH變量中。這樣一來,我們就可以直接從命令行運行Python代碼,而無需進入安裝目錄。您可以通過打開控制面板,搜索環境,然后點擊編輯系統環境變量。在窗口底部,選擇環境變量。這將打開此窗口:
如果您已經在列表中看到 PATH ,請單擊“編輯”,然后添加您的 Python 和 Python/Scripts 目錄。如果您沒有PATH變量,請單擊“新建”并添加它。請注意,此處將Python直接安裝在 C: 中。如果您將其安裝在其他位置,則需要對其進行修改以反映這一點。單擊“確定”返回窗口鏈,您幾乎已經準備好使用Python控制Arduino!
神奇的潤滑脂
您將需要完成最后一個難題讓Python與我們的Arduino很好地對話。這以稱為 pyFirmata 的Python接口的形式出現。 Tino de Bruijn創建的該界面可以從github下載,盡管您可以直接在命令行中輸入以下內容來安裝它:
pip install pyfirmata
一切正常,它應該安裝并如下所示:
如果失敗,請繼續將Python添加到環境變量部分,并確保您已經為您的Python目錄提供了正確的路徑。
使它發生
現在一切都已設置完畢,您可以為Arduino創建一個Python程序來對其進行測試。打開您選擇的IDE。今天我們將使用Eclipse,但您可以輕松地使用任何文本編輯器,甚至是云中的IDE。
創建一個新腳本并將其保存為 blink.py 。打破傳統的標準LED閃爍程序,您將要創建一個程序,該程序會提示用戶在LED閃爍之前希望其閃爍的次數。這是一個簡短的程序,如果您想直接使用它,可以在這里下載,但讓我們對其進行分解。
首先,您需要從 pyFirmata 模塊,以及標準的Python Time 模塊。
from pyfirmata import Arduino, util
import time
現在,您將要設置Arduino開發板。本文假設您正在使用 Arduino Uno 板,盡管還支持其他幾個Arduino板。請參閱pyFirmata github,以獲取有關主板支持的詳細信息。
檢查Arduino IDE中使用的COM端口,并將其作為變量 board 輸入到您的代碼中。
p》 board = Arduino(“COM3”)
現在,您將設置用戶提示。那些熟悉Python的人會在這里識別所有內容。使用 input 功能將問題打印到屏幕上,并將答案存儲為變量。用戶提供一個數字后,程序將報告LED閃爍多少次。
loopTimes = input(‘How many times would you like the LED to blink: ’)
print(“Blinking ” + loopTimes + “ times.”)
要使LED閃爍適當的次數,請使用 for循環。如果您是Python的新手,請注意縮進,因為與其他語言不同,空格是語法的一部分。請注意,插針13是Arduino Uno的板載LED,如果您的電路板不同,則需要對其進行修改。
for x in range(int(loopTimes)):
board.digital[13].write(1)
time.sleep(0.2)
board.digital[13].write(0)
time.sleep(0.2)
您將投射 loopTimes 變量為整數,因為來自用戶的輸入將自動存儲為字符串。在這個簡單的演示中,我們假設用戶將輸入一個數值。其他任何項(例如“八”)都將引發錯誤。
保存腳本,并打開命令提示符。
閃爍燈和其他啟示
一切準備就緒,您需要做的就是導航到腳本所在的位置并運行它。通過鍵入 cd [腳本目錄的路徑] ,然后鍵入 python blink.py 。
一切正常,您的程序將以Arduino初始化時會稍有延遲,提示您輸入一個數字,然后使用板載LED閃爍多次。
程序輸出應如下所示:
在選定的眨眼次數后,一旦按Enter鍵,Arduino應該執行您的命令。
小開始
該項目是在Python和Arduino板之間進行通信的準系統。這種方法與通常的將腳本上傳到Arduino本身的工作流程完全不同,但是它為使用該平臺開辟了一種全新的方式,尤其是在您喜歡Python編程語言的情況下。
如果您使用在家中使用Linux服務器,這種與Arduino板通信的方法可以將該服務器擴展為成熟的DIY家庭自動化系統。通過將控制微控制器的Python腳本與DIY自動化電路相結合,您的NAS存儲盒可以承擔一套全新的有用功能。
要使其具有終極的DIY體驗,為什么不建造自己的NAS盒并用它來控制您的電器嗎?想象一下在Plex服務器上按播放并自動關閉燈光會多么酷!
責任編輯:wv
-
python
+關注
關注
56文章
4823瀏覽量
86136 -
Arduino
+關注
關注
188文章
6490瀏覽量
190058
發布評論請先 登錄
免費分享Arduino入門+進階(全套例程+書籍)

零基礎入門:如何在樹莓派上編寫和運行Python程序?

評論