www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

首頁 > 評測 > 一板兩用,這個可以有!——GrovePi+擴展板使用手記

一板兩用,這個可以有!——GrovePi+擴展板使用手記

GrovePi+   拓展板   樹莓派   Grove   轉接板   
  • 作者:SATURN
  • 來源:21ic
  • [導讀]
  • GROVE模塊眾多,類型豐富,但是對于大部分樹莓派用戶來說,使用杜邦線來連接設備,有點不勝其煩。如果有個能提供標準GROVE接口的擴展板,而且又能與樹莓派引腳兼容的話,使用起來就方便多了!

GROVE模塊眾多,類型豐富,但是對于大部分樹莓派用戶來說,使用杜邦線來連接設備,有點不勝其煩。如果有個能提供標準GROVE接口的擴展板,而且又能與樹莓派引腳兼容的話,使用起來就方便多了!

GROVEPI+能滿足你的需求。

image1.jpg

GROVEPI+的口號就是:連接樹莓派及GROVE傳感器!

GROVEPI+起源于Dexter公司的BrickPi,其初衷是將LEGO Mindstorms與樹莓派連接起來,項目以眾籌的方式發(fā)起,項目最初的目標是針對愛好者、黑客、工程師及創(chuàng)客等用戶群體,隨后發(fā)起者發(fā)現(xiàn)了更大的目標即教育市場。

GROVEPI+擴展板是GROVEPI+ START KIT套件中的一部分,該套件除了擴展板之外,還提供了大量的GROVE傳感器模塊,配合擴展板使用,在樹莓派上能完成大部分的學習及原型驗證任務。

image2.jpg

擴展背面是26pin的GPIO連接器,其中包括電源接口等,GROVEPI+通過樹莓派的供電輸出來取電。

image3.jpg

GROVEPI+擴展板中間部分的MCU是一顆ATMeg328p,提供了Arduino擴展功能,在MCU四周排列的GROVE接口均由這一顆MCU提供。GROVEPI+與樹莓派之間的通信通過I2C接口進行,所有Grove模塊通過通用4針連接器電纜連接到GrovePi +上的通用Grove連接器。

Grove Pi +上的ATMEGA328微控制器,充當Raspberry Pi和Grove傳感器之間的解釋器,通過I2C接口來發(fā)送,接收和執(zhí)行RaspberryPi發(fā)送的命令。ATMEGA328中預先寫入了控制代碼,具體詳情可以參考GROVEPI+在Github上的代碼。

如果想對這顆MCU進行編程,重新定制擴展板的功能,可以使用擴展板上的ISP接口來進行。該ISP接口只引出了焊盤,沒有焊接排針。

image4.png

另外一種更直接的方式是使用avrdude直接對其進行編程,這是命令行方式的編程操作,需要預先將代碼編譯成.hex格式的二進制文件,這種方法適合用來對固件進行升級。參考代碼如下

avrdude -c gpio -p m328p -U flash:w:.build/uno/firmware.hex

參考官方給出的原理圖,其中Arduino部分的內容如下

image5.png

可以看到擴展板上引出的所有接口均來自ATMEG328,至于樹莓派本身的GPIO等接口,只引出了1~26pin(物理接口),參考原理圖如下

image6.png

接下開始安裝配置軟件部分。

只需要使用一條簡單的命令就可以,如下

curl -kL dexterindustries.com/update_grovepi | bash

該腳本程序會下載并配置好所有相關的軟件依賴及硬件配置,該命令會從網(wǎng)絡上下載相關的軟件包,所以先要保證樹莓派能正常連接Internet。

接下來使用git將演示代碼下載到本地,命令如下

git clone https://github.com/DexterInd/GrovePi

我們先來研究下相關的python代碼,看看樹莓派是如何與擴展板通信的,部分代碼如下

 

PYcode.jpg

 

上述代碼中的digitalRead及digitalWrite函數(shù)都使用了I2C操作,默認的I2C地址為0x04,我們可以通過i2cdetect命令來查看設備狀態(tài)

image7.png

可以看到0x04地址,這就是擴展板上I2C設備的地址。為什么不使用串口來通信呢?我們都知道,樹莓派上的串口默認讓BLE占用了,所以要使用BLE的話,就不能使用該串口了。

接下來就可以使用C#、Python語言通過I2C接口來控制Arduino了。一段簡單的代碼及程序運行效果,如下

from grove_rgb_lcd import *

setText("Hello world\nLCD test")

setRGB(0,128,64)

# Slowly change the colors every 0.01 seconds.

for c in range(0,255):

setRGB(c,255-c,0)

time.sleep(0.01)

setRGB(0,255,0)

setText("Bye bye, this should wrap")

程序運行效果如下

image8.jpg

此時的ATMEG328充當一個解釋器,接收來自樹莓派的命令,然后忠實的執(zhí)行,當然此時的ATMEG328也不能另作它用了。

  • 本文系21ic原創(chuàng),未經許可禁止轉載!

網(wǎng)友評論