0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

总结:Android智能硬件开发心得

机智云 2022-10-09 09:33 次阅读

通过总结大大小小多个Andriod智能硬件开发项目,记录了智能硬件产品开发的全流程、智能硬件开发所涉及的技术体系概述的心得,并附上在主板选型、串口通信、屏幕显示、常用外接设备上一些品类的特点和差异,分析了我的开发流程习惯原因,以供交流。

.Android智能硬件的定义与应用领域关于智能硬件的定义,以我理解的角度来看,首先这是一个不同于移动手机的硬件,它本质还是一个可触碰的实质物体;其次关于智能,只要是基于Android系统开发的硬件就可称之为智能,因为智能硬件最关键的特性就是与外部连接通信,也称之为物联网,而Android系统自带优秀的外部连接通信体系。我们最常听到与见到的智能硬件有手环、智能音箱智能家居这些比较成熟的消费级商品,这些智能硬件大部分都是没有界面的,与我从事的领域有所不同。没有界面的智能硬件大部分都不是Andriod系统,而有触屏界面的智能硬件我敢说80%以上都是Android系统,因为Android的交互体系绝对是最好的。市面上成熟的Android智能硬件有:手持POS机、自动售货机、政务自助机、人脸识别门禁、收银机、汽车多媒体、电子班牌、快递柜、影院取票机、广告视频机等等。

2.一款智能硬件产品开发的全流程

  1. 导入需求,分析确定需求细节,讨论方案的技术可行性。
  2. 确定项目负责人、产品经理、硬件工程师、软件工程师、结构工程师、UI设计师。
  3. 由需求确定使用哪些外设,对外设进行选型,需充分考虑性能、质量、结构设计、价格、供应商支持度等各方面的因素。
  4. 优先确认使用什么Android主板,确认主板与外设选型后告知结构工程师进行结构外形设计。
  5. 硬件工程师负责外接设备的控制板开发并提供接入协议,硬件工程师还须将外设接入Android主板的线材适配好。
  6. UI设计师提供界面给软件工程师(Android),开始进入进行软件开发阶段。
  7. 产品样品建模制作出外壳,打磨、喷漆后进行所有元件的组装。
  8. 样品烧入程序,开始交予测试。
  9. 程序bug修改,稳定性测试。
  10. 所有测试通过后,撰写用户文档与操作手册。
  11. 一款智能硬件样品全部制作完毕。

b261d098-46f7-11ed-b116-dac502259ad0.gif3.智能硬件开发所涉及的技术体系概述Android UI

  • 列表(RecycleView)
  • 弹窗(Dialog)
  • 动画(Animation)
  • 文字与按钮(TextView)
  • 手势(Gesture)

外部通信

存储

  • TF
  • U盘
  • FTP

Linux系统

  • 脚本
  • 点亮屏幕
  • 固件升级

NDK

  • 音视频播放
  • 设备通讯协议加密
  • 接入已有的C库
  • 语音识别
  • 人脸识别

外接设备

  • 二维码
  • 摄像头
  • 红外感应器
  • 喇叭、麦克风
  • 触摸屏
  • LCD液晶屏
  • 打印机
  • NFC模块
  • IC类读卡器

b261d098-46f7-11ed-b116-dac502259ad0.gif4.关于主板选型Android主板的选型一定要放在首位,因为这是整个产品的控制中心,核心元件,如果不能自己定制主板,那就只能依赖于供应商提供方案。现行市面上非常多做安卓工业主板的,不愁找不到主板,但想要很特殊的定制可能会比较麻烦,除非你的量很大,否则只能用人家的标准板。依赖供应商还有一个特别麻烦的事情,就是系统功能定制的沟通,这是一个特别漫长而痛苦的过程。4.1 Anroid系统在智能硬件中所必要的功能结合多个项目的经验,总结出智能硬件在安卓系统中所基本必要的功能。b2cc79c0-46f7-11ed-b116-dac502259ad0.png4.2 主板CPU芯片的选择CPU芯片是一块主板最核心的元件,对于智能硬件而言CPU价格是不能太高的,不然会导致产品成本过高竞争力下降,但CPU性能又不能太差以让产品毫无竞争力可言。从我观察的情况来看,现在市面上的智能硬件基本是三家芯片厂商占据了绝大部分市场,它们分别是:

