需求
需求的来源多种多样,一般为市场调研、用户反馈等,我们设定一个简单的原始需求:
监测环境温度并上传到平台显示。
关于原始需求,有一个老生常谈的例子:客户要一匹马,是客户的原始需求,我们要分析客户到底要的是马还是要跑得更快。产品经理要学会挖掘客户的真实需求,拆分并整理成产品需求文档(PRD)。
我们这里将原始需求拆分成以下几个详细的需求:
- 监测环境温度
- 显示环境温度
- 上传环境温度到Iot平台
- Web显示温度曲线
我们根据实际的情况再添加几条方便运维设备的需求:
- Log日志输出,方便查看设备详细运行信息
- 指示灯,方便查看设备运行状态
- 按键触发单次上传数据,方便检测设备上传功能是否正常
我们再添加几个扩展需求,方便后期将产品扩展成其他类型的设备
- 预留监测压力传感器的接口
分析并整理所有的需求后,需求列表如下:
| 序号 | 需求内容 | 优先级 |
|---|---|---|
| 1 | 监测环境温度 | 1 |
| 2 | 显示环境温度 | 1 |
| 3 | 上传环境温度到Iot平台 | 1 |
| 4 | Web显示温度曲线 | 1 |
| 5 | Log日志输出,方便查看设备详细运行信息 | 2 |
| 6 | 指示灯,方便查看设备运行状态 | 2 |
| 7 | 按键触发单次上传数据,方便检测设备上传功能是否正常 | 2 |
| 8 | 预留监测压力传感器的接口 | 3 |
优先级为1的是必须要实现的,优先级为3的是根据实际情况去实现。
总体方案

这个总体方案是功能框图,硬件详细方案、软件详细方案需要根据这个功能框图细化。我们这俩省略了UI、平面、结构、测试的工作,目的是为了快速开发。
硬件详细方案
根据总体方案的功能框图,硬件涉及到8个功能模块,我们需要对每个功能模块进行细化。理论上每个公司都会有自己的供应商和仓库,所以器件选型上以原有的为主。这里我们以淘宝配单店,按照市面最通用的物料进行选型。
- 物料选型以淘宝配单店为主
- 所有的详细方案只考虑功能实现,不考虑外观结构等
温度传感器
我们测试的是室内环境温度,温度变化范围是-10℃~40℃,最大精度0.5℃就能满足我们的要求。市面上DS18B20即可满足我们的要求。
我们查看数据手册得到,DS18B20的工作电压3.3V满足要求,测量范围满足要求,IO口占用1个。
显示
我们采用数码管显示,采用0.56寸四位共阳数码管。

共阳极数码管我们通过三极管驱动,数码管供电是3V,单个红色数码管段压降为1.4V,IO口串接100Ω电阻,单段电流为16mA,共使用12个IO口,最大电流(全亮)为128mA(16mA4位8段/4)(动态驱动,每次只点亮一个数码管)。
无线上传
无线上传我们选用低功耗广域网技术,采用祥云物联网的NB-Iot模块,基于移远科技的BC35模块。

供电电压为3.3V,最大电流300mA,共用到1个串口,3个IO口。
Log输出
Log输出一般采用串口,只需要预留1个串口即可。通过串口转usb工具,连接到电脑上打印出设备运行信息。
LED状态指示

用0603封装的贴片LED灯,通过IO口直接驱动,串接1k电阻,单个电流3.3mA,三个LED指示灯占用3个IO口,共10mA。
按键


按键采用轻触按键,贴片式,因只用3个按键,所以不需要做矩阵键盘,只需用3个IO口。
压力传感器

根据我们搜索到的压力传感器方案,我们只需要在设备上预留一路5V电源、2个IO口。
MCU
首先确定MCU,因为产品不涉及低功耗,且现在市面上STM32F103的单片机流通量最大,所以我们初步选用这个型号的单片机。根据之前的计算,至少需要24个IO+2个串口。我们选择使用STM32F103RCT6,一方面因为这个芯片市面流通量最大,另一方面它的可用IO大于28。在STM32CubeMX中选择这颗芯片,并设置使用外部晶振、JTAG仿真以及两个串口。
电源
我们初步设计使用5V的USB供电,因为可以使用电脑或者充电宝供电。因为USB转Micro USB的线比较多,所以选择使用Micro USB作为电源输入接口。
根据上面的选型,整个系统除了压力传感器外,其他都使用的是3.3VDC电源。因为输入电源为5V,所以需要一个LDO进行降压。由上面计算可得所需电流大概为400mA,选用市面通用的LDO-AMS1117-3.3V,最大电流为1A(预留量),压降1V。
软件详细方案
软件详细方案包括功能模块描述、软件流程图等,这里我们主要完成软件流程图,即软件实现的业务逻辑流程是什么样的。
系统初始化中,完成了各个模块的初始化,并读取温度值、刷新一次显示,是系统进入正常工作模式。
[1]DS18B20手册.pdf
[2]STM32CubuMX
[3]AMS1117.pdf
[4]数码管-5641A-B.pdf
[5]数码管驱动与程序设计
