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并存档
相关文章:

STM32基于CubeIDE和HAL库 基础入门学习笔记:物联网项目开发流程和思路
文章目录: 第一部分:项目开始前的计划与准备 1.项目策划和开发规范 1.1 项目要求文档 1.2 技术实现文档 1.3 开发规范 2.创建项目工程与日志 第二部分:调通硬件电路与驱动程序 第三部分:编写最基础的应用程序 第四部分&…...

Hive on Spark (1)
spark中executor和driver分别有什么作用? Spark中Executor 在 Apache Spark 中,Executor 是分布式计算框架中的一个关键组件,用于在集群中执行具体的计算任务。每个 Executor 都在独立的 JVM 进程中运行,可以在集群的多台机器上…...

PostgreSQL基本操作总结
安装按PostgreSQL数据库后,会默认创建用户postgres和数据库postgres,这个用户是超级用户,权限最高,可以创建其他用户和权限,在实际开发过程中,会新创建用户和业务数据库,本文主要介绍用户权限和…...

Jakarta 的 Servlet 下BeanUtils的日期处理 和JSTL 的使用
jsp优于性能等问题已经不被spring boot等支持,如果想使用jsp和jstl标签库需要引入一下依赖。 <!-- 用jakarta.servlet.jsp.jstl,用org.glassfish.web--><dependency><groupId>jakarta.servlet.jsp.jstl</groupId><art…...

聚焦电力行业CentOS迁移,麒麟信安受邀参加第六届电力信息通信新技术大会暨数字化发展论坛并发表主题演讲
为加快推进“双碳”目标下的新型能源体系和新型电力系统建设,深化新一代数字技术与电力业务的融合发展,促进电力行业关键技术自主创新、安全可控,助力电力企业数字化转型升级和高质量发展,2023年8月9-11日,第六届电力信…...

华为OD真题--分月饼--带答案
1. 华为OD机考题 答案 2023华为OD统一考试(AB卷)题库清单-带答案(持续更新) 2023年华为OD真题机考题库大全-带答案(持续更新) 2. 面试题 一手真实java面试题:2023年各大公司java面试真题汇总--…...

帆软大屏2.0企业制作
 数字化观点中心 / 当前页 如何从0-1制作数据大屏,我用大白话给你解释清楚了 文 | 商业智能BI相关文章 阅读次数:18,192 次浏览 2023-06-08 11:51:49 好莱坞大片《摩天营救》中有这么一个场景:  你可以看见反派大b…...

【学习笔记之opcua】使用Python获取opcua数据
Python与OPC UA的应用 示例代码 将代码放入spyder中运行后,出现下面这个错误 没有‘opcua’,那我们就下载pip install opcua 之后出现下面这个错误 问问题大不,安装语句写错了 正经安装语句是 !pip install opcua 读取opcua协议数据测试 …...

apache doris和StarRocks的区别
记录一下最新要用到2个新数据库的区别 Apache Doris是一个分布式的列式存储系统,它的设计目标是提供大规模数据处理的可靠性和高性能。Doris采用了集群方式,通过将数据分布在多个机器上进行处理来提高性能,并提供了SQL查询接口方便用户使用。…...

文心一言最新重磅发布!
8月16日,由深度学习技术及应用国家工程研究中心主办的WAVE SUMMIT深度学习开发者大会2023举办。百度首席技术官、深度学习技术及应用国家工程研究中心主任王海峰以《大语言模型为通用人工智能带来曙光》为题,阐述了大语言模型具备理解、生成、逻辑、记忆…...

css整体使用
文章目录 html与csshtml、css与排版响应式与自适应布局自适应布局响应式布局 css规则class、id、以及默认的标签名的优先级 css书写位置flex整体逻辑 bootstrap资源 html与css html负责网页功能,css负责网页美化;浏览器本身有一套默认的css样式…...

