文章目錄
- 前言
- 智能硬件的定義與應用
- 智能硬件產品開發流程
- 智能硬件開發所涉及的技術體系概述
- 關于主板選型
- 主板CPU芯片的選擇
- 關于串口通信
- 總結
前言
針對我過往工作經歷,曾在一家智能科技任職Android開發工程師,簡單介紹下關于任職期間接觸和開發過的一些項目經歷,智能多與物聯網(LOT)進行聯系,從對Android智能硬件一無所知到現在算是略有小成,期間踩了很多坑,也接觸到了許多非Android方面的知識,現用文章的方式將之記錄下來,與大家分享。
智能硬件的定義與應用
提到智能硬件其實屬于物聯網(LOT)的范疇,關于智能硬件的定義,以我理解的角度來看,首先這是一個不同于移動手機的硬件,它本質還是一個可觸碰的實質物體;其次關于智能,只要是基于Android系統開發的硬件就可稱之為智能,因為智能硬件最關鍵的特性就是與外部連接通信,也稱之為物聯網,而Android系統自帶優秀的外部連接通信體系。
我們最常聽到與見到的智能硬件有手環、智能音箱、智能家居這些比較成熟的消費級商品,這些智能硬件大部分都是沒有界面的,與我從事的領域有所不同。沒有界面的智能硬件大部分都不是Andriod系統,而有觸屏界面的智能硬件我敢說80%以上都是Android系統,因為Android的交互體系絕對是最好的。
市面上成熟的Android智能硬件有:手持POS機、自動售貨機、政務自助機、人臉識別門禁、收銀機、汽車多媒體、電子班牌、快遞柜、影院取票機、廣告視頻機等等。
智能硬件產品開發流程
導入需求,分析確定需求細節,討論方案的技術可行性。
確定項目負責人、產品經理、硬件工程師、軟件工程師、結構工程師、UI設計師。
由需求確定使用哪些外設,對外設進行選型,需充分考慮性能、質量、結構設計、價格、供應商支持度等各方面的因素。
優先確認使用什么Android主板,確認主板與外設選型后告知結構工程師進行結構外形設計。
硬件工程師負責外接設備的控制板開發并提供接入協議,硬件工程師還須將外設接入Android主板的線材適配好。
UI設計師提供界面給軟件工程師(Android),開始進入進行軟件開發階段。
產品樣品建模制作出外殼,打磨、噴漆后進行所有元件的組裝。
樣品燒入程序,開始交予測試。
程序bug修改,穩定性測試。
所有測試通過后,撰寫用戶文檔與操作手冊。
一款智能硬件樣品全部制作完畢。
智能硬件開發所涉及的技術體系概述
Android UI
列表(RecycleView)
彈窗(Dialog)
動畫(Animation)
文字與按鈕(TextView)
手勢(Gesture)
外部通信
串口通信(UART)
以太網
Wifi、熱點
4G
藍牙
USB
NFC
I2C
GPIO
存儲
TF卡
U盤
FTP
Linux系統
腳本
點亮屏幕
固件升級
NDK
音視頻播放
設備通訊協議加密
接入已有的C庫
語音識別
人臉識別
外接設備
二維碼
攝像頭
紅外感應器
喇叭、麥克風
觸摸屏
LCD液晶屏
打印機
NFC模塊
IC類讀卡器
關于主板選型
Android主板的選型一定要放在首位,因為這是整個產品的控制中心,核心元件,如果不能自己定制主板,那就只能依賴于供應商提供方案。現行市面上非常多做安卓工業主板的,不愁找不到主板,但想要很特殊的定制可能會比較麻煩,除非你的量很大,否則只能用人家的標準板。依賴供應商還有一個特別麻煩的事情,就是系統功能定制的溝通,這是一個特別漫長而痛苦的過程。
結合多個項目的經驗,總結出智能硬件在安卓系統中所基本必要的功能。
序號 功能 說明
1 開機自啟 智能硬件一般只運行一個應用,且開機就要自動打開
2 保證應用永遠在前臺運行 讓用戶永遠不會看到除了應用之外的其它安卓界面
3 有接口設置系統時間 有些局域網場景無法連接外網,需要同步局域網服務器時間
4 定時開關機(帶RTC電池) 為了讓系統更好運行,可能需要每隔幾天重啟一次
5 靜默安裝應用,完成后直接拉起應用 更新安裝應用過程必須是無感的
6 系統固件更新接口 將新的系統固件放入系統后能用有方法更新
7 支持U盤、TF卡且有路徑檢測 對于非聯網管理的產品必須要能檢測到外部存儲插入
8 設置靜態以太網IP接口 對于某些依賴于IP地址進行管理的產品必須要能設置IP
9 開啟/關閉背光電源接口 有些場景可能要求節能環保,關背光很必要
10 讀寫IO口接口 IO口是控制外設開關的關鍵功能
11 設置屏幕顯示方向 橫豎屏根據項目會有不同要求
主板CPU芯片的選擇
CPU芯片是一塊主板最核心的元件,對于智能硬件而言CPU價格是不能太高的,不然會導致產品成本過高競爭力下降,但CPU性能又不能太差以讓產品毫無競爭力可言。從我觀察的情況來看,現在市面上的智能硬件基本是三家芯片廠商占據了絕大部分市場,它們分別是:
瑞芯微 Rockchip,簡稱RK
全志 AllWinner
飛思卡爾 FreeScale
瑞芯微是我接觸比較多的,在百度搜安卓主板出來的廣告廠商基本都是采用瑞芯微方案的,總體來說瑞芯微方案是最成熟的。
全志的安卓主板給我的感覺就是很便宜但系統都是4.2或4.4,說實話有點落后時代,不是5.0系統以上的主板我都不想碰,界面太丑系統還有點卡。
最后關于飛思卡爾,這是一個國外廠商,我手上還沒接觸過這個芯片的板子,很少見搭載這個芯片的安卓主板,也許在某些特定應用場景才會考慮這個芯片吧。
下面重點介紹下瑞芯微(下面簡稱RK芯片)系列4款常見的芯片。
芯片 定位 特性
RK3188 低端 四核Cortex-A9(32位),頻率最高1.6GHz,四核Mali-400MP4 GPU,支持OpenGL ES1.1/2.0,1080P視頻編解碼 (H.264)
RK3288 中端 四核Cortex-A17(32位),主頻最高達1.8GHz,Mali-T764 GPU,支持OpenGL ES 1.1/2.0/3.1, OpenCL, DirectX9.3,1080P視頻編解碼 (H.264/265)
RK3368 中低端 八核64位Cortex-A53,主頻最高達1.5GHz,PowerVR G6110 GPU,支持 OpenGL ES 1.1/2.0/3.1,OpenCL,DirectX9.3,1080P視頻編解碼 (H.264/265)
RK3399 高端 雙Cortex-A72+四Cortex-A53大小核CPU結構,主頻最高達1.8GHz,Mali-T864 GPU,支持OpenGL ES1.1/2.0/3.0/3.1,OpenVG1.1,OpenCL,DX11,1080P視頻編解碼
目前RK3288工業主板的價格大概在350~500 之間,RK3399價格在500~700之間,RK3188比3288便宜,RK3368介于3288與3399之間。
對于絕大多數應用場景而言,RK3288絕對能滿足需求,價格也比較適中,系統一般是Android5.1不用進行運行時權限適配。RK3399主要用于對于運算能力要求比較高的場景,比如人臉識別,3399還有一大優勢就是板子面積相對而言比較小。我目前基本都是采用3288進行開發的,對于智能硬件而言成本還是首要考慮因素,畢竟制造業利潤低,苦笑~
關于串口通信
串口通信是Android智能硬件開發所必須具備的能力,市面上類型眾多的外設基本都是通過串口進行數據傳輸的,所以說不會串口通信根本就做不了智能硬件開發。
首先來看一張RK3288的架構圖,在ConnectActivity那一個模塊可以發現UART*5的字樣,這就表示3288有5個串口可用,其中串口2一般是調試口不開放使用。
總結
以上可以對從事android開發工程師來說大致了解做智能硬件需要了解的一些知識點,和對基礎一年電路板的選型尤其是cpu上,真實android軟件工程師來說主要還是在底層基礎上進行相應有UI效果的開發和編程處理。