电子器件的“中控室”:单片机MCU详解
上一篇(只有想不到,没有嵌不到,嵌入式系统科普 )文章介绍了嵌入式系统的组成部分。其中提到了单片机MCU,其实它也是一个小系统,它是控制电子产品的大脑。现如今,我们生活中的许多电器都含有单片机。例如:手机、电视机、冰箱、洗衣机、以及开关、LED等。那么,什么是单片机?它在这些电器中究竟做了些什么呢?以及是如何构成的?
它是如何诞生的
单片机诞生于1971年,经历SCM、MCU、SoC三大阶段。单片机由以前的1位、4位、8位、16位。早期的单片机都是4位或8位。其中最成功的是英特尔的8031,因为简单可靠而性能不错获得了很大的好评。此后在8031上发展出了MCS51系列单片机系统。基于这一系统的单片机系统直到现在还在广泛使用。
随着工业控制领域要求的提高,开始出现了16位单片机,但因为性价比不理想并未得到很广泛的应用。90年代后随着消费电子产品大发展,单片机技术得到了巨大的提高。如今已发展到32位甚至64位。90年代后随着消费电子产品大发展,单片机技术得到了巨大提高,相继诞生了一批经过市场考验获得良好口碑的单片机制造厂商。
“神通广大”,到哪儿都有它
实际工作中并不是任何场合都要求计算机有很高的性能。应用的关键看是否够用,是否有很好的性价比。单片机是电器动作的关键,是指挥硬件运行的。例如:接收按钮或按键的输入信号,按照事先编好的程序,指挥马达和LCD的外围功能电路动作。
为什么很多电器设备都要使用单片机呢?我们用一个点亮LED电路为例来说明。
(右)无单片机的电路是一个由LED,开关和电阻构成的简单电路。很显然,使用单片机的电路要复杂得多,而且设计电路还要花费精力与财力。这样看来使用单片机并没有什么优点,其实不然。
如果我们让这个电路做一些比较复杂的操作,会怎么样呢。例如:如果希望LED在按下开关后,经过一段时间再点亮或熄灭,那么,对于安装有单片机的电路来说,只需更改单片机中的程序就可以了,并不需更改原电路。另一方面,对于没有单片机的电路来说,就必须在元电路中加入定时器IC,或者用标准逻辑IC和FPGA构成逻辑电路,才能实现这个功能。也就是说,在更改和添加新功能时,带有单片机的电路显然更加容易实现。
单片机通常用于工业生产的控制、生活与程序和控制有关领域。由于单片机比专用处理器更适合应用于嵌入式系统,因此它得到了最多的应用。事实上单片机是世界上数量最多的计算机。现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电脑配件中都配有1-2部单片机。而个人电脑中也会有为数不少的单片机在工作。据了解,一辆汽车上要配备40多部单片机,复杂的工业控制系统上甚至可能有数百台单片机在同时工作。这样算下来,单片机的数量已经远超过地球人口的数量了。
那么“无所不能”的单片机都由哪些器件构成的?
以PC为例,一台计算机主要有这几个部位组成:中央处理单元CPU(进行运算、控制)、随机存储器RAM(数据存储)、存储器ROM(程序存储)、输入/输出设备I/O(串行口、并行输出口等)。在个人计算机上这些部份被分成若干块芯片,安装在一个被称之为主板的印刷线路板上。而在单片机中,这些部份全部被做到一块集成电路芯片中,所以就称为单片机,而且有一些单片机中除了上述部份外,还集成了其它部份如模拟量/数字量转换(A/D)和数字量/模拟量转换(D/A)等。此外,现在的单片机绝大多数都是基于冯·诺伊曼结构。
以51单片机为例,其功能组件及作用主要有:
1、CPU主芯片(内部通过总线连接扩展的设备)
2、时钟电路(为单片机提供震荡脉冲)
3、电源电路(为单片机提供电源)
4、内部数据存储器RAM(包括通用数据寄存器和专用寄存器SFR,主要是数据存储区。)
5、程序存储器ROM(主要是存储程序,51系列有4K内部程序ROM,可以外扩64K。)
6、并行端口4*8位(P0,P1,P2,P3主要是数据交换接口。)
7、串行口(TXD,RXD用于串口通信。)
8、中断系统(外中断0,定时计数T0,外中断1,定时计数T1,串口中断。)
9、定时/计数器(16位用于外部的计数和定时功能。)
在这些组成里,内存是单片机的记忆装置,主要记忆程序和数据,但ROM与RAM有所区别:
ROM是只读内存的简称。保存在ROM中的数据不能删除,也不会因断电而丢失。ROM主要用于保存用户程序和在程序执行中保持不变的常数。
RAM是可随机读/写内存的简称。可以随时读写数据,但关机后,保存在RAM中的数据也随之消失。主要用于存储程序中的变量。在单芯片单片机中,常常用SRAM作为内部RAM。SRAM允许高速访问,但是,内部结构太复杂,很难实现高密度集成,不适合用作大容量内存。除SRAM外,DRAM也是常见的RAM。DRAM的结构比较容易实现高密度集成,因此,比SRAM的容量大。但是,将高速逻辑电路和DRAM安装于同一个晶片上较为困难,因此,一般在单芯片单片机中很少使用,基本上都是用作外围电路。
工作原理
虽说CPU相当于人的大脑,但是它却不能像人的大脑一样,能有意识的、自发的思考。CPU只能依次读取并执行事先存储在内存中的指令组合。
单片机自动完成赋予它的任务过程,即一条条执行的指令过程,所谓指令就是把要求单片机执行的各种操作用的命令的形式写下来,这是在设计人员赋予它的指令系统所决定的,一条指令对应着一种基本操作;单片机所能执行的全部指令,就是该单片机的指令系统,不同种类的单片机,其指令系统亦不同。
所以必须把要把问题编成一系列指令,这一系列指令的集合就成为程序,程序需要预先存放在存储器中。存储器由许多存储单元组成,你可以想像成宾馆的房间,指令就存放在这些房间里,房间里的指令取出并执行就像入住要分配房间一样,每一个存储单元也必须被分配到唯一的地址号,该地址号称为存储单元的地址,这样只要知道了存储单元的地址,就可以找到这个存储单元,其中存储的指令就可以被取出,然后再被执行。
主流单片机
现在主流单片机有:
51系列单片机——对所有兼容Intel 8031指令系统的单片机的统称,51单片机是基础入门的一个单片机,还是应用最广泛的一种。
PIC系列单片机——用来开发的去控制外围设备的集成电路,有计算和记忆功能,处理能力一般,存储器容量也很有限。
AVR系列单片机——AVR最大的优点就是哈佛结构速度快;片上资源丰富;驱动能力强;功耗低;可选择型号种类多;性价比高;保密性好;带PWM脉冲宽度调制、串行外设接口SPI,片内RC 振荡器,SRAM比51大。
这些是应用最多的三大系列单片机。其主要特点就是:51系列单片机是冯.诺依曼结构,后两种是哈佛结构。
典型玩家介绍
经多年发展,MCU厂商可谓是多种多样。简单介绍下这个圈里典型玩家
1. 恩智浦(收购飞思卡尔)
单片机是基于80C51内核的单片机,嵌入了掉电检测、模拟以及片内RC振荡器等功能,这使51LPC在高集成度、低成本、低功耗的应用设计中可以满足多方面的性能要求。NXP的MCU几乎都是采用cortex-m系列架构。
2. 瑞萨电子
NEC电子和瑞萨科技于2010年4月1日通过合并诞生了“瑞萨电子”,现为全球首屈一指的微控制器供应商,也是SoC系统晶片与各式类比及电源装置等先进半导体解决方案的领导品牌之一。他们推出的针对中国市场的MCU产品RL78系列分为通用产品和集成LCD驱动的产品,通用产品的升级款又围绕着传感器、小系统、马达驱动等具体应用领域做了相应拓展。
3. 微芯科技(Microchip)(收购爱特梅尔(Atmel))
微芯科技是全球领先的单片机和模拟半导体供应商,微芯单片机是市场份额增长最块的单片机。 他们强调节约成本的最优化设计,使用量大、档次低、价格敏感的产品。
4.三星(Samsung)
三星单片机有KS51和KS57系列4位单片机,KS86和KS88系列8位单片机,KS17系列16位单片机和KS32系列32位单片机。
5. 意法半导体(ST)
意法半导体微控制器拥有一个强大的产品阵容,从稳健的低功耗8位单片机STM8系列,到基于各种ARM Cortex-M0和M0+、 Cortex-M3、Cortex-M4、Cortex-M7内核的32位闪存微控制器STM32家族。STM32系列32位微控制器基于Arm® Cortex®-M处理器,旨在为MCU用户提供新的开发自由度。它包括一系列产品,集高性能、实时功能、数字信号处理、低功耗/低电压操作、连接性等特性于一身,同时还保持了集成度高和易于开发的特点。
6. 英飞凌(Infineon)
其前身是西门子集团的半导体部门。英飞凌8位单片机能实现高性能的电机驱动控制,在严酷环境下(高温、EMI、振动)具有极高的可靠性。英飞凌针对中国市场推出的XMC1000工业单片机,在电机控制领域拥有很高的性价比。
7. 德州仪器(TI)
TI是全球领先的模拟及数字半导体 IC 设计制造公司。除了提供模拟技术、数字信号处理 (DSP) 以外,TI 在单片机领域也涉入较深,推出一系列的32位单片机,其中Piccolo系列微处理器最具代表性,具体型号如C2000和F28x系列。
8. 东芝(Toshiba)
东芝单片机的特点从4位机到64位,门类齐全。4位机在家电领域仍有较大的市场。8位机主要有870系列、90系列等,该类单片机允许使用慢模式,采用32K时钟时功耗低至10uA数量级。CPU内部多组寄存器的使用,使得中断响应与处理更加快捷。东芝的32位单片机采用MIPS3000ARISC的 CPU结构,面向VCD、数字相机、图像处理等市场。
9. Silicon Laboratories(芯科实验室)
Silicon Laboratories成立于1996年,位于美国德州奥斯汀市,是一家专业研发设计类比电路及混合信号IC的公司,为成长快速的通信产业设计等提供广大应用。在8051系列MCU领域居于领先军团行列。这家公司2013收购了一家叫Energy Micro的节能型MCU公司,所以产品有两个型号。
10. Maxim
Maxim的超低功耗32 位 Arm® Cortex®-M4 FPU微控制器(单片机),可以帮助您在任意地方收发其他超低功耗MCU的产品。超低功耗MCU系列产品既智能又省电。他们在去年发布了一款名为MAX78000的革命性芯片。这颗低功耗神经网络加速微控制器能将人工智能(AI)推向边缘端,更重要的是,因为其低功耗特性,那就意味着即使在将其应用在电池供电的物联网(IoT)设备里,芯片性能并未受到影响。
11. ADI
ADI提供日渐增多的DSP、混合信号控制处理器、嵌入式处理器和模拟微控制器产品,适合广泛的通用和专用需求。例如产品包括:带有微处理器的模数转换芯片ADuC844和ADuC846,用于IoT超低功耗MCU ADuCM4050。
12. 高通(Qualcomm)
高通的MCU主要应用于智能手机、平板电脑、无线调制解调器等等,功能非常强大。主要提供16位,32位MCU。
其余厂商见图片。
MCU作为微型计算机的一个重要分支,应用面很广,发展很快。自MCU诞生至今,已发展为上百种系列的近千个机种。而且随着半导体集成工艺的不断发展,MCU的集成度将更高、体积将更小、功能将更强。
5个方面详解:AI产品运营必知的软硬件技术
比算法更难得是算法的思想,比编程工具更难的是编程的思维,比做产品更难的是产品的梦想。本文主要从5个方面,详细阐述AI产品运营必知的软硬件技术。
一、AI产品运营对基础关系的安排
1. 智能软硬件与软件和硬件
在AI产品里没有纯粹单独的软件和硬件,尤其是产品经理更应该系统来看,把软件和硬件看成是AI赋能的智能软硬件。
例如:单片机一般意义上被看做硬件,但是我们以一种单片机Arduino来看,Arduino板子上的微控制器可以通过Arduino的编程语言来编写程序,编译成二进制文件,烧录进微控制器,而程序本身又是软件部分。其他AI产品部件也类似像STM32,瑞芯微3288等等。
单片机只是举例,现在这么大的数据量单片机是处理不了的,AI也不只是跑在单片机上,X86,服务端也有。
AI里软件相当于人的大脑,硬件相当于人的身体!所以离开软件硬件没有灵魂,离开硬件软件没有肉身!当下AI硬件主要被用来采集数据和作为算力!
2. 算法和数据
有人说算法重要,因为它体现了技术水平的高低,驾驭数学知识的能力;有人说数据重要没有数据算法如何实现效果,实际上LineLian和工程院院士杨善林的学生讨论后发现,算法和数据是鱼和水的关系。AI时代里算法跟传统算法的区别在于AI的算法是对人脑的模拟,是一种智能。
AI是在大量的样本数据基础上,通过神经网络算法训练数据,建立了输入数据和输出数据之间的映射关系,其最直接的应用是在分类识别方面。例如:训练样本的输入是语音数据,训练后的神经网络实现的功能就是语音识别,如果训练样本输入是人脸图像数据,训练后实现的功能就是人脸识别。
AI算法使得解决问题的步骤智能,数据使得算法得到训练从而实现算法所构建的商业模式!
3. 服务端和应用端
服务端和应用端是相对的。
开发应程序调操作系统的API, 操作系统的API有(创建线程、 读写文件【读、写、偏移到指定地址】、 网络通信、 图形渲染),那么操作系统就是应用程序的服务端。
而写一个常规的小程序或者APP,前端用户界面上需要的数据就是分别通过WEB程序调用浏览器功能接口然后OS向后台服务端发请求传数据。
另外web程序员,和底层嵌入式程序员理解的服务端和应用端还有差别,这里产品经理明了这种关系即可。服务端即底层就是功能的实现者, 应用端上层就是功能的使用者,这一关系利于产品开发过程中需求时间安排规划。
AI产品经理明了基础关系,能更好的协调资源,补充Team短板,提升产品生命期效率!
二、站在硬件肩旁上赋能硬件
智能软硬件是指通过将硬件和软件相结合,对设备进行智能化创造或者改造。而智能软硬件移动应用端则是软件,通过应用连接智能硬件,操作简单、开发简便,各式应用层出不穷,也是企业获取用户的重要入口。例如:新零售的店铺,智能贩卖机等!
创造和改造对象可能是电子设备,例如:手表、电视和其他电器;也可能是以前没有电子化的设备,例如:门锁、茶杯、汽车甚至房子。
智能软硬件已经从可穿戴设备延伸到智能电视、智能家居、智能汽车、医疗健康、智能玩具、机器人等领域。比较典型的智能软硬件包括Google Glass、三星Gear、FitBit、麦开水杯、咕咚手环、Tesla、无屏电视等。
1. 智能软硬件的特征
信息的获取和交互智能软硬结合2. 智能硬件的组成
(1)传感器
传感器是一种检测装置,能感受到被测量的信息,并能将感受到的信息,按一定规律变换成为电信号或其他所需形式的信息输出,以满足信息的传输、处理、存储、显示、记录和控制等要求。
例如:检测距离的声波传感器,寻找轨迹的红外传感器,通信的蓝牙、NB-IoT传感器等等!
(2)控制器
控制器是指按照预定顺序改变主电路或控制电路的接线和改变电路中电阻值,来控制电动机的启动、调速、制动和反向的主令装置。
由程序计数器、指令寄存器、指令译码器、时序产生器和操作控制器组成,它是发布命令的“决策机构”,即完成协调和指挥整个计算机系统的操作。例如:一般功能的叫MCU单片机,复合功能的叫操作系统OS!
首先,控制器在智能硬件中一般叫做芯片,AI与CPU比较在架构和功能特点上有着非常大的区别。
传统的CPU运行的所有的软件是由程序员编写,完成的固化的功能操作,其计算过程主要体现在执行指令这个环节。但与传统的计算模式不同,人工智能要模仿的是人脑的神经网络,从最基本的单元上模拟了人类大脑的运行机制。它不需要人为的提取所需解决问题的特征,或者总结规律来进行编程。
AI一般包含机器学习和深度学习,但不管是机器学习还是深度学习都需要构建算法和模式,以实现对数据样本的反复运算和训练,降低对人工理解功能原理的要求。
因此,AI芯片需要具备高性能的并行计算能力,同时要能支持当前的各种人工神经网络算法。传统CPU由于计算能力弱,支撑深度学习的海量数据并行运算,且串行的内部结构设计架构为的是以软件编程的方式实现设定的功能,并不适合应用于人工神经网络算法的自主迭代运算。
传统CPU架构往往需要数百甚至上千条指令才能完成一个神经元的处理,在AI芯片上可能只需要一条指令就能完成。
其次,解读主流的人工智能芯片。
AI的高级阶段是深度学习,而对于深度学习过程则可分为:训练和推断两个环节。
训练环节通常需要通过大量的数据输入或采取增强学习等非监督学习方法,训练出一个复杂的深度神经网络模型。训练过程由于涉及海量的训练数据和复杂的深度神经网络结构,需要的计算规模非常庞大,通常需要GPU集群训练几天甚至数周的时间,在训练环节GPU目前暂时扮演着难以轻易替代的角色。
推断环节指利用训练好的模型,使用新的数据去“推断”出各种结论,如视频监控设备通过后台的深度神经网络模型,判断一张抓拍到的人脸是否属于黑名单。虽然推断环节的计算量相比训练环节少,但仍然涉及大量的矩阵运算。
在推断环节,除了使用CPU或GPU进行运算外,FPGA以及ASIC均能发挥重大作用。目前,主流的人工智能芯片基本都是以GPU、FPGA、ASIC以及类脑芯片为主。
FPGA:
即专用集成电路,一种集成大量基本门电路及存储器的芯片,可通过烧入FPGA配置文件来来定义这些门电路及存储器间的连线,从而实现特定的功能。而且烧入的内容是可配置的,通过配置特定的文件可将FPGA转变为不同的处理器,就如一块可重复刷写的白板一样。
FPGA有低延迟的特点,非常适合在推断环节支撑海量的用户实时计算请求,如语音识别如LineLian2017年打造的裸眼3D试衣镜所采用的芯片。
由于FPGA适合用于低延迟的流式计算密集型任务处理,意味着FPGA芯片做面向与海量用户高并发的云端推断,相比GPU具备更低计算延迟的优势,能够提供更佳的消费者体验。在这个领域,主流的厂商包括Intel、亚马逊、百度、微软和阿里云。
ASIC:
即专用集成电路,不可配置的高度定制专用芯片。特点是需要大量的研发投入,如果不能保证出货量其单颗成本难以下降,而且芯片的功能一旦流片后则无更改余地,若市场深度学习方向一旦改变,ASIC前期投入将无法回收,意味着ASIC具有较大的市场风险。但ASIC作为专用芯片性能高于FPGA,如能实现高出货量,其单颗成本可做到远低于FPGA。
谷歌推出的TPU就是一款针对深度学习加速的ASIC芯片,而且TPU被安装到AlphaGo系统中。但谷歌推出的第一代TPU仅能用于推断,不可用于训练模型,但随着TPU2.0的发布,新一代TPU除了可以支持推断以外,还能高效支持训练环节的深度网络加速。
根据谷歌披露的测试数据,谷歌在自身的深度学习翻译模型的实践中,如果在32块顶级GPU上并行训练,需要一整天的训练时间,而在TPU2.0上,八分之一个TPUPod(TPU集群,每64个TPU组成一个Pod)就能在6个小时内完成同样的训练任务。
GPU:
即图形处理器。最初是用在个人电脑、工作站、游戏机和一些移动设备上运行绘图运算工作的微处理器,可以快速地处理图像上的每一个像素点。后来科学家发现,其海量数据并行运算的能力与深度学习需求不谋而合,因此,被最先引入深度学习。
GPU之所以会被选为超算的硬件,是因为目前要求最高的计算问题正好非常适合并行执行。一个主要的例子就是深度学习,这是人工智能(AI)最先进的领域。
深度学习以神经网络为基础,神经网络是巨大的网状结构,其中的节点连接非常复杂。训练一个神经网络学习,很像我们大脑在学习时,建立和增强神经元之间的联系。
从计算的角度说,这个学习过程可以是并行的,因此它可以用GPU硬件来加速。这种机器学习需要的例子数量很多,同样也可以用并行计算来加速,在GPU上进行的神经网络训练能比CPU系统快许多倍。
目前,全球70%的GPU芯片市场都被NVIDIA占据,包括谷歌、微软、亚马逊等巨头也通过购买NVIDIA的GPU产品扩大自己数据中心的AI计算能力。
3. 智能硬件生产流程
智能软硬件的开发流程介绍
(1)需求调研及分析
凡是开发产品类的,都需要进行完成的市场调研,智能硬件也是一样,通过面向群体来收集有用的价值,从而对产品开发的导向及功能要求有明确的方向。
(2)产品原型设计
对于该产品的硬件、原件、结构进行开发,完成后进行联调测试,如果中途出现问题,需要重新设计,若通过进行组装及测试。
(3)试产阶段
小批量的进行产品试产,进行产品认证。
(4)产品运营硬件市场化量产阶段
一般情况下,需要等到一些认证做完,接到正式订单才会开始大规模生产。
三、站在软件肩旁上赋能软件
上文第二节里讲站在硬件的肩旁上赋能硬件里,硬件本身亦不是纯硬件,其中有软件部分且是必不可少的部分。
软件包含系统软件和应用软件,系统软件是软件的软件,是软件运行的平台,应用软件是为了完成特定产品业务运营而编写的软件。
常用的系统软件有操作系统(DOS、WINDOWS、UNIX、OS/2)、数据库管理系统(FoxPro、DB-2、Access、SQL-server)、编译软件(VB、C++、JAVA)。应用软件有文字处理软件(WORD、WPS)、信息管理软件、辅助设计软件(CAD)、实时控制软件(CAM)。再例如:APP、小程序等属于应用软件,Android/IOS等属于系统软件。
软件流程一般如下图:
AI需要的智能软硬件流程:
四、以智能家居的智能软硬件产品实战为例
本节以智能家居整体结构设计、芯片选型、模块设计实战经验为例讲一遍智能软硬件产品的打造流程。
先看下图为笔者操盘的智能家居整体结构图:
以下为整体结构图解析:
Android手机终端在连接的4G或WIFI情况下通,过向服务器发出 HTTP 请求完成对信息的查询和任务的设定。
云服务器根据用户需求提供必要的数据,并将对应的任务更新至数据库。嵌入式智能设备通过WIFI模块AT与服务器,进行Socket通信,服务器端使用基于JavaNIO的框架实现 Socket连接。
Android手机终端和智能设备通过不同的服务器进行通信 ,Android手机终端采用http 协议与服务器进行通信,服务器提供了用于通信的RESTful API,嵌入式智能设备基于 Socket与服务器连通。两个服务器部署在同一台机器上,通过MYSQL数据库做中间桥接,实现数据的共享。
再看下图为具体模块结构图:
上图中MCU负责整个模块的控制;WIFI模块实现模块的无线连接,并集成协议TCP/Ip协议,负责同服务器交换数据;开关控制使用继电器实现,能够实现弱电对强电的控制;湿度、温度、亮度模块根据不同模块的功能进行选装,从而实现对不同量的测量。
限位检测用于检测电机运行的位置状态,从而实现对宠物喂食中机械的控制,实现定量的喂食;RTC时钟为系统的运行提供时间基准;FRAM保存配置数据,即使在掉电后还能够执行之前设定的任务;基本的用户界面提供了现场的控制途径,使用户能够对模块进行直接的操作;供电使用AC/DC电源直接由220V供电或者使用DC进行供电,可以根据外部公开进行选择。
其次芯片选型。
选用M451LG6AE作为主控芯片M451LG6AE为 32位单片机,基于M4内核,具有足够的RAM和 Flash能够满足运行程序的要求。其具有多个串口,支持硬件的 SPI 及 I2C,能够方便实现的通信,具有 AD能够实现一些状态量的测量。
使用 DTH11进行温湿度的测量,其集成了温度及湿度检测功能,接口为单线制串口。节约 IO,使用 DS18B20进行范围较大的温度测量,其测温范围较广,具有密封的封装,能够测量液体温度,能多个并联。对于土壤湿度的测量,使用电阻式湿度传感器进行测量。
限位检测主要用于检测物体是否移动到了指定位置,或者在喂食装置中电机旋转的圈数(决定喂食的量),只需要输出开关量,因此使用光电门进行检测,使用非接触测量能够有效地延长传感器的使用时间,同时能够提供足够的精度。
为了实现高精度的计时,从而减小离线时出现的定时误差,使用外置的RTC DS3231 作为计时基准。DS3231 内置了带温补的晶振,能够实现较高精度的计时,满足运用的需求。
选择擦写次数多和读取速度块的FRAM FM24V系列,来进行设置数据的存储%使掉电复位后,仍然能够进行中断的任务。
使用 HLK-PM01 作为 AC/DC芯片,HLK-PM01 用于实现220VAC到 5VDC的转换,能够提供 3W的功率,足够系统的使用。使用 HLK_M30模块作为WIFI 模块,其体积很小,功耗较低 ,支持TCP Server/TCP Client /UDP Server/UDP Client工作方式,能够方便地实现互联网连接,串行接口能够方便地与主控器连接。
再则软件设计:
整体软件功能模块如下图:
其中1: 软件部分与硬件之间交互通信模块, APP通过HTTP 协议与服务器进行通信 ,采用 OkHttp 进行网络请求,请求的方式以 Post为主。
Android系统提供了两种 HTTP 交互的方式HTTPURL-CONNECTION和 APACHE HTTP CLIENT,虽然两者都支持 HTTPS流的上传和下载,配置超时IPV6和连接池,已足够满足各种HTTP请求的需求,但原生的HTTP 接口存在着 API 数量过多,扩展困难等不足。
因此产生了许多出色的网络通信库来替代原生的 HTTPURLConnection,其中OkHttp是最出色的一个。
使用 OkHttp 库进行更高效 HTTP请求可以让应用运行更快、更节省流量,因此,本项目中使用 OkHttp库依赖开发。
APP与 服务器通信时采用 JSON格式进行数据传输 ,JSON 作为一种轻量级的数据交换格式,易于阅读和编写,并且多种编程语言均提供了对 JSON 格式数据解析的支持,易于机器解析和生成。
并且相比XML格式,JSON数据量更小,具有较高的有效数据率,有助于节省流量,提升网络传输速率。APP采用 Android 自带的 JSONObject 类进行 JSON数据的解析。
其中2: 登录模块,由于智能家居控制系统是一个面向多种需求多个用户的控制系统,需要建立用户系统,使不同的用户可以有序地管理自己的设备。
APP在启动时会首先检查本地是否存有用户的 token,如果不存在,跳转到登录界面,密码采用 MD5进行加密。用户登录成功后, 将服务器发来的 token通过 SharedPreferences 保存在本地,以后每次网络请求通过这个token进行用户验证,而不需要重新进行登录。
其中3: 设备模块设备列表中选择一个设备进入设备控制页面,在设备控制页面可以进行查看设备信息,查看历史记录,对设备进行控制等操作。
进行设备控制时,智能照明控制开、关两种状态,智能浇水对浇水量进行控制,智能喂食对喂食量进行控制,每种设备的控制均提供手动和定时两种工作方式。 在启动定时任务时,可以设置每周某几天在某个时间重复执行设备控制的任务。
其中4: 场景页面中可以添加的任务分为两种类型:
一种是对设备的控制任务,包含控制照明设备的开关,浇水设备的浇水量、喂食设备的喂食量等。另一种是延时任务,用于设定不同设备控制任务之间的延时间隔,场景可以设置为手动或定时启动两种方式。为了减少控制的复杂性,场景中的单项任务不能进行定时的设置,但可以通过设置场景整体的定时任务来实现场景中每个任务的定时执行。希望通过以上智能软硬件产品实战,来传达一套系统的智能软硬件产品方法论!
五、Hold住产品靠本领,引领智能软硬件市场靠人性!
同样是语音识别猎豹做出来翻译棒,而天猫做出阿里智能音箱。同样是图像识别,用在机场可以协助安检通过,波士顿动力可以给机器狗避障!
智能软硬件产品运营是生意人,互联网产品运营是设计师。
而笔者爸爸说:
“10年难培养一个生意人,1年也许就能培养一个擅长用工具的设计师和程序员”。
比算法更难得是算法的思想,比编程工具更难的是编程的思维,比做产品更难的是产品的梦想!
运营好和卖好产品,并用户口口香传,与实现产品同样重要。没有指令机器不知运转,而没有机器指令又命谁运转?智能软硬件是产品运营的未来!
#专栏作家#
连诗路,公众号:LineLian。人人都是产品经理专栏作家,《产品进化论:AI+时代产品经理的思维方法》一书作者,前阿里产品专家,希望与创业者多多交流。
本文原创发布于人人都是产品经理。未经许可,禁止转载。
题图来自 Unsplash,基于 CC0 协议
相关问答
现在 单片机 发展到什么程度了?51、AVR、STM8、STM32这些主流单片机笔者都用过,要说到单片机的发展程度还得看STM32,因为在当代STM32已然成为高性能单片机的标志了。这时候可能会有人要说我们...
STM32 单片机 可以用来做人机交互界面吗?原则上来说,只要支持ADC就能实现电阻触摸屏输入。电容式触摸屏有的stm32单片机可以支持支持。但是在实际项目中,通常采用模块化的设计,电容触摸屏和控制器通常...
lpc2138用什么语言编程,和51 单片机 差别大吗?lpc2138是ARM7,与51一样都可以用C语言编写,当然也可以用汇报。虽然编程语言一样,与51还是有差别的,首先lpc2138是32位的51是8位的,寄存器操作要稍微复杂一...
在根目录下有四个文件 m1.txt,m2.txt,m3.txt, m4 .txt,用 Shel.../bin/bashmkdirm1m2m3m4cpm1.txtm1cpm2.txtm2cpm3.txtm3cpm4.txtm4有用(0)回复dsqensxvmet...
现在流行什么 单片机 ?现在比较流行单片机有51单片机、AVR、PIC、MSP430、STM32、瑞萨单片机、飞思卡尔单片机。1.51单片机ATMEL(艾德梅尔)的:89C51、89C52STC(国产宏晶)单片机:8...
单片机 m2是什么意思?是指单片机的内核类型,Cortex-M0一直到Cortex-M7。Cortex-Mx系列是ARM公司出品的一种内核,Mx系列主要面向低成本的实时性应用,进一步按照性能和特性划分为M0...
51 单片机 是直接ROM运行程序,对不对? 像手机一样有操作系统的...51单片机的RAM很小只有几百字节,不能装入很多代码,单片机一般是从ROM中运行代码的,51单片机也可以弄uCos操作系统,不过我觉得没什么必要。你说的运行速度区别在...
am62 m4 跟pru如何通讯?AM62和M4都是微控制器或单片机的型号,而PRU是一种辅助处理器单元(PRU)。AM62和M4可以通过多种方式与PRU进行通信,具体取决于所使用的通信接口和硬件配置。以...
STM32比51强在哪?STM32系列专为要求高性能、低成本、低功耗的嵌入式应用设计的ARMCortex®-M0,M0+,M3,M4和M7内核(ST'sproductportfoliocontainsa...
DSP与 单片机 到底有什么区别啊?典型单片机最容易想到的是st的stm32f334系列,这系列是单核armm4核心,带高精度定时器,外设方面种类跟28335差不多。28335抗干扰性据说比stm32系列好一些。...