- 可直接插入到樹莓派上
- 可以檢測與響應外部物理事件
- 檢測與輸出類比電壓
- 驅動 (直流、步進) 馬達 (18V, 2A max)
- 檢測按鍵動作
- 點亮 LED
- 驅動繼電器
- 六大區塊各自獨立,可互相結合使用,更富使用上的彈性 ! (請看下面說明)
- 以上全部都可由樹莓派直接做控制
- 豐富的軟體資源與使用者手冊,讓使用上更加的方便 !
原廠盒裝內容物:Gertboard x 1, Jumper x 18, 杜邦線 x 10, Software CD x 1, 塑膠六角柱 x 6 |
Gertboard 使用者手冊、電路圖、C 函式庫與範例和 Python 函式庫與範例,請至網頁最下方下載。
文中的內容取自英文版的使用手冊,並在其中加入更詳細的說明與補充,如果您有購買 GertBoard,就一起來認識、測試和設置這塊板子吧!!!
Gertboard 六大功能區塊
Gertboard 分為下面六大功能區塊,每一個區塊都有其應用之處,在 "Gertboard User Manual" 裡面有非常詳細的說明與教學, PDF 檔案點擊上面的連結就可以下載。
[ 1. ] Buffered I/O (+switchs and LEDs)
[ 2. ] Atmel Atmega chip
[ 3. ] GPIO Pins
[ 4. ] Open collector driver
[ 5. ] Motor controller
[ 6. ] A to D and D to A converters
Gertboard 六大功能區塊, source: http://www.raspberrypi-spy.co.uk |
Gertboard 電路元件名稱, source: Gertboard User Manual (Rev 2.0) |
電路板上標示符號的認識:
上圖是由 GertBoard 電路板中的網印與焊接標示組合而來的圖面,上面有很多元件以及文字標註,不同的元件有不同的標註方式:例如,
- 電阻與電容,標示名稱為 Rn 和 Cn,n 表示號碼。
- 二極體 (Diode) 標示名稱為 Dn,例如板上的 12 顆 LEDs ( 發光二極體 ) 就是 D1 至D12;緊鄰在 LED 旁邊的就是其限流電阻。
- 三顆按鈕開關 (Pushbutton) 標示名稱為 S1、S2 和 S3,位置在 LEDs 的下方。
- 積體電路 ( IC 或晶片) 的標示名稱為 Un。例如在板子中間位置的那三顆 I/O 緩衝 IC ( SN74HC244 ) 就標示為 U3、U4 和 U5。每顆 IC 接腳號碼是有順序的,缺口朝上正視 IC ,左手最上方的接腳就是 1,然後逆時針開始數,右手最上方就是 IC 的最後一個接腳號碼。這觀念很基礎對於接線時也很重要!!!
- 在 GertBoard 有很多凸出的排針頭 (Header ),標示名稱為 Jn。
例如在板子的左邊有一組兩排的排針頭,可以讓您存取板子左邊的三顆晶片 ( U6、U8 和 U10 ):J28 ( AD0, AD1 ) 是用來輸入類比訊號到 U6 ( MCP3002, Dual Channel 10-Bit A/D Converter with SPI™ Serial Interface ) 晶片的接腳;J29 ( DA0, DA1 ) 是U10 ( MCP4802, 8-Bit Dual Voltage Output Digital-to-Analog Converter with Internal VREF and SPI Interface ) 的數位訊號轉類比訊號後的輸出接腳;J25 就是 ATMega328P 各 IO 接腳的名稱,這就是我們之後會特別介紹的 Android 的核心晶片,只不過使用上有些許的不同,到時我們會更詳細的說明。
另外,並非所有的 Jn 都是排針頭的形式,像 J19 ( 在板子右上方 ) 就是螺絲端子座。
GertBoard 上的電源:
只要是電源,都會在排針接腳處標示相對應的電壓,例如 5V 或是 3V3 ( 就是 3.3V 的意思 )。5V 的電源是從樹莓派所供應,需要時可接在 J24 ( 板子右下角處 ) 取電,注意這兩根接腳都是 +5V;名稱標示為 GND 或是 ⊥ 符號就是表示接地 ( Ground ) 。
Gertboard 3V3 電壓輸出選擇, source: Assembled Gertboard Schematics |
只要一提供 3V3 的電源之後,就會看到 D1 - D12 的 LED 全部亮起。
source: Gertboard User Manual (Rev 2.0) |
接著,介紹完上面的一些東西之後,下面就開始進入到 GertBoard 的六大部分。不過由於不管是程式撰寫或是線路都與樹莓派的 GPIO P1 有著重要關係,因此緊接著必須先說明 [3] GPIO Pins,這樣在 GertBoard 其他部份的時候才不需要再贅述。
[3] GPIO Pins
GertBoard 使用 J1 與樹莓派連接在一起,可以直接連結也可以使用排線 ( 如下圖所示 )。
Gertboard 直接與樹莓派接合 |
Gertboard 使用專用排線與樹莓派連接 |
連接之後,GertBoard 將樹莓派的 GPIO # 由小到大重新排列在 J2 一字排開,只留下可用 I/O 接腳在 J2 上面,其餘只留下一組 5V0 和 3V3 電源給 GertBoard 使用。
GPIO 的在 GertBoard 上的排列, source: Assembled Gertboard Schematics |
詳細的情形可以參考下面的對照表格,這只與在寫程式時所使用的腳位宣告有關係,使用時注意一下就好。紅色虛線框起來的部分就是樹莓派 Rev 1.0 與 Rev 2.0 所不同的腳位。
其中一些 GPIO 接腳還有其它的附屬功能被使用在一些測試程式上,這些其他功能 ( Alt function ) 也列在下面表格中 ( 在最後兩行 )。在 GertBoard 的 C 語言測試程式碼中使用巨集指令來切換存取 GPIO 的其他功能,方法可在類比轉數位,或是數位轉類比的 C 語言程式碼中看到;在 Python 使用 RPI.GPIO 或是 wiringpi 函式庫來提供轉換與存取 GPIO 的其他功能。
另外在表格中,GP0 和 GP1 ( Rev1.0:GPIO0 和 GPIO1;Rev2.0:GPIO2 和 GPIO3 ) 的其他功能是 I2C bus,而且在樹莓派內部已經有了 1800Ω 的提升電阻 ( pull-up resistor ),當使用在輸入時因為分壓的關係沒有辦法正確的讀到按鈕狀態,所以要避免與板上的按鈕一起使用,這在 [1[ Buffered I/O (+switchs and LEDs) 會再提到。
Gertboard 與樹莓派 Rev 1.0 與 Rev 2.0 腳位對照表, source: Gertboard User Manual (Rev 2.0) (GB 表示 Gertboard,RPi1 表示樹莓派 Rev 1.0,RPi2 表示樹莓派 Rev 2.0) |
請注意之後對於 GertBoard 每一個部分的電路圖的說明,這對於熟悉以及正確的使用 GertBoard 很重要。因為 GertBoard 就是一片電子周邊實驗板,而且每一個部分區塊都是分開的並沒有將控制接腳 layout 死,因此給了使用者很大的接線與控制空間。除了使用時需要注意電壓準位之外,你 ( 妳 ) 也可以使用其他的微控制器來控制它;不僅如此,各部份的電路設計以及 PCB layout 排板也可以作為往後電路設計的參考,一舉多得!千萬不要只是照圖施工而已。
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
建議安裝軟體:
在開始介紹六大區塊之前,有一些前置動作需要做一下,如果您不需要這些東西,就直接下載網頁最下面的範例程式後,跳到六大區塊的部分看就行了 !
使用 Gertboard 建議各位使用 PC ,再利用 SSH 登入至樹莓派作業系統環境下操作會方便許多 !
如果您是使用新的記憶卡,建議參考 " [PiFace Digital 首部曲] 樹莓派作業系統 (2013-02-09-wheezy-raspbian) 之環境設定" 設置作業系統,並參考下面三個賣場部落格中的文章,設置您的編輯環境,選一個用的最上手的來用就好了
- 在 Windows 設置 Raspberry Pi (樹莓派) 遠端編輯環境 [第一發] 工欲善其事,必先利其器
- 把 Windows 桌面當作是 Raspberry Pi (樹莓派) 的螢幕 [第二發] 工欲善其事,必先利其器
- 遠端桌面 - VNC [第三發] 工欲善其事,必先利其器
Sublime Text 2 與遠端 (樹莓派) 資料夾連線畫面 |
MobaXterm: Windows 作業系統下開啟樹莓派作業系統的 LXDE 桌面 |
VNC |
安裝好編輯環境的軟體在你的電腦之後,打開 MobaXterm ( puTTy 也可以,只要是可以使用 SSH 連線就行了
先在視窗左邊按下 "New session",然後點擊 "SSH" 按鈕產生一個新的 SSH session,在 "SSH settings" 頁面下的 "Remote hostname" 輸入樹莓派的 IP 位置 ( 我是使用 192.168.1.9 ),其餘的維持預設值。
MobaXterm:產生一個新的 SSH session |
切換頁面到 "Advanced terminal settings",如果你有使用中文字的話,修改 "Charset" 為 "UTF-8" (或是其它的字元集) ,就可以顯示中文字。其餘的看自己需要做修改,我是維持預設值。
MobaXterm:修改 Charset 使其可以顯示中文字 |
切換頁面到 "Session settings",修改 "Session name"。這裡輸入的是我喜歡的名稱,你可以自己命名這個 SSH session 的名稱。
MobaXterm:修改 Session name |
修改之後按下 "OK" 按鈕後,就會新開一個剛剛設定 session 頁面,此時輸入使用者名稱 ( 預設使用者名稱是:pi,有題是要輸入密碼時再輸入 ),連線成功後就會出現 pi@raspberrypi ~ $ 提示字元
MobaXterm |
接著,輸入 startx 進入 LXDE 桌面環境, (錯 ! 錯 ! 錯 !) 這是 Windows 作業系統 !
如果 MobaXterm 就只是這樣的功能,就使用 PuTTY 就好,也就不會介紹這個軟體 !
在命令提示字元下輸入 lxsession& ,就會看到跟下面圖示一樣的東西出現,完整的 LXDE 桌面環境出現在 Windows 作業系統下。
往後只要開啟任一個應用程式,就會開啟另一個 MobaXterm 工作室窗在 Windows 工作列下,如同 windows 應用程式一樣,只不過所做的任何動作都會反應到樹莓派去。
MobaXterm:Windows 作業系統下開啟樹莓派作業系統的 LXDE 桌面 |
MobaXterm 這是一個很好用的軟體,讓你可以在 Windows 連線到樹莓派又可以在 Windows 作業系統下操作樹莓派的 LXDE 桌面,可以一邊寫程式一邊編譯,非常的方便 !
若覺得這樣還不夠用,想要能夠直接撰寫程式直接編譯直接執行,那就使用個人覺得是樹莓派殺手級軟體的 WebIDE:它是使用瀏覽器作為編寫程式的介面,可直接在網頁寫程式以及編譯,雖然原設計是給 Python 使用,但是做為其他程式的 IDE 介面也是一個不錯的選擇。該軟體另外結合了命令提示字元的功能視窗,可以直接在下方作指令輸入,這樣就可以做到編譯其他語言的功能,以及控制作業系統環境的作用)
下面是 webIDE 的安裝與介紹影片,詳細的安裝方法請參考這篇安裝說明文件:PDF
WebIDE 現在雖然還在 beta 測試階段,或多或少存在一些小 bug ,但是無傷大雅 ! 因為 WebIDE 在使用上非常容易上手,能在學習與開發階段讓你省下不少寶貴時間,是非常值得使用的一套軟體 !
WebIDE 在樹莓派的安裝與設定影片
WebIDE 程式碼與程式庫使用說明影片
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
下載測試 Gertboard 的函式庫與範例程式
若系統已經很久沒更新了,建議先更新之後再繼續往下做!
由於我的作業系統是全新安裝的,因此執行下面指令執行更新
pi@raspberrypi ~ $ sudo apt-get update && sudo apt-get upgrade -y
Gertboard 測試程式有兩種,C 與 Python 兩種,可直接到網頁最下方下載,這裡所提供的版本是:
- C:gertboard_sw_20130106.zip 確認最新版
- Python:GB_Python.zip ( 2013/04/10 修正版 ) 確認最新版
下面指令操作是連貫的,只是拆開分為 C 語言與 python 程式碼下載與安裝。因為 python 程式碼使用了 wiringpi 函式庫,因此也必須安裝。
GertBoard - C 語言程式碼下載與編譯
pi@raspberrypi ~ $ mkdir GertBoard pi@raspberrypi ~ $ cd GertBoard/ pi@raspberrypi ~/GertBoard $ wget -O gertboard_sw.zip http://goo.gl/OR7D6 ...<<中間省略>>... pi@raspberrypi ~/GertBoard $ ls -l total 36 -rw-r--r-- 1 pi pi 36239 Apr 28 23:57 gertboard_sw.zip pi@raspberrypi ~/GertBoard $ unzip gertboard_sw.zip ...<<中間省略>>... pi@raspberrypi ~/GertBoard $ ls -l total 40 drwxr-xr-x 2 pi pi 4096 Jan 6 15:07 gertboard_sw -rw-r--r-- 1 pi pi 36239 Apr 28 23:57 gertboard_sw.zip pi@raspberrypi ~/GertBoard $ cd gertboard_sw/
### 進行編譯 ### pi@raspberrypi ~/GertBoard/gertboard_sw $ make all ...<<中間省略>>... pi@raspberrypi ~/GertBoard/gertboard_sw $ ls -l total 312 -rwxr-xr-x 1 pi pi 11987 Apr 29 00:00 atod -rw-r--r-- 1 pi pi 3522 Jun 2 2012 atod.c -rw-r--r-- 1 pi pi 2716 Apr 29 00:00 atod.o -rwxr-xr-x 1 pi pi 10704 Apr 29 00:00 butled -rw-r--r-- 1 pi pi 3781 Jan 5 08:00 butled.c -rw-r--r-- 1 pi pi 2172 Apr 29 00:00 butled.o -rwxr-xr-x 1 pi pi 10877 Apr 29 00:00 buttons -rw-r--r-- 1 pi pi 4041 Jun 7 2012 buttons.c -rw-r--r-- 1 pi pi 2396 Apr 29 00:00 buttons.o -rwxr-xr-x 1 pi pi 12110 Apr 29 00:00 dad -rw-r--r-- 1 pi pi 3868 Jun 2 2012 dad.c -rw-r--r-- 1 pi pi 2864 Apr 29 00:00 dad.o -rwxr-xr-x 1 pi pi 12433 Apr 29 00:00 decoder -rw-r--r-- 1 pi pi 6080 Jan 5 07:46 decoder.c -rw-r--r-- 1 pi pi 4136 Apr 29 00:00 decoder.o -rwxr-xr-x 1 pi pi 11968 Apr 29 00:00 dtoa -rw-r--r-- 1 pi pi 4426 Jun 2 2012 dtoa.c -rw-r--r-- 1 pi pi 2896 Apr 29 00:00 dtoa.o -rw-r--r-- 1 pi pi 9356 Jan 4 19:57 gb_common.c -rw-r--r-- 1 pi pi 2171 Jan 4 21:42 gb_common.h -rw-r--r-- 1 pi pi 5384 Apr 29 00:00 gb_common.o -rw-r--r-- 1 pi pi 4943 Jun 2 2012 gb_pwm.c -rw-r--r-- 1 pi pi 2440 Jun 2 2012 gb_pwm.h -rw-r--r-- 1 pi pi 1540 Apr 29 00:00 gb_pwm.o -rw-r--r-- 1 pi pi 4297 Jun 2 2012 gb_spi.c -rw-r--r-- 1 pi pi 3040 May 28 2012 gb_spi.h -rw-r--r-- 1 pi pi 1648 Apr 29 00:00 gb_spi.o -rw-r--r-- 1 pi pi 2551 Jan 6 16:21 LEDmeter.ino -rwxr-xr-x 1 pi pi 13609 Apr 29 00:00 leds -rw-r--r-- 1 pi pi 8908 Jan 4 22:47 leds.c -rw-r--r-- 1 pi pi 5400 Apr 29 00:00 leds.o -rw-r--r-- 1 pi pi 2688 Jul 10 2012 makefile -rwx------ 1 pi pi 265 Jul 6 2012 minirc.ama0 -rwxr-xr-x 1 pi pi 11973 Apr 29 00:00 motor -rw-r--r-- 1 pi pi 4057 Jun 7 2012 motor.c -rw-r--r-- 1 pi pi 2892 Apr 29 00:00 motor.o -rwxr-xr-x 1 pi pi 10626 Apr 29 00:00 ocol -rw-r--r-- 1 pi pi 2746 Jul 13 2012 ocol.c -rw-r--r-- 1 pi pi 2084 Apr 29 00:00 ocol.o -rwxr-xr-x 1 pi pi 12933 Apr 29 00:00 potmot -rw-r--r-- 1 pi pi 5945 Jun 8 2012 potmot.c -rw-r--r-- 1 pi pi 3316 Apr 29 00:00 potmot.o -rw-r--r-- 1 pi pi 304 Jan 6 15:06 README pi@raspberrypi ~/GertBoard/gertboard_sw $
GertBoard 每一個部份至少都有一份測試程式,每一個程式編譯時都會有兩個或更多的程式一起編譯才能成功。
gb_comon.c ( 標頭檔 gb_common.h ):包含測試程式所需要用的自定義函式庫,除了一些其它功能需要其他檔案 ( 例如,SPI Bus 使用 gb_spi.c,或是 PWM 使用 gb_pwm.c ) 之外,都在這檔案裡面。
使用 gb_common.c 須要先呼叫 setup_io 函式初始化相對應的 GPIO、SPI Bus 和 PWM 等裝置才可以開始使用,在程式的最後應再呼叫 restore_io 函式將所得到的記憶體重新配置與歸還樹莓派。
在 gb_common.c 、gb_spi.c 和 gb_pwm.c 使用到多個自定義的巨集指令,可以用來設定 GPIO 的輸出、輸入或是 PWM 的速度...等,如下表所示
gertboard_sw 中常用巨集指令, source: Gertboard User Manual (Rev 2.0) |
GertBoard - Python 程式碼下載與函式庫安裝
pi@raspberrypi ~/GertBoard/gertboard_sw $ cd .. pi@raspberrypi ~/GertBoard $ wget http://raspi.tv/download/GB_Python.zip ...<<中間省略>>... pi@raspberrypi ~/GertBoard $ unzip GB_Python.zip ...<<中間省略>>... pi@raspberrypi ~/GertBoard $ cd GB_Python/ pi@raspberrypi ~/GertBoard/GB_Python $ ls -l total 80 -rw-r--r-- 1 pi pi 3993 Apr 10 10:41 atod.py -rw-r--r-- 1 pi pi 2404 Apr 10 10:54 butled-rg.py -rw-r--r-- 1 pi pi 2610 Apr 10 11:21 butled-wp.py -rw-r--r-- 1 pi pi 2609 Apr 10 11:05 buttons-rg.py -rw-r--r-- 1 pi pi 3038 Apr 10 11:12 buttons-wp.py -rw-r--r-- 1 pi pi 4256 Apr 9 21:37 dad.py -rw-r--r-- 1 pi pi 3351 Apr 10 10:41 dtoa.py -rw-r--r-- 1 pi pi 3627 Apr 10 11:42 leds-rg.py -rw-r--r-- 1 pi pi 4383 Apr 10 11:58 leds-wp.py -rw-r--r-- 1 pi pi 3983 Apr 10 14:08 motor-rg.py -rw-r--r-- 1 pi pi 3538 Apr 10 13:34 motor-wp.py -rw-r--r-- 1 pi pi 2572 Apr 10 10:41 ocol-rg.py -rw-r--r-- 1 pi pi 2672 Apr 10 10:41 ocol-wp.py -rw-r--r-- 1 pi pi 5476 Apr 10 14:21 potmot-wp.py -rw-r--r-- 1 pi pi 9466 Apr 10 22:41 README.txt pi@raspberrypi ~/GertBoard/GB_Python $ cd pi@raspberrypi ~ $ sudo apt-get install python-dev python-pip ...<<中間省略>>... pi@raspberrypi ~ $ sudo pip install wiringpi ...<<中間省略>>... Successfully installed wiringpi Cleaning up... pi@raspberrypi ~ $
GB_Python 使用 pyhto 用的 wiringpi 套件函式庫撰寫,因此在使用前必須先安裝,不然執行會出現錯誤。
以上,就是拿到 GertBoard 板子所需要作的前置動作與對板子的基本認識,需要的文件與資料請自行由網頁中或是下方連結先行下載使用。
有了這些之後就可以開始來玩 GertBoard 了 !!!
賣場部落格 "認識 GertBoard " 系列文章:
- [ 認識與使用 Gertboard ] 首部曲 - 瞭解 GertBoard 電路板、建置編輯環境與測試程式碼下載與安裝
- [ 認識與使用 Gertboard ] 第二部曲 - 輸出入緩衝線路 ( 開關和 LED )
- [ 認識與使用 Gertboard ] 第三部曲 - ULN2803 開集極驅動 ( Open Collect Driver )
- [ 認識與使用 Gertboard ] 第四部曲 - 馬達驅動控制器 ( Motor Controller )
- [ 認識與使用 Gertboard ] 第五部曲 - 數位轉類比 ( MCP4802 ) 和類比轉數位 ( MCP3002 ) 轉換器 ( D to A and A to D converters )
- [ 認識與使用 Gertboard ] 第六部曲 - 各部分組合測試
- [ 認識與使用 Gertboard ] 第七部曲 - Atmel Atmega chip
撰寫中...
撰寫中...
<< Gertboard 相關資料文件下載>>
- Assembled Gertboard Manual Rev2.0 (PDF) Gertboard 使用手冊 (Rev 2.0)
- Assembled Gertboard Schematics (PDF) Gertboard (Rev2.0) 電路圖
- Gertboard: Application Library for Gertboard Kit (Linux) Application Library for Gertboard Kit (Linux), contains test/example programs written in C.
Gertboard 應用函式庫 (由 C 語言寫成) 裡面包括原始檔與範例程式
- Gertboard Test Suite in Python 2.7 Gertboard Python 函式庫與範例程式
沒有留言:
張貼留言
留言屬名為"Unknown"或"不明"的用戶,大多這樣的留言都會直接被刪除掉,不會得到任何回覆!
發問問題,請描述清楚你(妳)的問題,別人回答前不會想去 "猜" 問題是什麼?
不知道怎麼發問,請看 [公告] 部落格提問須知 - 如何問問題 !