業(yè)界認(rèn)為,物聯(lián)網(wǎng) (IoT) 對緊湊型無頭微控制器板的快速增長起到了重要作用,控制器板專為傳感器和致動器等多種邊界節(jié)點(diǎn)設(shè)備而設(shè)計(jì)。 憑借其無線微控制器、少量 I/O和極低能耗,此此類開發(fā)板和模塊將成為眾多將數(shù)據(jù)饋送至云分析服務(wù)的設(shè)備。 許多應(yīng)用都要求更多計(jì)算資源、操作員接口和連接選項(xiàng)。
不論是執(zhí)行網(wǎng)關(guān)功能、聚合許多傳感器的數(shù)據(jù),還是啟動本地控制或多種功能,都需要具有更多功能和資源的單板計(jì)算機(jī)。 制造商們在設(shè)法打造可滿足每件設(shè)備所有不同需要的嵌入式器件,他們多數(shù)會選擇一種平臺方法——使用一塊嵌入式主板并按需添加外設(shè)。 對于中小批量,在市場上大量越來越流行的開源單板計(jì)算機(jī) (SBC) 中選擇一臺的優(yōu)勢更加顯著。 這不僅可以省去大量 NRE 成本、無線監(jiān)管認(rèn)證和軟件啟動,還讓開發(fā)團(tuán)隊(duì)可以在設(shè)計(jì)的應(yīng)用程序方面快速上手,而不必對可能需要集成的各種器件進(jìn)行評估、設(shè)計(jì)和原型開發(fā)。
對于許多工程團(tuán)隊(duì),IoT 的一個顯著影響是,處理新項(xiàng)目的方式會有根本性轉(zhuǎn)變。 團(tuán)隊(duì)可能完全有能力從零開始設(shè)計(jì)嵌入式板,但在很緊湊的期限內(nèi)交付工作設(shè)計(jì)才是最終目標(biāo)。 對于在創(chuàng)建自己的開發(fā)板前使用 SBC 平臺快速評估設(shè)計(jì)的人來說,訪問所有機(jī)械文件、布局和 BOM 都很有必要。
圖 1: UDOO Neo
開發(fā)人員可能考慮使用的 SBC 的一個代表是 UDOO Neo。 UDOO Neo 分為基本版、擴(kuò)展板和完整版,是一個全面的低成本系統(tǒng),且均基于適合 Android 和 Linux 的 Freescale i.MX6SoloX 應(yīng)用處理器構(gòu)建。 本文將著重探討 Neo 完整版。 此 Freescale 器件在單一芯片上嵌入一個運(yùn)行頻率為 1 GHz 的強(qiáng)大單核 ARM? Cortex?-A9 處理器,以及一個運(yùn)行頻率高達(dá) 200 MHz 的 ARM Cortex-M4 I/O 實(shí)時協(xié)處理器。 這些器件通過高速 AXI 總線連接在一起,能共享和使用大量硬件實(shí)施的功能,例如 GPIO、UART、I2C 等。 開發(fā)人員通過對可編輯進(jìn)行復(fù)用,可以分配外設(shè)功能的配置由哪個內(nèi)核使用。
UDOO Neo 完整版具有 1 GB 閃存,豐富的 GPIO、串行接口、完整的 Wi-Fi 802.11 b/g/n 和 BLE 連接。 此板配備有嵌入式 9 軸運(yùn)動傳感器、3 軸加速度計(jì)、磁力儀和陀螺儀、LVDS、HDMI、相機(jī)和音頻接口,適合許多工業(yè)設(shè)計(jì)。
從操作系統(tǒng)的角度看,Cortex-A9 內(nèi)核可以運(yùn)行 Android Lollipop 或 UDOObuntu (14.04 LTS)。 Cortex-M4 擁有完整堆棧 Arduino 環(huán)境的訪問權(quán)限,包括完整的 Arduino 擴(kuò)展板排針,進(jìn)一步使其成為一個非常靈活的平臺。
圖 2: UDOO Neo 完整版板的主要特性
圖 2 中顯示為紅色的外部引腳,在 GPIO 模式下默認(rèn)分配給 Cortex-A9。 因此,這些引腳可直接從文件系統(tǒng)(Linux、Android)控制。 顯示為綠色的內(nèi)部引腳由尺寸與 Arduino UNO 引腳輸出相同的 Cortex-M4 來分配和控制。
此板由單一 6 – 15 VDC 電源供電,所有的 GPIO 為 3.3 VDC。 圖 3 的示意框圖強(qiáng)調(diào)了基于 i.MX 應(yīng)用處理器的主要組成部分和接口。
Neo 適合用作無頭計(jì)算平臺;或通過添加 LVDS 觸摸面板或 HDMI 設(shè)備,用作適合用戶控制的平臺。 如果您的預(yù)期應(yīng)用不需要運(yùn)動傳感器或同樣多的內(nèi)存,則可以選擇 Neo 的基本或擴(kuò)展版本,以節(jié)省板的成本。 對于許多遠(yuǎn)程應(yīng)用,無頭配置是可取的,通過 SSH 遠(yuǎn)程端子或類似端子與之通信。
圖 3:UDOO Neo 的 i.MX6 框圖
UDOO Neo 入門再簡單不過了。 讓開發(fā)板運(yùn)行的所有必要信息及更全面的配置和代碼示例可在 Wiki-style 網(wǎng)站上找到。 如果您需要,此網(wǎng)站還提供全面的機(jī)械布局文件和 BOM 清單。
此板在供貨時未安裝任何操作系統(tǒng)。 不論您選擇 Linux 還是 Android,都需要容量為 8 GB 或以上的 microSD 卡。 從 Neo 的文檔網(wǎng)站將您選擇的操作系統(tǒng)下載到 PC 或筆記本電腦,然后執(zhí)行解壓縮。 您還需要將 microSD 卡插入卡插槽或 USB 適配器。 訪問計(jì)算機(jī)的命令行,完整詳情見此處,并遵循指示來卸載卡及所有分區(qū),然后再傳輸操作系統(tǒng)映像。 完成后,請記得,您需要同步或彈出卡以正確關(guān)閉映像寫入。
現(xiàn)在,將 microSD 卡插入 Neo,連接鼠標(biāo)和鍵盤(通常為 USB)、HDMI 顯示器(建議最初就使用,以查看一切是否正常運(yùn)行),然后再通電。 很快,開發(fā)板上綠色和黃色 LED 閃爍,假設(shè)選擇了Linux,進(jìn)入 UDOO Ubuntu 桌面前屏幕上會顯示 Linux 企鵝 Tux 標(biāo)志。 您可以通過這一熟悉的桌面使用 Linux 的所有普通功能及實(shí)用工具。 針對 Neo 配置的 Arduino IDE 也會在 Linux 平臺中預(yù)加載,并通過桌面現(xiàn)成可用。 下一步是連接 Neo 的 Web 控制面板。 執(zhí)行此操作有多種方式,可以通過讓 Neo 的瀏覽器指向其 udooneo.local Web 服務(wù)器,或指向板自身的 IP 地址(如果您知道)。 請見圖 4。
圖 4: UDOO Neo Web 控制面板
可通過該控制面板充分了解 Neo 內(nèi)部發(fā)生的情況。 除了提供有關(guān)有線和無線連接狀態(tài)的信息以及傳感器和板摘要信息外,還提供配置選項(xiàng),用于設(shè)置并連接到無線接入點(diǎn)、完成地區(qū)設(shè)置和更改顯示輸出。 還提供來自加速度計(jì)、陀螺儀和磁力儀的軸與模數(shù)數(shù)據(jù),您可以通過輕輕地四周移動開發(fā)板來測試其操作。
Web 控制面板上還提供測試 Arduino 代碼草稿示例和寫入一些簡單的代碼的功能,請見圖 5。 熟悉 Arduino UNO 等開發(fā)板的人,從圖 5(打開引腳 13)的應(yīng)用示例中可以看出是個簡單的‘“”閃爍“”示例。 Neo 的紅色 LED 已連接至此引腳,因此上傳此代碼草稿會導(dǎo)致其閃爍。 請注意,編程應(yīng)用程序中的 Ardublocky 應(yīng)用程序允許以圖形、互聯(lián)邏輯塊的方式創(chuàng)建 Arduino 代碼草稿。
圖 5: Arduino Web IDE 和代碼草稿樣本
正如前文所述,Neo 配備有兩組 GPIO。 可從 Arduino 代碼草稿訪問的 GPIO 稱作內(nèi)部排針,最內(nèi)側(cè)的排針組和從 Linux 內(nèi)訪問的 GPIO 則稱為外部排針。 默認(rèn)情況下,所有 GPIO 都配置為輸入,但可配置為輸入或輸出,且在需要時可產(chǎn)生內(nèi)核中斷。 引腳復(fù)用允許 MPU 向外部引腳分配更專門的任務(wù)。
圖 6: 可從 Linux 內(nèi)訪問的 GPIO。 單擊此處查看全尺寸圖像。
可以在命令行使用以下簡單命令控制 GPIO 引腳:
echo out > /gpio/pin19/direction – 將引腳設(shè)置為輸出引腳,或
echo in > /gpio/pin19/direction – 將引腳設(shè)置為輸入引腳
指定為輸出的引腳,可使用 echo 0 > /gpio/pin19/value 設(shè)置為低,零伏;
或使用 echo 1 > /gpio/pin19/value 設(shè)置為高,+3.3 VDC
輸入引腳值可使用 cat /gpio/pin19/value 來讀取
除了從 /sys/class/gpio 目錄創(chuàng)建鏈接外,UDOObuntu Linux 中預(yù)安裝的 udoo-gpio-export 軟件包還負(fù)責(zé)導(dǎo)出所有 GPIO 作為輸入。 有關(guān)這類高級要求的更多信息,請見 UDOO 文檔。
Cortex-A9 和 Cortex-M4 內(nèi)核之間通過雙向虛擬化串行引腳進(jìn)行通信,使用共享內(nèi)存交換數(shù)據(jù)。 可以在 Linux 中通過使用 /dev/ttyMMC 來讀取,例如 minicom –D /ttyMCC;或使用 Serial0 對象在 Arduino 代碼草稿內(nèi)讀取。
UDOO Neo 完整版板擁有三個運(yùn)動傳感器。 14 位加速度計(jì)和 16 位磁力儀位于相同封裝(一種 Freescale FXOS8700CQ 器件內(nèi)。 加速度計(jì)擁有三個可動態(tài)選擇的滿量程范圍:+/-2 g、+/- 4 g 或 +/- 8g。
3 軸陀螺儀是 Freescale FXAS21002C。
它們被連接至 I2C 總線,請見圖 7,并可通過任一內(nèi)核訪問。
圖 7: 顯示傳感器和器件配置的 I2C 總線
在命令行,它們可以使用
echo 1 > /sensors/accelerometer/enable 或 echo 1 > /sensors/gyroscope/enable 來啟用,并可使用 cat /sensors/magnetometer/data 等命令來讀取一次性的值。
嵌入式應(yīng)用當(dāng)然可以通過相關(guān) I2C 寄存器直接從它們讀取。 加速計(jì)和磁力儀使用地址 0x1E,陀螺儀使用 0x20。
也可以通過更高級的語言(例如 Python)來訪問傳感器。 在使用任何新開發(fā)板的早期,您都會希望開發(fā)板設(shè)計(jì)具備開源與社區(qū)性質(zhì)。 關(guān)于這方面的一個很好例子是 GitHub 上的 Neo.GPIO Python 庫,該庫提供在 Cortex-A9 上運(yùn)行的 Python 應(yīng)用程序的傳感器接口代碼。 Python 已包含在 UDOObuntu 發(fā)行版中,因此,使其成為在 Neo 上進(jìn)行開發(fā)的必然選擇。 使用前,您需要從 GitHub 下載 .ZIP 文件,然后將其解壓縮到將要創(chuàng)建 Python 應(yīng)用程序所在的目錄。 在 .ZIP 文件中還包括了多個代碼示例,圖 8 中顯示了其簡化版本。
圖 8: 讀取陀螺儀并顯示其中數(shù)據(jù)的 Python 程序
要在命令行運(yùn)行圖 8 中顯示的 Python 代碼,您必須以 root 的身份運(yùn)行。 如果您使用的是如上所述的 UDOO Neo,您的用戶帳戶為 udooer,那么您需要按以下方式使用 GyroExample.py 程序。 請見圖 9。
echo udooer | sudo –S su –c ‘python GyroExample.py’
圖 9: GyroExample.py 代碼運(yùn)行的截屏
UDOO Neo 是全面且強(qiáng)大的 SBC,可以用作工業(yè) IoT 應(yīng)用的理想開發(fā)平臺。 通過使用 Neo,您可極快運(yùn)行初始應(yīng)用,并以最具時間和成本效益的方式讓產(chǎn)品上市。
-
ARM
+關(guān)注
關(guān)注
134文章
9194瀏覽量
370234 -
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2914文章
45076瀏覽量
378646 -
Arduino
+關(guān)注
關(guān)注
188文章
6478瀏覽量
188321
發(fā)布評論請先 登錄
相關(guān)推薦
用于 SPI 絕對編碼器的 Arduino 示例代碼

I2C總線與Arduino的接口示例
HAL庫在Arduino平臺上的使用
LP589x和TLC698x示例代碼用戶指南

BQ40Z80量產(chǎn)校準(zhǔn)代碼示例

展示TIC2000? CLA的獨(dú)特功能的軟件示例

接口測試屬于功能測試嗎為什么
功能測試是白盒還是黑盒測試
功能測試主要做什么 功能測試包含哪些測試
功能測試和接口測試的區(qū)別
功能測試和性能測試的區(qū)別與聯(lián)系
關(guān)于STM32 DMAMUX模塊具體的應(yīng)用示例代碼

評論