LeetCode1578. 使绳子变成彩色的最短时间
思路 拆除成本 全部拆除 - 最大的不拆除在统计成本的同时,维持一个成本的最大值 代码 class Solution {public int minCost(String colors, int[] neededTime) {int res 0;int i 0;int len colors.length();while (i < len) {int max -1;int sum 0;char…...

如何在机器学习中实现分类?
机器学习和统计学中的分类是一种监督学习方法,其中计算机程序从给定的数据中学习并进行新的观察或分类。在本文中,我们将详细了解机器学习中的分类。 本博客涵盖以下主题: 目录 什么是机器学习中的分类? 机器学习中的分类术语 分类算法...

华为网络篇 RIP的负载均衡-29
难度2复杂度2 目录 一、实验原理 二、实验拓扑 三、实验步骤 四、实验过程 总结 一、实验原理 RIP是使用跳数(经过路由的数量)作为metric值的,当网络上存在去往目标的路由有两条以上都是相同metric时,就出现了流量负载均衡。…...

前端面试的性能优化部分(10)每天10个小知识点
目录 系列文章目录前端面试的性能优化部分(1)每天10个小知识点前端面试的性能优化部分(2)每天10个小知识点前端面试的性能优化部分(3)每天10个小知识点前端面试的性能优化部分(4)每天…...

分类预测 | MATLAB实现S4VM半监督支持向量机二分类预测
分类预测 | MATLAB实现S4VM半监督支持向量机二分类预测 目录 分类预测 | MATLAB实现S4VM半监督支持向量机二分类预测分类效果基本介绍程序设计参考资料 分类效果 基本介绍 分类预测 | MATLAB实现S4VM半监督支持向量机二分类预测 程序设计 完整源码和数据获取方式: …...

maven -pl -am -amd
maven常见命令之 -pl -am -amd 昨天maven的deploy任务需要只选择单个模块并且把它依赖的模块一起打包,第一时间便想到了-pl参数,然后就开始处理,但是因为之前只看了一下命令的介绍,竟然花了近半小时才完全跑通,故记录…...

高效解决Anaconda Prompt报错Did not find VSINSTALLDIR这类问题
文章目录 回忆问题解决问题step1step2 回忆问题 类似于划红线部分然后还有很多行的报错信息,最后一行肯定是红色划线部分 解决问题 step1 找到 D:\Anaconda\envs\pytorch\etc\conda\activate.d在这个文件夹内会有两个文件,删除 vs2017_compiler_v…...

将iPhone备份到移动硬盘
文章目录 将iPhone备份到移动硬盘如何在 MacOS 上查找当前备份如何在 MacOS 上查找当前备份如何将 iPhone 备份移至外部硬盘如何永久更改 Mac系统 保存 iPhone 备份的位置更新 Mac 上的权限更改 iPhone 备份位置如何验证新的 iPhone 备份已经生效?将iPhone备份到移动硬盘 如果…...

找工作 相关资料
1、简历准备 一份近乎完美的计算机简历应该如何写以及如何修改?-知乎 2.1 机械面试可能的问题 2.1.1 技术邻上的 机械专业面试31问 2.1.2 B站上的 B站: “经常作为面试题,50个机械设计基础常识,你掌握了几个?”文…...

罗勇军 → 《算法竞赛·快冲300题》每日一题:“排列变换” ← 贪心算法
【题目来源】http://oj.ecustacm.cn/problem.php?id1812http://oj.ecustacm.cn/viewnews.php?id1023【题目描述】 给定一个长度为 n 的排列 a,需要将这个排列变成 b。 每次可以选择一个数字往左移若干个位置。 请求出最小需要移动的元素个数。【输入格式】 第一行…...

算法修炼Day51|● 309.最佳买卖股票时机含冷冻期 ● 714.买卖股票的最佳时机含手续费
LeetCode:309.最佳买卖股票时机含冷冻期 309. 买卖股票的最佳时机含冷冻期 - 力扣(LeetCode) 1.思路 初始化dp[i][j]数组,表示第i天的最大利润为dp[i][j]. 精确的定义状态是个难点,可以定义四种状态:持有股票&#…...

LVS-DR模型实例
一、LVS-DR集群介绍 LVS-DR(Linux Virtual Server Director Server)工作模式,是生产环境中最常用的一 种工作模式。 1、LVS-DR 工作原理 LVS-DR 模式,Director Server 作为群集的访问入口,不作为网关使用࿰…...

Vue面试题
1. vue优点 轻量级速度快简单易学低耦合可重用性独立开发文档齐全,且文档为中文文档 2. ## vue中组件间传值 prop/$emit 父子组件传值 ref 和 $parent/$children 父子组件传值 eventBus($emit/$on) 父子,隔代,兄弟组件传值 $attrs/$listeners…...

使用图像处理算法检测金属表面的生锈区域: Python实现及步骤解析
摘要: 本文主要介绍如何使用Python和OpenCV库来实现对金属表面的生锈区域的检测。图像处理在工业领域有着广泛的应用,尤其是对材料的表面缺陷的检测。本文将详细阐述该算法的具体实现步骤,并提供完整的Python代码示例。 1. 引言 金属的锈蚀是…...

通过爬虫抓取上市企业利润表并在睿思BI中展示
睿思BI从v5.3开始支持网络爬虫,可以从指定URL抓取表格数据,本示例实现从网络上抓取上市企业招商银行的利润表数据,并在睿思BI中进行展现。 功能演示URL:https://www.ruisitech.com/rsbi-ultimate/#/dashboard/ShareView?token31…...

填充柄功能
单元格右下角十字符号 顺序式填充 输入1,2,直接拉取即可实现顺序1到10. 复制式填充 CtrlD或者拉取,选择右下角复制单元格。 规律式填充 输入星期一,星期二,下拉一直可以到星期日 自定义填充 选择文件-》选项-》自定义序列 输…...

Python爬虫性能优化:多进程协程提速实践指南
目录 1. 多进程爬虫的实现: 1.1 将爬虫任务划分成多个子任务: 1.2 创建进程池: 1.3 执行任务: 1.4 处理结果: 代码示例 2. 协程爬虫的实现: 2.1 定义异步爬虫函数: 2.2 创建事件循环&a…...

mongodb export(2023新)
之前的mongodb export发现不能用了,T3带ui的版本,试用到期不支持导出。 根据文档,是因为server版本更新后 tool版本没有升级,(refs文档) 按文档下载bin,后解压到更新本地文件夹,替换/usr/local/bin里的文…...

css-flex使用
文章目录 flex弹性容器属性flex-directionflex-wrapflex-flowalign-itemsjustify-contentalign-content主轴和侧轴 弹性元素默认大小属性flex-growflex-shrinkalign-selfflex-basisflexorder 高度坍塌flex布局子元素宽度超出父元素 flex 弹性盒,伸缩盒,…...