86Duino One 硬體說明

簡介

86Duino One 是一款 x86 架構的開源微電腦開發板,內部採用高性能 32 位元 x86 相容的處理器 Vortex86EX,可以相容並執行 Arduino 的程式。此款 86Duino 是特別針對機器人應用所設計,因此除了提供相容 Arduino Leonardo 的接腳外,也特別提供了機器人常用的週邊介面,例如:可連接 18 個 RC 伺服機的專用接頭、RS485 通訊介面、CAN Bus 通訊介面、六軸慣性感測器等。此外,其內建的特殊電源保護設計,能防止如電源反插等錯誤操作而燒毀電路板,並且與伺服機共用電源時,板上可承載達 10A 的電流。

One 針對機器人應用所提供的豐富且多樣性接口,大幅降低了使用者因缺少某些接口而需另尋合適控制板的不便。任何使用 Arduino 及嵌入式系統的機器人設計師,及有興趣的愛好者、自造者,皆可用 One 來打造專屬自己的機器人與自動化設備。

硬體規格

  • 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 個 Mini PCI-E 插槽
  • 1 個音效輸出插槽,1 個麥克風輸出插槽(內建 Realtek ALC262 高傳真音效晶片)
  • 1 個電源輸入 USB Device 接口(5V 輸入,Type B micro-USB 母座,同時也是燒錄程式接口)
  • 1 個 6V-24V 外部電源輸入接口(2P 大電流綠色端子台)
  • 45 根數位輸出/輸入接腳(GPIO),含 18 個 RC 伺服機接頭
  • 3 個 TTL 序列接口(UART)
  • 1 個 RS485 串列埠
  • 4 組 Encoder 接口
  • 7 根 A/D 輸入接腳
  • 11 根 PWM 輸出接腳
  • 1 個 SPI 接口
  • 1 個 I2C 接口
  • 1 個 CAN Bus 接口
  • 三軸加速度計
  • 三軸陀螺儀
  • 2 根 5V 電壓輸出接腳,2 根 3.3V 電壓輸出腳
  • 長:101.6mm,寬:53.34mm
  • 重量:56g

I/O 接口布局

尺寸圖

