树莓派学习笔记——GPIO功能学习
生活随笔
收集整理的這篇文章主要介紹了
树莓派学习笔记——GPIO功能学习
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
0.前言
樹莓派現在越來越火,網上樹莓派的資料也越來越多。樹莓派源自英國,國外嵌入式開源領域具有良好的分享精神,樹莓派各種集成庫也層出不窮,下面推薦幾個。【 python GPIO 】 【開發語言】——python 【簡單介紹】——該庫更確切的名稱為raspberry-gpio-python,樹莓派官方資料中推薦且容易上手。python GPIO是一個小型的python庫,可以幫助用戶完成raspberry相關IO口操作。但是python GPIO庫還沒有支持SPI、I2C或者1-wire等總線接口。除了python GPIO之外,還有眾多的python擴展庫(例如webiopi),毫無疑問的說python非常適合樹莓派,樹莓派也非常適合python。
【 wiringPi 】
【開發語言】——C語言 【簡單介紹】——wiringPi適合那些具有C語言基礎,在接觸樹莓派之前已經接觸過單片機或者嵌入式開發的人群。wiringPi的API函數和arduino非常相似,這也使得它廣受歡迎。作者給出了大量的說明和示例代碼,這些示例代碼也包括UART設備,I2C設備和SPI設備等,毫無疑問地說wiringPi功能非常強大。
【 BCM2835 C Library 】 【開發語言】——C語言 【簡單介紹】BCM2835 C Library可以理解為使用C語言實現的相關底層驅動,它給我的感覺更像STM32的庫函數,BCM2835 C Library的驅動庫包括GPIO、SPI和UART等,可以通過學習BCM2835 C Library熟悉BCM2835相關的寄存器操作。如果有機會開發樹莓派上的linux驅動,或自主開發python或PHP擴展驅動,可以從BCM2835 C Library找到不少的“靈感”。 【相關博文】? 更多樹莓派學習筆記請參考 ——【 樹莓派學習筆記——索引博文 】
1.硬件準備
【樹莓派】——在開始所有的實驗之前,你需要一塊完整的樹莓派。 【IO擴展板】——可以通過淘寶購買IO擴展板,或者購買萬用板和杜邦線自行制作IO擴展板。圖1 樹莓派擴展板——圖片來自 天貓 大菠蘿數碼專營店
圖2 運行效果圖
2.注意事項
【編號方式】圖3 GPIO編號方式——該圖片來自wiringPi說明文檔
樹莓派的軟件擴展庫雖然很多,但也導致了擴展庫“碎片化”的問題,例如操作樹莓派的GPIO端口,GPIO的編號便存在三種不同的方式 【1】插座編號方式 編號側重P1插座側,從上到下,從左到右。正如圖3的Header一欄。 【2】BCM2835編號方式 編號側重CPU寄存器,根據BCM2835的GPIO寄存器編號。正如圖3 BCM GPIO一欄。 【3】wiringPi編號方式 編號側重實現邏輯,把擴展GPIO端口從0開始編號,這種編號方便編程。正如圖3 WiringPi一欄。 【舉例說明】 插座編號方式 11 -> BCM2835編號方式 17 -> wiringPi編號方式 GPIO0。無論如何它都是同一個IO管腳。 【代碼寫在哪里】 【1】直接在樹莓派中編寫 樹莓派中有幾款代碼(文本)編輯軟件,可以在樹莓派中編寫代碼。 【2】在windows中編寫 可以在windows中編寫代碼,如果是Python腳本可通過FTP軟件傳輸到樹莓派中,然后使用SSH客戶端登錄到樹莓派中執行Python腳本。如果是C語言文件,除了使用FTP傳輸之外還需要在樹莓派上編譯才可以生成可執行文件(相當于windows上的exe文件)。相關軟件操作請參考【 樹莓派學習筆記——常用軟件匯總 】 【3】在其他linux中編寫 與windows中編寫代碼不同,在其他linux發行版(例如ubuntu)中可安裝交叉工具鏈,交叉編譯C文件生成在樹莓派的可執行文件,那么使用FTP傳輸可執行文件至樹莓派即可。其實方式【1】和方式【3】是幾乎相同的。
【本例原理圖】 為了說明問題本例只有一個LED,接在了樹莓派IO擴展插座的11腳。
圖4 原理圖
2 Python GPIO實現
【安裝過程】 【1】先安裝python-dev,輸入以下指令。sudo apt-get install python-dev 【2】安裝RPi.GPIO,依次輸入以下指令。特別說明,由于RPi.GPIO仍處于不斷完善的過程中,請參考前言中的鏈接下載最新的安裝代碼。# 下載?$ wget? http://raspberry-gpio-python.googlecode.com/files/RPi.GPIO-0.5.3a.tar.gz# ?解壓縮?
$ tar xvzf RPi.GPIO-0.5.3a.tar.gz?
# 進入解壓之后的目錄?
$ cd RPi.GPIO-0.5.3a?
# 啟動安裝?
$ sudo python setup.py install
【示例代碼】 新建一個名為led.py的文件,該文件具體內容如下: [python]?view plaincopy
sudo python led.py
好吧,擴展板上的LED等開始閃爍了。最后使用Ctrl+C結束Python程序。 【簡單說明】 【1】GPIO.setmode(GPIO.BOARD),采用插座引腳編號方式。 【2】由于采用插座引腳編號方式,此處的11腳相當于BCM2835寄存器編號方式的引腳11。
4 WiringPi實現
【安裝過程】詳見【 樹莓派學習筆記——wiringPi簡介、安裝和管腳說明 】 【示例代碼】 新建一個名為blink.c文件,該文件具體內容如下: [cpp]?view plaincopy
sudo ./blink 程序順利運行,最后使用ctrl+c可以結束程序。
【簡單說明】 【1】不確定的最后狀態,由于程序停止的時間未知,所有LED可能為點亮狀態也可能會熄滅狀態。 【2】和python的程序相比,GPIO的端口號似乎發生了變化,但是實際上為同一個IO,只是IO的編號方式略有不同。 【3】-lwiringPi表示動態加載wiringPi共享庫,如果不熟悉gcc指令和makefile,請參考系列博文——【 Linux學習筆記——例說makefile 索引博文 】
5 BCM2835 C Library
【安裝過程】 特別說明,由于BCM2835 C Library仍處于不斷完善的過程中,請參考前言中的鏈接下載最新的安裝代碼。# 下載$ wget? http://www.airspayce.com/mikem/bcm2835/bcm2835-1.35.tar.gz ?
# 解壓縮
$ tar xvzf bcm2835-1.35.tar.gz?
# 進入壓縮之后的目錄
$ cd bcm2835-1.35
# 配置
./configure
# 從源代碼生成安裝包
make
# 執行檢查
sudo make check
# 安裝 bcm2835庫
sudo make install
【示例代碼】 新建一個名為blink.c的程序,程序的具體內容如下: [cpp]?view plaincopy
sudo ./blink 程序順利運行,最后使用ctrl+c可以結束程序。 【1】和wiringPi的情況相似,若關閉程序LED燈可能點亮也可能熄滅。 【2】雖然GPIO端口再次發生了變化,但還是指向那個LED燈。 【3】-lbcm2835表示動態加載bcm2835共享庫,如果不熟悉gcc指令和makefile,請看看我的其他博文吧。
6 未來做些什么
實踐GPIO輸入功能,實踐SPI功能,實踐I2C功能等。最后綜合以上若干內容結合web做些好玩的應用。總結
以上是生活随笔為你收集整理的树莓派学习笔记——GPIO功能学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: raspberry树莓派NFS搭建
- 下一篇: 树莓派GPIO驱动原理