瑞芯微是我接触比较多的,在百度搜安卓主板出来的广告厂商基本都是采用瑞芯微方案的,总体来说瑞芯微方案是最成熟的。全志的安卓主板给我的感觉就是很便宜但系统都是4.2或4.4,说实话有点落后时代,不是5.0系统以上的主板我都不想碰,界面太丑系统还有点卡。最后关于飞思卡尔,这是一个国外厂商,我手上还没接触过这个芯片的板子,很少见搭载这个芯片的安卓主板,也许在某些特定应用场景才会考虑这个芯片吧。下面重点介绍下瑞芯微(下面简称RK芯片)系列4款常见的芯片。b2fd43e8-46f7-11ed-b116-dac502259ad0.png以疫情之前的价格来说,RK3288工业主板的价格大概在350~500 之间,RK3399价格在500~700之间,RK3188比3288便宜,RK3368介于3288与3399之间。对于绝大多数应用场景而言,RK3288绝对能满足需求,价格也比较适中,系统一般是Android5.1不用进行运行时权限适配。RK3399主要用于对于运算能力要求比较高的场景,比如人脸识别,3399还有一大优势就是板子面积相对而言比较小。我目前基本都是采用3288进行开发的,对于智能硬件而言成本还是首要考虑因素,毕竟制造业利润低。下图是一块3288的主板示意图及规格说明b326838e-46f7-11ed-b116-dac502259ad0.pngb50224ce-46f7-11ed-b116-dac502259ad0.pngb261d098-46f7-11ed-b116-dac502259ad0.gif5.关于串口通信串口通信是Android智能硬件开发所必须具备的能力,市面上类型众多的外设基本都是通过串口进行数据传输的,所以说不会串口通信根本就做不了智能硬件开发。5.1 UART定义通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART,是一种串行异步收发协议。UART串口有三种工作方式:单工、半双工、全双工。硬件连接比较简单,仅需要3条线,注意连接时两个设备UART电平,如电平范围不一致请做电平转换后再连接,可参考此文章。我们常见的串口通讯设置的界面如下所示,b72fc846-46f7-11ed-b116-dac502259ad0.png主要有下列几个参数;

  • 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字节。安卓主板中一个串口端子的定义如下图所示b74c7446-46f7-11ed-b116-dac502259ad0.png几乎所有安卓主板上的串口都是这种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三条线。如下图所示。b7871344-46f7-11ed-b116-dac502259ad0.jpg采用负逻辑,规定逻辑“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。b7be61d2-46f7-11ed-b116-dac502259ad0.jpgb261d098-46f7-11ed-b116-dac502259ad0.gif6.关于屏幕显示每次一个新项目的开发,我所做的第一件事就是确定所选定显示屏的型号规格,然后将规格书发给主板供应商让其先调屏参。调屏参是很可能会出现无法点亮屏幕的情况,因为现在市场上有许多不同厂家的屏,不同尺寸,不同的接口,所以说点亮屏幕要预留一定的时间,否则拖延项目的进度。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线一般是直插式的,很容易松动造成无信号输入。b80a0e0c-46f7-11ed-b116-dac502259ad0.jpg6.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)信号。b82c9508-46f7-11ed-b116-dac502259ad0.pngb8848b64-46f7-11ed-b116-dac502259ad0.png6.3 EDPEmbedded 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(电磁干扰),并具有强大的版权保护功能。

b9160ea4-46f7-11ed-b116-dac502259ad0.png6.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对就可以了;

  • RESET(复位脚),
  • STBYB(高电平有效),
  • VGL,VGH(像素点上开关管的开启关闭电压,加在开关管的栅极上,VGH 高电平打开给像素点电容充电, VGL 负电压 关闭开关管),
  • VCOM( 液晶像素点的存储电容共用电极),
  • VLED-(背光负极),VLED+(背光正极),
  • 电源有1.8V和3.3V。

MIPI DSI不仅能够传输视频数据,还能传输控制指令;MIPI DSI接口则按照特定的握手顺序和指令规则传输屏幕控制所需的视频数据和控制数据。ba4b26ba-46f7-11ed-b116-dac502259ad0.png原文地址:https://blog.csdn.net/pigdreams/article/details/104351352

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Android
    +关注

    关注

    12

    文章

    3851

    浏览量

    125639
