86Duino Zero 硬體說明

簡介

86Duino Zero 是一款 x86 架構的開源微電腦開發板,內部採用高性能 32 位元 x86 相容的處理器 Vortex86EX,可以相容並執行 Arduino 的程式。Zero 為 86Duino 的入門款,提供與 Arduino UNO 及 Leonardo 一致的輸出入介面,並在板上內建網路、USB 2.0、SD 卡等 Arduino UNO 及 Leonardo 缺少的接口,讓使用者不需外接擴充板便可使用這些功能。此外,Zero 亦提供數十倍於 Arduino 的執行速度,可滿足更高計算量需求的應用場合。

相容 Arduino 使得 86Duino Zero 的學習門檻低,即便沒有電子電機相關科系背景,只要具備基本電腦操作能力,就能容易學會使用,適合讓使用 Arduino、微電腦及嵌入式系統的初學者、設計師、藝術家、業餘愛好者、任何有興趣的人,打造自己專屬的電子互動藝術裝置。

硬體規格

  • CPU 處理器:x86 架構 32 位元處理器 Vortex86EX,主要時脈為 300MHz(可用 SysImage 工具軟體超頻至最高 500MHz)
  • RAM 記憶體:128MB/1GB 工規 DDR3 SDRAM
  • Flash 記憶體:內建 8MB,出廠已安裝 BIOS 及 86Duino 韌體系統
  • 1 個 10M/100Mbps 乙太網路接口
  • 1 個 USB Host 接口
  • 1 個 MicroSD 卡插槽
  • 1 個電源輸入 USB Device 接口(5V 輸入,Type B micro-USB 母座,同時也是燒錄程式接口)
  • 1 個 7V-12V 外部電源輸入接口
  • 17 根數位輸出/輸入接腳(GPIO)
  • 1 個 TTL 序列接口(UART)
  • 1 組 Encoder 接口
  • 6 根 A/D 輸入接腳
  • 7 根 PWM 輸出接腳
  • 1 個 SPI 接口
  • 1 個 I2C 接口
  • 2 根 5V 電壓輸出接腳,2 根 3.3V 電壓輸出腳
  • 長:76.98mm,寬:53.34mm
  • 重量:41g

I/O 接口布局

尺寸圖

