業界認為,物聯網 (IoT) 對緊湊型無頭微控制器板的快速增長起到了重要作用,控制器板專為傳感器和致動器等多種邊界節點設備而設計。 憑借其無線微控制器、少量 I/O和極低能耗,此此類開發板和模塊將成為眾多將數據饋送至云分析服務的設備。 許多應用都要求更多計算資源、操作員接口和連接選項。
不論是執行網關功能、聚合許多傳感器的數據,還是啟動本地控制或多種功能,都需要具有更多功能和資源的單板計算機。 制造商們在設法打造可滿足每件設備所有不同需要的嵌入式器件,他們多數會選擇一種平臺方法——使用一塊嵌入式主板并按需添加外設。 對于中小批量,在市場上大量越來越流行的開源單板計算機 (SBC) 中選擇一臺的優勢更加顯著。 這不僅可以省去大量 NRE 成本、無線監管認證和軟件啟動,還讓開發團隊可以在設計的應用程序方面快速上手,而不必對可能需要集成的各種器件進行評估、設計和原型開發。
對于許多工程團隊,IoT 的一個顯著影響是,處理新項目的方式會有根本性轉變。 團隊可能完全有能力從零開始設計嵌入式板,但在很緊湊的期限內交付工作設計才是最終目標。 對于在創建自己的開發板前使用 SBC 平臺快速評估設計的人來說,訪問所有機械文件、布局和 BOM 都很有必要。
圖 1: UDOO Neo
開發人員可能考慮使用的 SBC 的一個代表是 UDOO Neo。 UDOO Neo 分為基本版、擴展板和完整版,是一個全面的低成本系統,且均基于適合 Android 和 Linux 的 Freescale i.MX6SoloX 應用處理器構建。 本文將著重探討 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 連接。 此板配備有嵌入式 9 軸運動傳感器、3 軸加速度計、磁力儀和陀螺儀、LVDS、HDMI、相機和音頻接口,適合許多工業設計。
從操作系統的角度看,Cortex-A9 內核可以運行 Android Lollipop 或 UDOObuntu (14.04 LTS)。 Cortex-M4 擁有完整堆棧 Arduino 環境的訪問權限,包括完整的 Arduino 擴展板排針,進一步使其成為一個非常靈活的平臺。
圖 2: UDOO Neo 完整版板的主要特性
圖 2 中顯示為紅色的外部引腳,在 GPIO 模式下默認分配給 Cortex-A9。 因此,這些引腳可直接從文件系統(Linux、Android)控制。 顯示為綠色的內部引腳由尺寸與 Arduino UNO 引腳輸出相同的 Cortex-M4 來分配和控制。
此板由單一 6 – 15 VDC 電源供電,所有的 GPIO 為 3.3 VDC。 圖 3 的示意框圖強調了基于 i.MX 應用處理器的主要組成部分和接口。
Neo 適合用作無頭計算平臺;或通過添加 LVDS 觸摸面板或 HDMI 設備,用作適合用戶控制的平臺。 如果您的預期應用不需要運動傳感器或同樣多的內存,則可以選擇 Neo 的基本或擴展版本,以節省板的成本。 對于許多遠程應用,無頭配置是可取的,通過 SSH 遠程端子或類似端子與之通信。
圖 3:UDOO Neo 的 i.MX6 框圖
UDOO Neo 入門再簡單不過了。 讓開發板運行的所有必要信息及更全面的配置和代碼示例可在 Wiki-style 網站上找到。 如果您需要,此網站還提供全面的機械布局文件和 BOM 清單。
此板在供貨時未安裝任何操作系統。 不論您選擇 Linux 還是 Android,都需要容量為 8 GB 或以上的 microSD 卡。 從 Neo 的文檔網站將您選擇的操作系統下載到 PC 或筆記本電腦,然后執行解壓縮。 您還需要將 microSD 卡插入卡插槽或 USB 適配器。 訪問計算機的命令行,完整詳情見此處,并遵循指示來卸載卡及所有分區,然后再傳輸操作系統映像。 完成后,請記得,您需要同步或彈出卡以正確關閉映像寫入。
現在,將 microSD 卡插入 Neo,連接鼠標和鍵盤(通常為 USB)、HDMI 顯示器(建議最初就使用,以查看一切是否正常運行),然后再通電。 很快,開發板上綠色和黃色 LED 閃爍,假設選擇了Linux,進入 UDOO Ubuntu 桌面前屏幕上會顯示 Linux 企鵝 Tux 標志。 您可以通過這一熟悉的桌面使用 Linux 的所有普通功能及實用工具。 針對 Neo 配置的 Arduino IDE 也會在 Linux 平臺中預加載,并通過桌面現成可用。 下一步是連接 Neo 的 Web 控制面板。 執行此操作有多種方式,可以通過讓 Neo 的瀏覽器指向其 udooneo.local Web 服務器,或指向板自身的 IP 地址(如果您知道)。 請見圖 4。
圖 4: UDOO Neo Web 控制面板
可通過該控制面板充分了解 Neo 內部發生的情況。 除了提供有關有線和無線連接狀態的信息以及傳感器和板摘要信息外,還提供配置選項,用于設置并連接到無線接入點、完成地區設置和更改顯示輸出。 還提供來自加速度計、陀螺儀和磁力儀的軸與模數數據,您可以通過輕輕地四周移動開發板來測試其操作。
Web 控制面板上還提供測試 Arduino 代碼草稿示例和寫入一些簡單的代碼的功能,請見圖 5。 熟悉 Arduino UNO 等開發板的人,從圖 5(打開引腳 13)的應用示例中可以看出是個簡單的‘“”閃爍“”示例。 Neo 的紅色 LED 已連接至此引腳,因此上傳此代碼草稿會導致其閃爍。 請注意,編程應用程序中的 Ardublocky 應用程序允許以圖形、互聯邏輯塊的方式創建 Arduino 代碼草稿。
圖 5: Arduino Web IDE 和代碼草稿樣本
正如前文所述,Neo 配備有兩組 GPIO。 可從 Arduino 代碼草稿訪問的 GPIO 稱作內部排針,最內側的排針組和從 Linux 內訪問的 GPIO 則稱為外部排針。 默認情況下,所有 GPIO 都配置為輸入,但可配置為輸入或輸出,且在需要時可產生內核中斷。 引腳復用允許 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 來讀取
除了從 /sys/class/gpio 目錄創建鏈接外,UDOObuntu Linux 中預安裝的 udoo-gpio-export 軟件包還負責導出所有 GPIO 作為輸入。 有關這類高級要求的更多信息,請見 UDOO 文檔。
Cortex-A9 和 Cortex-M4 內核之間通過雙向虛擬化串行引腳進行通信,使用共享內存交換數據。 可以在 Linux 中通過使用 /dev/ttyMMC 來讀取,例如 minicom –D /ttyMCC;或使用 Serial0 對象在 Arduino 代碼草稿內讀取。
UDOO Neo 完整版板擁有三個運動傳感器。 14 位加速度計和 16 位磁力儀位于相同封裝(一種 Freescale FXOS8700CQ 器件內。 加速度計擁有三個可動態選擇的滿量程范圍:+/-2 g、+/- 4 g 或 +/- 8g。
3 軸陀螺儀是 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 庫,該庫提供在 Cortex-A9 上運行的 Python 應用程序的傳感器接口代碼。 Python 已包含在 UDOObuntu 發行版中,因此,使其成為在 Neo 上進行開發的必然選擇。 使用前,您需要從 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,您可極快運行初始應用,并以最具時間和成本效益的方式讓產品上市。
-
ARM
+關注
關注
134文章
9310瀏覽量
375116 -
物聯網
+關注
關注
2927文章
45900瀏覽量
388196 -
Arduino
+關注
關注
189文章
6492瀏覽量
190133
發布評論請先 登錄
《ESP32S3 Arduino開發指南》第二章 Arduino基礎知識
(開源代碼版)手把手教學:DVP攝像頭拍照&上傳功能示例 !

如何獲取SMBus示例代碼?
用于 SPI 絕對編碼器的 Arduino 示例代碼

評論