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

    文章

    3923

    浏览量

    127113
收藏 人收藏

    评论

    相关推荐

    在TI开发板上启用Android Automotive

    电子发烧友网站提供《在TI开发板上启用Android Automotive.pdf》资料免费下载
    发表于 09-18 14:52 0次下载
    在TI<b class='flag-5'>开发</b>板上启用<b class='flag-5'>Android</b> Automotive

    瑞芯微RK3566开发板USB OTG模式介绍及命令切换,触觉智能EVB3566主板鸿蒙硬件厂商

    本文USB OTG模式介绍及命令切换,适用于嵌入式工程师、硬件开发教程入门学习课程。设备为触觉智能开发的瑞芯微RK3566开发板,型号IDO-EVB3566,支持开源鸿蒙Openhar
    的头像 发表于 09-05 17:01 961次阅读
    瑞芯微RK3566<b class='flag-5'>开发</b>板USB OTG模式介绍及命令切换,触觉<b class='flag-5'>智能</b>EVB3566主板鸿蒙<b class='flag-5'>硬件</b>厂商

    迅为RK3568 开发板赋能数字广告,推动智能化新时代

    核心板支持 Android 11 和 Android 12 系统,能够满足广告机各种 Android 系统应用的开发需求。配备高性能的四核 ARM Cortex-A55 处理器,主频
    发表于 08-08 11:29

    硬件工程师的开发心得

    的内容(用WinHEX看的内容)对不上。也不知道是什么原因。 好难啊!以为就是个小问题,结果被困扰了将近两周。下次用RISC的单片机试试。希望能成功! 搞硬件,有时候真的挺难,被一个小问题卡主,影响整个开发进度。
    发表于 07-29 21:55

    机智云助力小程序开发:连接智能硬件智能生活

    随着智能硬件的普及和小程序的兴起,人们的生活越来越依赖于智能化的解决方案。作为物联网领域的领先者,机智云为小程序开发者提供了丰富的支持和功能,帮助他们轻松实现
    的头像 发表于 06-15 08:10 366次阅读
    机智云助力小程序<b class='flag-5'>开发</b>:连接<b class='flag-5'>智能</b><b class='flag-5'>硬件</b>与<b class='flag-5'>智能</b>生活

    鸿蒙ArkUI-X跨平台开发:【bility开发说明(Android平台)】

    本文介绍将ArkUI框架扩展到Android平台所需要的必要的类及其使用说明,开发者基于OpenHarmony,可复用大部分的应用代码(生命周期等)并可以部署到Android平台,降低跨平台应用
    的头像 发表于 05-21 10:54 883次阅读
    鸿蒙ArkUI-X跨平台<b class='flag-5'>开发</b>:【bility<b class='flag-5'>开发</b>说明(<b class='flag-5'>Android</b>平台)】

    实习大学生如何在Purple Pi OH鸿蒙开发板下调试Android串口

    开源鸿蒙硬件方案领跑者触觉智能本文适用于PurplePiOH在Android固件后串口的开发与使用。触觉智能的PurplePiOH鸿蒙开源主
    的头像 发表于 05-14 08:32 546次阅读
    实习大学生如何在Purple Pi OH鸿蒙<b class='flag-5'>开发</b>板下调试<b class='flag-5'>Android</b>串口

    Android 15的首个开发者预览版现已发布

    Android 15 的首个开发者预览版现已发布,以便各位开发者能与我们通力协作,打造更优秀的 Android 平台。
    的头像 发表于 03-12 14:16 844次阅读
    <b class='flag-5'>Android</b> 15的首个<b class='flag-5'>开发</b>者预览版现已发布

    Testin云测国内首发Android 15开发者预览版云真机

    Android 15来了,Testin云测助您快速抢占先机! 目前,谷歌已发布了Android 15的第一个开发者预览版本(Android 15 Developer Preview 1
    的头像 发表于 02-24 09:33 854次阅读
    Testin云测国内首发<b class='flag-5'>Android</b> 15<b class='flag-5'>开发</b>者预览版云真机

    TLT507-Android开发环境搭建

    TLT507-Android开发环境搭建
    的头像 发表于 01-26 17:03 564次阅读
    TLT507-<b class='flag-5'>Android</b><b class='flag-5'>开发</b>环境搭建

    TLT507-Android应用开发手册

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

    基于FPGA的硬件引脚分配设计总结

    可以看到如下: 总结上文:在硬件设计引脚分配的时候我们需要知道: 1、一个GT Quad由四个GT车道组成。为PCIe IP选择GT Quads时,Xilinx建议您在最靠近PCIe硬块的
    的头像 发表于 12-14 15:45 694次阅读

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

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

    Banana Pi BPI-M5 开源硬件开发Android 9系统测试 #Android

    硬件开发banana pi
    Banana Pi开源硬件
    发布于 :2023年12月05日 14:11:00

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

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