通过总结大大小小多个Andriod智能硬件开发项目,记录了智能硬件产品开发的全流程、智能硬件开发所涉及的技术体系概述的心得,并附上在主板选型、串口通信、屏幕显示、常用外接设备上一些品类的特点和差异,分析了我的开发流程习惯原因,以供交流。
.Android智能硬件的定义与应用领域关于智能硬件的定义,以我理解的角度来看,首先这是一个不同于移动手机的硬件,它本质还是一个可触碰的实质物体;其次关于智能,只要是基于Android系统开发的硬件就可称之为智能,因为智能硬件最关键的特性就是与外部连接通信,也称之为物联网,而Android系统自带优秀的外部连接通信体系。我们最常听到与见到的智能硬件有手环、智能音箱、智能家居这些比较成熟的消费级商品,这些智能硬件大部分都是没有界面的,与我从事的领域有所不同。没有界面的智能硬件大部分都不是Andriod系统,而有触屏界面的智能硬件我敢说80%以上都是Android系统,因为Android的交互体系绝对是最好的。市面上成熟的Android智能硬件有:手持POS机、自动售货机、政务自助机、人脸识别门禁、收银机、汽车多媒体、电子班牌、快递柜、影院取票机、广告视频机等等。
2.一款智能硬件产品开发的全流程
3.智能硬件开发所涉及的技术体系概述Android UI
外部通信
存储
Linux系统
NDK
外接设备
4.关于主板选型Android主板的选型一定要放在首位,因为这是整个产品的控制中心,核心元件,如果不能自己定制主板,那就只能依赖于供应商提供方案。现行市面上非常多做安卓工业主板的,不愁找不到主板,但想要很特殊的定制可能会比较麻烦,除非你的量很大,否则只能用人家的标准板。依赖供应商还有一个特别麻烦的事情,就是系统功能定制的沟通,这是一个特别漫长而痛苦的过程。4.1 Anroid系统在智能硬件中所必要的功能结合多个项目的经验,总结出智能硬件在安卓系统中所基本必要的功能。4.2 主板CPU芯片的选择CPU芯片是一块主板最核心的元件,对于智能硬件而言CPU价格是不能太高的,不然会导致产品成本过高竞争力下降,但CPU性能又不能太差以让产品毫无竞争力可言。从我观察的情况来看,现在市面上的智能硬件基本是三家芯片厂商占据了绝大部分市场,它们分别是:
瑞芯微是我接触比较多的,在百度搜安卓主板出来的广告厂商基本都是采用瑞芯微方案的,总体来说瑞芯微方案是最成熟的。全志的安卓主板给我的感觉就是很便宜但系统都是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电平,如电平范围不一致请做电平转换后再连接,可参考此文章。我们常见的串口通讯设置的界面如下所示,主要有下列几个参数;
我们的设置基本都是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口,否则是接收不到数据传输的。在我所接触的众多外设中,安卓的常用串口有三种标准接口。
UART所指的是硬件接口,是硬件层次的描述。而TTL与RS232、485则指的是数据传输的电平标准,计算机的存储单位是二进制位(bit),也就是0和1,而0和1怎么用电压来表示呢?不同的表示方法于是对应了不同的标准,这就是TTL、RS232这些电平标准之间的区别。所有CPU芯片的UART数据传输的电平都是采用TTL标准的,我们所看到的安卓主板上RS232或485的接口都是要再需要经过一次电平转换才能与CPU进行通信的。可以这样说,安卓主板CPU直接引出来的串口管脚都是TTL标准的,如需要其它的接口则要中间再增加一个电平转换芯片以满足要求。参考文章:https://www.jianshu.com/p/f1bfc7f6059bhttps://blog.csdn.net/zhuyongxin_6688/article/details/780017675.2 三种UART接口介绍TTLTTL(Transistor-Transistor Logic,晶体管-晶体管逻辑),TTL电路的工作电压是5V,它的输出可以是高电平(3.6V)或者低电平(0.3V)。为了用这种模拟量的电压来表示数字量的逻辑1和逻辑0,TTL电平规定:对于输出电路:电压大于等于(≥)2.4V为逻辑1;电压小于等于(≤)0.4V为逻辑0;对于输入电路:电压大于等于(≥)2.0V为逻辑1;电压小于等于(≤)0.8V为逻辑0;参考//blog.csdn.net/wofreeo/article/details/82389002RS232它的全名是“数据终端设备(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。RS485RS-485总线标准规定了总线接口的电气特性标准即对于2个逻辑状态的定义:正电平在+2V~+6V之间,表示一个逻辑状态;负电平在-2V~-6V之间,则表示另一个逻辑状态;数字信号采用差分传输方式,即是A-B两者的电压差用以表示逻辑状态,能够有效减少噪声信号的干扰。RS-485工业总线标准能够有效支持多个分节点和通信距离远,总共可接收32个设备,且对于信息的接收灵敏度较高,均采用屏蔽双绞线传输。采用半双工(两线制)最大传输距离约1219米,传输速度最高达10Mbps。6.关于屏幕显示每次一个新项目的开发,我所做的第一件事就是确定所选定显示屏的型号规格,然后将规格书发给主板供应商让其先调屏参。调屏参是很可能会出现无法点亮屏幕的情况,因为现在市场上有许多不同厂家的屏,不同尺寸,不同的接口,所以说点亮屏幕要预留一定的时间,否则拖延项目的进度。Android现在主流的屏幕接口共有四种。
在这四种屏幕接口中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 LVDSLVDS 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 EDPEmbedded DisplayPort.一般采用EDP接口的液晶显示屏其分辨率更高,高清液晶显示屏都采用EDP的通信接口,像笔记本电脑一般都采用EDP接口,EDP屏幕都比较薄.EDP接口是一种基于DisplayPort架构和协议的一种全数字化接口,可以用较简单的连接器以及较少的引脚来传递高分辨率信号,且能够实现多数据同时传输,所以它的传输速率也要远高于LVDS。eDP屏线一般为2组绞线、3组绞线、5组绞线、8组绞。常见的eDP屏线为2组信号线(绞线)、3组信号线。优点:
6.4 MIPIMIPI(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对就可以了;
MIPI DSI不仅能够传输视频数据,还能传输控制指令;MIPI DSI接口则按照特定的握手顺序和指令规则传输屏幕控制所需的视频数据和控制数据。原文地址:https://blog.csdn.net/pigdreams/article/details/104351352
全部0条评论
快来发表一下你的评论吧 !