86Duino One 大小與 Arduino Mega 2560 相同,如下圖所示:(完整尺寸圖下載

86Duino_One_Size-spec

此外由下圖可看出 One 的固定孔位置(紅圈處)亦與 Arduino Mega 2560 相同,並且相容 Arduino Leonardo。

3_board_hole_positions

接口布局

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

86Duino_one_web_all_pins

透過 Pin-Out Diagram 可以看到 One 在前半段 Arduino 標準接腳處(下圖紅框處)與 Arduino Mega 2560 及 Arduino Leonardo 是相容的,但後半段 RC 伺服機接頭處與 Arduino Mega 2560 不同,因此 One 可以堆疊 Arduino Uno 及 Leonardo 使用的短型擴展板(例如 Arduino WiFi Shield),但不能直接堆疊 Arduino Mega 2560 專用的長型擴展板(例如 RAMPS 1.4)。

3_board_io_pins

I/O 接口功能簡介

一、電源系統

86Duino One 有兩個電源輸入接口,一個為外部電源輸入接口,為工業用綠色端子台(左下圖紅圈處),其上有標示電源正極與負極兩個接孔,可輸入大電流電源,電壓範圍為 6V ~ 24V。

Green_power_jack

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

USB_power_jack

使用者可透過上面任一接口為 One 供電。當您透過綠色端子台供電時,電源會被輸入到板上內建的穩壓晶片,產生穩定的 5V 電壓來供應板上所有零件的正常運作。當您透過 micro-USB 接頭供電時,由 USB 主機輸入的 5V 電壓會直接以 by-pass 方式被用來為板上零件供電。綠色端子台與 micro-USB 接頭可以同時有電源輸入,此時 One 會透過內建的自動選擇電路(如下圖)自動選擇穩定的電壓供應來源。

USB_power_sch

經由綠色端子台的電源連接方式

綠色端子台可用來輸入機器人伺服機需要的大電流電源,輸入的電壓會以 by-pass 方式被連接到所有 VIN 接腳上,並且也輸入到穩壓晶片(regulator)中來產生穩定的 5V 電壓輸出。此電源輸入端的電路如下所示:

power_protect_sch

由於機器人的電源通常功率較大,操作不慎容易將電路板燒壞,所以我們在電路上加入了較強的 TVS 二極體保護,可防止電源突波(火花)及電源反插(正負極接反)等狀況破壞板上元件。(注意,電源反插保護有其極限,使用者應避免反插超過 40V 的電壓。)

power_protect_chips

以電池供電:
通常機器人會使用可輸出大電流的電池作為動力來源,您可直接將電池的正負極導線鎖到綠色端子台來為 One 供電。

86one_example_battery_power

以電源變壓器供電:
若希望使用一般家用電源變壓器為 One 供電,建議可製作一個連接變壓器的轉接頭。這裡我們拿電源接頭為 2.1mm 公頭的變壓器為例,準備一個 2.1mm 的電源母座(如下圖),將兩條導線分別焊在電源母座的正極和負極,然後導線另一端鎖在綠色端子台上,再將電源母座與變壓器連接,便可完成變壓器到綠色端子台的轉接。

86one_example_powerjack

86one_example_power_adapter

直流電源供應器的連接方式:
使用直流電源供應器為 One 供電相當簡單,直接將電源供應器的正負極輸出,以正接正、負接負的方式鎖到綠色端子台的正負極輸入即可。

86one_example1_power

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

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

86one_usb_device_protect_sch

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

86one_example_usb_power

亦可用此線將 One 連接至 USB 充電器來供電:

86one_example_usb_power_adapter

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

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

電源指示燈

當 86Duino One 的綠色電源端子或 micro-USB 電源接口輸入正確的電源後,電源指示燈“ON”會亮起,如下圖:

86one_example_power_led

電源輸出接口

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

86one_power_outputs

3.3V、5V 輸出接腳可做為電子實驗電路的電壓源,其中 3.3V 接腳最高輸出電流為 400mA,5V 接腳最高輸出電流為 1000mA。VIN 輸出和綠色端子台的外部電源輸入是共用的,換句話說,兩者在電路上是連接在一起的;VIN 接腳主要用於供給機器人伺服機等大電流裝置的電源。

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

二、MicroSD 卡插槽

86Duino One 支援最大 32GB SDHC 的 MicroSD 卡,不支援 SDXC。

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

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

開機順序

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

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

Micro SD 卡插入方向

MicroSD 插槽位於 One 背面,請依照下圖方式插入 MicroSD 卡即可:

86one_example_micro_sd

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

86one_example_micro_sd2

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

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

86one_GPIOs

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

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

86one_io_functions

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

RC 伺服機接頭

86Duino One 右惻編號 21 ~ 38 之 GPIO 接腳設計為 RC 伺服機接頭,可直接用來連接 RC 伺服機,不需另外透過轉接板。您可以在 86Duino Coding 開發環境裡使用 Servo 函式庫來控制這些伺服機動作。

RC 伺服機接頭腳位定義如下:

86one_servo_pinout

由於 RC 伺服機種類繁多且品質不一,我們在此接頭的每一根 GPIO 接腳上皆加入了 200 歐姆限流保護電阻(如下電路所示),做基本的防護。我們也對 One 電路板進行了特別設計,使其可乘載 18 顆伺服機同時運行時可能消耗的大電流,原則上,10A 以下的電流皆可承受。

86one_rcservo_sch

請注意,RC 伺服機沒有防呆接頭,插拔時應避免將 RC 伺服機接反;此外,RC 伺服機接頭上的 VIN 與 GPIO 相當靠近,操作上應特別小心,不可將 VIN 與 GPIO 短路,以免造成 GPIO 燒毀,也請不要將 VIN 接到 86Duino 任意一隻腳,例如 5V、3.3V、CAN BUS、TX、RX、I2C 和 SPI 腳位,以免被 VIN 的高電壓擊穿。

RC 伺服機接線範例

RC 伺服機接頭針腳排列方式符合市面上常見的訊號、電源、地線之標準排列方式,使用時請對齊伺服機信號腳位置直接將其插上即可,如下圖所示:

86one_example_servo

有些廉價 RC 伺服機設計不良,在啟動瞬間會大幅干擾 VIN 電源之供給,將 VIN 電源拉低至 6V 以下,這會使 One 的 CPU 模組啟動欠壓保護而停機。如發生這種狀況,您的一個解決方法是更換可瞬間供應大電流的外部電源(例如:伺服機專用電池)以克服伺服機的干擾,另一方法是從 micro-USB 接頭另外供應穩定的 5V 電源給 One 的 CPU 模組,這是市面上伺服機控制板常見的雙電源供電方式,如下圖所示:

86one_example_many_servos

四、LED 指示燈

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

86one_example_leds

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

86one_L13_sch

五、RESET

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

86one_reset_buttun

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

86one_reset_sch1

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

86one_reset_sch

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

86Duino One 提供 7 通道 A/D 輸入,為 AD0 ~ AD6,位置如下圖所示:

86one_ad_pins

每一個通道都具有最高 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 接腳。此外,應注意 One 的 A/D 接腳不能像 Arduino Leonardo 一樣切換成數位輸出入接腳。

接線範例

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

86one_example_adc_connect

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

七、I2C 接口

86Duino One 提供一組 I2C 接口,為 SDA 和 SCL,位置如下:

86one_i2c_pins

您可以在 86Duino Coding 開發環境裡使用 Wire 函式庫來操作 I2C 接口。One 支援 I2C 規範的 standard mode(最高 100Kbps)、fast mode(最高 400Kbps)、high-speed mode(最高 3.3Mbps)三種速度模式與外部設備通訊。根據 I2C 規範,與外部設備連接時,需要在 SCL 和 SDA 腳位加上提升電阻(參考 Wiki 百科上的說明)。提升電阻的阻值與 I2C 速度模式有關,One 在內部已經加上 2.2k 歐姆的提升電阻(如下圖所示),在 100Kbps 和 400Kbps 的速度模式下不需再額外加提升電阻;在 3.3Mbps 速度模式下,則建議另外再加上 1.8K ~ 2K 歐姆的提升電阻。

86one_i2c_pull_up_sch

接線範例

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

example_i2c_senser

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

86one_example_i2c_connect

八、PWM 輸出

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

86one_pwm_pins

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

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

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

九、TTL 串列埠(UART TTL)

86Duino One 提供 3 組 UART TTL,分別為 TX (1) / RX (0)、TX2 (16) / RX2 (17)、TX3 (14) / RX3 (15),其通訊速度(鮑率)最高可達 6Mbps。您可以使用 Serial1 ~ Serial3 函式庫來接收和傳送資料。UART TTL 接口的位置如下圖:

86one_UART_pins

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

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

接線範例

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

AX_12_pin_out

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

86one_example_ax12_pinout

86one_example_ax12_connect

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

十、RS485 串列埠

86Duino One 提供一組 RS485 接口,與外部設備通訊的速度(鮑率)最高可達 6Mbps。您可以使用 Serial485 函式庫來接收和傳送資料。其接腳位置如下圖:

86one_rs485_pinout

請注意,RS485 與 UART TTL 不同,採差動信號輸出,因此無法與 UART TTL 互連及通訊。

86one_rs485_sch

接線範例

RS485 接口可用於連接要求 RS485 通訊的機器人 AI 伺服機,這裡我們以 Robotis 公司出品的 Dymanixel RX-28 伺服機作為示範。下圖為 RX-28 外觀及其腳位標示:

rx28_pinout

直接將 One 的 RS485 接腳、VIN、GND 與 RX-28 對接,即可在 86Duino sketch 程式中使用 Serial485 互相通訊:

86one_example_rx28

86one_example_rx28_connect

注意,One 與 RX-28 的鮑率需設定為相同,通訊才會正常;另外,VIN 需提供伺服機正確工作電壓(12V ~ 16V),RX-28 才會轉動。

十一、CAN Bus 網路接口

CAN Bus 是一種工業通訊協定,可以支持高安全等級及有效率的即時控制,常被用於各種車輛與自動化設備上,詳細介紹可參考 Wiki 百科。86Duino One 板上提供了一組 CAN Bus 接口,位置如下:

86one_CAN_pins

您可以在 86Duino Coding 開發環境裡使用 CANBus 函式庫來操作 One 的 CAN Bus 接口。

必須一提的是,One 與 Arduino Due 的 CAN Bus 接口實作並不相同,One 板上已內建 TI SN65HVD230 的 CAN 收發器來產生 CAN Bus 物理層信號(如下圖),可直接與外部 CAN Bus 裝置相連;Arduino Due 並沒有內建 CAN 收發器,必須在其 CAN Bus 腳位另外加上 CAN 收發器,才能連接 CAN Bus 裝置。

86one_CAN_sch

因為 Arduino Due 缺乏 CAN 收發器,所以 One 的 CAN Bus 接口不能與 Arduino Due 的 CAN Bus 接口直接對接,這種接法是無法通訊的。

接線範例

本範例使用 LAWICELAB 公司出品的 CAN232 裝置作為示範。下圖為 CAN232 外觀及其腳位標示:

CAN232_pinout

CAN232 需要 6V ~ 15V 的電源,可用 One 的 VIN 接腳供電。因此直接將 One 的 CAN Bus 接腳、VIN、GND 與 CAN232 對接,兩者即可互相通訊,如下圖所示:

86one_example_CAN232

86one_example_can232_connect

十二、SPI 接口

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

86one_spi_pins

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

十三、LAN 網路接口

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

86one_LAN_port

86one_LAN_pinout

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

接線範例

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

86one_example_LAN_connect

十四、Audio 接口

86Duino One 內建 HD Audio 音效卡,並透過高傳真音效晶片 Realtek ALC262 提供一組雙聲道音效輸出和一組麥克風輸入,内部電路如下圖。在 86Duino Coding 開發環境中,您可以使用 Audio 函式庫來輸出立體音效。

86one_audio_sch

Realtek ALC262 音效晶片位於 One 背面,位置如下:

86one_audio_chip

音效輸出和麥克風輸入接口位於音效晶片下方,為兩個 1.25mm 的 4P 接頭,如下圖所示,左邊為 MIC(麥克風輸入),右邊為 LINE_OUT(音效輸出):

86one_audio_pinout

若您希望連接 TRS 端子的耳機/擴音器及麥克風,您需要製作 TRS 母座轉接線(86Duino One 配線包內含兩條 3.5mm TRS 轉接線)。不將 TRS 母座焊死在板上,同樣是為了方便機器人設計師將 TRS 母座安置到機器人身上容易插拔擴音器及麥克風的地方,而不用遷就控制板的安裝位置。

接線範例

下圖以 86Duino One 配線包內附的轉接線為例,示範音效輸出至耳機的連接:

86one_example_Audio_connect

十五、USB 2.0 接口

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

86one_usbhost_port

86one_usbhost_port

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

接線範例

下圖以 86Duino One 配線包內附的轉接線為例,示範連接 USB 鍵盤:

86one_example_usb_keyboard_connect

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

86one_example_usb_connect

十六、Encoder 接口

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

86duino_encoder_pinout

86one_encoder_pinout_table

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

接線範例

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

AM4096_pins

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

86one_example_encoder_connect

十七、三軸加速度計與三軸陀螺儀

86Duino One 板上內建一顆三軸加速度計與三軸陀螺儀感測晶片 LSM330DLC,可用於感測機器人的姿態。您可以在 86Duino Coding 開發環境裡使用 FreeIMU1 函式庫來讀取它。

86one_gero_sch

感測晶片在板上的位置如下圖所示:

86one_gero_position

下圖標示感測晶片 X-Y-Z 坐標方位在 One 電路板上的對應:

86one_3axis_directions

請注意,這顆感測晶片連接在 One 的 I2C 接口上,佔用 0x18 及 0x6A 兩個 I2C 地址(此為 7-bit 地址,對應的 8-bit 地址是 0x30 及 0xD4),若您在外部接上具有相同地址的 I2C 裝置,將可能發生衝突。

十八、Mini PCI-E 接口

86Duino One 背面提供一個 Mini PCI-E 插槽(下圖紅框處),可用來安裝 Mini PCI-E 擴充卡,例如:VGA 顯示卡或 WiFi 無線網卡。

86one_minipcie_slot

Mini PCI-E 插槽的電路圖如下所示:

86one_pcie_sch

連接範例

下面我們示範如何安裝 Vortex86VGA 顯示卡(如下圖)使 One 具備螢幕輸出功能。

86one_mini_pcie_VAG_card

下圖是 Vortex86VGA 顯卡所附的配件,包含一條 VGA 輸出線、兩個螺絲、六個螺帽;螺絲與螺帽用於 Mini PCI-E 卡的固定。

VGA_wires

顯卡安裝方式如下。首先把螺絲穿過 CMOS 電池兩旁的固定孔,如下圖紅圈處:

86one_example_VGA_connect1

翻到 One 背面,分別在兩根螺絲各鎖上兩個螺帽,如下圖:

86one_example_VGA_connect2

接著讓 Vortex86VGA 晶片朝上把顯卡斜斜地插入 One 的 Mini PCI-E 插槽, 注意要插到底以避免接觸不良:

86one_example_VGA_connect3

接著下壓顯卡,使其固定孔穿過先前固定好的兩根螺絲,再接著鎖上螺帽固定,如下圖紅圈處:

86one_example_VGA_connect4

將 VGA 輸出線裝到顯卡上:

86one_example_VGA_connect5

最後把 VGA 接頭連接到螢幕即可。One 打開電源後,Vortex86VGA 顯卡上的紅色 LED 電源燈將會亮起(左下圖紅圈處),並且螢幕上出現開機訊息:

86one_example_VGA_connect6

註:請注意,86Duino One 接上 Vortex86VGA 顯卡後,總耗電量會提升為 600mA @ 5V,超出 USB 2.0 規範的 500mA,因此您不可用一般 PC 的 USB 2.0 插槽為 One 及 Vortex86VGA 供電。

十九、CMOS 電池

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

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

86one_battery

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


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

GPIO_pins_map
GPIO_pins_map2

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

86Duino One 配線包內含如下圖所示線材,由左至右分別為 micro-USB 電源線(程式燒錄線)、USB Host 接口線、RJ45 乙太網路接口線、音訊輸出與麥克風輸入接口線。
86one_wire_package

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


展示影片


硬體說明主頁面

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.