86Duino Zero 大小基本與 Arduino Leonardo 相同,如下圖所示:(完整尺寸圖下載

zero_size

此外由下圖亦可看出 Zero 的固定孔位置(紅圈處)亦與 Arduino Leonardo 相同。

1

接口布局

86Duino Zero 的 Pin-Out Diagram 如下(點擊放大):

pin

透過 Pin-Out Diagram 可以看到 Zero 的接腳(下圖紅框處)與 Arduino Leonardo 是相容的,因此 Zero 可以堆疊 Arduino Uno 及 Leonardo 使用的擴展板(例如 Arduino WiFi Shield)。

2

I/O 接口功能簡介

一、電源系統

86Duino Zero 有兩個電源輸入接口,一個為外部電源輸入接口,為黑色電源插座(Power Jack),見左下圖紅圈處的圓形插孔;可輸入電壓的範圍是 7V ~ 12V,新版則是 6V ~ 24V。

1

另一個電源輸入接口為燒錄程式用的 micro-USB 接頭(見左下圖紅圈處),輸入電壓必須為 5V。

2

使用者可透過上面任一接口為 Zero 供電。當您透過外部電源供電時,電源會被輸入到板上內建的穩壓晶片,產生穩定的 5V 電壓來供應板上所有零件的正常運作,如下圖所示:

3

新版 86Duino Zero 電源電路如下 :

3

當您透過 micro-USB 接頭供電時,由 USB 主機輸入的 5V 電壓會直接以 by-pass 方式被用來為板上零件供電。外部電源接頭與 micro-USB 接頭可以同時有電源輸入,此時 Zero 會透過內建的自動選擇電路(如下圖)自動選擇穩定的電壓供應來源。

power5

經由外部電源插座的電源連接方式

使用黑色電源插座供電時,您需準備一個輸出在 7V ~ 12V 之間(新版為 6V ~ 24V)的家用電源變壓器,電源接頭為 2.1mm 公頭。將電源變壓器插上黑色電源插座,即完成電源的連接,如下圖所示:

4

建議您應該選擇至少可輸出 0.5A 電流的電源變壓器。

經由 micro-USB 接頭的電源連接方式

可透過板上 micro-USB 接頭取用 USB 主機孔或 USB 充電器的 5V 電壓為 Zero 供電。為避免不當操作造成 USB 主機孔損害,此接頭內建了 1 安培保險絲做為保護:

86one_usb_device_protect_sch

使用者只要準備一條 micro-USB 轉 Type A USB 的轉接線(例如:智慧型手機的傳輸線;86Duino Zero 配線包內含此線),便可利用其將 Zero 連接至 PC 或筆電的 USB 孔來供電,如下所示:

power7

除了使用電腦的 USB 插座供電外,也可以使用 USB 電源供應器(如智慧型手機充電器)來供電,如下所示:

power8

請注意,當 86Duino Zero 沒有外接任何裝置(如 USB 鍵盤滑鼠)時,至少需要 370mA 的電流才能正常運作;一般 PC 或筆電的 USB 2.0 接口可提供最高 500mA 的電流,足以供應 Zero 運作,但如果 Zero 接上外部裝置(包含 USB 裝置及接到 5V 及 3.3V 輸出的實驗電路),由於外部裝置會消耗額外電流,使得整體消耗電流可能超出 500mA,這時用 PC 的 USB 2.0 接口供電便顯得不適當,可以考慮改由能提供 900mA 的 USB 3.0 接口或可提供更高電流的 USB 電源供應器來為 Zero 供電。

註:有些老舊或設計不佳的 PC 及筆電在 USB 接口上設計不太嚴謹,能提供的電流低於 USB 2.0 規範的 500mA,用這樣的 PC 為 86Duino One 供電可能使其運作不正常(如無法開機或無法燒錄程式),此時應換到另一台電腦再重新嘗試。

電源指示燈

當 86Duino Zero 正確地連接電源後,電源指示燈“ON”會亮起,如下圖:

power9

電源輸出接口

86Duino Zero 板上配置有許多根電壓輸出接腳,可分為三類:3.3V、5V 和 VIN,如下圖:

5

3.3V、5V 輸出接腳可做為電子實驗電路的電壓源,其中 3.3V 接腳最高輸出電流為 400mA,5V 接腳最高輸出電流為 600mA。VIN 輸出和黑色電源插座的外部電源輸入是共用的,換句話說,兩者在電路上是連接在一起的;VIN 接腳主要用於供給外部裝置較高電壓或較大電流的電源。

請注意,若您的實驗電路需要消耗超過 600mA 的較大電流(例如直流馬達驅動電路),應該使用 VIN 輸出接腳為其供電,避免使用 5V 和 3.3V 輸出接腳供電。此外,由於 VIN 輸出電壓高於 5V,使用上應避免將 VIN 與其它 I/O 接腳短路,否則將導致 I/O 接腳燒毀。

二、Micro SD卡插槽

86Duino Zero 支援最大 32GB SDHC 的 Micro SD 卡,不支援 SDXC。

請注意,如果您打算在 Micro SD 卡中安裝 Windows 或者 Linux 作業系統, Micro SD 卡本身的存取速度將直接影響作業系統的開機時間與執行速度,建議使用 Class 10 的 Micro SD 卡較為合適。

我們另外提供了 SysImage 工具程式,讓您在 Micro SD 卡上建立可開機的 86Duino 韌體系統。讓 86Duino 韌體系統在 Micro SD 卡上執行,可帶來一些好處,請參考更進一步的說明

開機順序

Zero 開機時,BIOS 會到三個地方去尋找可開機磁碟:內建的 Flash 記憶體、Micro SD 卡、USB 隨身碟。搜尋順序是 Micro SD 卡優先,然後是 USB 隨身碟,最後才是 Flash。內建的 Flash 記憶體在出廠時,已經預設安裝了 86Duino 韌體系統,如果使用者在 Zero 上沒有插上可開機的 SD 卡或 USB 隨身碟,預設就會從 Flash 開機。

註:請注意,當您插上具有開機磁區的 Micro SD 卡或 USB 隨身碟,請確保該 Micro SD 卡或 USB 隨身碟上已安裝 86Duino 韌體系統或其它作業系統(例如 Windows 或 Linux),否則 Zero 將因找不到作業系統而開機失敗。

Micro SD 卡插入方向

Micro SD 插槽位於 Zero 背面,請按下面圖片方式插入 Micro SD 卡即可:

sd1

您可能注意到 Zero 的 MicroSD 插槽位置比 Arduino SD 卡擴展板及一般嵌入式系統開發板的插槽更深入板內,這是刻意的設計,目的是讓 MicroSD 卡插入後完全不突出板邊(見下圖)。當 Zero 用在會進行激烈動作的裝置上(例如:相撲機器人),這種設計可避免因為意外撞擊板邊而發生 MicroSD 卡掉落的慘劇。

sd11

三、GPIO 接腳(數位輸出/輸入接腳)

86Duino Zero 提供 17 根 GPIO 接腳,如下圖所示。在 86Duino Coding 開發環境內,您可以呼叫 digitalWrite 函式在這些腳位上輸出 HIGHLOW,或呼叫 digitalRead 函式來讀取腳位上的輸入狀態。

8

每根 GPIO 都有輸入和輸出方向,您可以呼叫 pinMode 函式來設定方向。當 GPIO 設定為輸出方向時,輸出 HIGH 為 3.3V,LOW 為 0V,每根接腳電流輸出最高為 16mA。當 GPIO 為輸入方向時,輸入電壓可為 0 ~ 5V。

86Duino Zero 和 Arduino 類似,部分 GPIO 接腳具有另一種功能,例如:在腳位編號前帶有 ~ 符號,代表它可以輸出 PWM 信號;帶有 RX 或 TX 字樣,代表它可以輸出 UART 串列信號;帶有 EA、EB 、EZ 字樣,代表可以輸入 Encoder 信號。我們各取一組腳位來說明不同功能的符號標示,如下圖所示:

gpio2

有關 GPIO 的更多說明,可參考基礎硬體觀念

四、LED 指示燈

LED 是開發中最常用的狀態指示設備,在 86Duino Zero 板上共有四個指示燈:(1) 電源指示燈(POWER LED),在板上標記為 ON,插上電源時會亮起(綠燈);(2) TX LED 燈,當 Zero 透過 USB Device 接口送出資料給 PC 時,此指示燈會閃爍;(3) RX LED 燈,當 Zero 透過 USB Device 接口從 PC 接收資料時,此指示燈會閃爍;(4) 板上標記為 L 的 LED 燈,可透過 Pin 13 (標記為 13 的 GPIO 接腳)控制其亮滅。

7

Pin 13 與 L 指示燈的連接電路如下圖所示。當 Pin 13 輸出 HIGH 時,L 指示燈會亮起(橘燈);輸出 LOW 時,L 指示燈會熄滅。

86one_L13_sch

五、RESET

86Duino Zero 在板子左上角提供一個 RESET 按鈕,在左下方提供一根 RESET 接腳,如下圖所示。

6

RESET 接腳,內部連接到 CPU 模組上的重置晶片,在 RESET 接腳上製造一個低電壓脈衝可讓 Zero 重新開機,RESET 接腳電路如下所示:

reset2

RESET 按鈕內部與 RESET 接腳相連接,按下 RESET 按鈕同樣可使 Zero 重新開機:

reset3

六、A/D 接腳(類比輸入接腳)

86Duino Zero 提供 6 個類比輸入,為 AD0 ~ AD5,位置如下圖所示:

10

每一個通道都具有最高 11 bits 的解析度,您可以在 86Duino Coding 開發環境下呼叫 analogRead 函式來讀取任一通道的電壓值。為了與 Arduino 相容,由 analogRead 函式讀取的 A/D 值解析度預設是 10 bits,您可以透過 analogReadResolution 函式將解析度調整至最高 11 bits。

請注意,每一個 A/D 通道能輸入的電壓範圍為 0V ~ 3.3V,使用上應嚴格限制輸入電壓低於 3.3V,若任一 A/D 通道輸入超過 3.3V,將使所有通道讀到的數值同時發生異常,更嚴重者甚至將燒毀 A/D 接腳。此外,應注意 Zero 的 A/D 接腳不能像 Arduino Leonardo 一樣切換成數位輸出入接腳。

接線範例

這個範例中,我們使用 86Duino Zero 偵測 AAA 電池電壓。將電池正極接到 AD0 ~ AD5 其中一個,電池負極接到 GND,即可呼叫 analogRead 函式讀取電池電壓。接線如下所示:

3

有關 A/D 的更多說明,可參考基礎硬體觀念

七、I2C 接口

86Duino Zero 提供一組 I2C,為 SDA 和 SCL。配置如下圖:

1

您可以在 86Duino Coding 開發環境裡使用 Wire 函式庫來操作 I2C 接口。Zero 支援 I2C 規範的 standard mode(最高 100Kbps)、fast mode(最高 400Kbps)、high-speed mode(最高 3.3Mbps)三種速度模式與外部設備通訊。根據 I2C 規範,與外部設備連接時,需要在 SCL 和 SDA 腳位加上提升電阻(參考 Wiki 百科上的說明)。提升電阻的阻值與 I2C 速度模式有關,對於 Zero,在 100Kbps 和 400Kbps 的速度模式下,我們建議加上 4.7k 歐姆的提升電阻;在 3.3Mbps 速度模式下,建議加上 1K 歐姆的提升電阻。

接線範例

我們以 RoBoard Module RM-G146 9 軸慣性感測器為例,示範如何將它和 86Duino Zero 的 I2C 接口連接起來。下圖顯示 RM-G146 的腳位配置:

i2c3

因 RM-G146 已在 I2C 通道上內建提升電阻,我們不需額外加上提升電阻,只需將 Zero 的 5V 輸出接腳接到 RM-G146 的 5V 輸入,GND 互相對接,I2C 通道也互相對接,便可正確使 Zero 與 RM-G146 透過 I2C 互相通訊。接線如下圖所示:

2

八、PWM 接口

86Duino Zero 提供 7 個 PWM 輸出通道(與 GPIO 共用腳位),分別為 3、5、6、9、10、11、13 ,位置如下圖:

9

您可以在 86Duino Coding 開發環境裡呼叫 analogWrite 函式來讓這些接腳輸出 PWM 信號。Zero 的 PWM 通道允許最高 25MHz 或 32-bit 解析度輸出信號,但為了與 Arduino 相容,預設輸出頻率為 1KHz,預設解析度為 8 bits。

analogWrite 函式輸出的 PWM 頻率固定為 1KHz 無法調整,不過,您可呼叫 analogWriteResolution 函式來提高其輸出的 PWM 信號解析度至 13 bits。若您需要在 PWM 接腳上輸出其它頻率,可改用 TimerOne 函式庫來輸出 PWM 信號,最高輸出頻率為 1MHz。

有關 PWM 的更多說明,可參考基礎硬體觀念

九、TTL 串列埠(UART TTL)

86Duino Zero提供 1 組 UART TTL,為 TX1 (1) / RX1 (0),其通訊速度(鮑率)最高可達 6Mbps。您可以使用 Serial1 函式庫來接收和傳送資料。UART TTL 接口的位置如下圖:

15

請注意,此組 UART 信號屬於 LVTTL 電壓準位(0 ~ 3.3V),請勿將 12V 電壓準位的 RS232 接口信號直接接到此 UART TTL 接口,以免將其燒毀。

值得一提的是,Zero 的 UART TTL 具有全雙工與半雙工兩種工作模式。當工作於半雙工模式時,可與要求半雙工通訊的機器人專用 AI 伺服機直接連接,不像 Arduino 與 Raspberry Pi 需額外再加全雙工轉半雙工的介面電路。UART TTL 的半雙工模式可在 86Duino sketch 程式中以 Serial1 函式庫提供的 begin 函式切換。

接線範例

本範例示範如何連接 Zero 與 Robotis 公司出品的 Dymanixel AX-12+ 機器人伺服機。下圖為 AX-12+ 外觀及其腳位標示:

uart2

AX-12+ 採用半雙工 UART TTL 對外通訊,因此 Zero 的 UART 應以半雙工模式與之相連。在半雙工模式下,UART 的 TX 接腳用來接收與傳送串列資料,RX 則保留不使用,因此這裡我們直接將 AX-12+ 的 DATA 接腳與 Zero 的 Pin 1 (TX1) 對接,VIN 對接,GND 也對接,如下圖所示:

16

uartS2

連接完畢後,便可在 86Duino sketch 程式中使用 Serial1 與 AX-12+ 通訊。注意,Zero 與 AX-12+ 的鮑率需設定為相同,通訊才會正常;另外,VIN 需提供伺服機正確工作電壓(7V ~ 10V),AX-12+ 才會轉動。

十、SPI 接口

86Duino Zero 提供一組 SPI 接口,位置與 Arduino Leonardo 相容,並額外增加了 SPI 通訊協定的 CS 接腳信號,如下所示:

14

您可以在 86Duino Coding 開發環境裡使用 SPI 函式庫來操作 SPI 接口。

十一、LAN 網路接口

86Duino Zero 背面提供一個 LAN 接口,支援 10/100Mbps 傳輸速度,您可以使用 Ethernet 函式庫來接收和傳送資料。LAN 接口的位置及腳位定義如下所示:

13

17

LAN 接口是 1.25mm 的 4P 接頭,因此您需要製作一條 RJ45 接頭的轉接線(86Duino Zero 配線包內含此線)來連接網路線。不將 RJ45 母座焊死在板上,是為了方便互動裝置設計師將 RJ45 母座安置到其它容易插拔網路線的地方,而不用遷就控制板本身的安裝位置。

接線範例

下圖以 86Duino Zero 配線包內附的轉接線為例,示範網路線的連接:

4

十二、USB 2.0 接口

86Duino Zero 有一個 USB 2.0 Host 接口,可外接 USB 裝置(如 USB 鍵盤及滑鼠)。在 86Duino Coding 開發環境下,可使用 USB Host 函式庫來存取 USB 鍵盤、滑鼠。當您在 Zero 上安裝 Windows 或 Linux 作業系統時,USB 接口亦可接上 USB 無線網卡及 USB 攝影機,來擴充無線網路與視訊影像功能。USB 接口位置及腳位定義如下:

18

19

USB 接口是 1.25mm 的 5P 接頭,因此您需要製作一條 USB 接頭母座的轉接線(86Duino Zero 配線包內含一條 USB Type A 母座轉接線)來連接 USB 裝置。不將 USB 母座焊死在板上,同樣是為了方便互動裝置設計師將 USB 母座安置到其它容易插拔 USB 裝置的地方,而不用遷就控制板本身的安裝位置。

接線範例

下圖以 86Duino Zero 配線包內附的轉接線為例,示範連接 USB 滑鼠:

5

若您需要連接兩個以上的 USB 裝置,可以使用 USB Hub 擴充更多 USB 插槽,下圖示範利用 USB Hub 同時連接 USB 鍵盤及滑鼠:

6

十三、Encoder 接口

86Duino Zero 提供 1 組 Encoder 接口,具有三根接腳,分別標為 A、B、Z ,如下所示:

22

Encoder 接口可用於讀取光學增量編碼器及 SSI 絕對編碼器信號,在 86Duino Coding 開發環境下,您可以使用 Encoder 函式庫來讀取其數值。Encoder 接口可允許的最高輸入信號頻率是 25MHz。

接線範例

我們以 AM4096 旋轉編碼器 IC 為例,示範如何將它和 86Duino Zero 的 Encoder 接口連接起來。下圖顯示 AM4096 的腳位配置:

encoder2

上圖的輸出接腳中,有一組為增量編碼器信號輸出,即 A/B Phase,接腳標示為 A、B 、Ri。我們只要將 AM4096 的 A、B 、Ri 個別連接到 42、43、44,然後再將 AM4096 的電源 Vdd 接到 3.3V,AM4096 的 GND 接到 Zero 的 GND,如此便可正確使 Zero 與 AM4096 透過 Encoder 接口互相通訊。連接圖如下所示:

3

十四、CMOS 電池

大部份 x86 電腦擁有一塊 CMOS 記憶體用以保存 BIOS 設定及實時時鐘(RTC)記錄的時間日期。CMOS 記憶體具有斷電後消除記憶的特點,因此 x86 電腦主機板通常會安置一顆外接電池來維持 CMOS 記憶體的存儲內容。

86Duino Zero 做為 x86 架構開發板,同樣具備上述的 CMOS 記憶體及電池,如下圖紅圈處所示:

86zero_battery

不過,Zero 的 CMOS 記憶體只用來記錄實時時鐘時間及 EEPROM 函式庫的 CMOS bank 資料,並不儲存 BIOS 設定;因此,CMOS 電池故障並不影響 Zero 的 BIOS 正常開機運行,但會造成 EEPROM 函式庫儲存在 CMOS bank 的資料散失,並使 Time86 函式庫讀到的實時時鐘時間重置。為確保 EEPROM 及 Time86 函式庫的正常運作,平時請勿隨意短路或移除板上的 CMOS 電池。

十五、PCI-E Target 接口

您可能會注意到 86Duino Zero 板末突出一段像是 PCI-E 介面卡的金手指接頭,如下圖紅框處。這個 PCI-E 金手指平常只是裝飾和造型(無誤),據說 Zero 的設計者認為加上這一段小尾巴讓板子看起來比較可愛……

86zero_pcie

這個接頭事實上是設計給進階黑客(hackers)玩的,要啟動它的功能,必須對 Zero 進行 hardware hacking 才行 ── 這要求對 Vortex86EX 有充份的認識,以及對 PCI-E 介面有深入的瞭解。可以說,啟動 PCI-E 金手指功能,是 Zero 設計者留給 86Duino 愛好者的一個自我成長挑戰。

由於 PCI-E 金手指平常並無作用,除非您能成功啟動其功能,否則請勿隨意將 Zero 插到一般電腦主機板的 PCI-E 插槽上:

86zero_pcie


附錄一:86Duino Zero 腳位名稱與 Vortex86EX GPIO Ports 的對應關係

7

附錄二:86Duino Zero 配線包內容

86Duino Zero 配線包內含如下圖所示線材,由左至右分別為 micro-USB 電源線(程式燒錄線)、USB Host 接口線、RJ45 乙太網路接口線。

24

附錄三:86Duino Zero 硬體原始碼


展示影片


硬體說明主頁面

The text of the 86Duino reference is licensed under a Creative Commons Attribution-ShareAlike 3.0 License. Code samples in the reference are released into the public domain.