樹莓派手冊介紹
- 1 樹莓派使用教程
- 1.1 新手入門--樹莓派
- 1.1.1 樹莓派介紹-哪傢是真正的樹莓派
- 1.1.2 懶人教程-新手玩樹莓派
- 1.1.3 初次嚐試-樹莓派
- 1.1.3.1 繫統安裝-樹莓派
- 1.1.3.2 連接開機-樹莓派
- 1.1.3.3 進入圖形界麵-樹莓派
- 1.1.3.4 SSH連接-樹莓派
- 1.1.3.5 網絡設置-靜態IP-樹莓派
- 1.1.3.6 VNC安裝-樹莓派
- 1.1.3.7 VNC自動啟動-樹莓派
- 1.1.4 新手入門教程-樹莓派新手入門指南必看
- 1.1.5 新手入門教程-樹莓派快速入門指南
- 1.1.6 顯示器 修改config.txt--HDMI接口/VGA接口
- 1.1.7 樹莓派config.txt文件存放在哪裡
- 1.1.8 樹莓派config配置文件蔘數具體説明
- 1.1.9 樹莓派外殼安裝的教程
- 1.1.10 Config文件詳細説明
- 1.1.11 樹莓派完美運行最新 Android 7.0牛軋醣
- 1.2 網絡相關--樹莓派
- 1.2.1 樹莓派手動指定靜態IP和DNS 終極解決大法
- 1.2.2 命令行配置wifi無線連接
- 1.2.3 命令行配置藍牙連接-BlueTooth
- 1.2.4 如何打開藍牙-樹莓派
- 1.2.5 隨時隨地遠程登録-樹莓派
- 1.2.6 通過花生殼穿透內網-樹莓派
- 1.2.7 花生殼穿透內網改進版-樹莓派
- 1.2.8 windows遠程樹莓派
- 1.2.9 設置靜態IP方法
- 1.2.10 配置多箇WIFI
- 1.2.11 連接Wifi最穩定的辦法
- 1.2.12 安裝VNC Server併設置爲自動啟動
- 1.2.13 Linux繫統安裝XRDP+VNC實現遠程桌麵訪問
- 1.2.14 繫統內置VNC Server
- 1.3 外設相關-樹莓派
- 1.3.1 GPIO功能學習
- 1.4 顯示相關-樹莓派
- 1.4.1 脫離顯示器使用樹莓派
GPIO功能學習
- 2017-02-17 10:23:17
- 啊超
- 9034
- 最後編輯:achao 於 2017-02-17 10:33:01
樹莓派學習筆記——GPIO功能學習
摘自:xukai871105博客0.前言
樹莓派現在越來越火,網上樹莓派的資料也越來越多。樹莓派源自英國,國外嵌入式開源領域具有良好的分享精神,樹莓派各種集成庫也層齣不窮,下麵推薦幾箇。
【開髮語言】——python
【開髮語言】——C語言
【相關博文】
更多樹莓派學習筆記請蔘考——【樹莓派學習筆記——索引博文】
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仍處於不斷完善的過程中,請蔘考前言中的鏈接下載最新的安裝代碼。
# 下載
# 解壓縮
$ tar xvzf RPi.GPIO-0.5.3a.tar.gz
# 進入解壓之後的目録
$ cd RPi.GPIO-0.5.3a
# 啟動安裝
$ sudo python setup.py install
$ tar xvzf RPi.GPIO-0.5.3a.tar.gz
# 進入解壓之後的目録
$ cd RPi.GPIO-0.5.3a
# 啟動安裝
$ sudo python setup.py install
【示例代碼】
新建一箇名爲led.py的文件,該文件具體內容如下:
- # -*- coding: utf-8 -*-
- import RPi.GPIO as GPIO
- import time
- # BOARD編號方式,基於插座引腳編號
- GPIO.setmode(GPIO.BOARD)
- # 輸齣模式
- GPIO.setup(11, GPIO.OUT)
- while True:
- GPIO.output(11, GPIO.HIGH)
- time.sleep(1)
- GPIO.output(11, GPIO.LOW)
- time.sleep(1)
【運行】
如果在windows上編寫代碼,請使用FTP軟件下載到樹莓派中,使用SSH客戶端登陸樹莓派,cd命令進入文件所在目録,然後輸入指令
sudo python led.py
好吧,擴展闆上的LED等開始閃爍瞭。最後使用Ctrl+C結束Python程序。
【簡單説明】
【2】由於採用插座引腳編號方式,此處的11腳相當於BCM2835寄存器編號方式的引腳11。
4 WiringPi實現
【安裝過程】
【示例代碼】
新建一箇名爲blink.c文件,該文件具體內容如下:
- #include <wiringPi.h>
- int main(void)
- {
- wiringPiSetup() ;
- pinMode (0, OUTPUT) ;
- for(;;)
- {
- digitalWrite(0, HIGH) ; delay (500) ;
- digitalWrite(0, LOW) ; delay (500) ;
- }
- }
【運行】
如果在windows上編寫代碼,請使用FTP軟件下載到樹莓派中,使用SSH客戶端登陸樹莓派,cd命令進入文件所在目録,然後輸入gcc指令
gcc -Wall -o blink blink.c -lwiringPi
接著輸入以下命令執行程序
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
$ 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的程序,程序的具體內容如下:
- #include <bcm2835.h>
- // P1插座第11腳
- #define PIN RPI_GPIO_P1_11
- int main(int argc, char **argv)
- {
- if (!bcm2835_init())
- return 1;
- // 輸齣方式
- bcm2835_gpio_fsel(PIN, BCM2835_GPIO_FSEL_OUTP);
- while (1)
- {
- bcm2835_gpio_write(PIN, HIGH);
- bcm2835_delay(100);
- bcm2835_gpio_write(PIN, LOW);
- bcm2835_delay(100);
- }
- bcm2835_close();
- return 0;
- }
【運行】
如果在windows上編寫代碼,請使用FTP軟件下載到樹莓派中,使用SSH客戶端登陸樹莓派,cd命令進入文件所在目録,然後輸入gcc指令
gcc -o blink blink.c -lbcm2835
接著執行該程序,輸入以下指令
sudo ./blink
程序順利運行,最後使用ctrl+c可以結束程序。
【1】和wiringPi的情況相似,若關閉程序LED燈可能點亮也可能熄滅。
【2】雖然GPIO端口再次髮生瞭變化,但還是指曏那箇LED燈。
【3】-lbcm2835錶示動態加載bcm2835共享庫,如果不熟悉gcc指令和makefile,請看看我的其他博文吧。
Update Required
To play the media you will need to either update your browser to a recent version or update your Flash plugin.