STM32基于CubeIDE和HAL库 基础入门学习笔记:物联网项目开发流程和思路

文章目录:

第一部分:项目开始前的计划与准备

1.项目策划和开发规范 

1.1 项目要求文档

1.2 技术实现文档

1.3 开发规范

2.创建项目工程与日志

第二部分:调通硬件电路与驱动程序

第三部分:编写最基础的应用程序

第四部分:完成最终要求、反复调试

第五部分:程序优化、异常状态测试

第六部分:排版与注释、整理与存档


第一部分:项目开始前的计划与准备

1.项目策划和开发规范 

1.1 项目要求文档

产品名:带物联网功能的远程控制温湿度控制加热灯的产品主要功能:1.可读出环境的温湿度值,在设置的温度时控制加热灯开关2.在现场可用手机连接产品,在手机上显示温湿度值,并设置开关灯的阈值3.可在物联网平台上显示温湿度值,设置开关灯阈值,可手动开关灯、可开关机4.在系统出现故障时蜂鸣器报警,并将报警事件上传云平台5.可通过光敏电阻判断开关灯是否成功,可用电位器设置光敏电阻的灵敏度6.可在产品上通过按键设置开机或待机7.使用手机充电器转5V的电源供电所有功能在功能强大、性能优异的洋桃loT开发板上实现
生产成本:每套小于300元
开发周期:15天
提供:提供条理清晰、注释详细的源工程、提供用于批量产品用的HEX文件、提供电路原理图、提供一套用于测试和验收的样品
开发报价:请按以上要求给出报价

提取硬件要求

DHT11传感器:温湿度值
继电器自动开关:开关加热灯
蓝牙模块:手机CC2541
WIFI模块:ESP8266
蜂鸣器
光敏电阻
电位器
按键
USB电源
洋桃loT开发板

提取要求的缺失 

1.温湿度范围?最小分辨率要求?0~50℃ ±2℃2.有无控制灯亮度控制要求?只控制加热灯的开和关3.是否需要开发蓝牙专用APP?不需要,用蓝牙调试器软件临时使用4.是否有指定的云平台?阿里云5.WIFI模块连接路由器?WIFI模块连接到定时的家用路由器6.上传云平台的间隔时间要求?每5分钟左右上传一次,时间不要求准确7.设置开关灯阈值的范围?这个在现场测试能用就行,由于不同型号的灯的亮度不同,需要用电位器设置8.蜂鸣器的音量要求?报警时长?没有要求,3分钟后自动停止,也可按KEY2按键手动停止9.光照强度范围?到现场调试即可,没有要求10.有无用功耗要求?没有功耗要求11.产品是长期供电还是经常开关?长时间工作,需要考虑长时间工作时死机时能自动恢复12.稳定性的要求?温度控制开关灯要稳定工作,WIFI蓝牙等辅助功能不需要稳定13.产品尺寸与外壳的要求?没有要求

1.2 技术实现文档

 

 

1.3 开发规范

1.每一阶段开发要做工程备份
每天开发结束,把程序打包RAR备份,标题注明当前的程序状态2.先调通硬件再做应用层程序开发
先写出全部硬件的测试程序,后续开发中怀疑硬件问题可用此程序测试3.切换到产品使用者的角度来做测试
开发者的角度不会有好用的设计,必须有开发者和使用者的双重角色4.重视产品异常情况的纠错处理,重视产品长时间运行的稳定性
“能用”不是结束,考虑异常情况的错误可能,还要长时间烤机测试5.注重程序的结构关系和可读性
防止未来看不懂自己写的程序,程序要结构清晰、注释丰富、易理解

2.创建项目工程与日志

1.创建自己的项目文件夹:并取名(含版本)2.新建word文档保存项目要求:记录项目日志3.从素材库中导入素材:节约时间4.打开CubeMX4.1 用不到的功能端口全部取消定义,关闭不需要的功能4.2 进行相关设置

第二部分:调通硬件电路与驱动程序

1.调通硬件2.移植各功能驱动程序3.编写功能测试应用程序

第三部分:编写最基础的应用程序

1.完成温度控制加热灯的程序2.完成按键和电位器设置的程序3.完成手机蓝牙设置的程序

开发过程中的关注重点

a.多功能有机组合和相互关联b.程序代码执行的先后顺序c.算法的处理d.裸机程序抢占CPU的问题

