雖然Raspberry Pi和Arduino在應用和結構上是兩個不同的硬件,但它們都被認為是兩個相互競爭的開源硬件平臺。他們都有非常強大的社區和支持。今天我們將稍微改變一下,并向您展示我們如何利用它們。如果你同時擁有Arduino和Raspberry pi板,本文將向您展示如何使用Raspberry pi和Python來控制Arduino。
我們將使用PyFirmata 固件使用 Raspberry Pi python 腳本向 Arduino 發出命令。PyFirmata基本上是一個預構建的python程序庫包,可以安裝在Arduino中,以允許任何計算機上的python腳本與Arduino之間進行串行通信。這個python包可以訪問在Arduino上讀取和寫入任何引腳。所以在這里我們將使用 Raspberry pi 在 Arduino 上運行 python 程序。
因此,在本教程中,我們將利用這個庫,并將在我們的Arduino 板中使用它來使用 Raspberry Pi 控制 Arduino。
要求
安裝了Raspbian OS的Raspberry Pi
Arduino Uno 或任何其他 Arduino 板
Arduino USB 電纜
發光二極管
在本教程中,我使用外部顯示器使用HDMI電纜與樹莓派連接。如果您沒有顯示器,則可以使用SSH客戶端(Putty)或VNC服務器通過筆記本電腦或計算機連接到Raspberry Pi。
使用 Raspberry Pi 在 Arduino 中安裝 PyFirmata
要在Arduino中上傳PyFirmata固件,我們必須在Raspberry Pi中安裝Arduino IDE。請按照以下步驟進行安裝:
第 1 步:-將樹莓派連接到互聯網。打開命令終端并鍵入以下命令并按回車鍵
sudo apt-get
-y
install arduino python-serial mercurial
等待幾分鐘,這需要時間。此命令將在Raspberry Pi中安裝Arduino IDE。
第 2 步:-現在,我們將使用給定的 github 安裝 pyFirmata 文件:
git clone
https://github.com/tino/pyFirmata
然后運行以下命令:
cd pyFirmata
sudo python setup.py install
第 3 步:-我們已經安裝了所有必需的文件和設置。
現在,使用USB電纜將Arduino板與Raspberry Pi連接,并通過在終端窗口中鍵入arduino來啟動ArduinoIDE。
第 4 步:-然后鍵入lsusb命令以檢查 Arduino 是否與您的樹莓派連接。
在Arduino IDE中,轉到工具并選擇您的主板和串行端口。
第 5 步:-在Arduino上上傳PyFirmata固件,方法是單擊文件->示例->Firmata->標準Firmata,然后單擊上傳按鈕。如下圖所示。
我們已經成功地在Arduino板中安裝了pyFirmata固件。現在,我們可以使用Raspberry Pi控制Arduino。
為了演示,我們將通過在Raspberry Pi中編寫python代碼來閃爍和淡化Arduino上的LED。
代碼說明
對于編碼部分,您應該閱讀pyFirmata的文檔以更好地理解。我們將使用 pyFirmata 函數來編寫我們的代碼。您可以通過以下鏈接找到pyFirmata文檔。
因此,讓我們開始編寫代碼
在Raspberry Pi上打開您喜歡的文本編輯器并導入pyFirmata庫。
import pyfirmata
定義 Arduino 上的引腳以連接 LED
led_pin = 9
現在,我們必須使用 pyfirmata 編寫連接 Arduino 板的串行端口名稱。Arduino()函數,然后通過在板變量中分配端口來創建一個實例。
board = pyfirmata.Arduino("/dev/ttyACM0")
print "Code is running”
在 while 循環中,使用board.digital[].write() 函數使 LED 引腳高電平和低電平,并使用board.pass_time()函數給出延遲。
while True:
board.digital[led_pin].write(0)
board.pass_time(1)
board.digital[led_pin].write(1)
board.pass_time(1)
我們的代碼已準備就緒,通過將擴展名放入文件名.py來保存此代碼。
打開命令終端并鍵入pythonblink.py以在Arduino板上運行代碼。確保您的Arduino板使用USB電纜與Raspberry Pi板連接。
現在,您可以在Arduino板上看到閃爍的LED。
最后給出了使用 pyFirmata 閃爍 LED 的完整代碼。
使用 pyFirmata 的 Arduino 上的衰落 LED
現在,我們將編寫用于淡入 LED 淡入淡出的代碼,以使您更熟悉 pyFirmata 函數。此代碼與上一個代碼一樣簡單。您必須使用兩個用于循環,一個用于增加亮度,另一個用于降低亮度。
Python code for LED blink:
import pyfirmata
led_pin = 9
board = pyfirmata.Arduino("/dev/ttyACM0")
while True:
board.digital[led_pin].write(0)
board.pass_time(1)
board.digital[led_pin].write(1)
board.pass_time(1)
Python code for Fading LED:
import time
import pyfirmata
delay = 0.3
brightness = 0
board = pyfirmata.Arduino("/dev/ttyACM0")
led = board.get_pin('d:9:p')
while True:
# increase
for i in range(0, 10):
brightness = brightness + 0.1
print "Setting brightness to %s" % brightness
led.write(brightness)
board.pass_time(delay)
# decrease
for i in range(0, 10):
print "Setting brightness to %s" % brightness
led.write(brightness)
brightness = brightness - 0.1
board.pass_time(delay)
-
Arduino
+關注
關注
188文章
6477瀏覽量
187961
發布評論請先 登錄
相關推薦
黑科技!使用Raspberry Pi和Python GUI控制伺服電機(原理圖、源碼、項目教程)
Learn Raspberry Pi Programming with python
工業環境中的Raspberry PI和Arduino
Arduino Uno 和 Raspberry Pi系列開發
“添加”少許FPGA :Arduino和Raspberry Pi新玩法
![“添加”少許FPGA :<b class='flag-5'>Arduino</b>和<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>新玩法](https://file.elecfans.com/web2/M00/1F/69/pYYBAGGYHq-AcE8uAAOkT2KG8VI429.png)
Raspberry Pi和Arduino上的手寫數字識別
![<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>和<b class='flag-5'>Arduino</b>上的手寫數字識別](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
使用Raspberry Pi或Arduino:DIY LED矩陣彩燈
![使用<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>或<b class='flag-5'>Arduino</b>:DIY LED矩陣彩燈](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
使用Raspberry Pi和Arduino進行花卉監測
![使用<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>和<b class='flag-5'>Arduino</b>進行花卉監測](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
Raspberry Pi Zero W和Python 3入門
![<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> Zero W和<b class='flag-5'>Python</b> 3入門](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
使用Raspberry Pi和Arduino實現Web控制的LED動畫
![使用<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>和<b class='flag-5'>Arduino</b>實現Web<b class='flag-5'>控制</b>的LED動畫](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論