收藏 人收藏

    评论

    相关推荐

    TLT507-Android应用开发手册

    TLT507-Android应用开发手册
    的头像 发表于 01-26 15:32 259次阅读
    TLT507-<b class='flag-5'>Android</b>应用<b class='flag-5'>开发</b>手册

    【收藏】大牛总结的30个PCB布局的细节与心得

    【收藏】大牛总结的30个PCB布局的细节与心得
    的头像 发表于 12-06 15:17 314次阅读

    Android APP如何进行访问硬件驱动

    本文我们要讲的是在用 i.MX8 平台开发时,Android APP 如何进行访问硬件驱动。
    的头像 发表于 12-04 13:50 471次阅读
    <b class='flag-5'>Android</b> APP如何进行访问<b class='flag-5'>硬件</b>驱动

    Android Runtime源码解析》+深入体会第六章ART的执行(4)

    接上三篇。 《Android Runtime源码解析》+原创学习心得首发(1)《Android Runtime源码解析》+原创学习心得首发(2) 《
    发表于 11-17 01:33

    toybrick_RK3568X开发板:跑通 android 开发流程

    电(已经上电的话,按一下 reset 按键也行) 发现一个 loader 设备,点升级可以烧录了 这是笔者总结的 windows 下最简单的烧录方法 Android 开发,改代码,编译,烧录,这个过程
    发表于 11-16 21:30

    安卓主板-android主板-联发科MTK主板方案定制开发

    安卓主板,android主板,联发科MTK主板方案定制开发。安卓主板是一种采用ARM架构、内置Android操作系统的嵌入式智能主板。相比于传统的单片机,安卓主板在消费级及商用嵌入式
    的头像 发表于 11-03 18:58 558次阅读
    安卓主板-<b class='flag-5'>android</b>主板-联发科MTK主板方案定制<b class='flag-5'>开发</b>

    Android应用开发实验

    电子发烧友网站提供《Android应用开发实验.doc》资料免费下载
    发表于 10-30 09:32 0次下载
    <b class='flag-5'>Android</b>应用<b class='flag-5'>开发</b>实验

    Android校园应用开发过程

    电子发烧友网站提供《Android校园应用开发过程.pdf》资料免费下载
    发表于 10-19 11:36 0次下载
    <b class='flag-5'>Android</b>校园应用<b class='flag-5'>开发</b>过程

    总结Android传输的方法

    电子发烧友网站提供《总结Android传输的方法.pdf》资料免费下载
    发表于 10-09 16:16 0次下载
    <b class='flag-5'>总结</b><b class='flag-5'>Android</b>传输的方法

    Android Runtime源码解析》+学习心得首发(3)

    环境和机制,从而更好地开发和优化应用。同时,本书也适合对Android和编译原理感兴趣的读者阅读和学习。 在这个信息化、智能化的时代,Android已经渗透到我们生活的每一个角落。从
    发表于 09-28 13:09

    基于HALCON的模板匹配方法总结

    对象跟踪这些研究,从中取得较好地效果,简化了用其他工具,比如VC++来开发地过程。在 VC下往往针对不同地图像格式,就会弄地很头疼,更不用说编写图像特征提取、模板建立和搜寻模板地代码呢,我想其中间过程会很复杂,效果也不一定会显著。下面我就具体地谈谈基于HALCON地形状匹配算法地研究和
    发表于 09-19 06:13

    Android BLE 开发

    Android开发
    橙群微电子
    发布于 :2023年08月21日 10:25:39

    [触觉智能 Purple Pi OH开发板体验] 二.RK3566运行Android11

    上篇进行了开箱及硬件简单介绍,本章就来跑一下Android11进行体验。 体验之前我们要先下载一些必须的文件。1.安装RK USB驱动 可以到触觉智能官网或者某宝链接详情里获取下载链接,这里我已经
    发表于 08-07 08:26

    环境传感器:用于Android硬件抽象层

    电子发烧友网站提供《环境传感器:用于Android硬件抽象层.pdf》资料免费下载
    发表于 07-31 09:30 0次下载
    环境传感器:用于<b class='flag-5'>Android</b>的<b class='flag-5'>硬件</b>抽象层

    Android Runtime源码解析》+原创学习心得首发(2)

    接上一篇。 《Android Runtime源码解析》+原创学习心得首发(1)今天继续跟大家学习一下,这本书自我看过之后感觉最好最好的,还是第4章的优化算法分析。 就是优化算法框架、常量折叠、指令
    发表于 05-22 23:34