第四部分:完成最终要求、反复调试

4.完成阿里云平台设置的程序5.测试效果与调试

第五部分:程序优化、异常状态测试

1.完成错误报警的程序2.完成操作异常的程序3.完成稳定性处理的程序

第六部分:排版与注释、整理与存档

4.程序排版整理5.导出正式版hex并存档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/61148.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker desktop使用配置

1. 下载安装 https://www.docker.com/ 官网下载并安装doker desktop 2. 配置镜像 (1)首先去阿里云网站上进行注册:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors (2)注册完成后搜索:容…

java泛型和通配符的使用

泛型机制 本质是参数化类型(与方法的形式参数比较,方法是参数化对象)。 优势:将类型检查由运行期提前到编译期。减少了很多错误。 泛型是jdk5.0的新特性。 集合中使用泛型 总结: ① 集合接口或集合类在jdk5.0时都修改为带泛型的结构② 在实例化集合类时…

MySQL8的特性-MySQL8知识详解

MySQL是一个多用户、多线程的SQL数据库服务器。SQL(结构化查询语言)是世界上最流行和标准化的数据库语言。下面是MySQL的特性。 1、开源性:MySQL是一个开源的关系型数据库管理系统,可以免费使用和修改。 2、可靠性:M…

MySQL—日志

这里写目录标题 undo logundo log的作用undo log页记录的是什么 Buffer Pool为什么需要Buffer PoolBuffer Pool缓存什么 redo log什么是redo logredo log的作用redo log什么时候刷盘undo和redo的区别 binlogbinlog 作用redo log和binlog区别如果数据数据被删了,能用…

宿舍管理系统--前后端分离式项目架构流程复盘

文章目录 🐒个人主页🏅JavaEE系列专栏📖前言:【🎇前端】先创建Vue-cli项目(版本2.6.10,仅包含babel),请选择此项目并创建 【整理简化项目模板】【🎀创建路由】…

Gradio入门,并搭个鸡兔同笼问题小应用,附源码(MindOpt)

应用链接: https://979427749bc9ceec34.gradio.live 是公开访问链接,3天有效。在modelscope中的创空间怎么长期发布我还在研究。后面补上。 应用图如下,源代码见正文。 知道Gradio AI大模型快速生成应用的工具, 在Huggingface …

week3

题解: 前序遍历性质: 节点按照 [ 根节点 | 左子树 | 右子树 ] 排序。 中序遍历性质: 节点按照 [ 左子树 | 根节点 | 右子树 ] 排序。 通过以上三步,可确定 三个节点 :1.树的根节点、2.左子树根节点、3.右子树根节点。 之后进行…

通讯协议035——全网独有的OPC HDA知识一之聚合(四)平均值

本文简单介绍OPC HDA规范的基本概念,更多通信资源请登录网信智汇(wangxinzhihui.com)。 本节旨在详细说明HDA聚合的要求和性能。其目的是使HDA聚合标准化,以便HDA客户端能够可靠地预测聚合计算的结果并理解其含义。如果用户需要聚合中的自定义功能&…

五、web应用程序技术——web功能

文章目录 一、服务器端功能1.1 SQL1.2 XML1.3 web服务 二、客户端功能2.1 HTML2.2 超链接2.3 表单2.4 CSS2.5 JavaScript2.6 文档对象模型2.7 Ajax2.8 JSON2.9 同源策略2.10浏览器拓展技术 一、服务器端功能 早期的web站点由各种静态资源组成,如HTML页面与图片。当用…

【Linux】线程的概念以及与进程的区别

目录 背景知识 什么是线程? 进程和线程的区别 线程的优缺点 背景知识 在了解线程前,我们要首先知道,OS是可以做到让进程进行细粒度划分的! 比如我们所说的进程地址空间中的堆区,它在进程PCB中的mm_structz中有一个start和…

62.不同路径

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。 问总共有多少条不同的路径? 动态规…

分页查询从接口到实现,统一对日期类型进行格式化处理

编写Service实现类编写Mapper的sql&#xff0c;但复杂的sql语句需要写到mapper对应的xml文件中日期类型格式化处理 /*** 扩展springmvc框架的消息转换器* param converters*/Overrideprotected void extendMessageConverters(List<HttpMessageConverter<?>> conve…