物联网主要的技术难题在于,跨度。所谓隔行如隔山,一旦涉及多个技术领域势必难题重重。
我个人2014年开始工作,就一直处在其中。属于设备端研发人员。
先说说跨度范围,然后看坑。
设备--网络--服务器--网络--用户
一、设备:
1)硬件:
外壳:
外壳设计问题:自己设计(需要3D绘图的技术人员) 或者 外包合作(沟通问题)。 外壳demo一般是CNC(数控机床)雕刻尼龙材料,然后表面处理。
外壳生产问题:典型代表,塑料注塑。 开模费用高(几万到几十万),后期生产成本低(一两块钱一个)。 开模周期长,45天出模具,修修补补2个月最快。修改模具设计等于重开。
代工问题: 纯商业问题,不描述。
电路:
原理图,PCB打样,验证。 你需要专业的 硬件设计人员。
电源问题:电源问题单独博客说明。单片机硬件目录下(如果没有说明还没写 哈哈)。
通讯方式:无线(你需要无线方面的合作资源,射频用的工具太贵,不太可能自己弄。频谱仪/网络分析仪 一套大概50万元)。
PCB相关:周期长,有修改 最快一周出结果。慢的无上限。
PCB 验证、认证:可靠性,抗干扰能力等能不能符合使用环境?。 认证方面:CCC,高低温,静电,雷击等一系列都是烧钱的,时间也长 一个月搞不下来。(医疗行业是最难过认证的)。
生产: 物料采购,物料管理 -- 物料种类超多。 目前(2018年),刚经历了电容超级涨价,电阻涨价,芯片涨价。物料成本压力重重。
批量生产基本是代工,自己做流水线太贵,成本大概是100万元。 品控,不能一颗老鼠屎坏一屯子粮食,具体实施时如何定义标准?
组装:
烧写硬件固件,PCB综测,装进外壳。 老化测试。
包装成型,仓管,销售 略。
成本:
这是限制软件的超级高压锅。FLASH ,RAM ,计算能力 等 直接对软件构成暴击伤害。 老板习惯的问题是,最小能压缩到多少?
其他:
跨工种头疼事:外壳设计跟PCB设计“打架”。外壳要美观,PCB 要形状、射频开口(如果有)。
合作方超多,人际关系,合作方式。商务头疼。
这里只讨论单片机作为主控的情况,如果是linux还有其他的坑。
2)软件:
设备内的软件运行在廉价的机器上,这里只讨论MCU 单片机范围。如果你是跑Linux的,请跳过此坑。
运行环境:鉴于单片机这个Flash(硬盘)RAM(内存条)容量按照k计算。 (按照字节计算的基本不考虑。虽然可以做 但是不在本文讨论范围内。)
开发语言:c语言,高端一点c++ ,但是 限于资源 C++的 STL库几乎不可用。
插一句:单片机软件开发,90%在写驱动代码,10%时间在写业务逻辑。
系统:
有些开源的可以自行移植。 系统种类很多 抢占式OS (ucos,freertos等) ,协作式OS (新生命smartos),其他 (前后台,事件驱动型OS contiki)
选择困难症,而且需要学习成本。 很多干脆没有OS 以节省资源开销(单片机级别的嵌入式中系统开销是大头,Flash和RAM占用相当可观)
驱动:
嵌入式中开发 中的重头戏,不同的硬件平台IO驱动完全不同,没有统一规范。 能到达目的为上。
人才:
就目前掌握的情况来看,80%的单片机工程师没有软件分层思想,写的代码 今天他跟上帝知道是干什么,一周后就只有上帝知道了。
if else if else if else 是主要代码结构。 一副官方给的 OK 的代码 在他们手上就会变成渣。 为了目的 随处改。有看到过一个函数有8000行的。
不会使用版本管理软件,做版本纯粹靠资源管理器。 这个给管理提供了一定的难度,没有办法做到代码审核,bug 跟踪。
没有统一的命名规范,没有统一的备注习惯,甚至有的tab对齐都搞不好。 不知道文本编码问题,乱码问题时有发生。
网络:
这里只讨论硬件直接入网的形式。 lora sigfox 2.4g 433 315 等 这种另立博客。
以太网:有各种库,lwip uip uctcp/ip 等软件协议栈,有的是单片机有网络MAC PHY的 使用 MII 接口,有的是外置MAC PHY的。 SPI口偏多。 也有硬件协议栈芯片。SPI 口占多数;
wifi: 基本都是 wifi芯片咯,esp8266 RTL8211 串口AT指令集。
GPRS/4G LTE: SIM800C SIM868 AIR208S 等。4G模块没有关注型号。 串口AT指令集。
NBIOT :BC95 AIR395 UC666 串口AT 指令集。
全是驱动的活!!
通讯数据:
限于FLASH RAM 的需求,单片机这边工程师100%希望是二进制。 http 一定是不希望的,太复杂,在单片机上处理完全就是找虐待。
跟服务器开发工程师的妥协就是 JSON 。
虽然说 CoAp 也是很不错的,但是目前还没发现谁在用。
九环
2018.5.20