依据需求设计总体方案、硬件详细方案、软件详细方案

需求

需求的来源多种多样,一般为市场调研、用户反馈等,我们设定一个简单的原始需求:
监测环境温度并上传到平台显示。
关于原始需求,有一个老生常谈的例子:客户要一匹马,是客户的原始需求,我们要分析客户到底要的是马还是要跑得更快。产品经理要学会挖掘客户的真实需求,拆分并整理成产品需求文档(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的是根据实际情况去实现。

总体方案

毕设-总体方案.png
这个总体方案是功能框图,硬件详细方案、软件详细方案需要根据这个功能框图细化。我们这俩省略了UI、平面、结构、测试的工作,目的是为了快速开发。

硬件详细方案

根据总体方案的功能框图,硬件涉及到8个功能模块,我们需要对每个功能模块进行细化。理论上每个公司都会有自己的供应商和仓库,所以器件选型上以原有的为主。这里我们以淘宝配单店,按照市面最通用的物料进行选型。

  • 物料选型以淘宝配单店为主
  • 所有的详细方案只考虑功能实现,不考虑外观结构等

    温度传感器

    我们测试的是室内环境温度,温度变化范围是-10℃~40℃,最大精度0.5℃就能满足我们的要求。市面上DS18B20即可满足我们的要求。
    image.png
    我们查看数据手册得到,DS18B20的工作电压3.3V满足要求,测量范围满足要求,IO口占用1个。
    image.png

    显示

    我们采用数码管显示,采用0.56寸四位共阳数码管。

image.png
共阳极数码管我们通过三极管驱动,数码管供电是3V,单个红色数码管段压降为1.4V,IO口串接100Ω电阻,单段电流为16mA,共使用12个IO口,最大电流(全亮)为128mA(16mA4位8段/4)(动态驱动,每次只点亮一个数码管)。

无线上传

无线上传我们选用低功耗广域网技术,采用祥云物联网的NB-Iot模块,基于移远科技的BC35模块。
image.pngimage.png
供电电压为3.3V,最大电流300mA,共用到1个串口,3个IO口。

Log输出

Log输出一般采用串口,只需要预留1个串口即可。通过串口转usb工具,连接到电脑上打印出设备运行信息。
image.png

LED状态指示

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

按键

image.pngimage.png
按键采用轻触按键,贴片式,因只用3个按键,所以不需要做矩阵键盘,只需用3个IO口。

压力传感器

image.png
根据我们搜索到的压力传感器方案,我们只需要在设备上预留一路5V电源、2个IO口。

MCU

首先确定MCU,因为产品不涉及低功耗,且现在市面上STM32F103的单片机流通量最大,所以我们初步选用这个型号的单片机。根据之前的计算,至少需要24个IO+2个串口。我们选择使用STM32F103RCT6,一方面因为这个芯片市面流通量最大,另一方面它的可用IO大于28。在STM32CubeMX中选择这颗芯片,并设置使用外部晶振、JTAG仿真以及两个串口。
image.png

电源

我们初步设计使用5V的USB供电,因为可以使用电脑或者充电宝供电。因为USB转Micro USB的线比较多,所以选择使用Micro USB作为电源输入接口。
根据上面的选型,整个系统除了压力传感器外,其他都使用的是3.3VDC电源。因为输入电源为5V,所以需要一个LDO进行降压。由上面计算可得所需电流大概为400mA,选用市面通用的LDO-AMS1117-3.3V,最大电流为1A(预留量),压降1V。
image.png

软件详细方案

软件详细方案包括功能模块描述、软件流程图等,这里我们主要完成软件流程图,即软件实现的业务逻辑流程是什么样的。
软件流程图.png
系统初始化中,完成了各个模块的初始化,并读取温度值、刷新一次显示,是系统进入正常工作模式。


[1]DS18B20手册.pdf
[2]STM32CubuMX
[3]AMS1117.pdf
[4]数码管-5641A-B.pdf
[5]数码管驱动与程序设计