如何在Raspberry Pi運行Arduino程式

高級範例:SPI和I2C

顯然,LED閃爍和控制台輸出等功能可以完成許多不錯的專案,但是我認為,如果添加一些更高級的功能,比如I2C和SPI,我們就可以做更多事情。RasPiArduino框架同樣支援這些功能,所以我們可以用I2C匯流排將不同的感測器連至Raspberry;或者讓Raspberry透過SPI匯流排與各通信模組進行通信。對於I2C器件,我使用的是羅姆感測器評估套件 中的BH1745NUC顏色感測器;對於SPI,我用的是SX1278 LoRa模組。這兩者的運行電壓邏輯都是3.3V,因此只需幾根線纜就可以將它們與Raspberry連接起來,非常簡單。

arduino code raspberry pi

圖12 本例的接線示意圖

多虧了LoRaLib和RohmMultiSensor程式館,系統代碼也非常簡單!基本上就是LoRaLib程式館中的接收器範例代碼加上RohmMultiSensor程式館中的BH1745NUC範例代碼。

 

電路實物如下圖所示。雖然不漂亮,但是很實用。

arduino code raspberry pi

圖13 已連接SX1278無線模組和BH1274NUC顏色感測器的Raspberry Pi

在此範例中,所有重要資訊都被列印到Raspberry控制台。我們可以看到,SX1278成功接收到了包含字串“Hello Raspberry!”的資料包(從Arduino透過LoRenz研發板發送),而且顏色感測器測量的值也是正確的!

arduino code raspberry pi

圖14 Raspberry Pi控制台輸出

結論

那麼結論是:我們可以將Raspberry Pi當作Arduino研發板進行程式設計嗎?絕對可以!但是,這兩種系統都有優缺點。Raspberry的處理速度更快,Arduino功耗更低;Raspberry具有內建的HDMI和乙太網埠,而Arduino具有內建的模數轉換器。其他對比不再一一列舉。但是,這歸根結底是因為Arduino和Raspberry的應用場景不同。比如,如果您需要構建基於電池的感測器監控系統,請選Arduino。如果您需要透過機器學習來處理相機圖片,請選Raspberry Pi。總之,我們必須根據系統要處理的任務類型選擇適當元件,反之則不行。