通過總結大大小小多個Andriod智能硬件開發項目,記錄了智能硬件產品開發的全流程、智能硬件開發所涉及的技術體系概述的心得,并附上在主板選型、串口通信、屏幕顯示、常用外接設備上一些品類的特點和差異,分析了我的開發流程習慣原因,以供交流。
1.Android智能硬件的定義與應用領域
關于智能硬件的定義,以我理解的角度來看,首先這是一個不同于移動手機的硬件,它本質還是一個可觸碰的實質物體;其次關于智能,只要是基于Android系統開發的硬件就可稱之為智能,因為智能硬件最關鍵的特性就是與外部連接通信,也稱之為物聯網,而Android系統自帶優秀的外部連接通信體系。
我們最常聽到與見到的智能硬件有手環、智能音箱、智能家居這些比較成熟的消費級商品,這些智能硬件大部分都是沒有界面的,與我從事的領域有所不同。沒有界面的智能硬件大部分都不是Andriod系統,而有觸屏界面的智能硬件我敢說80%以上都是Android系統,因為Android的交互體系絕對是最好的。
市面上成熟的Android智能硬件有:手持POS機、自動售貨機、政務自助機、人臉識別門禁、收銀機、汽車多媒體、電子班牌、快遞柜、影院取票機、廣告視頻機等等。
2.一款智能硬件產品開發的全流程
導入需求,分析確定需求細節,討論方案的技術可行性。
確定項目負責人、產品經理、硬件工程師、軟件工程師、結構工程師、UI設計師。
由需求確定使用哪些外設,對外設進行選型,需充分考慮性能、質量、結構設計、價格、供應商支持度等各方面的因素。
優先確認使用什么Android主板,確認主板與外設選型后告知結構工程師進行結構外形設計。
硬件工程師負責外接設備的控制板開發并提供接入協議,硬件工程師還須將外設接入Android主板的線材適配好。
UI設計師提供界面給軟件工程師(Android),開始進入進行軟件開發階段。
產品樣品建模制作出外殼,打磨、噴漆后進行所有元件的組裝。
樣品燒入程序,開始交予測試。
程序bug修改,穩定性測試。
所有測試通過后,撰寫用戶文檔與操作手冊。
一款智能硬件樣品全部制作完畢。
3.智能硬件開發所涉及的技術體系概述
Android UI
列表(RecycleView)
彈窗(Dialog)
動畫(Animation)
文字與按鈕(TextView)
手勢(Gesture)
外部通信
串口通信(UART)
Wifi、熱點
GPIO
存儲
TF卡
U盤
FTP
Linux系統
腳本
點亮屏幕
固件升級
NDK
音視頻播放
設備通訊協議加密
接入已有的C庫
人臉識別
外接設備
二維碼
攝像頭
紅外感應器
喇叭、麥克風
觸摸屏
LCD液晶屏
打印機
NFC模塊
IC類讀卡器
4.關于主板選型
Android主板的選型一定要放在首位,因為這是整個產品的控制中心,核心元件,如果不能自己定制主板,那就只能依賴于供應商提供方案。現行市面上非常多做安卓工業主板的,不愁找不到主板,但想要很特殊的定制可能會比較麻煩,除非你的量很大,否則只能用人家的標準板。依賴供應商還有一個特別麻煩的事情,就是系統功能定制的溝通,這是一個特別漫長而痛苦的過程。
4.1 Anroid系統在智能硬件中所必要的功能
結合多個項目的經驗,總結出智能硬件在安卓系統中所基本必要的功能。
CPU芯片是一塊主板最核心的元件,對于智能硬件而言CPU價格是不能太高的,不然會導致產品成本過高競爭力下降,但CPU性能又不能太差以讓產品毫無競爭力可言。從我觀察的情況來看,現在市面上的智能硬件基本是三家芯片廠商占據了絕大部分市場,它們分別是:
全志 AllWinner
飛思卡爾 FreeScale
瑞芯微是我接觸比較多的,在百度搜安卓主板出來的廣告廠商基本都是采用瑞芯微方案的,總體來說瑞芯微方案是最成熟的。
全志的安卓主板給我的感覺就是很便宜但系統都是4.2或4.4,說實話有點落后時代,不是5.0系統以上的主板我都不想碰,界面太丑系統還有點卡。
最后關于飛思卡爾,這是一個國外廠商,我手上還沒接觸過這個芯片的板子,很少見搭載這個芯片的安卓主板,也許在某些特定應用場景才會考慮這個芯片吧。
下面重點介紹下瑞芯微(下面簡稱RK芯片)系列4款常見的芯片。
以疫情之前的價格來說,RK3288工業主板的價格大概在350~500 之間,RK3399價格在500~700之間,RK3188比3288便宜,RK3368介于3288與3399之間。
對于絕大多數應用場景而言,RK3288絕對能滿足需求,價格也比較適中,系統一般是Android5.1不用進行運行時權限適配。RK3399主要用于對于運算能力要求比較高的場景,比如人臉識別,3399還有一大優勢就是板子面積相對而言比較小。我目前基本都是采用3288進行開發的,對于智能硬件而言成本還是首要考慮因素,畢竟制造業利潤低。
下圖是一塊3288的主板示意圖及規格說明
5.關于串口通信
串口通信是Android智能硬件開發所必須具備的能力,市面上類型眾多的外設基本都是通過串口進行數據傳輸的,所以說不會串口通信根本就做不了智能硬件開發。
5.1 UART定義
通用異步收發傳輸器(Universal Asynchronous Receiver/Transmitter),通常稱作UART,是一種串行異步收發協議。
UART串口有三種工作方式:單工、半雙工、全雙工。硬件連接比較簡單,僅需要3條線,注意連接時兩個設備UART電平,如電平范圍不一致請做電平轉換后再連接,可參考此文章。
我們常見的串口通訊設置的界面如下所示,
主要有下列幾個參數;Speed(baud) 波特率
Data bits 數據位
Stop bits 停止位
Parity 奇偶校驗位
Flow Control 流控
我們的設置基本都是8位數據位,1位停止位,無校驗無流控,就如上圖所示。對于程序開發而言,主要關注的參數就是波特率。
另外,需要注意的是比特率、成波特率兩者之間是有區別的。
波特率表示每秒鐘傳送的碼元符號的個數,是衡量數據傳送速率的指標,它用單位時間內載波調制狀態改變的次數來表示。在信息傳輸通道中,攜帶數據信息的信號單元叫碼元,每秒鐘通過信道傳輸的碼元數稱為碼元傳輸速率,簡稱波特率。
1波特即指每秒傳輸1個碼元符號(通過不同的調制方式,可以在一個碼元符號上負載多個bit位信息)。1比特每秒是指每秒傳輸1比特(bit)。單位“波特”本身就已經是代表每秒的調制數,以“波特每秒”(Baud per second)為單位是一種常見的錯誤。
按照上述的基本設置,其實一個碼元總共傳輸了10個比特,1個起始位+1個停止位+8個數據位,如波特率為9600,那每秒一共傳輸了9600*10 = 96000個比特,換算成字節為12000 byte,約合11.72kb。
需要注意的是這12000byte指的是串口實際一共傳輸的數據位,但對于我們程序而言,真正能處理的數據就是除去起始位與停止位的數據位,對于傳輸8位數據位的設置而言,波特率是多少則傳輸的字節就是多少。如9600的波特率表示每秒傳輸9600個字節,每毫秒9.6字節。
安卓主板中一個串口端子的定義如下圖所示
幾乎所有安卓主板上的串口都是這種4pin的形式,這里有一個特別重要的點,就是對外設接線時,RX要對上外設的TX口,TX則對應RX口,否則是接收不到數據傳輸的。
在我所接觸的眾多外設中,安卓的常用串口有三種標準接口。
TTL
UART所指的是硬件接口,是硬件層次的描述。而TTL與RS232、485則指的是數據傳輸的電平標準,計算機的存儲單位是二進制位(bit),也就是0和1,而0和1怎么用電壓來表示呢?不同的表示方法于是對應了不同的標準,這就是TTL、RS232這些電平標準之間的區別。
所有CPU芯片的UART數據傳輸的電平都是采用TTL標準的,我們所看到的安卓主板上RS232或485的接口都是要再需要經過一次電平轉換才能與CPU進行通信的。可以這樣說,安卓主板CPU直接引出來的串口管腳都是TTL標準的,如需要其它的接口則要中間再增加一個電平轉換芯片以滿足要求。
5.2 三種UART接口介紹
TTL
TTL(Transistor-Transistor Logic,晶體管-晶體管邏輯),TTL電路的工作電壓是5V,它的輸出可以是高電平(3.6V)或者低電平(0.3V)。為了用這種模擬量的電壓來表示數字量的邏輯1和邏輯0,TTL電平規定:
對于輸出電路:電壓大于等于(≥)2.4V為邏輯1;電壓小于等于(≤)0.4V為邏輯0;
對于輸入電路:電壓大于等于(≥)2.0V為邏輯1;電壓小于等于(≤)0.8V為邏輯0;
RS232
它的全名是“數據終端設備(DTE)和數據通訊設備(DCE)之間串行二進制數據交換接口技術標準”,該標準規定采用一個25個腳的DB-25連接器,對連接器的每個引腳的信號內容加以規定,還對各種信號的電平加以規定。
后來IBM的PC機將RS232簡化成了DB-9連接器,從而成為事實標準。而工業控制的RS-232口一般只使用RXD、TXD、GND三條線。如下圖所示。
采用負邏輯,規定邏輯“1”的電平為-5V~-15 V,邏輯“0”的電平為+5 V~+15 V。選用該電氣標準的目的在于提高抗干擾能力,增大通信距離。RS -232的噪聲容限為2V,接收器將能識別低至+3V的信號作為邏輯“0”,將高到-3 V的信號作為邏輯“1”。
全雙工通信,傳輸距離較短,其通訊距離小于15 m,傳輸速率小于20 kb/s。
RS485
RS-485總線標準規定了總線接口的電氣特性標準即對于2個邏輯狀態的定義:正電平在+2V~+6V之間,表示一個邏輯狀態;負電平在-2V~-6V之間,則表示另一個邏輯狀態;
數字信號采用差分傳輸方式,即是A-B兩者的電壓差用以表示邏輯狀態,能夠有效減少噪聲信號的干擾。
RS-485工業總線標準能夠有效支持多個分節點和通信距離遠,總共可接收32個設備,且對于信息的接收靈敏度較高,均采用屏蔽雙絞線傳輸。采用半雙工(兩線制)最大傳輸距離約1219米,傳輸速度最高達10Mbps。
6.關于屏幕顯示
每次一個新項目的開發,我所做的第一件事就是確定所選定顯示屏的型號規格,然后將規格書發給主板供應商讓其先調屏參。
調屏參是很可能會出現無法點亮屏幕的情況,因為現在市場上有許多不同廠家的屏,不同尺寸,不同的接口,所以說點亮屏幕要預留一定的時間,否則拖延項目的進度。
Android現在主流的屏幕接口共有四種。HDMI
LVDS
EDP
MIPI
在這四種屏幕接口中HDMI是最高效的,也能輸出像4K這樣的分辨率,無須考慮任何屏參的適配,只要有HDMI接口幾乎所有屏幕都能快速點亮。
HDMI的缺點在于成本比較高,首先需要一個HDMI轉換板,其次需要一根體積比較大的HDMI連接線,這些都會給結構設計帶來相當大的阻礙,最后HDMI有個最大的缺點就是其插拔式的接口,可能會出現接觸不良的嚴重后果。
LVDS主要用于大尺寸屏幕的連接顯示,如19寸、21.5寸、50寸等大尺寸液晶。而EDP主要運用于筆記本領域的屏幕顯示,MIPI則運用于手機等小屏的顯示。
6.1 HDMI
高清多媒體接口(High Definition Multimedia Interface)是一種全數字化視頻和聲音發送接口,具有體積小,傳輸速率高,傳輸帶寬寬,兼容性好,可以同時發送未壓縮的音頻及視頻信號等優點。
HDMI規格可搭配寬帶數字內容保護(HDCP),以防止具有著作權的影音內容遭到未經授權的復制。
HDMI支持5Gbps的數據傳輸率,最遠可傳輸30米,足以應付一個1080p的視頻和一個8聲道的音頻信號。此外HDMI支持EDID,DDC2B,因此具有HDMI的設備具有“即插即用”的特點,信號源和顯示設備之間會自動進行“協商”,自動選擇最合適的視頻/音頻格式。
在 HDMI 線纜的19根線中由 4 對差分傳輸線組成了 TMDS 數據傳輸通道和時鐘通道。這 4個通道用來傳輸音頻信號、視頻信號以及輔助信號。
使用HDMI接口時要特別注意使用的環境是否經常抖動,如常抖動的話要對接頭處進行加固處理,因為HDMI線一般是直插式的,很容易松動造成無信號輸入。
6.2 LVDS
LVDS Low Voltage Differential Signaling即低壓差分信號傳輸,是一種滿足當今高性能數據傳輸應用的新型技術。由于其可使系統供電電壓低至 2V,因此它還能滿足未來應用的需要。
LVDS輸出接口利用即低壓差分信號傳輸。采用其輸出接口,可以使得信號在差分PCB線或平衡電纜上傳輸,由于采用低壓和低電流驅動方式,因此,實現了低噪聲和低功耗。LVDS 輸出接口液晶顯示器。
是為克服以TTL電平方式傳輸寬帶高碼率數據時功耗大、EMI電磁干擾大等缺點而研制的一種數字視頻信號傳輸方式。工控機采用LVDS輸出接口,可以使得信號在差分PCB線或平衡電纜上以幾百Mbit/s的速率傳輸,因采用低壓和低電流驅動方式,實現了低噪聲和低功耗。
此類LCD目前在中高端平板和筆記本中廣泛使用,現在行業出現一種比較新的規范----eDP,在筆記本行業將廣泛用于取代LVDS,支持超高分辨率(>1080P)。
LVDS接口只用于傳輸視頻數據,LVDS接口主要是將RGB TTL信號按照SPWG/JEIDA格式轉換成LVDS信號進行傳輸,LVDS接收器再將串行信號轉換為TTL電平的并行信號,送往液晶屏時序控制與行列驅動電路。也就是其實TFT只識別TTL(RGB)信號。
6.3 EDP
Embedded DisplayPort.一般采用EDP接口的液晶顯示屏其分辨率更高,高清液晶顯示屏都采用EDP的通信接口,像筆記本電腦一般都采用EDP接口,EDP屏幕都比較薄.
EDP接口是一種基于DisplayPort架構和協議的一種全數字化接口,可以用較簡單的連接器以及較少的引腳來傳遞高分辨率信號,且能夠實現多數據同時傳輸,所以它的傳輸速率也要遠高于LVDS。
eDP屏線一般為2組絞線、3組絞線、5組絞線、8組絞。常見的eDP屏線為2組信號線(絞線)、3組信號線。
優點:微封包結構,能夠實現多數據的同時傳輸。
較大的傳輸速率,4通道(lanes)高達21.6Gbps
較小的尺寸,寬26.3mm,高1.1mm,利于產品的輕薄化
無需LVDS轉換電路,電路簡潔,簡化設計。
較小的EMI(電磁干擾),并具有強大的版權保護功能。
6.4 MIPI
MIPI(Mobile Industry Processor Interface)是2003年由ARM, Nokia, ST ,TI等公司成立的一個聯盟,目的是把手機內部的接口如攝像頭、顯示屏接口、射頻/基帶接口等標準化,從而減少手機設計的復雜程度和增加設計靈活性。
MIPI信號是成對傳輸的,主要是為了減少干擾,MIPI信號成對走線,兩根線從波形看是成反相,所以有外部干擾過來,就會被抵消很大部分。主要用在平板和手機上使用。
MIPI接口LCD包括1對差分時鐘(CLKP,CLKN),4對數據差分線(D0P,D0N;D1P,D1N;D2P,D2N;D3P,D3N),每一對之間有GND線,4對數據差分線并不一定要全部使用,很多屏只需要2對就可以了;RESET(復位腳),
STBYB(高電平有效),
VGL,VGH(像素點上開關管的開啟關閉電壓,加在開關管的柵極上,VGH 高電平打
開給像素點電容充電, VGL 負電壓 關閉開關管),
VCOM( 液晶像素點的存儲電容共用電極),
VLED-(背光負極),VLED+(背光正極),
電源有1.8V和3.3V。
MIPI DSI不僅能夠傳輸視頻數據,還能傳輸控制指令;MIPI DSI接口則按照特定的握手順序和指令規則傳輸屏幕控制所需的視頻數據和控制數據。
審核編輯:湯梓紅
-
Android
+關注
關注
12文章
3923瀏覽量
127128 -
智能硬件
+關注
關注
205文章
2341瀏覽量
107429
原文標題:總結:Android智能硬件開發心得
文章出處:【微信號:IoTMaker,微信公眾號:機智云開發者】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論