前言
隨著AIoT與IIoT在近幾年的應用蓬勃發展,考量到IoT領域的各種應用情境,對於整體系統運作的成本與效能,一直是AIoT與IIoT考量的重點,因此便產生了各種嵌入系統與微控器的整合應用,希望透過嵌入系統與MCU的分工或互補,能有效提升系統運作整體的整體效益。
若系統開發若需要引入嵌入式系統,通常會有以下考量:
一、 高效GUI
1. 現行的嵌入式系統大都會將標準電腦的顯示介面電路設計進來,目前標準電腦常見的顯示介面,分別有VGA、HDMI、DVI等等,這些顯示介面都具有完整的圖形化顯示功能,作業系統透過程式設計的方式可以迅速建立圖形化使用者介面。
2. 圖形化使用者介面因為需要大量的記憶體存取與運算,必須透過強大的CPU與作業系統的偕同運作,嵌入式系統可較容易達成這些需要大量資料運算的應用。
二、 高運算負荷
1. 嵌入式系統因為有較大容量的記憶體與強大的CPU運算能力,非常適用於需要進行較大運算量的應用情境,如:人工智慧、人工智慧物聯網,其中人工智慧應用目前大都使用深度學習的方式進行設計,其中類神經網路的運算往往需要大量的運算。
2. 大量的網際網路或行動通訊網路應用需要大量的資料交換的過程,此外這些網路的服務往往也伴隨大量的GUI的操作,存取資料往往需要大量的系統記憶體進行儲存或運算。
三、 周邊電路擴充
1. 嵌入式系統大都提供類似標準電腦的硬體連接介面,顯示如:VGA、HDMI、DVI等,硬體擴充或連結介面如:USB系列、M.2、PCI-E、SATA等,能為各種標準電腦硬體周邊設備提供必要的支援。
2. 提供了許多工業標準的介面電氣規格介面,如:SPI、UART、I2C、RS485、TTL / CMOS介面,讓使用者可以擴充各種商用或自行設計的硬體模組電路。
若系統開發若需要引入MCU,通常會有以下考量:
一、 行動性
1. 現行常用的各種MCU都具備一個共同的特點就是「體積小」、「重量輕」,這樣的特性有助於開發各種行動裝置應用,或是各種穿戴式裝置的應用。
2. MCU裝置通常都是以單晶片微電腦的方式開發,現在常見的單晶片微電腦都將各種基本行動通訊功能整合在一起,這樣有助於進行各種強調行動通訊應用的情境。
二、 低耗能
1. MCU通常電源能耗都不會太大,在設計電源系統時就可以透過電池進行供電,這樣也有助於提高MCU應用的行動性。
2. 現行的各種MCU都設計有待機睡眠的功能,對於需要進行長時間待機的應用,MCU有甚低的靜態待機消耗功率的特點,對於節能主題的應用,提供相當不錯的實用價值。
三、 應用單純化
1. MCU因為低耗能的特性,大都是不具備甚高的運算效能,僅提供必要的基本資料轉換與算術或邏輯判斷功能,適用於對於環境資訊的蒐集應用。
2. MCU通常僅提供必要的擴充電路模組的信號接腳,提供簡單的電氣裝置的輸入或輸出功能,如:溫溼度感測、繼電器控制、簡單的有線或無線通訊界面功能。
分類 | 技術教學文 | 標籤 | Tinker Board、Tinker Board 2S、ASUS、AI、AIoT、MCU、Bluetooth、UART、Serial、Communication |
撰寫/攝影 | 曾俊霖 | ||
前情提要 | 有關Asus Tinker Board 2S作業系統的相關安裝教學,請參考以下連結:
ASUS Tinker Board 2S新版Debian 10 V2.0.3 系統與相依套件安裝教學 ASUS Tinker Board 2S 安裝 Android-11 V2.0.3版作業系統與應用軟體 有關Asus Tinker Board 2S作業系統在影像辨識的應用,請參考以下連結: |
||
時間 | 2小時 | 材料表 | ASUS Tinker Board 2S / 2GB-連結
MCU Linkit-7697
MCU ATmega-328系列
HC-05/06系列 |
成本 | |||
難度 | 中等 | ||
本篇教學將會著眼在嵌入式系統與MCU整合的應用上,從前述的兩種不同系統的運作特性裡,強調將這兩種系統進行整合開發應用的特點,而在現行各種大型專案的開發裡,尤其針對這兩種系統在進行資料交換的方式進行說明。
嵌入式系統與MCU系統在進行整合應用時,其通訊管道的建立對於這兩種系統的整合是極為重要的技術,本篇教學將會透過「有線通訊」與「無線通訊」兩種方式進行實作教學與應用的說明,其中嵌入式系統將會以華碩Tinker Board 2S為主要測試平台,而MCU將會採用Raspberry Pi Pico、聯發科Linkit-7697或Arduino系列進行測試。
一、 有線連線通訊系統設定與程式設計
1. 檢視UART在Tinker Board 2S上的硬體資源占用狀況
本篇教學將透過Tinker Board 2S的USB介面以UART通訊協定與MCU進行通訊,目前常用的MCU開發板(如:Linkit-7697、Raspberry Pi Pico或Arduino系列)都提供USB通訊界面,透過UART的方式來與Tinker Board 2S系統互相訊,並且透過各種開發工具(如:Arduino-IDE)進行連線,這樣的開發模式下,我們可透過UART 來對 MCU 上傳/燒錄程式。在 Tinker Board 2S 系統端若想要運用這樣的方式進行與MCU溝通,就必須要先了解MCU透過USB連結到Tinker Board 2S系統中在UART所占用的系統資源編號或是資源名稱,Tinker Board 2S控制程式設計就必須要開啟這些系統資源。
在Linux作業系統對於UART的通訊應用,通常在系統資源名稱都是以tty的方式進行資源的存取,這些相關存取的硬體資源訊息,通常都會放置在 /dev
目錄當中,只要查找 /dev
目錄就可以尋找到對應MCU的通訊資源編號與名稱,參考下圖,我們可以知道MCU占用Tinker Board 2S系統中的 ttyACM0
。
2. MCU的UART存取程式設計流程(簡單的輸入與輸出資料傳輸測試)
(1). 設定通訊埠Baud Rate
(2). 接收來自Tinker Board 2S的UART串列資料
(3). 檢查串列資料並進行RGB-LED的操作
(4). 輸出串列資料回應Tinker Board 2S
3. MCU 測試程式
在此使用 Linkit-7697,也適用 Raspberry Pi Pico。
這個測試程式可以「接收」來自單板電腦端的指令來控制 RGB-LED,並且「發送」回應訊息,可以做到雙向通訊。
接收命令 | RGB-LED動作 | 發送回應訊息 |
R,1# | 亮起紅色光 | Red ON |
R,0# | 熄滅紅色光 | Red OFF |
G,1# | 亮起綠色光 | Green ON |
G,0# | 熄滅綠色光 | Green OFF |
B,1# | 亮起藍色光 | Blue ON |
B,0# | 熄滅藍色光 | Blue OFF |
4. 單板電腦端測試流程:
在此使用 Tinker Board 2S 編寫 Python 來收發指令
(1). 輸入控制指令
(2). 發送控制指令至MCU
(3). 等候來自MCU的回應訊息
(4). 接收MCU的回應訊息
(5). 顯示來自MCU的回應訊息
5. Tinker Board 2S Python測試程式:
這個程式可以讓使用者可以把控制命令從Tinker Board 2S發送至MCU,並且等待MCU的回應訊息,接收回應訊息後必須檢查串列資料的內容是否正確,最後在螢幕顯示MCU的回傳訊息。
二、 Tinker Board 2S與MCU以USB有線連線方式的應用實例—「水質監測系統」
三、 Tinker Board 2S與MCU以USB有線連線方式的應用實例—「影像辨識機械手臂」
相關文章