雖然Raspberry Pi和Arduino在應(yīng)用和結(jié)構(gòu)上是兩個(gè)不同的硬件,但它們都被認(rèn)為是兩個(gè)相互競(jìng)爭(zhēng)的開(kāi)源硬件平臺(tái)。他們都有非常強(qiáng)大的社區(qū)和支持。今天我們將稍微改變一下,并向您展示我們?nèi)绾卫盟鼈?。如果你同時(shí)擁有Arduino和Raspberry pi板,本文將向您展示如何使用Raspberry pi和Python來(lái)控制Arduino。
我們將使用PyFirmata 固件使用 Raspberry Pi python 腳本向 Arduino 發(fā)出命令。PyFirmata基本上是一個(gè)預(yù)構(gòu)建的python程序庫(kù)包,可以安裝在Arduino中,以允許任何計(jì)算機(jī)上的python腳本與Arduino之間進(jìn)行串行通信。這個(gè)python包可以訪問(wèn)在Arduino上讀取和寫入任何引腳。所以在這里我們將使用 Raspberry pi 在 Arduino 上運(yùn)行 python 程序。
因此,在本教程中,我們將利用這個(gè)庫(kù),并將在我們的Arduino 板中使用它來(lái)使用 Raspberry Pi 控制 Arduino。
要求
安裝了Raspbian OS的Raspberry Pi
Arduino Uno 或任何其他 Arduino 板
Arduino USB 電纜
發(fā)光二極管
在本教程中,我使用外部顯示器使用HDMI電纜與樹(shù)莓派連接。如果您沒(méi)有顯示器,則可以使用SSH客戶端(Putty)或VNC服務(wù)器通過(guò)筆記本電腦或計(jì)算機(jī)連接到Raspberry Pi。
使用 Raspberry Pi 在 Arduino 中安裝 PyFirmata
要在Arduino中上傳PyFirmata固件,我們必須在Raspberry Pi中安裝Arduino IDE。請(qǐng)按照以下步驟進(jìn)行安裝:
第 1 步:-將樹(shù)莓派連接到互聯(lián)網(wǎng)。打開(kāi)命令終端并鍵入以下命令并按回車鍵
sudo apt-get
-y
install arduino python-serial mercurial
等待幾分鐘,這需要時(shí)間。此命令將在Raspberry Pi中安裝Arduino IDE。
第 2 步:-現(xiàn)在,我們將使用給定的 github 安裝 pyFirmata 文件:
git clone
https://github.com/tino/pyFirmata
然后運(yùn)行以下命令:
cd pyFirmata
sudo python setup.py install
第 3 步:-我們已經(jīng)安裝了所有必需的文件和設(shè)置。
現(xiàn)在,使用USB電纜將Arduino板與Raspberry Pi連接,并通過(guò)在終端窗口中鍵入arduino來(lái)啟動(dòng)ArduinoIDE。
第 4 步:-然后鍵入lsusb命令以檢查 Arduino 是否與您的樹(shù)莓派連接。
在Arduino IDE中,轉(zhuǎn)到工具并選擇您的主板和串行端口。
第 5 步:-在Arduino上上傳PyFirmata固件,方法是單擊文件->示例->Firmata->標(biāo)準(zhǔn)Firmata,然后單擊上傳按鈕。如下圖所示。
我們已經(jīng)成功地在Arduino板中安裝了pyFirmata固件。現(xiàn)在,我們可以使用Raspberry Pi控制Arduino。
為了演示,我們將通過(guò)在Raspberry Pi中編寫python代碼來(lái)閃爍和淡化Arduino上的LED。
代碼說(shuō)明
對(duì)于編碼部分,您應(yīng)該閱讀pyFirmata的文檔以更好地理解。我們將使用 pyFirmata 函數(shù)來(lái)編寫我們的代碼。您可以通過(guò)以下鏈接找到pyFirmata文檔。
因此,讓我們開(kāi)始編寫代碼
在Raspberry Pi上打開(kāi)您喜歡的文本編輯器并導(dǎo)入pyFirmata庫(kù)。
import pyfirmata
定義 Arduino 上的引腳以連接 LED
led_pin = 9
現(xiàn)在,我們必須使用 pyfirmata 編寫連接 Arduino 板的串行端口名稱。Arduino()函數(shù),然后通過(guò)在板變量中分配端口來(lái)創(chuàng)建一個(gè)實(shí)例。
board = pyfirmata.Arduino("/dev/ttyACM0")
print "Code is running”
在 while 循環(huán)中,使用board.digital[].write() 函數(shù)使 LED 引腳高電平和低電平,并使用board.pass_time()函數(shù)給出延遲。
while True:
board.digital[led_pin].write(0)
board.pass_time(1)
board.digital[led_pin].write(1)
board.pass_time(1)
我們的代碼已準(zhǔn)備就緒,通過(guò)將擴(kuò)展名放入文件名.py來(lái)保存此代碼。
打開(kāi)命令終端并鍵入pythonblink.py以在Arduino板上運(yùn)行代碼。確保您的Arduino板使用USB電纜與Raspberry Pi板連接。
現(xiàn)在,您可以在Arduino板上看到閃爍的LED。
最后給出了使用 pyFirmata 閃爍 LED 的完整代碼。
使用 pyFirmata 的 Arduino 上的衰落 LED
現(xiàn)在,我們將編寫用于淡入 LED 淡入淡出的代碼,以使您更熟悉 pyFirmata 函數(shù)。此代碼與上一個(gè)代碼一樣簡(jiǎn)單。您必須使用兩個(gè)用于循環(huán),一個(gè)用于增加亮度,另一個(gè)用于降低亮度。
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
+關(guān)注
關(guān)注
187文章
6455瀏覽量
186352
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論