UDOO Neo 非常適合注重豐富 I/O、感測器和強大運算資源的 IIoT 設計
資料提供者:DigiKey 歐洲編輯群
2016-06-22
物聯網 (IoT) 是小型無頭端微控制器板件快速發展的原因,這些板件係針對感測器和致動器等多種邊緣節點裝置所設計。 此類板件和模組僅有少許 I/O、一個無線微控制器,且僅消耗少量電力,就足以形成裝置大軍,提供資料給雲端架構的分析服務。 許多應用都需要更多的計算資源、操作介面和連線選項。
不論是執行閘道器功能或是從多個感測器彙總資料、初始化本機控制或功能組合,都需要有更多功能和資源的單板電腦。 工業設備製造商正努力打造一種能滿足每一項設備各式需求的嵌入式裝置,許多製造商選擇採用平台方案,使用主嵌入板並視需求加入附加周邊裝置。 在低至中量應用下,選擇市場上日漸受歡迎的開源單板電腦 (SBC) 好處更多。 這不僅可節省龐大的 NRE 成本、無線規範認證和軟體開發,同時還能讓開發團隊超快速著手進行設計的應用層面,而不需要對可能需要納入的大量裝置進行評估、設計和原型開發。
對許多工程團隊而言,IoT 帶來的顯著影響之一在於新專案的進行方式徹底的改變。 團隊可能具備從零開始設計嵌入式板件的完整能力,但在很短的期限內交出可用的設計則是最終的目標。 若想在製作自己的開發板前使用 SBC 平台迅速評估設計,就必須取得所有的機械檔案、佈局和 BOM。
圖 1:UDOO Neo
UDOO Neo 即是開發人員可能會考慮的一款 SBC。 共有三種不同版本(基本、延伸和完整)可供選擇,是完善且低成本的系統,且全都採用 Freescale 的 i.MX6SoloX 應用處理器為基礎,適用於 Android和 Linux。 在本文中,我們會專注於 Neo 完整版。 此 Freescale 裝置嵌入在單一晶片上,具有效能強大的 1 GHz ARM® Cortex®-A9 處理器,以及最高以 200 MHz 運作的 ARM Cortex-M4 I/O 即時輔助處理器。 透過高速 AXI 匯流排相互連接,能共享及使用許多硬體實作功能,如 GPIO、UART、I2C 等。 開發人員透過可編輯的多工處理,可以指派各個核心所使用的周邊裝置功能組態。
UDOO Neo 完整版擁有 1 GB 快閃記憶體,並提供多樣的 GPIO、序列介面、完整的 Wi-Fi 802.11 b/g/n 和 BLE 連線。 此板件具有嵌入式九軸動作感測器、三軸加速計、磁力計和陀螺儀、LVDS、HDMI、相機以及音訊介面,因此適合許多工業設計。
Cortex-A9 核心可以運行 Android Lollipop 或 UDOObuntu (14.04 LTS) 作業系統。 Cortex-M4 能夠存取全堆疊 Arduino 環境,包含完整的 Arduino 擴充板排針座,因此是極為靈活的平台。
圖 2:UDOO Neo 完整板的主要特點
圖 2 中的紅色外部引腳,在 GPIO 模式中預設指派給 Cortex-A9 使用。 因此這些引腳可以直接由檔案系統(Linux、Android)進行控制。 綠色的內部針腳是由 Cortex-M4 指派及控制,並且採用和 Arduino UNO 相同的引腳配置。
此板件由單一 6 至 15 VDC 電源供電;所有 GPIO 則是使用 3.3 VDC。 圖 3 的線路方塊圖凸顯 i.MX 應用處理器的主要組件和介面。
Neo 適合作為無頭端運算平台,或可加入 LVDS 觸控板或 HDMI,成為使用者控制平台。 如果您預定的應用無需動作感測器或大量記憶體,也可以選擇 Neo 基本版或延伸板,以節省板件成本。 對許多遠端應用而言,無頭端配置較為理想,可透過 SSH 遠端終端機或相似功能進行通訊。
圖 3:UDOO Neo 的 i.MX6 方塊圖
開始使用 UDOO Neo 就是如此簡單。 可在 Wiki 樣式網站取得讓板件運作所需的所有資訊,以及更全面的設定、程式碼範本等。 此網站也提供您所需的完整機械佈局檔和 BOM 清單。
板件出廠時並未安裝任何作業系統。 不論您選擇 Linux 或 Android,都需要一個具備 8 GB 以上容量的 microSD 卡。 您可在 Neo 的說明網站,選擇並下載作業系統至桌上型電腦或筆記型電腦,然後解壓縮。 接著必須將 microSD 卡插入記憶卡插槽或使用 USB 配接器。 開啟電腦的命令行(完整詳細資訊),並遵照指示,在移轉作業系統映像前卸載記憶卡以及所有的磁碟分割區。 在完成之後,別忘了要同步處理或退出記憶卡,以便正確結束映像寫入作業。
接著將 microSD 卡插入 Neo,連接滑鼠和鍵盤(通常透過 USB)以及 HDMI 監視器(建議一開始就使用,以確保所有功能皆正常運作),然後開機。 您應該很快會看到板件上的綠色和黃色 LED 發光,假設選擇 Linux 系統,Linux 的企鵝標誌 Tux 會先出現在螢幕上,然後才會顯示 UDOO Ubuntu 桌面。 這個熟悉的桌面可以讓您使用 Linux 的所有正常功能和公用程式。 Linux 系統版本也預載由 Neo 配置的 Arduino IDE,已經準備好可從桌面使用。 下一步是連線至 Neo 的網頁控制面板。 可以採用多種方式完成這項步驟,您可以將 Neo 瀏覽器指向 udooneo.local 網路伺服器,或指向板件的 IP 位址(若知道)。 請參閱圖 4。
圖 4:UDOO Neo 網頁控制面板
此控制面板可讓您對 Neo 有更深入的了解。 除了提供有線或無線連線狀態、感測器的資訊和板件資訊摘要,也提供配置選項,能設定並連接無線存取點、配置區域設定及更改顯示輸出。 亦提供加速計、陀螺儀和磁力計的軸和模數資料。您可以輕輕地旋轉板件,測試其運作狀況。
網頁控制面板也提供測試 Arduino 草稿碼範本及寫入簡易草稿碼的功能,請參閱圖 5。 熟悉 Arduino UNO 等板件的人會認出圖 5 應用程式範本中的簡易「Blink」範例(會觸發引腳 13)。 Neo 的紅色 LED 連接至此引腳,所以上傳此草稿碼後會閃爍。 請注意,編程應用程式中涵蓋 Ardublocky 應用程式,可以採用圖像化的互連邏輯區塊建立 Arduino 草稿碼。
圖 5:Arduino 網頁 IDE 和草稿碼範例
如之前所述,Neo 搭載兩組 GPIO。 可以由 Arduino 草稿碼存取的視為內部,是最深處的排針組,在 Linux 內部的則視為外部。 在預設情況下,所有引腳都設定為輸入組態,但也可設定為輸入或輸出,並且可在必要時產生核心中斷。 引腳多工處理能讓 MPU 指派更多專門任務至這些外部引腳。
圖 6:可在 Linux 內存取的 GPIO。 點選此處查看完整尺寸圖片。
可以使用簡易命令控制 GPIO 針腳,例如下列命令:
echo out > /gpio/pin19/direction – 將引腳設定為輸出引腳,或
echo in > /gpio/pin19/direction – 將引腳設定為輸入引腳
指定為輸出的引腳可以使用 echo 0 > /gpio/pin19/value 設定為低或零電壓
或使用 echo 1 > /gpio/pin19/value 設為 +3.3 VDC 的高電壓
可以使用 cat /gpio/pin19/value 讀取輸入引腳值
預先安裝於 UDOObuntu Linux 中的 udoo-gpio-export 套件除了建立 /sys/class/gpio 目錄的連結之外,還會負責匯出所有 GPIO,作為輸入。 如需更多進階要求資訊,請參閱 UDOO 的說明文件。
雙向虛擬化序列引腳使用共享記憶體交換資料,達到 Cortex-A9 和 Cortex-M4 核心之間的通訊。 可以使用 /dev/ttyMMC 在 Linux 中讀取此通訊,例如 minicom –D /ttyMCC,或在 Arduino 草稿碼中使用 Serial0 物件。
UDOO Neo 完整版具有三個板載動作感測器。 在 Freescale 的 FXOS8700CQ 元件中,同個封裝內含有 14 位元加速計和 16 位元磁力計。 此加速計具有三個可動態選擇的滿量程範圍:+/-2 g、+/- 4 g 或 +/-8 g。
此處的三軸陀螺儀採用的是 Freescale 的FXAS21002C。
此元件連接至 I2C 匯流排,如圖 7,可以由任一核心存取。
圖 7:I2C 匯流排顯示感測器和裝置的配置
可在命令列中,使用下列命令啟用:
echo 1 > /sensors/accelerometer/enable 或 echo 1 > /sensors/gyroscope/enable,而且可以使用如 cat /sensors/magnetometer/data的命令讀取一個截斷值。
嵌入式應用當然可透過適當的 I2C 暫存器,直接進行讀取。 加速計和磁力計使用 0x1E 位址,陀螺儀則使用 0x20。
也可以透過 Python 等更高階語言存取感測器。 在使用任何新板件的初期階段,您會發現板件設計若具有開源及社群特性將非常有助益。 可以在 GitHub 取得的 Neo.GPIO Python 函式庫就是很好的例子,在 Python應用程式(在 Cortex-A9 上執行)內提供感測器介面程式碼。 UDOObuntu 系統版本中已包含 Python,因此 Neo 的開發人員可以直接使用 Python。 使用前,您需要從 GitHub 下載 .ZIP 檔,然後解壓縮至建立 Python 應用程式時將使用的目錄。 .ZIP 檔內包含一些程式碼範例,圖 8 為該程式碼的簡化範例。
圖 8:讀取陀螺儀並顯示資料的 Python 程式
若要在命令列中執行圖 8 中的 Python 程式碼,您必須以 root 身份執行。 如果您依據上述方式使用 UDOO Neo,您的使用者帳戶屬於 udooer 身份,因此您必須依下列方式納入 GyroExample.py 程式。 請參閱圖 9。
echo udooer | sudo –S su –c 'python GyroExample.py'
圖 9:GyroExample.py 程式碼執行時的螢幕截圖
UDOO Neo 是全面且強大的 SBC,可以作為工業 IoT 應用的理想開發平台。 使用 Neo 即可讓初始應用程式具有極快的執行速度,並在最佳的時間和成本效益下讓產品上市。

聲明:各作者及/或論壇參與者於本網站所發表之意見、理念和觀點,概不反映 DigiKey 的意見、理念和觀點,亦非 DigiKey 的正式原則。